const
Range:integer=150; //ренж скила
SpellID:integer=1417; //ид скилла
RangePvP:integer=Range*2; //ренж для проверки флагнутых
BuffID:integer=304; //ид проверяемого бафа
BuffTime:integer=5*60*1000; //время до окончания бафа
Macro:boolean=false; //работают ли макросы на сервере?
function CheckPvP(range:integer):boolean;
//если нету флагнутых в ренже, то можем кастовать
var
i:integer;
obj:tl2live;
begin
result:=true;
for i:=0 to charlist.count-1 do
begin
obj:=charlist(i);
if((not obj.dead) and //таргет живой
(obj.pvp) and //флагнутый
(user.distto(obj)<=range) and //в ренже
(not obj.ismember) and //не сопартиец
((obj.clanid=0) or (obj.clanid<>user.clanid)) and //не соклан
(obj.valid)) //валиден
then result:=false;
if(user.distto(obj)>range) then break;
end;
end;
function SpellReady(ID:integer):boolean;
//проверяем готовность скилла
var skill:tl2skill;
begin
result:=false;
skilllist.byid(id, skill);
if(macro and (skill.endtime<=950)) then result:=true;
if(not macro and (skill.endtime=0)) then result:=true;
end;
function CheckBuff(id:integer; time:integer):boolean;
//проверяем время бафа
var buff:tl2buff;
begin
result:=true;
user.buffs.byid(id, buff);
if(buff.endtime<=time) then result:=false;
end;
function CheckMobs(range:integer):boolean;
//проверка есть ли вокруг мобы
var
i:integer;
mob:tl2live;
begin
result:=false;
for i:=0 to npclist.count-1 do
begin
mob:=npclist(i);
if((not mob.dead) and //моб живой
(user.distto(mob)<=range) and //в ренже
(mob.attackable) and //может быть атакован
(mob.valid)) //валиден
then result:=true;
if(user.distto(mob)>range) then break;
end;
end;
procedure Farm;
begin
while (engine.status=lsonline) do
begin
if(CheckPvP(RangePvP) and
SpellReady(SpellID) and
CheckBuff(BuffID, BuffTime) and
CheckMobs(Range) and
not user.dead) then
begin
if(macro) then engine.duseskill(spellID, false, false)
else engine.useskill(spellID);
delay(user.cast.endtime);
end;
delay(100);
end;
end;
begin
script.newthread(@Farm);
end.
если серьезно писать то как-то много кода выходит
в коде есть проверка на флагнутых в ренже, на время бафа. в разделе констант указываются все параметры, думаю интуитивно все предельно ясно.