Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Прямая видимость.

Часто задаваемые вопросы
Post Reply
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Прямая видимость.

Post by Macks »

В большинстве шардов, для атаки, таминга, харвеста и т.п., нужна прямая видимость от чара до цели.

Подскажите как проверяется?
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Прямая видимость.

Post by drabadan »

Macks wrote:В большинстве шардов, для атаки, таминга, харвеста и т.п., нужна прямая видимость от чара до цели.

Подскажите как проверяется?

Code: Select all

def CheckLOS(xf, yf, zf, xt, yt, zt, WorldNum : Integer) -> Boolean

function CheckLosToTarget(Target : Cardinal) : Boolean;
begin
	Result := False;
	if CheckLos(GetX(self), GetY(self), GetZ(self), GetX(Target), GetY(Target), GetZ(Target), WorlNum) then
		Result := True;
end;


Sonick071
Neophyte
Neophyte
Posts: 41
Joined: 21.04.2015 22:27

Re: Прямая видимость.

Post by Sonick071 »

Воу воу воу!!! вот это круть, я стеснялся спросить про такую функцию, а она есть!!!!
Если б не было stealth, то его следовало б придумать!
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Прямая видимость.

Post by Macks »

Всегда возвращает фалсе.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Прямая видимость.

Post by Vizit0r »

для того, чтобы CheckLos работало - надо перед вызовом ОБЯЗАТЕЛЬНО установить тип сервера уо в переменной losOptions (losTypeRunUO, losTypeSphere, losTypeSphereAdv, losTypeRunUO);


Переделанный и рабочий пример (для RunUO):

Code: Select all

Program Check1;

function CheckLosToTarget(Target : Cardinal) : Boolean;
begin
   Result := False;
   losOptions := losTypeRunUO;
   if CheckLos(GetX(self), GetY(self), GetZ(self), GetX(Target), GetY(Target), GetZ(Target), WorldNum) then
      Result := True;
end;

begin
  if CheckLosToTarget($0000025B) then
    AddToSystemJournal('True')
  else
    AddToSystemJournal('False');
end.
Топик перенесен в FAQ.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Прямая видимость.

Post by GeeZeR »

Vizit0r, опиши в справке это по человечески пожалуйста. Там вообще пусто (http://stealth.od.ua/Doc:RU/Api/CheckLOS)
Stealth 8.10.2 | Клиент: 7.0.13.4
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Прямая видимость.

Post by drabadan »

GeeZeR wrote:Vizit0r, опиши в справке это по человечески пожалуйста. Там вообще пусто (http://stealth.od.ua/Doc:RU/Api/CheckLOS)
добавим, кстати ето может делать каждый зарегистрированный пользователь форума.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Прямая видимость.

Post by GeeZeR »

я знаю, но я не владею инфой
Stealth 8.10.2 | Клиент: 7.0.13.4
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Прямая видимость.

Post by Vizit0r »

я тоже. Коды проверки были фактически выдраны из исходников RunUO, POL и Sphere, понять что там и как - крайне сложно.

Завтра попробую описать, как смогу.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply