Встроенные переменные и функции для скриптов
Примечания:перед из пользованием программы содержимая патча вытащить.
Доступные переменные: pck (string) - текущий обрабатываемый пакет (без первых двух байт с размером) FromClient (boolean) - пакет (pck) пришел от клиента (всёравно что not FromServer) FromServer (boolean) - пакет (pck) пришел от сервера (всёравно что not FromClient) buf (string) - буфер, используемый некоторыми функциями ConnectName (string) - имя чара от или к которому идёт пакет (работает начиная с версии 3.1.3)
Доступные функции: ShowTab и HideTab - для отображения/скрытия панели, управлять которой можно из скрипта SendToClient - отправляет клиенту содержимое переменной buf SendToServer - отправляет серверу содержимое переменной buf SendToClientEx(CharName: string) - отправляет клиенту с именем CharName содержимое переменной buf (работает начиная с версии 3.1.3) SendToServerEx(CharName: string) - отправляет серверу с именем CharName содержимое переменной buf (работает начиная с версии 3.1.3) (к пакету buf автоматически добавляются 2 байта длины)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта) ReadS(var index:integer):string - читает из переменной pck строку ReadC(var index:integer):byte - читает из переменной pck байт Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)
HStr(h:string):string - преобразует строку в HEX-последовательность К примеру, HStr('AA 00 BB 00 CC 00') вернёт цепочку байт #$AA#$00#$BB#$00#$CC#$00. Можно передавать строку как с пробелами, так и без них; регистр символов не имеет значения.
WriteS(v:string) - пишет в переменную buf строку (автоматический перевод в unicode) WriteD(v:integer; ind:integer=0) - пишет в переменную buf число (4 байта) WriteC(v:byte; ind:integer=0) - пишет в переменную buf один байт
В первых двух процедурах присутствует необязательный параметр ind. Если параметр не указан, то переменная buf дополняется байтом/числом, иначе модифицируется часть буфера.
Пример: buf=HStr('AA BB CC DD EE'); Если вызвать функцию WriteD(10,1), то получим buf=[0A 00 00 00 EE]. А если просто WriteD(10), то [AA BB CC DD EE 0A 00 00 00].
Например скрипт:
Код:
begin if FromClient and (ConnectName='SokolA') and (pck=HStr('1b 04 00 00 00')) then begin buf:=HStr('45 00 00 00 00 00 00 00 00 00'); SendToServerEx('SokolB'); pck:=''; end; end.
При получении от клиента играющего за чара с ником SokolA пакета 1b 04 00 00 00 (социальное действие "Victory") непропустит этот пакет и отправит пакет 45 00 00 00 00 00 00 00 00 00 (команда сесть) от имени клиента играющего за чара с ником SokolB, тоесть играете вы в два окна, в одном SokolA, в другом SokolB, нажимаете в первом Victory, и SokolB садится.
На вкладке Скрипты: Процедура Init вызывается когда вы устанавливаете рядом со скриптом галочку. Процедура Free вызывается когда вы убираете рядом со скриптом галочку. Основное тело скрипта (между begin и end) вызывается каждый раз при получении пакета от сервера или клиента если скрипт отмечен галочкой.
На вкладке Дополнительно: Основное тело скрипта (между begin и end) вызывается по нажатию кнопки Выполнить, и прекращается либо по нажатию Стоп, либо по окончанию работы скрипта.
|