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

гвардс !

тут можно задать вопрос по скриптингу
Post Reply
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

гвардс !

Post by ParadoX »

такой вопрос - гвардилка почучается очень медленная !

Code: Select all

procedure redcheck;
var  n : integer;  l : TStringList;
begin

l := TStringList.Create(); 
FindType(-1,ground);
GetFindedList(l);
for n:=	l.count/3*2 to (l.count-1) do if (IsNPC(StrToInt('$'+l.strings[n]))) and (GetNotoriety(StrToInt('$'+l.strings[n]))>1) then UOSay('.guards')
l.free;
end;
что делать ? может миралекс подскажет пару решений ?

получается функция очинь тяжкая... а иначе реализовать ну не наю.. разве что ВСЕ итемы в игнор.. или искать только по типам.. но эт тоже не тру.. три типа.. или 4 нуно..
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

По типам тебе явно не подойдет, так как могут привести любое NPC, которые ты не сможешь "загвардить"!

С исправленными ошибками будет выглядеть так:

Code: Select all

procedure redcheck; 
var  n : integer; l : TStringList; 
       finded : Boolean;
begin 
finded := False;
l := TStringList.Create(); 
FindType(-1,ground); 
GetFindedList(l); 
if (l.count > 0) then
begin
for n:= 0 to (l.count-1) do
if (IsNPC(StrToInt('$'+l.strings[n]))) and (GetNotoriety(StrToInt('$'+l.strings[n]))>1) then finded := true;
end;
l.free; 
if finded then UOSay('.guards');
end;
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

Miralex wrote:

Code: Select all

procedure redcheck; 
var  n : integer; l : TStringList; 
       finded : Boolean;
begin 
finded := False;
l := TStringList.Create(); 
FindType(-1,ground); 
GetFindedList(l); 
if (l.count > 0) then
begin
for n:= 0 to (l.count-1) do
if (IsNPC(StrToInt('$'+l.strings[n]))) and (GetNotoriety(StrToInt('$'+l.strings[n]))>1) then finded := true;
end;
l.free; 
if finded then UOSay('.guards');
end;
теперь посмотрим на твою реализвацию.. у меня было очень хорошее то, что от коунта не отнималось, а он делился, тем самым - 0/n будет 0
да и я точно не могу сказаьб что с помощью лишней переменной цикл будет крутится меньше 4х секунд да и при нахождении цикл должен в таком случаее остановится... вобщем моя идея полностью пролетает.. ( пока юзаем
begin
finddistance:=10;
addtosystemjournal(inttostr(countEX($0010,-1,ground)))
if findtype($0010,ground)>0 then UOSay('.guards')
finddistance:=3;
end;
пока ни разу не подвела, и что самое интересное, работает только findtype($0010,ground)>0 , тоесть не работает count и не работает findtype($0010,ground)<>0

ЗЫ щас буду просерять сколько работают твоя и моя гвардилки... до и после замучу метки во времени )) и сравню..
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

зачем гвардить мирно пробегающего красного чара :) о потом на зло тебя постораеться убить)

короче может гвардить есть видиш каст опасный или сообщение об атаке
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

я элементалов гварджу.. :evil:
Frenkis
Neophyte
Neophyte
Posts: 11
Joined: 16.05.2005 16:46

Post by Frenkis »

Подскажите плз, как вставить в скрипт гвардилку, и как сделать, чтоб чар на нее ссылался??
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Frenkis wrote:Подскажите плз, как вставить в скрипт гвардилку, и как сделать, чтоб чар на нее ссылался??
Вставить также как и остальные ф-ции, и вызывай там, где тебе она нужна.
Frenkis
Neophyte
Neophyte
Posts: 11
Joined: 16.05.2005 16:46

Post by Frenkis »

Можно ли по подробней?
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Можно. Спрашивай.

Но советую сначала прочитать:
Язык паскаль
Post Reply