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

нужна помощь с глобальными переменными

тут можно задать вопрос по скриптингу
Post Reply
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

нужна помощь с глобальными переменными

Post by alpi »

Всем привет! Несказанно рад как возобновлению работы форума, так и тому, что теперь можно не напрягая Visitor'a, спросить мнения и совета у других участников форума.
Пожалуйста, помогите неофиту в устранении ошибок и оптимизации скриптов :) что мог сделал, но дальше не хватает знаний
Столкнулся с проблемой при использовании глобальных переменных между примерно 10-14 аккаунтами.
Есть два скрипта : первый запущен на ~10 чарах и ищет плееров по типу в заданном радиусе. Если находит - через глобальную переменную передает во второй скрипт, который передает сообщение о нахождении персонажа в эфир.
Проблема в том, что передается далеко не все и не всегда. То есть чар находится в первом скрипте, но второй скрипт не получает переменную. Подозреваю, что что-то напутано с задержками, пробовал по-разному, но не особо помогло...
этот скрипт запущен на "сателитах"

Code: Select all


      
   while (timer < timec + min) do
    begin 
     for i := 0 to 3 do
      begin
        tmp_obj := FindType(findinfo[i].id,ground);
		 wait(20);
		  res := GetGlobal('stealth','reset?');
           if (tmp_obj <> 0) and (res = 'no') then begin
                               SetGlobal('stealth',findinfo[i].var_name+myname,GetName(tmp_obj));
                                SetGlobal('stealth',myname+'_findmsg','1');
                                 AddToSystemJournal('найден(а) '+GetName(tmp_obj));
                                  Ignore(tmp_obj);
                                   tmp_obj := 0;
                                    wait(300);
                               end
         else begin SetGlobal('stealth',findinfo[i].var_name+myname,''); Ignore(tmp_obj); wait(100); end;
      end;
     

    end; 
  until false;
end.
этот скрипт передает сообщения в эфир

Code: Select all

   for i := 0 to 12 do 
    begin 
   
     location := GetGlobal('stealth',SPY[i]);
	  wait(10);
	  
	  chr_name := GetGlobal('stealth','man_'+SPY[i]);
	   if (chr_name <> '') then begin UOSay(Chr(39)+'asay Обнаружен '+chr_name+' в '+location); SetGlobal('stealth','reset?','yes'); wait(30); chr_name := ''; end
		else begin SetGlobal('stealth','reset?','no'); wait(20); end;
	  chr_name := GetGlobal('stealth','woman_'+SPY[i]);
	   if (chr_name <> '') then begin UOSay(Chr(39)+'asay Обнаружена '+chr_name+' в '+location); SetGlobal('stealth','reset?','yes'); wait(30); chr_name := ''; end
	    else begin SetGlobal('stealth','reset?','no'); wait(20); end;
	  chr_name := GetGlobal('stealth','portal_'+SPY[i]);
	   if (chr_name <> '') then begin UOSay(Chr(39)+'asay Открыт портал в '+location); SetGlobal('stealth','reset?','yes'); wait(30); chr_name := ''; end
	    else begin SetGlobal('stealth','reset?','no'); wait(20); end;
	  chr_name := GetGlobal('stealth','ghost_'+SPY[i]);
	   if (chr_name <> '') then begin UOSay(Chr(39)+'asay Обнаружен призрак '+chr_name+' в '+location); SetGlobal('stealth','reset?','yes'); wait(30); chr_name := ''; end
	    else begin SetGlobal('stealth','reset?','no'); wait(20); end;

end;
 
end.
Киньте свежим взглядом кто поопытнее меня будет пожалуйста :roll:
Буду рад любым комментариям/указаниям.
just student
MAKAPEBu4
Neophyte
Neophyte
Posts: 23
Joined: 16.12.2006 19:19

Post by MAKAPEBu4 »

Начни с "калиграфии" в коде.

Code: Select all

if (chr_name <> '') then begin UOSay(Chr(39)+'asay Обнаружен '+chr_name+' в '+location); SetGlobal('stealth','reset?','yes'); wait(30); chr_name := ''; end 
      else begin SetGlobal('stealth','reset?','no'); wait(20); end; 
Можна записать как

Code: Select all

if (chr_name <> '') then
begin
  UOSay(Chr(39)+'asay Обнаружен '+chr_name+' в '+location);
  SetGlobal('stealth','reset?','yes');
  wait(30);
  chr_name := '';
end else
begin
  SetGlobal('stealth','reset?','no');
  wait(20);
end;
Понятно, что в первом случае можна секономить уйму бамаги, но во втором все будет намного читабельнее ИМХО
Продолжи, тем что перестань забивать постоянно в глобальную переменную что либо, ее желательно трогаль в случаях когда это нужно делать. В приведенном примере у тебя в любом случае что-то пишется в глобальную, как и во многих других частях кода.
И закончи размышлениями, почему тебе кто-то должен помогать делать скрипт и быть добрым по отношению к тебе, если ты в замен никакого добра не приносишь? Как вариант готовый скрипт.
Или если пощитаеш это слишком грубым или нетактичным, слишком наглым или навяжчивым тогда перефразирую... Карнитки нифига не видно по твоим кускам кода, но в целом описал "возможную" проблему.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

alpi, забыл как тебя в асе зовут - стукнись втам еще раз
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Post by alpi »

MAKAPEBu4 wrote:Начни с "калиграфии" в коде.
Понятно, что в первом случае можна секономить уйму бамаги, но во втором все будет намного читабельнее ИМХО
В данном скрипте мне удобнее так было записать. Пожалуйста, давай без банальных истин и ЦУ.
MAKAPEBu4 wrote:Продолжи, тем что перестань забивать постоянно в глобальную переменную что либо, ее желательно трогаль в случаях когда это нужно делать. В приведенном примере у тебя в любом случае что-то пишется в глобальную, как и во многих других частях кода.
Именно так. пока не придумал, как это обойти. Дело в том, что у меня опрашивается глобальная переменная в цикле, и если ее не обнулить - то постоянно выдается результат.
MAKAPEBu4 wrote:И закончи размышлениями, почему тебе кто-то должен помогать делать скрипт и быть добрым по отношению к тебе, если ты в замен никакого добра не приносишь? Как вариант готовый скрипт.
поищи по форуму, вдруг что-то да увидишь. И закончи размышлениями: а зачем я столько написал, если я ничем не помог?
MAKAPEBu4 wrote: Или если пощитаеш это слишком грубым или нетактичным, слишком наглым или навяжчивым тогда перефразирую... Карнитки нифига не видно по твоим кускам кода, но в целом описал "возможную" проблему.
это что ? :)
Vizit0r wrote:alpi, забыл как тебя в асе зовут - стукнись втам еще раз
ок
just student
Post Reply