1. Маг кастует огненную стену на предмет (сумка на полу).
2. Медитирует
3. Проверка на голод
4. Ждет.
Проблема - через какое то время маг ставит стенку огня не на объект, а на то место где стоит сам и еще 2 персонажа, которые хилят ходящего по стенке гнома - результат 3 трупа.
Заранее спасибо.
Вот скрипт
Code: Select all
Program MagicResistance;
// v.1.04 (c) Edred
{$Include 'all.inc'}
var
i:integer;
k:integer;
ctime : TDateTime;
const
sumka=$40107083;
// Значение маны, с которого нужно начинать медитировать
tmana=33;
TypeCast='Fire Field';
// Реги
BPreg=$0F7A;
BMreg=$0F7B;
GAreg=$0F84;
GSreg=$0F85;
MRreg=$0F86;
NSreg=$0F88;
SAreg=$0F8C;
SSreg=$0F8D;
procedure getitems(item:cardinal);
// процедура берет из контейнера 20 шт указанного предмета
begin
if (count(item)=0) then
begin
findType(item,Ground);
if (FindCount > 0) then
begin
k := FindQuantity;
Grab(finditem,20);
wait(1000);
case item of
BPreg : addtosystemjournal('взял 20 BP из ' + inttostr(k));
SAreg : addtosystemjournal('взял 20 SA из ' + inttostr(k));
SSreg : addtosystemjournal('взял 20 SS из ' + inttostr(k));
end;
end
else
begin
addtosystemjournal('Мало!!!');
repeat
wait(5000);
findType(item,Ground);
until (FindCount > 0);
Grab(finditem,20);
wait(1000);
case item of
BPreg : addtosystemjournal('взял 20 BP из ' + inttostr(k));
SAreg : addtosystemjournal('взял 20 SA из ' + inttostr(k));
SSreg : addtosystemjournal('взял 20 SS из ' + inttostr(k));
end;
end;
end;
end;
procedure Medita;
begin
while (WarMode = true) do SetWarMode(false);
while (Mana < 30) do
begin
ctime := Now;
i:=0;
useskill('meditation');
wait(1000);
repeat
wait(200);
i:=i+1;
checksave;
until (InJournalBetweenTimes('You are at peace.', ctime, Now)<>-1) or (i=300);
addtosystemjournal('медитация закончена');
end;
end;
procedure Cast2Self;
begin
if TargetPresent then CancelTarget;
case TypeCast of
'Fire Field' : begin getitems(BPreg); getitems(SAreg); getitems(SSreg); end;
// 'Lightning' : begin getitems(BPreg); getitems(MRreg); getitems(SAreg); end;
// 'Poison' : begin getitems(NSreg); end;
end;
i:=0;
ctime := Now;
cast(TypeCast);
repeat
wait(800);
until TargetPresent or (InJournalBetweenTimes('fizzles', ctime, Now)<>-1) or (i=50);
if TargetPresent then TargetToObject(sumka);
wait(1000)
if (InJournalBetweenTimes('fizzles', ctime, Now)=-1) then addtosystemjournal('каст закончен');
end;
Begin
FindDistance:=1;
while true do
begin
Hungry(2, -1);
Cast2Self;
wait(3000);
Medita;
wait(45000);
end;
End.