Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Краш клиента при выполнении скрипта

тут можно задать вопрос по скриптингу
Post Reply
lemonter
Neophyte
Neophyte
Posts: 37
Joined: 14.05.2011 7:59

Краш клиента при выполнении скрипта

Post by lemonter »

Собсно скрипт на лут,все пашет четко но клиент порой выдает крит.Стелс же продолжает лутать и все хорошо.Но перезапускать каждые 3-4 моба клиент не весело.
Подскажите пожалуйста что не так?

Code: Select all

Program New;
type ArrayType1 = Array of Word;
var 
i:integer;
ctime : TDateTime;
kamen : ArrayType1;
begin
kamen:=[$0F03,  //неизвестные зелья
$0F78,          // крылья летучей мыши
$0F7F,          // серные камни
$0F79,          // торф
$0F83,          // грибы палача
$0F8B,          // пемза
$14EE,          //чертежи
//$0F0A,          //слабый яд
$0EED,          //деньги
//$0F88,          //дурман
//$0F8D,          //паутина
//$0F7B,          //кровавый мох
//$0F7A,          //черный жемчуг
//$0F85,          //женьшень
//$0F84,          //чеснок
//$0F86,          //мандрагора
//$0F8C,          //адский порошок
$136C,          //малый камень души 
$0F7D,          //кровяной реагент
$0F80,          //кости демона  
$0F7C,          //кровяные икра
$0F90,          //мертвое дерево
$0F87,          //глаза тритона
$0F8A,          //чугун
$2FB9,          //эльф роба
$0F0C,          //хилки
$108A,          //кольцо мага
$153F,          //повязка мага
$0F8E];         //змеиная чешуя
ctime:=now;
repeat
if (InJournalBetweenTimes('Uriel Ventris: Лут',ctime,Now)<>-1) then
begin
 if(findtypeex($14F0,$0000,backpack,false)<>0) then               ///ГОЗГ
 begin
 repeat
 useobject(findtypeex($14F0,$0000,backpack,false));
 waitfortarget(500);
 targettoobject(LastContainer);
 wait(500);
 until((InJournalBetweenTimes('не то существо',ctime,Now)<>-1)or
 (InJournalBetweenTimes('вернуться',ctime,Now)<>-1)or
 (InJournalBetweenTimes('забрали',ctime,Now)<>-1));                         /// гозг убирается
  if(findtypeex($14F0,$0087,backpack,false)<>0)then                        /// в отдельную сумку
  repeat
  moveitem(findtypeex($14F0,$0087,backpack,false),0,$5A911899,0,0,0);
  wait(1000);
  until(findtypeex($14F0,$0087,backpack,false)=0) ;
  end;
 if(findtype($0E24,backpack)<>0)then                               //сбор крови
 begin
 repeat
 useobject(findtype($0E24,backpack));
 wait(500);
 targettoobject(LastContainer);
 wait(500);
 until(InJournalBetweenTimes('нет крови',ctime,Now)<>-1);
 repeat                                                          //убираем пробирки с кровью
 moveitem(findtype($0F7D,backpack),0,$5A911899,0,0,0);           //в отдельный пак
 until(findtype($0F7D,backpack)=0) ;
 end;
 repeat                                                         //режем труп
useobject(findtype($0EC4,backpack));
waitfortarget(1000);
targettoobject(LastContainer);
wait(1000);
until((InJournalBetweenTimes('разрезали',ctime,Now)<>-1)or
(InJournalBetweenTimes('не знаете',ctime,Now)<>-1)or
(InJournalBetweenTimes('не смогли',ctime,Now)<>-1));
 if (findtype($1078,LastContainer)<>0)then                   //режем кожу в трупе
begin                                                        //ножницами и убираем
repeat                                                        //в отдельный пак
useobject(findtype($0F9E,backpack));
waitfortarget(200);
targettoobject(findtype($1078,LastContainer));
wait(200);
until(findtype($1078,LastContainer)=0);
repeat
moveitem(findtype($1067,LastContainer),0,$5A911899,0,0,0);
wait(1000);
until (findtype($1067,LastContainer)=0);
end;                                                                   //лутим все из 
for i:=0 to 19 do                                                      // списка в начале
if (findtypeex(kamen[i],$FFFF,LastContainer,true)<>0)then
repeat
moveitem(findtypeex(kamen[i],$FFFF,LastContainer,true),0,$5A911899,0,0,0);
wait(1000);
until (findtypeex(kamen[i],$FFFF,LastContainer,true)=0);
wait(1000);
useobject(findtype($26C0,backpack));                    //берем оружие назад в руки
wait(200);
uosay('некст');
clearjournal;
end;
wait(1000);
until dead;
end.
lemonter
Neophyte
Neophyte
Posts: 37
Joined: 14.05.2011 7:59

Re: Краш клиента при выполнении скрипта

Post by lemonter »

Да кстати возник вопрос ,можно ли организовать выполнение в 1 скрипте 2 и более параллельных задач?
Что бы выполнение шло не зависимо друг от друга,скажем персонаж мог лечиться и пить хилки параллельно с сниманием ловушек с сундука.
Если сделать 2 отдельных скрипта то будет как то не интересно((
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Краш клиента при выполнении скрипта

Post by CFA »

Подозреваю что какие то проблемы с клиентскими таргетами, но надо проверять.
lemonter wrote:Да кстати возник вопрос ,можно ли организовать выполнение в 1 скрипте 2 и более параллельных задач?
Что бы выполнение шло не зависимо друг от друга,скажем персонаж мог лечиться и пить хилки параллельно с сниманием ловушек с сундука.
Если сделать 2 отдельных скрипта то будет как то не интересно((
Именно запустить два независимых потока в одном скрипте нельзя, но можно имитировать многозадачность, примерно как в этом инклюде
Post Reply