Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Недостаточно памяти для обработки команды

Рег
12 Дек 2015
Сообщения
19
Реакции
0
Через минут 40-60 после запуска скрипта выдает сообщение как на скрине, после этого появляются какие то окна и скрипт зависает. Если кто сталкивался с такой проблемой в какую сторону рыть?
 

Вложения

  • Безымянный23.jpg
    Безымянный23.jpg
    45 KB · Просмотры: 0
видимо в сторону оптимизации скрипта, очистки используемой памяти) без скрипта тебе вряд ли кто-то поможет.
 
var obj: TL2NPC;
obj2: TL2Effect;
item: TL2Item;

Enemy: TL2Live;


procedure InviteParty;
begin
while Engine.Status = lsOnline do begin
if (ChatMessage.ChatType = mtPrivate) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty mtAll=белый
begin
if pos('***',ChatMessage.Text)>0 then
begin
engine.InviteParty(ChatMessage.Sender); // Пати тому кто послал сообщение
end;
end;
delay(10000);
end;
end;
procedure Weapon;
begin
// while true do
// begin
delay(500);
if inventory.user.byid(15889, item) and not (Item.Equipped) then
begin
Delay(500);
Engine.UseItem(item);
Delay(800);
// end;
end;
end;
Begin
while 1<>2 do begin


if User.Dead then
begin
Engine.FaceControl(0,false);
delay(6000);
Engine.gohome;
delay(15000);
end;
if User.inrange(-175688, 154168, 2728, 1500) then begin
Engine.MoveTo(-176328, 153896, 2712);
Engine.MoveTo(-176808, 153768, 2720);
Engine.MoveTo(-176824, 153752, 2720);
Engine.MoveTo(-177352, 153624, 2704);
Engine.MoveTo(-178360, 153384, 2488);
Engine.MoveTo(-178248, 153384, 2488);
end;
if User.inrange(-178248, 153384, 2488, 600, 100) then begin
delay(2550);
Engine.BypassToServer('_bbshome');
delay(500);
Engine.BypassToServer('13');
delay(500);
Engine.BypassToServer('15c Player');
delay(500);
//Engine.UseSkill(1323); // NOBLE
//delay(500);
Engine.BypassToServer('159');
delay(500);
Engine.BypassToServer('15a');
delay(500);
Engine.BypassToServer('15b');
delay(500);
Engine.Settarget(32734); //НПЦ;
Delay(1500);
Engine.MoveToTarget(-1);
Engine.Dlgopen;
Engine.DlgSel(1);
Delay(1000);
end;
if User.inrange(-180184, 185960, -10552, 150) then begin
Engine.MoveTo(-180408, 186088, -10552);
Engine.MoveTo(-180600, 186248, -10536);
Engine.MoveTo(-180776, 186392, -10512);
Engine.MoveTo(-181016, 186568, -10512);
Engine.MoveTo(-181320, 186776, -10528);
Engine.MoveTo(-181656, 186936, -10536);
Engine.MoveTo(-181880, 186952, -10528);
Engine.MoveTo(-182104, 186840, -10528);
Engine.MoveTo(-182376, 186712, -10536);
end;


if User.inrange(-213176, 182632, -10976, 800, 500) then begin
Engine.MoveTo(-213208, 182344, -10976);
Engine.MoveTo(-213704, 182392, -10976);
Engine.MoveTo(-214248, 182440, -10976);
end;







// while true do
if User.inrange(-214248, 182440, -10976, 150) then begin
Engine.FaceControl(0,true);
delay(550);
end;
delay(550);
script.newThread(@InviteParty);
script.newThread(@Weapon);
end;
end.
в общем то скрипт простой, умер-встал-бафнулся-добежал-включил адрика, параллельно одел пушку при дизарме, и принял в пати всех по сообщению
ругается соответственно по очереди на

script.newThread(@InviteParty);
script.newThread(@Weapon);
если их убрать и процедуры закоментить, перестает )
я так понимаю процессы забивают некий фаил типа оперативки, его можно как то принудительно очищать из скрипта, или может увеличить размер как то?
ПС: скрин с ошибкой от похожего скрипта который я уже подчистил от лишних плюшек чтоб так сказать процесс не останавливался
 
husteg написал(а):
var obj: TL2NPC; obj2: TL2Effect; item: TL2Item; Enemy: TL2Live; procedure InviteParty; begin while Engine.Status = lsOnline do begin if (ChatMessage.ChatType = mtPrivate) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty mtAll=белый begin if pos('***',ChatMessage.Text)>0 then begin engine.InviteParty(ChatMessage.Sender); // Пати тому кто послал сообщение end; end; delay(10000); end; end; procedure Weapon; begin // while true do // begin delay(500); if inventory.user.byid(15889, item) and not (Item.Equipped) then begin Delay(500); Engine.UseItem(item); Delay(800); // end; end; end; Begin while 1<>2 do begin if User.Dead then begin Engine.FaceControl(0,false); delay(6000); Engine.gohome; delay(15000); end; if User.inrange(-175688, 154168, 2728, 1500) then begin Engine.MoveTo(-176328, 153896, 2712); Engine.MoveTo(-176808, 153768, 2720); Engine.MoveTo(-176824, 153752, 2720); Engine.MoveTo(-177352, 153624, 2704); Engine.MoveTo(-178360, 153384, 2488); Engine.MoveTo(-178248, 153384, 2488); end; if User.inrange(-178248, 153384, 2488, 600, 100) then begin delay(2550); Engine.BypassToServer('_bbshome'); delay(500); Engine.BypassToServer('13'); delay(500); Engine.BypassToServer('15c Player'); delay(500); //Engine.UseSkill(1323); // NOBLE //delay(500); Engine.BypassToServer('159'); delay(500); Engine.BypassToServer('15a'); delay(500); Engine.BypassToServer('15b'); delay(500); Engine.Settarget(32734); //НПЦ; Delay(1500); Engine.MoveToTarget(-1); Engine.Dlgopen; Engine.DlgSel(1); Delay(1000); end; if User.inrange(-180184, 185960, -10552, 150) then begin Engine.MoveTo(-180408, 186088, -10552); Engine.MoveTo(-180600, 186248, -10536); Engine.MoveTo(-180776, 186392, -10512); Engine.MoveTo(-181016, 186568, -10512); Engine.MoveTo(-181320, 186776, -10528); Engine.MoveTo(-181656, 186936, -10536); Engine.MoveTo(-181880, 186952, -10528); Engine.MoveTo(-182104, 186840, -10528); Engine.MoveTo(-182376, 186712, -10536); end; if User.inrange(-213176, 182632, -10976, 800, 500) then begin Engine.MoveTo(-213208, 182344, -10976); Engine.MoveTo(-213704, 182392, -10976); Engine.MoveTo(-214248, 182440, -10976); end; // while true do if User.inrange(-214248, 182440, -10976, 150) then begin Engine.FaceControl(0,true); delay(550); end; delay(550); script.newThread(@InviteParty); script.newThread(@Weapon); end; end.
im not pro but script.newthread add in loop bad idea, you can try this
Код:
var obj: TL2NPC;
    obj2: TL2Effect;
    item: TL2Item;
    
   Enemy: TL2Live;


procedure InviteParty;
begin
   while Engine.Status = lsOnline do begin
      if (ChatMessage.ChatType = mtPrivate) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty  mtAll=белый
      begin
      if pos('***',ChatMessage.Text)>0 then
      begin
      engine.InviteParty(ChatMessage.Sender); // Пати тому кто послал сообщение
      end;
      end;
    delay(10000);
   end;
end;
procedure Weapon;
 begin
     while true do
     begin
    delay(500);
    if inventory.user.byid(15889, item) and not (Item.Equipped) then 
    begin
      Delay(500);
      Engine.UseItem(item);
      Delay(800);
    end;
    end;
  end;
  
Begin
script.newThread(@InviteParty);
script.newThread(@Weapon);
while 1<>2 do begin  


if User.Dead then
       begin
       Engine.FaceControl(0,false);
       delay(6000);
       Engine.gohome;
       delay(15000);
       end;
 if User.inrange(-175688, 154168, 2728, 1500) then begin
Engine.MoveTo(-176328, 153896, 2712);
Engine.MoveTo(-176808, 153768, 2720);
Engine.MoveTo(-176824, 153752, 2720);
Engine.MoveTo(-177352, 153624, 2704);
Engine.MoveTo(-178360, 153384, 2488);
Engine.MoveTo(-178248, 153384, 2488);
 end;
 if User.inrange(-178248, 153384, 2488, 600, 100) then begin
      delay(2550);
      Engine.BypassToServer('_bbshome'); 
 delay(500);
 Engine.BypassToServer('13');
 delay(500);
 Engine.BypassToServer('15c Player');
 delay(500);
 //Engine.UseSkill(1323); // NOBLE
 //delay(500);
 Engine.BypassToServer('159');
 delay(500);
 Engine.BypassToServer('15a');
 delay(500);
 Engine.BypassToServer('15b');
 delay(500);
 Engine.Settarget(32734); //НПЦ;
 Delay(1500);
 Engine.MoveToTarget(-1);
 Engine.Dlgopen;
 Engine.DlgSel(1);
 Delay(1000);
end;
if User.inrange(-180184, 185960, -10552, 150) then begin
Engine.MoveTo(-180408, 186088, -10552);
Engine.MoveTo(-180600, 186248, -10536);
Engine.MoveTo(-180776, 186392, -10512);
Engine.MoveTo(-181016, 186568, -10512);
Engine.MoveTo(-181320, 186776, -10528);
Engine.MoveTo(-181656, 186936, -10536);
Engine.MoveTo(-181880, 186952, -10528);
Engine.MoveTo(-182104, 186840, -10528);
Engine.MoveTo(-182376, 186712, -10536);
end;


if User.inrange(-213176, 182632, -10976, 800, 500) then begin
Engine.MoveTo(-213208, 182344, -10976);
Engine.MoveTo(-213704, 182392, -10976);
Engine.MoveTo(-214248, 182440, -10976);
end;

  if User.inrange(-214248, 182440, -10976, 150) then begin 
 Engine.FaceControl(0,true);
 delay(550);
    end;
 delay(550);
 end;
 end.
 
@adr.bot, друг спасибо! работает больше часа полет нормальный)
 
Назад
Сверху