- Рег
- 9 Ноя 2016
- Сообщения
- 8
- Реакции
- 0
Простенькая слипалка как упражнение в написании скриптов.
Скрипт чекает мобов в радиусе 500.
Если моб атакует патимембера и при этом не находится в таргете гнома, моб слипается.
Скрипт чекает мобов в радиусе 500.
Если моб атакует патимембера и при этом не находится в таргете гнома, моб слипается.
Код:
uses SysUtils, Classes;
function isSleeping(target: TL2Live): Boolean;
begin
result := target.AbnormalID and $80 = $80;
end;
function ExtraAggroes(self: TL2Spawn; party: TParty): TL2Npc;
var num, innernum:integer;
target:TL2Live;
npc: TL2Npc;
begin
for num:=0 to NpcList.Count - 1 do
begin
npc := NpcList.Items(num);
target := npc.Target;
if (npc.DistTo(self) < 500) and (not (npc.Dead)) and
((target = Self) or (target.IsMember)) then
begin
if isSleeping(npc) then
begin
print(npc.Name + ' уже спит!');
continue;
end;
if party.Leader.Target <> npc then
begin
result := npc;
exit;
end;
end;
end;
end;
var mobToSleep: TL2Npc;
begin
while true do
begin
if User.Cast.EndTime > 0 then
begin
print('Кастую что-то');
delay(User.Cast.EndTime);
continue;
end;
mobToSleep := ExtraAggroes(User, Party);
if (mobToSleep = nil) then
begin
print('Чет некого слипать');
delay(500);
end
else
begin
Engine.FaceControl(0, False);
Engine.SetTarget(mobToSleep);
Engine.UseSkill('Сонный Дух');
delay(500);
Engine.FaceControl(0, True);
print('Слипаю лишнего ' + mobToSleep.Name)
end;
end;
end.