Code: Select all
Program Sparing2;
{$Include 'all.inc'}
var nn : integer;
procedure DelJournalLine( str1 : String );
// удаляет строки в журнале, содержащие указанный текст
begin
while ( injournal( str1 ) <> -1 ) do
begin
nn := injournal( str1 );
setjournalline( nn, '' );
end;
end;
procedure Spirit;
begin
// Восстановление здоровья чара через Спирит Спик с медитацией при необходимости
If (WarMode = true) then SetWarMode(false);
Wait(500);
while (HP < MaxHP) do
begin
DelJournalLine('You fail');
DelJournalLine('You channel');
DelJournalLine('You lack');
UseSkill('Spirit Speak');
repeat
Wait(100);
checksave;
until (injournal('You fail')<>-1) or (injournal('You channel')<>-1) or (injournal('You lack')<>-1);
If (injournal('You lack')<>-1) Then
begin
while (Mana<MaxMana) do
begin
UseSkill('Meditation');
wait(4000);
end;
wait(1000);
checksave;
end;
end;
end;
Begin
Spirit;
uosay( 'Gotovo' );
End.
Проблема в другом: если сразу после этого скрипт запустить еще раз - этот скрипт повисает запущенным. То есть ничего не делает, скрипт запущен, кнопкой на панели Scripts его не снять. Если запустить еще другие скрипты - они точно также "зависнут" - их тоже не снять. Не снять и после дисконнекта чара. Только если убить чара в Char List Box, тогда скрипт снимется.
ЗЫ: Пробовал: расставлять контрольные сообщения, заменял мою процедуру удаления строки из журнала полной очисткой журнала. По фиг.
ЗЫ: Еще один фокус стелса обнаружился - файл скрипта должен быть ansi. При юникоде ругается на синтаксическую ошибку в начале файла.