Готовил статейку по ивентам, но она стала на этом варианте:
Установка обработчика событий.
Code: Select all
procedure SetEventProc(Eventname: TPacketEvent; Procname: String);
TPacketEvent = {
evItemInfo,
evItemDeleted,
evSpeech,
evDrawGamePlayer,
evMoveRejection,
evDrawContainer,
evAddItemToContainer,
evAddMultipleItemsInCont,
evRejectMoveItem,
evUpdateChar,
evDrawObject,
evMenu,
evMapMessage,
evAllow_RefuseAttack,
evClilocSpeech,
evClilocSpeechAffix,
evUnicodeSpeech,
evBuff_DebuffSystem,
evClientSendResync,
evCharAnimation,
evICQDisconnect,
evICQConnect,
evICQIncomingText,
evICQError,
evIncomingGump,
evTimer1,
evTimer2
};
Для сброса обработчика необходимо в параметре Procname передать пустую строку.
evItemInfo - получена информация о предмете.
Пример процедуры-обработчика:
procedure OnItemInfo(ID: Cardinal);
evItemDeleted - удаление объекта.
Пример процедуры-обработчика:
procedure OnItemDeleted(ID: Cardinal);
evSpeech - получение ANSI-сообщения.
Пример процедуры-обработчика:
procedure OnSpeech(Text, SenderName: String; SenderID: Cardinal);
evDrawGamePlayer - в основном отрисовка Вашего чара, но не всегда.
Пример процедуры-обработчика:
procedure OnDrawGamePlayer(ID: Cardinal);
evMoveRejection - сервер не разрешил шагнуть.
Пример процедуры-обработчика:
procedure OnMoveRejection(Xorig, Yorig: Word; Dir:Byte; X, Y: Word);
evDrawContainer - отрисовка контейнера.
Пример процедуры-обработчика:
procedure OnDrawContainer(ID: Cardinal; ModelGump: Word);
evAddItemToContainer - добавление предмета в контейнер.
Пример процедуры-обработчика:
procedure OnAddItemToContainer(ID, ContainerID: Cardinal);
evAddMultipleItemsInCont - добавление нескольких предметов в контейнер.
Пример процедуры-обработчика:
procedure OnAddMultipleItemsInCont(ContainerID: Cardinal);
evRejectMoveItem - запрет перемещения предмета.
Пример процедуры-обработчика:
procedure OnRejectMoveItem(Reason: Byte);
Известные причины отказа:
0 - Невозможно поднять предмет.
1 - Предмет недоступен.
2 - Предмет не виден.
3 - Предмет может быть только украден.
4 - Вы уже держите предмет.
evUpdateChar - Отрисовка чара (необязательно Вашего).
Пример процедуры-обработчика:
procedure OnUpdateChar(ID: Cardinal);
evDrawObject - Отрисока объекта.
Пример процедуры-обработчика:
procedure OnDrawObject(ID: Cardinal);
evMenu - получение контекстного меню.
Пример процедуры-обработчика:
procedure OnMenu(DialogID, MenuID: Cardinal);
evMapMessage - открылась карта.
Пример процедуры-обработчика:
procedure OnMapMessage(ID:Cardinal; CenterX, CenterY: Integer);
evAllow_RefuseAttack - принята/отклонена атака.
Пример процедуры-обработчика:
procedure OnAllow_RefuseAttack(ID: Cardinal; Allow: Boolean);
evClilocSpeech - получение сообщения клилока/тултипа (не предмета).
Пример процедуры-обработчика:
procedure OnClilocSpeech(SenderID: Cardinal; SenderName: String; ClilocID: Cardinal; ClilocText: String);
evClilocSpeechAffix - получение сообщения клилока/тултипа (не предмета).
Пример процедуры-обработчика:
procedure OnClilocSpeechAffix(SenderID: Cardinal; SenderName: String; ClilocID: Cardinal; Affix, ClilocText: String);
evUnicodeSpeech - получение Unidoce-сообщения.
Пример процедуры-обработчика:
procedure OnUnicodeSpeech(Text, SenderName: String; SenderID: Cardinal);
evBuff_DebuffSystem - изменение состояния (касты и все такое).
Пример процедуры-обработчика:
procedure OnBuff_DebuffSystem(ID, Attribute_ID: Cardinal; IsEnabled: Boolean);
evClientSendResync - стелс (или клиент через него) отослали ресинк.
Пример процедуры-обработчика:
procedure OnClientSendResync();
evCharAnimation - отрисовка анимации чара.
Пример процедуры-обработчика:
procedure OnCharAnimation(ID: Cardinal; Action: Word);
evICQDisconnect - событие отключения ICQ.
Пример процедуры-обработчика:
procedure OnICQDisconnect();
evICQConnect - событие подключения ICQ.
Пример процедуры-обработчика:
procedure OnICQConnect();
evICQIncomingText - получение сообщения через ICQ.
Пример процедуры-обработчика:
procedure OnICQIncomingText(UIN: Cardinal; Text: String);
evICQError - ошибка ICQ.
Пример процедуры-обработчика:
procedure OnICQError(Text: String);
evIncomingGump - пролучен гамп.
Пример процедуры-обработчика:
procedure OnIncomingGump(Serial, GumpID, X, Y: Cardinal);
evTimer1 - первый таймер (срабатывает каждые 100 милисекунд).
Пример процедуры-обработчика:
procedure OnTimer1();
evTimer2 - второй таймер (срабатывает каждые 100 милисекунд).
Пример процедуры-обработчика:
procedure OnTimer2();