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
я элементалов гварджу..

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
Можно. Спрашивай.
Но советую сначала прочитать:
Язык паскаль