Анти паровоз

Модератор: IvaniuS

bomberman
Куда я попал
Сообщения: 59
Зарегистрирован: Пн май 23, 2016 9:44 pm

Чт июл 14, 2016 4:25 am

Блин я конечно не особо разбираюсь но вот функция на проверку атаки игроков

function enemyattacks: boolean;
var
i:integer;
begin
result:=false;
for i := 0 to CharList.count -1 do begin
if (User.distto(charlist.items(i))<1200) and not (charlist.items(i).ismember) then //проверка на чаров вне пати
begin
//Print('обнаружен '+charlist.items(i).name);
if (charlist.items(i).target.name = user.name) and (charlist.items(i).pvp or charlist.items(i).pk) then result:=true;// проверка если чар держит таргет на мне и он в режиме ПВП то есть фиолетовый
end;
end;
end;

Переделал процедуру агрочек где вызывается эта функция на проверку атаки игрока - вот:

procedure escape;
begin
if enemyattacks then begin //если около нас чар не из пати держит на нас таргет и в режиме пвп или пк (то есть скорее всего нас атакуют но может и просто мимо пробегать фиолетовый или пкшник и выделить нас в таргет но не атаковать , что маловероятно :D
Engine.FaceControl(0, False);
Script.NewThread(@runAway); /Сдесь прописана процедура runaway - убегать туда то
Engine.BlinkWindow(True);
While User.InCombat do
Delay(400);
if not User.Dead then begin
Engine.Restart;
Delay(200000);
Engine.GameStart(0); //GameStart(CharIndex: cardinal) 0 = first CharIndex
while not (Engine.Status = lsOnline) do
Delay(5000);
returnToSpot; // Сдесь процедура возврата на спот после релога.
Engine.FaceControl(0, True);
end
else begin
Engine.GoHome;
// если всётаки умер и тут можно прикрутить возврат на спот
end;
end;
end;

У меня это дело не работает бьюсь уже долго в поисках решения. Пробовал писать

procedure escape;
begin
if not enemyattacks then begin .... то есть если никто не атакует - запускается runaway;. Очень прошу помочь кто разбирается. там можно и прикрутить проверку на стан главное чтоб хотя бы на авто атаку проверка работала
Ответить