Page 1 of 1

гвардс !

Posted: 28.09.2005 21:50
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 нуно..

Posted: 29.09.2005 7:44
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;

Posted: 29.09.2005 13:47
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

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

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

короче может гвардить есть видиш каст опасный или сообщение об атаке

Posted: 02.10.2005 10:26
by ParadoX
я элементалов гварджу.. :evil:

Posted: 15.12.2005 19:06
by Frenkis
Подскажите плз, как вставить в скрипт гвардилку, и как сделать, чтоб чар на нее ссылался??

Posted: 16.12.2005 15:00
by Miralex
Frenkis wrote:Подскажите плз, как вставить в скрипт гвардилку, и как сделать, чтоб чар на нее ссылался??
Вставить также как и остальные ф-ции, и вызывай там, где тебе она нужна.

Posted: 16.12.2005 17:16
by Frenkis
Можно ли по подробней?

Posted: 20.12.2005 13:19
by Miralex
Можно. Спрашивай.

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