Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ™®Long©™  
Форум » Lineage 2 » Скрипты » Что нужно знать для написания скриптов!
Что нужно знать для написания скриптов!
ALEXMANДата: Среда, 14.01.2009, 19:31 | Сообщение # 1
ADMIN
Группа: Администраторы
Сообщений: 1209
Репутация: 32
Статус:
Награды
АДМИН=) За создание сайта За 10 Сообщений За 50 Сообщений За 100 Сообщений За 200 Сообщений За 300 Сообщений За 400 Сообщений За 500 Сообщений За 600 Сообщений За 700 Сообщений За 800 Сообщений За 800 Сообщений За 1000 Сообщений
Прежде всего вам понадобится умение программирования на Object Pascal (или Delphi, что примерно тоже самое) и для манипуляций с пакетами естественно понадобится знать что они из себя представляют, о пакетах подробнее можно почитать в соответствующем разделе.

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

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

ССЫЛКА

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

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

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

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

ReadC(var index:integer):byte - читает из переменной pck байт
ReadH(var index:integer):word - читает из переменной pck число (2 байта) (v. 3.1.8+)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
ReadF(var index:integer):double - читает из переменной pck число c плавающей запятой(8 байт) (v. 3.1.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 байта) (v. 3.1.8+)
WriteD(v:integer; ind:integer=0) - пишет в переменную buf число (4 байта)
WriteF(v:double; ind:integer=0) - пишет в переменную buf число c плавающей запятой(8 байт) (v. 3.1.8+)
WriteS(v:string) - пишет в переменную buf строку (автоматический перевод в unicode)
В первых четырёх процедурах присутствует необязательный параметр ind. Если параметр не указан, то переменная buf дополняется байтом/числом, иначе модифицируется часть буфера.

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

Пример:
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 указывает с клиентом ли произошло соединение (v. 3.1.9+)
Процедура OnDisconnect(WithClient: Boolean) вызывается при потере соединения (v. 3.1.9+)
Процедура Init вызывается когда вы устанавливаете рядом со скриптом галочку.
Процедура Free вызывается когда вы убираете рядом со скриптом галочку.
Основное тело скрипта (между begin и end) вызывается каждый раз при получении пакета от сервера или клиента если скрипт отмечен галочкой.

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


Пишу РЕДКО, но МЕТКО!

ЕСЛИ ХОЧЕШЬ В ЖИЗНИ РИСК, СФОРМАТИРУЙ ЖЁСТКИЙ ДИСК!

"Кровавая Мэри" по-деревенски: доярка Фрося, затоптанная на утренней дойке.

Лучшее спасибо это + к репутации!!!

В тюрьме столько не сидят, сколько вы в интернете...

А зомби здесь тихие....




 
Форум » Lineage 2 » Скрипты » Что нужно знать для написания скриптов!
  • Страница 1 из 1
  • 1
Поиск:

Статистика Форума
Последнии темы Читаемые темы Лучшии пользователи Новые пользователи

World of Warcraft: новые формы друидов

(2)

WoW Nude PAtch

(1)

музыка из игр Underground 1 и Underground 2

(2)

vLineAge2.ru приглашает сразу после конца света, 22.12, 17.00 МСК!

(0)

Проект vLineAge2.ru приглашает Вас 19.10.2012 в 19.00 мск!

(0)

Новый вид опроса для uCoz

(0)

Связь с администрацией

(0)

ПОСАНЫ КУ

(0)

ПОСАНЫ КУ

(0)

Сегодня нас посетили XX юзеров

(0)

Скрипт "сегодня были пользователи" для uCoz

(0)

СМАРИТЕ СУДА

(0)

Котёнок для сайта - скрипт для укоз

(0)

Новый мини чат

(0)

Состав клана - победы поражения для ucoz

(0)

Реальные приколы))зайти всем

(72)

считаем до 1000 =)

(71)

скринсейвер

(44)

Описание оружия CS.

(36)

ыыыыыыыы

(27)

Рисунки значками

(22)

Предложения по улучшению сайта.

(21)

Прохождение

(16)

Юмористический уголок

(14)

Эт моя подруга)))

(13)

NFS

(12)

У нас новые смайлы

(12)

Каталог: справочная информация

(12)

Клонирование

(11)

скриншоты

(11)

ALEXMAN

(1209)

Zero

(621)

™®Long©™

(127)

gaskan

(63)

егорыч

(39)

Maximan

(27)

1Hapyto1

(21)

dancetecktonik

(20)

Katyara

(19)

Anna

(18)

magistr

(15)

lerekhan

(15)

SlemHut

(14)

kulan

(12)

kragsburger

(11)

s4astlivayat

(0)

nikskameykin

(1)

bioware73

(1)

diplomnhelp2000

(0)

leonidleonidval1

(0)

Admin(NOKIA)

(1)

vazonov11

(1)

shater2011

(0)

nurik93

(0)

DoG

(0)

Onlines

(0)

Shizune23

(1)

Alexman2339

(0)

TheyCallMePro64

(1)

maxycheks

(0)

2024
// -->