Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

что нужно знать для написания скриптов

-

Общение и обсуждение Aion

- События, информация, вопросы и ответы по Aion

Ответ
 
Опции темы
Старый 26.04.2011, 23:24   #1
 Разведчик
Аватар для Boom!Headsot
 
Boom!Headsot на правильном пути
Регистрация: 12.04.2011
Сообщений: 34
Популярность: 50
Сказал(а) спасибо: 2
Поблагодарили 20 раз(а) в 16 сообщениях
Отправить сообщение для Boom!Headsot с помощью Skype™
 
По умолчанию что нужно знать для написания скриптов

для начала нам понадобится умение программирования на Object Pascal (или Delphi, что примерно тоже самое) и для манипуляций с пакетами естественно понадобится знать что они из себя представляют.

В этой теме я лиш приведу описания внутренних функций и переменных программы.

Описание FastScript: (это скриптовой движек использованный в программе)
[Ссылки могут видеть только зарегистрированные пользователи. ]

Доступные переменные:
pck (string) - текущий обрабатываемый пакет (без первых двух байт с размером)
FromClient (boolean) - пакет (pck) пришел от клиента (всёравно что not FromServer)
FromServer (boolean) - пакет (pck) пришел от сервера (всёравно что not FromClient)
buf (string) - буфер, используемый некоторыми функциями
ConnectName (string) - имя чара от или к которому идёт пакет
ConnectID (integer) - номер соединения для которого выполняется скрипт

Доступные функции:
ShowTab и HideTab - для отображения/скрытия панели (UserTab), управлять которой можно из скрипта
Для рисования на ней контролов надо указывать UserTab в качестве родителя
SendToClient - отправляет клиенту содержимое переменной buf
SendToServer - отправляет серверу содержимое переменной buf
SendToClientEx(CharName: string) - отправляет клиенту с именем CharName содержимое переменной buf
SendToServerEx(CharName: string) - отправляет серверу с именем CharName содержимое переменной buf
(к пакету buf автоматически добавляются 2 байта длины)

NoFreeOnClientDisconnect - запрещает закрытие соединения при дисконекте клиента
NoFreeOnServerDisconnect - запрещает закрытие соединения при дисконекте сервера
YesFreeOnClientDisconnect - разрешает закрытие соединения при дисконекте клиента
YesFreeOnServerDisconnect - разрешает закрытие соединения при дисконекте сервера
(по умолчанию закрытия разрешены)
DisconnectServer - закрывает соединение с сервером
DisconnectClient - закрывает соединение с клиентом

ConnectNameByID(id:integer):string - возвращает имя соединения по его ID
ConnectIDByName(name:string):integer - возвращает ID соединения по его имени
SetName(Name:string) - устанавливает имя соединения

ReadC(var index:integer):byte - читает из переменной pck байт
ReadH(var index:integer):word - читает из переменной pck число (2 байта)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
ReadF(var index:integer)ouble - читает из переменной pck число c плавающей запятой(8 байт)
ReadS(var index:integer):string - читает из переменной pck строку (в пакете строка unicode нультерминированная, а результирующая строка обычная паскалевская)
Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)

HStr(h:string):string - преобразует строку в HEX-последовательность
К примеру, HStr('AA 00 BB 00 CC 00') вернёт цепочку байт #$AA#$00#$BB#$00#$CC#$00. Можно передавать строку как с пробелами, так и без них; регистр символов не имеет значения.

WriteC(v:byte; ind:integer=0) - пишет в переменную buf один байт
WriteH(v:word; ind:integer=0) - пишет в переменную buf число (2 байта)
WriteD(v:integer; ind:integer=0) - пишет в переменную buf число (4 байта)
WriteF(vouble; ind:integer=0) - пишет в переменную buf число c плавающей запятой(8 байт)
WriteS(v:string) - пишет в переменную buf строку (автоматический перевод в unicode)
В первых четырёх процедурах присутствует необязательный параметр ind. Если параметр не указан, то переменная buf дополняется байтом/числом, иначе модифицируется часть буфера.

LoadLibrary(LibName:String):Integer - подгружает к программе библиотеку LibName и возвращает указатель на неё
FreeLibrary(LibHandle:Integer):Boolean - выгружает из памяти программы библиотеку
CallFunction(LibHandle:integer;FunctionName:String ;Count:Integ er;Params:array of variant):variant - вызывает функцию FunctionName из зарание подгруженной библиотеки с указателем LibHandle и параметрами перечисленными в Params

Пример:
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 садится.

Пример вызова функций из системных библиотек:
Код:
var
lib,Lib1:Integer;
Res:variant;
ar:array of variant;
begin
lib := loadLibrary('User32.dll');
lib1 := loadLibrary('GDI32.dll');
Res := CallFunction(lib,'MessageBoxW',4,[nil,'Text1','text2',0]);
Res := CallFunction(lib,'GetDC',1,[0]);
CallFunction(lib1,'LineTo',3,[Res,100,100]);
CallFunction(lib,'ReleaseDC',2,[0,Res]);
FreeLibrary(lib);
FreeLibrary(lib1);
end.
На вкладке Скрипты:
Процедура OnConnect(WithClient: Boolean) вызывается при установке соединения, флаг WithClient указывает с клиентом ли произошло соединение
Процедура OnDisconnect(WithClient: Boolean) вызывается при потере соединения
Процедура Init вызывается когда вы устанавливаете рядом со скриптом галочку.
Процедура Free вызывается когда вы убираете рядом со скриптом галочку.
Основное тело скрипта (между begin и end) вызывается каждый раз при получении пакета от сервера или клиента если скрипт отмечен галочкой.

На вкладке Дополнительно:
Основное тело скрипта (между begin и end) вызывается по нажатию кнопки Выполнить, и прекращается либо по нажатию Стоп, либо по окончанию работы скрипта.



В пример приводил скрипты с л2....
От спс не откажусь

Добавлено через 18 часов 55 минут
Можно переместить в раздел Боты, скрипты и прочий софт для Aion! Случайно тему создал не в том разделе
________________
-=BOOM! Headsot=-

Последний раз редактировалось Boom!Headsot; 27.04.2011 в 18:20. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Loik (28.04.2011)
Старый 28.04.2011, 16:46   #2
 Разведчик
Аватар для Loik
 
Loik никому не известный тип
Регистрация: 28.04.2011
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 15
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: что нужно знать для написания скриптов

Я это знал, но для новичков я думаю пойдёт! спс
________________
КОТЭ ЗЛОЙ!:
  Ответить с цитированием
Старый 02.05.2011, 15:45   #3
 Разведчик
Аватар для nonamenoadres
 
nonamenoadres никому не известный тип
Регистрация: 16.09.2010
Сообщений: 18
Популярность: 12
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: что нужно знать для написания скриптов

омг....копипаст с coderx.ru
АВТОР fail.
Модераторы обратите внимание на Boom!Headsot и Loik - автор одно лицо. дайте пред этому школоло.

Последний раз редактировалось nonamenoadres; 02.05.2011 в 15:57.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Все что нужно знать о Маг Пачках(Epilogue) eNRAGE2 Статьи и описания по Lineage 2 6 30.01.2011 08:23
Некоторые вещи нужно знать. XxPATRONxX Rising Force Online 2 23.01.2010 15:38

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:29.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net