Какво трябва да знаете, за да пишете скриптове

На първо място, ще ви е необходима способност да програмирате в Object Pascal (или Delphi, което е почти същото) и да манипулирате пакети, естествено ще трябва да знаете какво представляват, можете да прочетете повече за пакетите в съответния раздел.

В тази тема ще дам описания само на вътрешните функции и променливи на програмата.

Описание на FastScript: (това е скриптовата машина, използвана в програмата) http://forum.coderx.ru/uploads/fs.rtf

Налични променливи:pck(низ) - текущият пакет, който се обработва (без първите два байта с размера)FromClient(булев) - пакетът (pck) идва от клиента (същото катоне FromServer)FromServer( boolean) - пакетът (pck) идва от сървъра (същото катоне FromClient)buf(низ) - буфер, използван от някои функцииConnectName(низ) - име на знак, от или към който отива пакетът (v. 3.1.3+)ConnectID(цяло число ) - номер на връзката, за която се изпълнява скриптът

Налични функции:ShowTabиHideTab- за показване/скриване на панела (UserTab), който може да се управлява от скрипта За да рисувате контроли върху него, укажетеUserTabкато родителSendToClient- изпраща съдържанието наbufпроменлива към клиентаS endToServer- изпраща съдържанието на променливатаbufкъм сървъраSendToClientEx(CharName: низ)- изпраща съдържанието на променливатаbuf(v. 3.1.3+) към клиента с име CharNameSendToServerEx( CharName: низ)- изпраща съдържанието на променливатаbufкъм сървъра с име CharName (v. 3 .1.3+) (2 байта дължина автоматично се добавят към buf пакета)

NoFreeOnClientDisconnect-деактивиране на затварянето на връзката при прекъсване на връзката на клиента (v. 3.1.9+)NoFreeOnServerDisconnect- деактивиране на затварянето на връзката при прекъсване на връзката със сървъра (v. 3.1.9+)YesFreeOnClientDisconnect- активиране на затваряне на връзката при прекъсване на връзката на клиента (v. 3.1.9+)Да FreeOnServerDisconnect- позволява затваряне на връзката, когато сървърът прекъсне връзката (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 - чете число (2 байта) отpckпроменлива (v. 3.1.8+)ReadD(var index:integer):integer - чете отpck променливаномер (4 байта)ReadF(var index:integer):double - чете от променливаpckчисло с плаваща запетая (8 байта) (v. 3.1.8+)ReadS(var index:integer):string - чете от променливаpckниз и полученият низ е обикновен Pascal) Индекс - първоначалната позиция на четене, която се модифицира от функцията (измества се с броя на прочетените байтове)

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

WriteC(v:byte; ind:integer=0) - записва един байт в променливатаbufWriteH(v:word; ind:integer=0) - записва число (2 байта) в променливатаbuf(v. 3.1.8+)WriteD(v: integer; ind: integer=0) - записва число (4 байта) в променливатаbufWriteF(v:double; ind:integer=0) - записва число с плаваща запетая (8 байта) в променливатаbuf(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+)Ca llFunction(LibHand le:integer;FunctionName:String;Count:Integ er;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].

Пример за извикване на функции от системни библиотеки:

В раздела Скриптове:ПроцедуратаOnConnect(WithClient: Boolean)се извиква, когато връзката е установена, флагътWithClientпоказва дали връзката с клиента е възникнала (v. 3.1.9+) Извиква се процедуратаOnDisconnect(WithClient: Boolean)когато връзката е загубена (v. 3.1.9+) ПроцедураInitсе извиква, когато поставите отметка в квадратчето до скрипта. ПроцедуратаFreeсе извиква, когато премахнете отметката от квадратчето до скрипта. Основното тяло на скрипта (междуbeginиend) се извиква всеки път, когато се получи пакет от сървъра или клиента, ако скриптът е проверен.

В раздела Разширени:Основната част на скрипта (междуbeginиend) се извиква чрез натискане на бутонаRunи се прекратява или чрез натискане наStop, или когато скриптът приключи.