Page 1 of 1
					
				FindType
				Posted: 10.01.2010 20:13
				by NoSilence
				Как работает данная функция? Отправляется запрос на сервер либо производит поиск в уже отправленных итемах клиенту?
Дело в том, что я написал недавно скрипт. И по словам ГМа логи забиты моим флудом. Выяснилось, что данный флуд вызывает хил.
Code: Select all
if HealSelf then begin
  FindTypeEx($0E21, $0000, BackPack, false);
  if FindCount > 0 then
    Heal(FindItem, Self)
  else begin
    FindDistance:= 2;
    FindTypeEx($0E21, $0000, Ground, false);
    if FindCount > 0 then 
      Grab(FindItem, 200)
    else
      UOSay('No bandages were found.') end end;
 
			 
			
					
				Re: FindType
				Posted: 10.01.2010 20:53
				by CFA
				Никаких запросов на сервер findType не вызывает, поиск идет среди тех итемов, которые отправил сам сервер.
Heal(FindItem, Self) в студию
			 
			
					
				
				Posted: 10.01.2010 21:12
				by NoSilence
				Code: Select all
function Heal(Bandage, Target: cardinal):boolean;
var
  heal_lasttime: tdatetime;
  heal_ercounter: byte;
begin
result:= false;
if GetQuantity(Bandage) < 1 then exit;
heal_lasttime:= Now;
heal_ercounter:= 0;
UseObject(Bandage);
repeat
  wait(100)
  if InJournalBetweenTimes(Heal_HealMsg, heal_lasttime, Now) >= 0 then begin
    TargetToObject(Target);
    result:= true;
    exit end;
  if InJournalBetweenTimes(Heal_ExitMsg, heal_lasttime, Now) >= 0 then exit;
  heal_ercounter:= heal_ercounter + 1;
until heal_ercounter >= Heal_MaxErrorTime;
end;
 
			 
			
					
				
				Posted: 10.01.2010 21:22
				by Wonder Pooh
				я так понял 
repeat until ты используешь чтобы дождаться таргета от бинта? может тогда так проще?
Code: Select all
function Heal(Bandage, Target: cardinal):boolean;
begin
result:= false;
if GetQuantity(Bandage) < 1 then exit;
if targetpresent then canceltarget;
UseObject(Bandage);
waitfortarget(5000);
if targetpresent then begin
  targettoobject(target);
  result := true;
  exit;
end;
end;
 
			 
			
					
				
				Posted: 10.01.2010 23:27
				by NoSilence
				Wonder Pooh wrote:я так понял repeat until ты используешь чтобы дождаться таргета от бинта? может тогда так проще?
Нет, смысл вот в чем: если бинты уже используется, то указатель не появится и waitfortarget(5000) будет ждать 5 секунд, а мне нужно это время свести к минимуму. Если же поставить меньше waitfortarget(1000), есть шанс, что при лаге таргет появится позже и будет сброшен при дальнейшей работе скрипта.
кст, про 
targetpresent как он работает? (ну, т.е. опять же, где-то сохраняется присутствие таргета или отправляется запрос на сервер) 

 
			 
			
					
				
				Posted: 10.01.2010 23:43
				by Wonder Pooh
				NoSilence wrote:если бинты уже используется, то указатель не появится
ну зацикливать явно лишнее.. тотже чеклаг срабатывает 100%, если пришел результат от тыкания по бэкпаку, значит сообщения от бинтов уже получено.. потом динамические паузы, либо следить за журналом с успешными, неуспешным или прерваным лечением, или за количеством бинтов.. сколько пользовался, сбоев никогда не было 
NoSilence wrote:кст, про 
targetpresent как он работает? (ну, т.е. опять же, где-то сохраняется присутствие таргета или отправляется запрос на сервер) 

 
а какая разница? в любом случае, либо сервер сам тебе отправляет эту информацию, либо он это делает по твоему запросу.. ни о каком флуде тут явно речи нету 

 
			 
			
					
				
				Posted: 10.01.2010 23:48
				by NoSilence
				Да я уже не знаю где искать, только одна зацепка на хил (стояло два чара на одном скрипте, а флуд шел только от хилящегося). Хм, а идея с сообщением об удачном/неудачном хиле хорошая. Переделаю, посмотрю.
Всем спасибо.
			 
			
					
				
				Posted: 10.01.2010 23:58
				by Wonder Pooh
				NoSilence wrote:Да я уже не знаю где искать
Имхо, искать надо в логах сферы 

 Оттуда будет видно, какое твое действие вызывает флуд. А потом уже смотреть где оно встречается в твоих скриптах.
А вообще, сейчас мысль мелькнула, скорее это кривые скрипты сферы.. Тот же хила переписали криво, и когда персонаж лечится, сфера пишет ошибочку.. А скрипт просто повторяет это регулярно 

 
			 
			
					
				
				Posted: 11.01.2010 1:33
				by Vizit0r
				
красиво, да.
завтра гляну скрипты
 
			 
			
					
				
				Posted: 14.01.2010 13:55
				by NoSilence
				Vizit0r wrote:
красиво, да.
 
Бывает парсер выдает ошибку, что перед until нету ;
Эстетика кодописания 

 
			 
			
					
				
				Posted: 14.01.2010 14:04
				by Vizit0r
				это не эстетика, это правильный синтаксис называется.