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

Ивенты

тут можно задать вопрос по скриптингу
Post Reply
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Ивенты

Post by MuDaCk »

Я немного не понял по ивентам. Мне надо чтобы ивент срабатывал при фразе в журнале. Не могу понять чего не так.

Code: Select all

program deep_spirit_speak;

procedure Bomber(text,SenderName : String; SenderID : Cardinal);
begin
AddToSystemJournal('Event!  Speech: SenderID = $'+ IntToHex(SenderID,8) + ' ; SenderName =  ' + SenderName + '; SenderText : ' + text);
  if InJournal('MuDaCk: bomb') <> -1 then
begin
useobject(FindType($0F0D, backpack));
end;
end;

Begin
  SetEventProc('Speech Incoming', 'Bomber');
while true do
begin
UseSkill('spirit speak');
wait(120);
end;
 SetEventProc('Speech Incoming', '');
End.
вот как ругается
23:31:57:203 [magSil]: Compiling
23:31:57:218 [magSil]: Compiler: [Error] (Spirit speak.sc at 13:44): Type mismatch
23:31:57:218 [magSil]: Compiling failed
23:31:57:218 [magSil]: Script Spirit speak.sc stopped successfuly


13:44 это сразу после слов 'Bomber')


Не понимаю причём тут несовпадение типов...
My name is Игорёшка Image
Пишу скрипты за едуImage
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Ивенты

Post by CFA »

сейчас ивент задается не строкой, были добавлены константы и юзать в качестве имени ивента надо их -

Code: Select all

  TPacketEvent = ( 
{0} 
      evItemInfo, evItemDeleted, evSpeech, evDrawGamePlayer, 
      evMoveRejection, evDrawContainer, evAddItemToContainer, 
      evAddMultipleItemsInCont, evRejectMoveItem, evUpdateChar, 
{10} 
      evDrawObject, evMenu, evMapMessage, evAllow_RefuseAttack, 
      evClilocSpeech, evClilocSpeechAffix, evUnicodeSpeech, 
      evBuff_DebuffSystem, evClientSendResync, evCharAnimation, 
{20} 
      evICQDisconnect, evICQConnect, evICQIncomingText, evICQError, 
      evIncomingGump, evTimer1, evTimer2 
      );
те как то так -
SetEventProc(evSpeech, 'Bomber');

если текст русский, то наверное придется использовать evUnicodeSpeech, впрочем не уверен, надо тестить.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

А что это за цифры в фигурных скобочках?

Code: Select all

{10}
{20}
{30}
Кстати, огромное спасибо. ЮникодСпич отлично работает:)
My name is Игорёшка Image
Пишу скрипты за едуImage
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

Это коментарии, просто для удобства, разбивает константы на группы по 10.
Post Reply