L2phx:Курс молодого бойца

Тема в разделе "Читы для Lineage 2 [L2]", создана пользователем FlyInTheSky, 3 дек 2014.

  1. Оффлайн

    FlyInTheSky Жизнь Ворам,Смерть Мусорам

    На форуме с:
    14 июл 2013
    Сообщения:
    24
    Симпатии:
    3
    Баллы:
    4
    Пол:
    Мужской
    L2phx – программа, написанная с использованием движка FastScript.
    И что же мы сегодня рассмотрим,так это кодировку l2phx и способы написания скриптов.
    И так начнем:-->
    ****************************** О Fast Script **********************************
    Fast Script - мультиязычная скриптовая библиотека. Она будет полезна разработчикам, желающим добавить возможности исполнения скриптовых программ в свои проекты.
    Fast Script написан полностью на Object Pascal и может быть установлен в Borland Delphi 4-7, Borland C++Builder 4-6 и Borland Kylix 1-3.
    Уникальные возможности FastScript - возможность одновременного использования нескольких языков (в настоящее время -PascalScript, C++Script, JScript и BasicScript), вы можете писать скрипты используя ваш любимый язык программирования. FastScript не использует Microsoft Scripting Host, а потому может использоваться как в Windows, так и в Linux. Вы можете добавить любой другой новый язык - описание синтаксических конструкций языка хранится в XML-формате, вы можете добавлять другие скриптовые языки без Delphi-кодирования.
    ************************************************** **************************

    Возможности, реализованные в l2phx:
    - стандартный языковой набор: переменные, константы, процедуры, функции (с возможностью вложенности) с переменными/постоянными/умалчиваемыми параметрами, все стандартные операторы и объявления (включая case, try/finally/except, with), типы (целый, дробный, логический, символьный, строковый, многомерные массивы, множество, variant), классы (с методами, событиями, свойствами, индексами и свойствами по умолчанию).
    - проверка совместимости типов.

    Нереализованные возможности:
    - Отсутствуют объявления типов (records, classes) в скрипте;
    - Ннет записей (records), указателей (pointers), множеств (sets) (однако возможно использование оператора 'IN' - "a in ['a'..'c','d']"), нет типа shortstrings;
    - Отсутствует возможность безусловного перехода (GOTO).

    Структура построения скриптов:

    Структура PascalScript почти такая же, как и у Object Pascal:
    Код:
    program MyProgram; // опционально

    uses 'unit1.pas', 'unit2.pas';
    // раздел uses должен быть перед любыми другими разделами
    // Таким образом, они могут иметь секции 'program', 'uses' и должны иметь секцию 'main procedure'.

    var // раздел var
    i, j: Integer;

    const // раздел const
    pi = 3.14159;

    procedure p1; // процедуры и функции
    var
    i: Integer;

    procedure p2; // вложенная процедура
    begin
    end;

    begin
    end;

    begin // главный исполняемый модуль.
    end.
    Типы данных:
    FastScript работает с типом Variant и основан на нём. Тем не менее, вы можете использовать следующие предопределённые типы в ваших скриптах:
    Код:
    Byte | целочисленные
    Word |
    Integer |
    Longint |
    Cardinal |
    TColor |

    Boolean | логический

    Real | расширенный (с плавающей запятой)
    Single |
    Double |
    Extended |
    Currency |
    TDate |
    TTime |
    TDateTime |

    Char | символьный

    String | строковый

    Variant | Variant (вариантный тип)
    Pointer |

    Array | массив
    Классы:

    Вы не можете объявить класс в скрипте, но вы можете использовать внешние классы, объявленные в вашем приложении или в дополнительных модулях. Вот демонстрационный пример:
    Код:
    var
    f: TForm;
    b: TButton;

    procedure ButtonClick(Sender: TButton);
    begin
    ShowMessage(Sender.Name);
    f.ModalResult := mrOk;
    end;

    // нет никакой необходимости использовать все параметры в обработчиках событий,
    // потому что здесь не производится никакого контроля соответствия типов

    procedure ButtonMouseMove(Sender: TButton);
    begin
    b.Caption := 'moved over';
    end;

    begin
    f := TForm.Create(nil);
    f.Caption := 'Test it!';
    f.BorderStyle := bsDialog;
    f.Position := poScreenCenter;

    b := TButton.Create(f);
    b.Name := 'Button1';
    b.Parent := f;
    b.SetBounds(10, 10, 75, 25);
    b.Caption := 'Test';

    b.OnClick := @ButtonClick; { same as b.OnClick := 'ButtonClick' }
    b.OnMouseMove := @ButtonMouseMove;

    f.ShowModal;
    f.Free;
    end.

    Функции

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

    Преобразование типов

    function IntToStr(i: Integer): String
    Перевод целого в строку

    function FloatToStr(e: Extended): String
    Перевод числа с плавающей запятой в строку

    function DateToStr(e: Extended): String
    Перевод даты в строку

    function TimeToStr(e: Extended): String
    Перевод времени в строку

    function DateTimeToStr(e: Extended): String
    Перевод даты и времени в строку

    function VarToStr(v: Variant): String
    Перевод variant в строку

    function StrToInt(s: String): Integer
    Перевод строки в целое

    function StrToFloat(s: String): Extended
    Перевод строки в число с плавающей запятой

    function StrToDate(s: String): Extended
    Перевод строки в дату

    function StrToTime(s: String): Extended
    Перевод строки во время

    function StrToDateTime(s: String): Extended
    Перевод строки в дату и время


    Форматирование

    function Format(Fmt: String; Args: array): String
    Форматирование

    function FormatFloat(Fmt: String; Value: Extended): String
    Форматирование числа с плавающей запятой

    function FormatDateTime(Fmt: String; DateTime: TDateTime): String
    Форматирование даты и времени

    function FormatMaskText(EditMask: string; Value: string): string
    Форматирование строки по маске


    Дата/время

    function EncodeDate(Year, Month, Day: Word): TDateTime
    перевод года, месяца и дня в формат даты

    procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word)
    Перевод даты в года, месяц и день

    function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime
    Перевод часов, минут и секунд в формат времени

    procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)
    Перевод времени в часы, минуты и секунды

    function Date: TDateTime
    Текущая дата

    function Time: TDateTime
    Текущее время

    function Now: TDateTime
    Текущие дата и время

    function DayOfWeek(aDate: DateTime): Integer
    День недели

    function IsLeapYear(Year: Word): Boolean
    Високосный год

    function DaysInMonth(nYear, nMonth: Integer): Integer
    Дней в месяце

    Строковые функции

    function Length(s: String): Integer
    Длина строки

    function Copy(s: String; from, count: Integer): String
    Возвращает подстроку из строки с заданной позиции заданной длины

    function Pos(substr, s: String): Integer
    Позиция подстроки в строке

    procedure Delete(var s: String; from, count: Integer)
    Удаляет подстроку из строки с заданной позиции заданной длины

    procedure Insert(s: String; var s2: String; pos: Integer)
    Добавляет первую строку ко второй строке

    function Uppercase(s: String): String
    Перевод строки в верхний регистр

    function Lowercase(s: String): String
    Перевод строки в нижний регистр

    function Trim(s: String): String
    Удаляет окружающие пробелы из строки

    function NameCase(s: String): String
    Перевод первого символа в верхний регистр

    function CompareText(s, s1: String): Integer
    Сравнение строк

    function Chr(i: Integer): Char
    Возвращает символ с заданным номером

    function Ord(ch: Char): Integer
    Возвращает номер заданного символа

    procedure SetLength(var S: String; L: Integer)
    Устанавливает длину строки

    Математические функции

    function Round(e: Extended): Integer
    Округление до ближайшего

    function Trunc(e: Extended): Integer
    Округление до меньшего

    function Int(e: Extended): Integer
    Возвращает целую часть

    function Frac(X: Extended): Extended
    Возвращает дробную часть

    function Sqrt(e: Extended): Extended
    Возвращает квадратный корень

    function Abs(e: Extended): Extended
    Возвращает модуль числа

    function Sin(e: Extended): Extended
    Синус

    function Cos(e: Extended): Extended
    Косинус

    function ArcTan(X: Extended): Extended
    Арктангенс

    function Tan(X: Extended): Extended
    Тангенс

    function Exp(X: Extended): Extended
    Экспонента

    function Ln(X: Extended): Extended
    Натуральный логарифм

    function Pi: Extended
    Число Пи

    Другие

    procedure Inc(var i: Integer; incr: Integer = 1)
    Инкремент

    procedure Dec(var i: Integer; decr: Integer = 1)
    Декремент

    procedure RaiseException(Param: String)
    Генерация исключения

    procedure ShowMessage(Msg: Variant)
    Вывод сообщения

    procedure Randomize
    Инициализация генератора псевдослучайных чисел

    function Random: Extended
    Генерация псевдослучайного числа

    function ValidInt(cInt: String): Boolean
    Проверка валидности целого в строке

    function ValidFloat(cFlt: String): Boolean
    Проверка валидности цисла с плавающей запятой в строке

    function ValidDate(cDate: String): Boolean
    Проверка валидности даты в строке

    function CreateOleObject(ClassName: String): Variant
    Создание OLE-объекта

    function VarArrayCreate(Bounds: Array; Typ: Integer): Variant
    Создание динамического массива


    Как видите, некоторые функции и процедуры содержат параметры по умолчанию. Вы можете вызывать их так же, как и в Delphi:

    Inc(a);
    Inc(b, 2);

    События

    Вы можете использовать обработчики событий в скрипте. В отличие от обработчиков событий в Delphi, обработчики событий в скрипте не являются методами объекта. Следующий пример показывает, как подключить обработчик события к событию TButton.OnClick:

    Код:
    var
    b: TButton;
    Form1: TForm;

    procedure ButtonClick(Sender: TButton);
    begin
    ShowMessage(Sender.Name);
    end;

    begin
    b := TButton.Create(Form1);
    b.Parent := Form1;
    b.OnClick := @ButtonClick; { тоже что и b.OnClick := 'ButtonClick' }
    b.OnClick := nil; // сброс обработчика
    end.
    Вот некоторые предопределенные события, доступные в модуле FS_iEvents:
    Код:
    TfsNotifyEvent
    TfsMouseEvent
    TfsMouseMoveEvent
    TfsKeyEvent
    TfsKeyPressEvent
    TfsCloseEvent
    TfsCloseQueryEvent
    TfsCanResizeEvent
    Перечисления и множества

    FastScript поддерживает перечисления. Вы можете написать в скрипте:
    Код:
    Form1.BorderStyle := bsDialog;
    Множества не поддерживаются. Тем не менее, вы можете оперировать элементами множества:
    Код:
    Font.Style := fsBold; // Font.Style := [fsBold] в Delphi
    Font.Style := fsBold + fsItalic; // Font.Style := [fsBold, fsItalic]
    Font.Style := 0; // Font.Style := []

    Массивы

    FastScript поддерживает все типы массивов: статические (одномерные, многомерные), динамические, вариантные. Вот пример скрипта, использующего три массива целых чисел, объявленных разным способом:
    Код:
    var
    ar1: array[0..2] of Integer;
    ar2: array of Integer;
    ar3: Variant;

    SetLength(ar2, 3);
    ar3 := VarArrayCreate([0, 2], varInteger);
    ar1[0] := 1;
    ar2[0] := 1;
    ar3[0] := 1;
    информация взята с _http://l2phx.pp.ru

    Добавлено через 7 минут
    Доступные классы

    Из модуля Classes:

    TObject
    constructor TObject.Create
    procedure TObject.Free

    TPersistent
    procedure TPersistent.Assign(Source: TPersistent)

    TList
    function TList.Add(Item: TObject): Integer
    procedure TList.Clear
    procedure TList.Delete(Index: Integer)
    function TList.IndexOf(Item: TObject): Integer
    procedure TList.Insert(Index: Integer; Item: TObject)
    function TList.Remove(Item: TObject): Integer
    property TList.Count
    property TList.Items

    TStrings
    function TStrings.Add(const S: string): Integer
    function TStrings.AddObject(const S: string; AObject: TObject): Integer
    procedure TStrings.Clear
    procedure TStrings.Delete(Index: Integer)
    function TStrings.IndexOf(const S: string): Integer
    function TStrings.IndexOfName(const Name: string): Integer
    function TStrings.IndexOfObject(AObject: TObject): Integer
    procedure TStrings.Insert(Index: Integer; const S: string)
    procedure TStrings.InsertObject(Index: Integer; const S: string; AObject: TObject)
    procedure TStrings.LoadFromFile(const FileName: string)
    procedure TStrings.LoadFromStream(Stream: TStream)
    procedure TStrings.SaveToFile(const FileName: string)
    procedure TStrings.SaveToStream(Stream: TStream)
    property TStrings.CommaText
    property TStrings.Count
    property TStrings.Names
    property TStrings.Objects
    property TStrings.Values
    property TStrings.Strings
    property TStrings.Text

    TStringList
    function TStringList.Find(s: String; var Index: Integer): Boolean
    procedure TStringList.Sort
    property TStringList.Duplicates
    property TStringList.Sorted

    TStream
    function TStream.Read(Buffer: string; Count: Longint): Longint
    function TStream.Write(Buffer: string; Count: Longint): Longint
    function TStream.Seek(Offset: Longint; Origin: Word): Longint
    function TStream.CopyFrom(Source: TStream; Count: Longint): Longint
    property TStream.Position
    property TStream.Size

    TFileStream
    constructor TFileStream.Create(Filename: String; Mode: Word)

    TMemoryStream
    procedure TMemoryStream.Clear
    procedure TMemoryStream.LoadFromStream(Stream: TStream)
    procedure TMemoryStream.LoadFromFile(Filename: String)
    procedure TMemoryStream.SaveToStream(Stream: TStream)
    procedure TMemoryStream.SaveToFile(Filename: String)

    TComponent
    constructor TComponent.Create(AOwner: TComponent)
    property TComponent.Owner

    TfsXMLItem
    constructor TfsXMLItem.Create
    procedure TfsXMLItem.AddItem(Item: TfsXMLItem)
    procedure TfsXMLItem.Clear
    procedure TfsXMLItem.InsertItem(Index: Integer; Item: TfsXMLItem)
    function TfsXMLItem.Add: TfsXMLItem
    function TfsXMLItem.Find(const Name: String): Integer
    function TfsXMLItem.FindItem(const Name: String): TfsXMLItem
    function TfsXMLItem.Prop(const Name: String): String
    function TfsXMLItem.Root: TfsXMLItem
    property TfsXMLItem.Data
    property TfsXMLItem.Count
    property TfsXMLItem.Items
    property TfsXMLItem.Name
    property TfsXMLItem.Parent
    property TfsXMLItem.Text

    TfsXMLDocument
    constructor TfsXMLDocument.Create
    procedure TfsXMLDocument.SaveToStream(Stream: TStream)
    procedure TfsXMLDocument.LoadFromStream(Stream: TStream)
    procedure TfsXMLDocument.SaveToFile(const FileName: String)
    procedure TfsXMLDocument.LoadFromFile(const FileName: String)
    property TfsXMLDocument.Root

    const fmCreate
    const fmOpenRead
    const fmOpenWrite
    const fmOpenReadWrite
    const fmShareExclusive
    const fmShareDenyWrite
    const fmShareDenyNone
    const soFromBeginning
    const soFromCurrent
    const soFromEnd
    type TDuplicates

    Из модуля Graphics:

    TFont
    TPen
    TBrush
    TCanvas
    procedure TCanvas.Draw(X, Y: Integer; Graphic: TGraphic)
    procedure TCanvas.Ellipse(X1, Y1, X2, Y2: Integer)
    procedure TCanvas.LineTo(X, Y: Integer)
    procedure TCanvas.MoveTo(X, Y: Integer)
    procedure TCanvas.Rectangle(X1, Y1, X2, Y2: Integer)
    procedure TCanvas.RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer)
    procedure TCanvas.StretchDraw(X1, Y1, X2, Y2: Integer; Graphic: TGraphic)
    function TCanvas.TextHeight(const Text: string): Integer
    procedure TCanvas.TextOut(X, Y: Integer; const Text: string)
    function TCanvas.TextWidth(const Text: string): Integer
    property TCanvas.Pixels

    TGraphic
    procedure TGraphic.LoadFromFile(const Filename: string)
    procedure TGraphic.SaveToFile(const Filename: string)
    property TGraphic.Height
    property TGraphic.Width

    TMetafile
    TMetafileCanvas
    TBitmap
    property TBitmap.Canvas

    type TFontStyles
    type TFontPitch
    type TPenStyle
    type TPenMode
    type TBrushStyle

    Из модулей StdCtrls и Forms:

    TControl
    property TControl.Parent
    procedure TControl.Hide
    procedure TControl.Show
    procedure TControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer)
    event TControl.OnCanResize
    event TControl.OnClick
    event TControl.OnDblClick
    event TControl.OnMouseDown
    event TControl.OnMouseMove
    event TControl.OnMouseUp
    event TControl.OnResize

    TWinControl
    procedure TWinControl.SetFocus
    event TWinControl.OnEnter
    event TWinControl.OnExit
    event TWinControl.OnKeyDown
    event TWinControl.OnKeyPress
    event TWinControl.OnKeyUp

    TCustomControl
    TGraphicControl
    TGroupBox
    TLabel
    TEdit
    TMemo

    TCustomComboBox
    property TCustomComboBox.DroppedDown
    property TCustomComboBox.ItemIndex

    TComboBox
    TButton
    TCheckBox
    TRadioButton

    TCustomListBox
    property TCustomListBox.ItemIndex
    property TCustomListBo*****lCount
    property TCustomListBo*****lected

    TListBox
    TControlScrollBar
    TScrollingWinControl
    TScrollBox

    TCustomForm
    procedure TCustomForm.Close
    procedure TCustomForm.Hide
    procedure TCustomForm.Show
    function TCustomForm.ShowModal: Integer
    event TCustomForm.OnActivate
    event TCustomForm.OnClose
    event TCustomForm.OnCloseQuery
    event TCustomForm.OnCreate
    event TCustomForm.OnDestroy
    event TCustomForm.OnDeactivate
    event TCustomForm.OnHide
    event TCustomForm.OnPaint
    event TCustomForm.OnShow
    property TCustomForm.ModalResult

    TForm

    type TModalResult
    type TCursor
    type TShiftState
    type TAlignment
    type TAlign
    type TMouseButton
    type TAnchors
    type TBevelCut
    type TTextLayout
    type TEditCharCase
    type TScrollStyle
    type TComboBoxStyle
    type TCheckBoxState
    type TListBoxStyle
    type TFormBorderStyle
    type TWindowState
    type TFormStyle
    type TBorderIcons
    type TPosition
    type TCloseAction

    Из модуля ExtCtrls:

    TShape

    TPaintBox
    event TPaintBox.OnPaint

    TImage
    TBevel

    TTimer
    event TTimer.OnTimer

    TPanel
    TSplitter
    TBitBtn
    TSpeedButton

    TCheckListBox
    property TCheckListBox.Checked

    TTabControl
    TTabSheet

    TPageControl
    procedure TPageControl.SelectNextPage(GoForward: Boolean)
    property TPageControl.PageCount
    property TPageControl.Pages

    TStatusPanel

    TStatusPanels
    function TStatusPanels.Add: TStatusPanel
    property TStatusPanels.Items

    TStatusBar

    TTreeNode
    procedure TTreeNode.Delete
    function TTreeNode.EditText: Boolean
    property TTreeNode.Count
    property TTreeNode.Data
    property TTreeNode.ImageIndex
    property TTreeNode.SelectedIndex
    property TTreeNode.StateIndex
    property TTreeNode.Text

    TTreeNodes
    function TTreeNodes.Add(Node: TTreeNode; const S: string): TTreeNode
    function TTreeNodes.AddChild(Node: TTreeNode; const S: string): TTreeNode
    procedure TTreeNodes.BeginUpdate
    procedure TTreeNodes.Clear
    procedure TTreeNodes.Delete(Node: TTreeNode)
    procedure TTreeNodes.EndUpdate
    property TTreeNodes.Count
    property TTreeNodes.Item

    TTreeView
    procedure TTreeView.FullCollapse
    procedure TTreeView.FullExpand
    property TTreeView.Selected
    property TTreeView.TopItem

    TTrackBar
    TProgressBar
    TListColumn

    TListColumns
    function TListColumns.Add: TListColumn
    property TListColumns.Items

    TListItem
    procedure TListItem.Delete
    function TListItem.EditCaption: Boolean
    property TListItem.Caption
    property TListItem.Checked
    property TListItem.Data
    property TListItem.ImageIndex
    property TListItem.Selected
    property TListItem.StateIndex
    property TListItem.SubItems

    TListItems
    function TListItems.Add: TListItem
    procedure TListItems.BeginUpdate
    procedure TListItems.Clear
    procedure TListItems.Delete(Index: Integer)
    procedure TListItems.EndUpdate
    property TListItems.Count
    property TListItems.Item

    TIconOptions
    TListView
    TToolButton
    TToolBar
    TMonthCalColors
    TDateTimePicker
    TMonthCalendar

    type TShapeType
    type TBevelStyle
    type TBevelShape
    type TResizeStyle
    type TButtonLayout
    type TButtonState
    type TButtonStyle
    type TBitBtnKind
    type TNumGlyphs
    type TTabPosition
    type TTabStyle
    type TStatusPanelStyle
    type TStatusPanelBevel
    type TSortType
    type TTrackBarOrientation
    type TTickMark
    type TTickStyle
    type TProgressBarOrientation
    type TIconArrangment
    type TListArrangment
    type TViewStyle
    type TToolButtonStyle
    type TDateTimeKind
    type TDTDateMode
    type TDTDateFormat
    type TDTCalAlignment
    type TCalDayOfWeek

    Из модуля Dialogs:

    TCommonDialog
    function TCommonDialog.Execute: Boolean
    TOpenDialog
    TSaveDialog
    TColorDialog
    TFontDialog
    TPrintDialog
    TPrinterSetupDialog

    type TOpenOptions
    type TFileEditStyle
    type TColorDialogOptions
    type TFontDialogOptions
    type TFontDialogDevice
    type TPrintRange
    type TPrintDialogOptions

    Вы имеете доступ ко всем published свойствам этих классов + доступ к некоторым public свойствам и методам.

    Добавлено через 10 минут
    Перечень добавляемых ПХ в движек FastScript:
    Код:
    function HStr(Hex:String):String
    procedure SendToClient
    procedure SendToServer
    procedure SendToClientEx(CharName:string)
    procedure SendToServerEx(CharName:string)
    procedure NoCloseFrameAfterDisconnect
    procedure CloseFrameAfterDisconnect
    procedure NoCloseClientAfterServerDisconnect
    procedure CloseClientAfterServerDisconnect
    procedure NoCloseServerAfterClientDisconnect
    procedure CloseServerAfterClientDisconnect
    procedure Disconnect
    function ConnectNameByID(id:integer):string
    function ConnectIDByName(name:string):integer
    procedure SetName(Name:string)
    procedure Delay(msec: Cardinal)
    procedure ShowForm
    procedure HideForm
    procedure WriteS(v:string)
    procedure WriteC(v:byte; ind:integer=0)
    procedure WriteD(v:integer; ind:integer=0)
    procedure WriteH(v:word; ind:integer=0)
    procedure WriteF(v:double; ind:integer=0)
    function ReadS(var index:integer):string
    function ReadC(var index:integer):byte
    function ReadD(var index:integer):integer
    function ReadH(var index:integer):word
    function ReadF(var index:integer):double
    procedure sendMSG(msg:String)
    procedure CanUseAltTab(FormCaption: string)
    function LoadLibrary(LibName:String):Integer
    function FreeLibrary(LibHandle:Integer):Boolean
    function StrToHex(str1:String):String
    procedure CallPr(LibHandle:integer;FunctionName:String;Count:Integer;Params:array of variant)
    function CallFnc(LibHandle:integer;FunctionName:String;Count:Integer;Params:array of variant):string
    procedure TestFunc(LibHandle:integer;FunctionName:String;Count:Integer)
    procedure TestFunc1(LibHandle:integer;FunctionName:String;Count1:variant)
    function CallFunction(LibHandle:integer;FunctionName:String;Count:Integer;Params:array of variant):variant
    function CallSF(ScriptName:String;FunctionName:String;Params:array of variant):variant


    Имеющиеся в FastScript согласно официального мануала
    Код:
    function IntToStr(i: Integer): String;
    function FloatToStr(e: Extended): String;
    function DateToStr(e: Extended): String;
    function TimeToStr(e: Extended): String;
    function DateTimeToStr(e: Extended): String;
    function VarToStr(v: Variant): String;
    function StrToInt(s: String): Integer;
    function StrToFloat(s: String): Extended;
    function StrToDate(s: String): Extended;
    function StrToTime(s: String): Extended;
    function StrToDateTime(s: String): Extended;
    function Format(Fmt: String; Args: array): String;
    function FormatFloat(Fmt: String; Value: Extended): String;
    function FormatDateTime(Fmt: String; DateTime: TDateTime): String;
    function FormatMaskText(EditMask: string; Value: string): string;
    function EncodeDate(Year, Month, Day: Word): TDateTime;
    procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
    function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
    procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
    function Date: TDateTime;
    function Time: TDateTime;
    function Now: TDateTime;
    function DayOfWeek(aDate: DateTime): Integer;
    function IsLeapYear(Year: Word): Boolean;
    function DaysInMonth(nYear, nMonth: Integer): Integer;
    function Length(s: String): Integer;
    function Copy(s: String; from, count: Integer): String;
    function Pos(substr, s: String): Integer;
    procedure Delete(var s: String; from, count: Integer);
    procedure Insert(s: String; var s2: String; pos: Integer);
    function Uppercase(s: String): String;
    function Lowercase(s: String): String;
    function Trim(s: String): String;
    function NameCase(s: String): String;
    function CompareText(s, s1: String): Integer;
    function Chr(i: Integer): Char;
    function Chr(i: Integer): Char;
    function Ord(ch: Char): Integer;
    procedure SetLength(var S: String; L: Integer);
    function Round(e: Extended): Integer;
    function Trunc(e: Extended): Integer;
    function Int(e: Extended): Integer;
    function Frac(X: Extended): Extended;
    function Sqrt(e: Extended): Extended;
    function Abs(e: Extended): Extended;
    function Sin(e: Extended): Extended;
    function Cos(e: Extended): Extended;
    function ArcTan(X: Extended): Extended;
    function Tan(X: Extended): Extended;
    function Exp(X: Extended): Extended;
    function Ln(X: Extended): Extended;
    function Pi: Extended;
    procedure Inc(var i: Integer; incr: Integer = 1);
    procedure Dec(var i: Integer; decr: Integer = 1);
    procedure RaiseException(Param: String);
    procedure ShowMessage(Msg: Variant);
    procedure Randomize;
    function Random: Extended;
    function ValidInt(cInt: String): Boolean;
    function ValidFloat(cFlt: String): Boolean;
    function ValidDate(cDate: String): Boolean;
    function CreateOleObject(ClassName: String): Variant;
    function VarArrayCreate(Bounds: Array; Typ: Integer): Variant;

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

    Доступные функции:
    ShowForm и HideForm - для отображения/скрытия формы (UserForm), управлять которой можно из скрипта
    Для рисования на ней контролов надо указывать UserForm в качестве родителя
    SendToClient - отправляет клиенту содержимое переменной buf
    SendToServer - отправляет серверу содержимое переменной buf
    SendToClientEx(CharName: string) - отправляет клиенту с именем CharName содержимое переменной buf (v. 3.1.3+)
    SendToServerEx(CharName: string) - отправляет серверу с именем CharName содержимое переменной buf (v. 3.1.3+)
    (к пакету buf автоматически добавляются 2 байта длины)
    CanUseAltTab(FormCaption: string) - Добавляет форму созданую в скрипте в список форм видимых по alt+tab. в качестве параметра - заголовок формы. (v. 3.5.1+)
    NoCloseServerAfterClientDisconnect - запрещает закрытие соединения при дисконекте клиента (v. 3.5.1+)
    NoCloseClientAfterServerDisconnect - запрещает закрытие соединения при дисконекте сервера (v. 3.5.1+)
    CloseServerAfterClientDisconnect - разрешает закрытие соединения при дисконекте клиента (v. 3.5.1+)
    CloseClientAfterServerDisconnect - разрешает закрытие соединения при дисконекте сервера (v. 3.5.1+)
    (по умолчанию закрытия разрешены)
    Disconnect - закрывает соединение (v. 3.5.1+)

    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):ouble - читает из переменной 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 дополняется байтом/числом, иначе модифицируется часть буфера.

    sendMSG(msg:String) - пишет msg в лог ПХ.
    LoadLibrary(LibName:String):Integer - подгружает к программе библиотеку LibName и возвращает указатель на неё (v. 3.1.8+)
    FreeLibrary(LibHandle:Integer):Boolean - выгружает из памяти программы библиотеку (v. 3.1.8+)
    CallFnc(LibHandle:integer;FunctionName:String;Coun t:Integ er;Params:array of variant):String- вызывает функцию FunctionName из зарание подгруженной библиотеки с указателем LibHandle и параметрами перечисленными в Params (v. 3.5.1+)
    CallPr(LibHandle:integer;FunctionName:String;Count :Integ er;Params:array of variant);- вызывает процедуру FunctionName из зарание подгруженной библиотеки с указателем LibHandle и параметрами перечисленными в Params (v. 3.5.1+)
    CallSF(ScriptName:String;FunctionName:String;Param s:array of variant):variant - вызывет функцию FunctionName из скрипта ScriptName (v. 3.5.1+)

    Пример:
    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.
    Скрипты:
    Процедура Init вызывается когда вы устанавливаете рядом со скриптом галочку. либо вызываете TestInit.
    Процедура Free вызывается когда вы убираете рядом со скриптом галочку. либо вызываете TestFree.
    Основное тело скрипта (между begin и end) вызывается каждый раз при получении пакета от сервера или клиента если скрипт отмечен галочкой.
     
  2.  
  3. Оффлайн

    FlyInTheSky Жизнь Ворам,Смерть Мусорам

    На форуме с:
    14 июл 2013
    Сообщения:
    24
    Симпатии:
    3
    Баллы:
    4
    Пол:
    Мужской
    Надеюсь хоть кто-то до конца дочитал?
     
  4. Оффлайн

    venek^Some Pr0 специалист

    На форуме с:
    4 янв 2013
    Сообщения:
    19
    Симпатии:
    3
    Баллы:
    4
    Пол:
    Мужской
    skype:
    vanyakrava1
    Ответь, с чем связана тема? Точнее, что ты пытался донести ?
     
  5. Оффлайн

    FlyInTheSky Жизнь Ворам,Смерть Мусорам

    На форуме с:
    14 июл 2013
    Сообщения:
    24
    Симпатии:
    3
    Баллы:
    4
    Пол:
    Мужской
    Не большой ввод в тему,разбор программного языка,примеры.
    Вообщем можно сказать что это своего рода конспект,в технарях преподают по специальности.
     

Поделиться этой страницей

Уважаемый пользователь!

Мы обнаружили, что вы блокируете показ рекламы на нашем сайте.

Просим внести его в список исключения или отключить AdBlock.

Наши материалы предоставляются БЕСПЛАТНО и единственным доходом является реклама.

Спасибо за понимание!