Скрипт рабочий просто хочется слегка доработать... В общем когда хп меньше определенного уровня чар отходит в нужный тайл и там лечится, но лечится только один раз, а нужно чтоб он лечился до конца а потом только шел обратно в спарринг. Как это лучше реализовать чтоб был репеат пока не станет MaxHp или есть что поизящнее?
Program Anatomy;
// - Жаренную рыбку рядом на пол и бинты тоже.
//Щиты и оружие для перезарядки тоже рядом на пол.
//Все остальное файты будут делать сами.
const
Enemy = $0000CB75; //- айди с кем воюем и на ком качаем анатомку
tweapon = $0000; // - тип пушек для перезарядки
tshield = $1B72; // - тип щитов для перезарядки
ax = 4576; // - координыты, где вместе стоим в спаринге
ay = 1176; // ...
bx = 4576; // - координаты через одну клетку, куда отбегать если хп опустится ниже 25 и не будем успевать отхиливаться.
by = 1175; // ...
{$Include 'all.inc'}
procedure checkall;
begin
if (not dead) and (connected) then
begin
if (getquantity(findtype(tweapon,ground)) > 0) and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then
begin
addtosystemjournal('Weapon Change, осталось '+inttostr(findcount-1));
UnEquip(RHandLayer);
wait(500);
Equip(RhandLayer,finditem);
Wait(500);
end;
if (getquantity(findtype(tshield,ground)) > 0) and (gettype(ObjAtLayer(LhandLayer)) <> gettype(finditem)) then
begin
addtosystemjournal('Shield Change, осталось '+inttostr(findcount-1));
UnEquip(LHandLayer);
wait(500);
Equip(LhandLayer,finditem);
wait(500);
end;
end;
end;
procedure checkbandages;
begin
if (count($0E21) < 10) and (not dead) then
begin
MoveItem(FindType($0E21,ground),50,backpack,0,0,0);
wait(500);
end;
end;
procedure checkhp;
begin
if (HP < 35) then newMoveXY(bx,by,true,0,true);
if (HP > 35) then newMoveXY(ax,ay,true,0,true); // вариант такой еще if (HP = MaxHP) then newMoveXY(ax,ay,true,0,true);
end;
Begin
SetARStatus(true);
moveThroughNPC := 1;
while true do
begin
SetWarMode(True);
while not Dead do
begin
Hungry(1,ground);
checkhp;
checkall;
Attack(Enemy);
checkhp;
If TargetPresent Then CancelTarget;
UseSkill('Anatomy');
WaitTargetObject(Enemy);
Wait(1000);
checkbandages;
If TargetPresent Then CancelTarget;
if (count($0E21) > 0) then
begin
if (HP < 35) then
begin
UseType($0E21,$0000);
WaitTargetSelf;
Wait(1000);
end;
end;
if (Count($0E23) > 0) then stack($0E23,$0000);
end;
end;
End.
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Спарринг (рабочий)
Re: Спарринг (рабочий)
while (HP<>MaxHP) do
begin
что то там делаем чтобы было полное хп
end;
begin
что то там делаем чтобы было полное хп
end;
Re: Спарринг (рабочий)
В таком случае он ведь будет хилиться нонстопом даже во время сарринга... Нужно чтоб он хилился до полного на тайле куда будет для этого отбегает, в скрипте для этого есть функция отхода.. ( чтоб при спарринге не физлился хилинг)maza wrote:while (HP<>MaxHP) do
begin
что то там делаем чтобы было полное хп
end;
Re: Спарринг (рабочий)
Code: Select all
Program Anatomy;
// - Жаренную рыбку рядом на пол и бинты тоже.
//Щиты и оружие для перезарядки тоже рядом на пол.
//Все остальное файты будут делать сами.
const
Enemy = $0000CB75; //- айди с кем воюем и на ком качаем анатомку
tweapon = $0000; // - тип пушек для перезарядки
tshield = $1B72; // - тип щитов для перезарядки
ax = 4576; // - координыты, где вместе стоим в спаринге
ay = 1176; // ...
bx = 4576; // - координаты через одну клетку, куда отбегать если хп опустится ниже 25 и не будем успевать отхиливаться.
by = 1175; // ...
{$Include 'all.inc'}
procedure checkall;
begin
if (not dead) and (connected) then
begin
if (getquantity(findtype(tweapon,ground)) > 0) and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then
begin
addtosystemjournal('Weapon Change, осталось '+inttostr(findcount-1));
UnEquip(RHandLayer);
wait(500);
Equip(RhandLayer,finditem);
Wait(500);
end;
if (getquantity(findtype(tshield,ground)) > 0) and (gettype(ObjAtLayer(LhandLayer)) <> gettype(finditem)) then
begin
addtosystemjournal('Shield Change, осталось '+inttostr(findcount-1));
UnEquip(LHandLayer);
wait(500);
Equip(LhandLayer,finditem);
wait(500);
end;
end;
end;
procedure checkbandages;
begin
if (count($0E21) < 10) and (not dead) then
begin
MoveItem(FindType($0E21,ground),50,backpack,0,0,0);
wait(500);
end;
end;
procedure checkhp;
begin
if (HP < 35) then newMoveXY(bx,by,true,0,true); //Отбежать
checkbandages; //Проверить бинты
while (HP<>MaxHP) do // Юзать бинт на себя пока не будет макс хп
begin
if (count($0E21) > 0) then
begin
UseType($0E21,$0000);
WaitTargetSelf;
Wait(1000);
end;
end;
if (HP = MaxHP) then newMoveXY(ax,ay,true,0,true); // Подбежать
end;
Begin
SetARStatus(true);
moveThroughNPC := 1;
while true do
begin
SetWarMode(True);
while not Dead do
begin
Hungry(1,ground);
checkhp;
checkall;
Attack(Enemy);
checkhp;
If TargetPresent Then CancelTarget;
UseSkill('Anatomy');
WaitTargetObject(Enemy);
Wait(1000);
If TargetPresent Then CancelTarget;
checkhp;
if (Count($0E23) > 0) then stack($0E23,$0000);
end;
end;
End.