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

Эвенты

тут можно задать вопрос по скриптингу
Post Reply
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Эвенты

Post by Tomers »

Подскажите, как реализовать 2 важных эвента:
1. Атакуют нашего персонажа -> позвать стражу.
2. Персонаж умер -> вписать кил.

Написал что-то типа:

Code: Select all

procedure guarded;
begin
  UOSay('guards');     //позвать стражу
end;

procedure kiled;
var i,k:byte;
begin
  k:=GetGumpsCount;
  for i:=1 to k do CloseSimpleGump(0);
  wait(5000);
  NumGumpButton(0,1);   //идея в том, что окно для вписывания кила появляется не сразу после смерти, а через пару секунд.
end;
       
Begin
  SetEventProc(evAllow_RefuseAttack,'guarded');
  SetEventProc(evDeath,'kiled');
  while true do wait(1000);  
End.
Не реагирует, хотя и ошибок при компиляции не выдает. Иногда вылетает с сообщением: "Too many parameters".
Кроме того, был бы полезен эвент на наличие отравления на персонаже (возможно для этого служит evBuff_DebuffSystem, но не пойму как с ней работать), и падении колличества жизней ниже максимального колличества, но таких эвентов вроде как нет.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Эвенты

Post by Vizit0r »

примеры ты упорно проигнорировал?
ID,Attack_OK

Code: Select all

procedure guarded(ID : Cardinal; Attack_OK : boolean);
begin
if Attack_OK and (ID = Self) then
  UOSay('guards');     //позвать стражу
end;

procedure kiled(DeadSt : Boolean);
var i,k:byte;
begin
if DeadSt then
begin
  k:=GetGumpsCount;
  for i:=1 to k do CloseSimpleGump(0);
  wait(5000);  
  NumGumpButton(0,1);   //идея в том, что окно для вписывания кила появляется не сразу после смерти, а через пару секунд.

end;
//идея в том, что окно для вписывания кила появляется не сразу после смерти, а через пару секунд.
хреновая идея. Сделай тогда уже еще один ивент на появление гампа, и включай его в этом месте. А потом в обработчике после нажатия на кнопку в гампе - отменяй обработчик.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Re: Эвенты

Post by Tomers »

Работает, но только если убрать

Code: Select all

and (ID = Self)
тут ID - это чей ИД применяется?

А справочниками я пользуюсь и примеры тоже смотрю, но если в справочнике написано что-то типа:

Code: Select all

evItemInfo, evItemDeleted  : [ID]  - понятно 
то извините, но некоторым может быть не совсем понятно, да и у разных людей взгляды на то, как должно что-то работать, тоже могут отличаться. И если логику пишет один человек, то другим оно может быть не совсем понятно. Да и глубина знаний в кодинге у разных людей тоже разная, тут есть абсолютные новички и тем не менее почему-то к ним отношение вполне нормальное.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Эвенты

Post by Vizit0r »

отредактируй страницу в вики - редактирование доступно всем. Я как понимал - так и написал. Докинь примеров, обьясни моменты, которые лично тебе были непонятны - хотя бы вкратце.
тут ID - это чей ИД применяется?
понятия не имею. пакетные гайды говорят, что Combatant, либо CharID being attacked
Как хочешь, так и понимай.
Я в эту область не залазил ни разу с тех пор, как занялся стелсом - работает и пусть.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply