Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
поиск вендоров
поиск вендоров
Можна ли прописать строку чтобы чар искал вендоров токо в пределе дома в котором он стоит а не в пределах екрана ??
Re: поиск вендоров
подобрать подходящую точку в доме, и подходящий finddistance
А если в доме 2-3-4 вендора?подобрать подходящую точку в доме, и подходящий finddistance
Нашел 1го в углу подходишь к нему, скупаешь и как искать следующего стоя в углу? бежать обратно в центр?
вот, писал как раз для подобных случаев
http://stealth.od.ua/forum/viewtopic.php?p=6446#6446
задаешь в параметрах координаты 2х противоположных углов дома и вперед с песнями.
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Можна ли прописать строку чтобы чар искал вендоров токо в пределе дома
а как стелс узнает внутри дома найденный вендор или нет?получаетса надо указывать все углы каждого дома куда я буду реколится
ну попробуй заведи массив тайлов стен и обрабатывай статику при поиске ....
![Laughing :lol:](./images/smilies/icon_lol.gif)
Любишь кататься....
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
я этот вопрос обошел иначе - на нашем шарде если ты юзаешь горелку на обьект, а он не на линии видимости - то оно орет, что-то типа item is not in line of sight. мне остается только эту строку отлавливать и все.
такой себе мини-баг.
такой себе мини-баг.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
пошарился по исходникам 3 эмуляторов-серверов - везде проверка на LOS занимает несколько экранов текста
на стелсе будет поменьше, но все же в несколько строк это вместить не получится точно.
на стелсе будет поменьше, но все же в несколько строк это вместить не получится точно.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
для примера кусок исходника
const int los_range = 20;
const int z_los_range = 60; // unused as yet
дальше надоело копировать, если кто-то серьезно захочет этим заняться - скину файлами.
сразу говорю - стелс этим хламом нагружать точно не буду, только скриптово.
Code: Select all
bool uo_has_los( const LosObj& att, const LosObj& tgt )
{
int x1, y1, z1; // one of the endpoints
int x2, y2, z2; // the other endpoint
int xd, yd, zd;
int x, y, z;
int ax, ay, az;
int sx, sy, sz;
int dx, dy, dz;
if ( (att.y < tgt.y) ||
(att.y == tgt.y && att.z < tgt.z) )
{
x1 = att.x; y1 = att.y; z1 = att.z+att.look_height;
x2 = tgt.x; y2 = tgt.y; z2 = tgt.z+tgt.look_height;
}
else
{
x1 = tgt.x; y1 = tgt.y; z1 = tgt.z+tgt.look_height;
x2 = att.x; y2 = att.y; z2 = att.z+att.look_height;
}
dx = x2 - x1;
dy = y2 - y1;
dz = z2 - z1;
if (abs(dx) > los_range || abs(dy) > los_range)
return false;
if (!dx && !dy)
{
if (!dz)
return true;
if (att.z <= tgt.z &&
tgt.z <= att.z+att.obj_height)
{
return true;
}
if (att.z <= tgt.z+tgt.look_height &&
tgt.z+tgt.look_height <= att.z+att.obj_height)
{
return true;
}
}
ax = ABS(dx) << 1;
ay = ABS(dy) << 1;
az = ABS(dz) << 1;
sx = ZSGN(dx);
sy = ZSGN(dy);
sz = ZSGN(dz);
x = x1;
y = y1;
z = z1;
if (ax >= ay && ax >= az) // x dominant
{
yd = ay - (ax >> 1);
zd = az - (ax >> 1);
for (;;)
{
if (los_blocked( att, tgt, x, y, z ))
return false;
if (x == x2)
{
return true;
}
if (yd >= 0)
{
y += sy;
yd -= ax;
}
if (zd >= 0)
{
z += sz;
zd -= ax;
}
x += sx;
yd += ay;
zd += az;
}
}
else if (ay >= ax && ay >= az) //y dominant
{
xd = ax - (ay >> 1);
zd = az - (ay >> 1);
for (;;)
{
if (los_blocked( att, tgt, x, y, z ))
return false;
if (y == y2)
{
return true;
}
if (xd >= 0)
{
x += sx;
xd -= ay;
}
if (zd >= 0)
{
z += sz;
zd -= ay;
}
y += sy;
xd += ax;
zd += az;
}
}
else // z dominant
{
xd = ax - (az >> 1);
yd = ay - (az >> 1);
for (;;)
{
if (los_blocked( att, tgt, x, y, z ))
return false;
if (z == z2)
{
return true;
}
if (xd >= 0)
{
x += sx;
xd -= az;
}
if (yd >= 0)
{
y += sy;
yd -= az;
}
z += sz;
xd += ax;
yd += ay;
}
}
return true;
}
Code: Select all
bool los_blocked( const LosObj& att, const LosObj& target,
int x, int y, int z )
{
//cout << "los_blocked: (" << x << "," << y << "," << z << ")" << endl;
// if the target inhabits the location, LOS can't be blocked:
if (att.x == x &&
att.y == y &&
att.z <= z &&
z < att.z+att.obj_height)
{
return false;
}
if (target.x == x &&
target.y == y &&
target.z <= z &&
z < target.z+target.obj_height)
{
return false;
}
if (config.exp_los_checks_map)
{
USTRUCT_MAPINFO mi;
rawmapinfo( x, y, &mi );
if ((landtile_flags[ mi.landtile ] &
(USTRUCT_TILE::FLAG_BLOCKING|USTRUCT_TILE::FLAG_WALL))
== (USTRUCT_TILE::FLAG_BLOCKING|USTRUCT_TILE::FLAG_WALL) )
return true;
}
return dynamic_item_blocks_los( att, target, x, y, z ) ||
static_item_blocks_los( x, y, z );
}
const int z_los_range = 60; // unused as yet
дальше надоело копировать, если кто-то серьезно захочет этим заняться - скину файлами.
сразу говорю - стелс этим хламом нагружать точно не буду, только скриптово.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Code: Select all
while NextVendor3(Dist,Vendor) and (not dead) do begin
if ShowDebug then
AddToSystemJournal('Vendor...'+GetName(Vendor));
if GetPathArray(GetX(Vendor),GetY(Vendor),true,1,tPathArr) >= 0 then begin
EasyMoveXY(GetX(Vendor),GetY(Vendor),1,false);
UOSay('Bye '+GetName(Vendor)+' Buy Guards');
CheckSave;
//CheckLife;
wait(6000);
CheckLife;
end;
end;
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."