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

Как игнорировать своего чара из массива (

тут можно задать вопрос по скриптингу
Post Reply
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

Как игнорировать своего чара из массива (

Post by m0nya »

Добрый день, возникла проблема с функцией поиска вендоров, тайп вендора такойже как и у моего чара и часто персонаж стоит на месте, а мне нужно чтобы он шел к вендору.

вот:

Code: Select all

AddToSystemJournal('Продацец: '+GetName(vendor)+'. координата Х: '+inttostr(GetX(vendor))+'. координата Y: '+inttostr(GetY(vendor))+'. дистанция: ' +inttostr(GetDistance(vendor)));
repeat
NewMoveXY(GetX(vendor),GetY(vendor),true,0,true);
until (GetX(self) = GetX(vendor)) and (GetY(self) = GetY(vendor));
Не могу придумать ничего как исключить себя из
vendor_types:= [$0191, $0190]

Code: Select all

procedure GoToVendor;
var
vt : integer;
begin
wait(1700);
FindDistance:= distfind;
for vt:= 0 to (GetArrayLength(vendor_types) - 1) do begin
if FindType(vendor_types[vt], ground) <> 0 then begin
vendor:= FindItem;
addToSystemJournal('1');
NewMoveXY(GetX(vendor), GetY(vendor), true, 1, true)
end;
end;
end;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Как игнорировать своего чара из массива (

Post by Vizit0r »

намекаю на функцию Ignore(Self)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

Re: Как игнорировать своего чара из массива (

Post by m0nya »

Vizit0r, спасибо.

Code: Select all

FindDistance:= distfind;

for vt:= 1 to (GetArrayLength(vendor_types) - 1) do begin
    Ignore(Self);
	if FindType(vendor_types[vt], ground) <> 1 then begin
        vendor:= FindItem;
	//if (GetName(vendor) = 'Drama') then AddToSystemJournal('Я');
	AddToSystemJournal('Продацец: '+GetName(vendor)+'. координата Х: '+inttostr(GetX(vendor))+'. координата Y: '+inttostr(GetY(vendor))+'. дистанция: ' +inttostr(GetDistance(vendor)));
	//repeat
	NewMoveXY(GetX(vendor),GetY(vendor),true,1,true);
	//until (GetX(self) = GetX(vendor)) and (GetY(self) = GetY(vendor)); 
	end;
end;
А в чем еще может быть загвоздка ?
В журнале мне теперь определяются координаты верные, соответственно в newmove попадают верные кординаты ...
но персонаж двигаться отказывается ... :?:
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Как игнорировать своего чара из массива (

Post by Vizit0r »

включи в настройках сообщения от мувера и узнаешь причину
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

Re: Как игнорировать своего чара из массива (

Post by m0nya »

Спасибо причина была тут:
if FindType(vendor_types[vt], ground) <> 1 then begin

пришлось <> 1 думал что это больше\меньше 1 ... оказалось не равно 1 =)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Как игнорировать своего чара из массива (

Post by Vizit0r »

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