Jump to content

Recommended Posts

Posted

Welcome to the program

L2PacketHack by CoderX.ru Team

 

Contents:

[1]Repository

[2]Convenient browsing repository

[3]Downloads

[4]Certificate for the program

 


 

[1]Repository:

svn://l2phx.pp.ru/l2phx3/

If you have turtoise it will auto open it if you accept the window that will open.

You may also add it if you want to eclipse.

 


 

[2]Convenient browsing repository:

http://l2phx.pp.ru/wsvn/listing.php?repname=l2phx3&path=/&sc=0

It is a timeline - changelog.

 

Note:


When you exit the l2ph would ask "save script bla bla bla" if it changed. soketny dvizhek will break in onkloze, but not in ontermineyt, just the sound of a system error when you exit to the gulf.

 


 

[3]Downloads:

 

Official Repository:

http://l2phx.pp.ru/arhive/

 

Rapidshare LinkList Instant Download:


http://rapidshare.com/users/R1CL37
Password: "worldb0x.com" without the "

 

Only Latest Version (v3.5.15.126)

http://rapidshare.com/files/268368460/l2phx.3.5.15.126.rar

 


 

[4]Certificate for the program:

 

[1]Total

 

What is L2PacketHack?

L2PacketHack (hereinafter PH, L2PH, PH) is a program designed to control traffic games Lineage and its modifications.

 

What is PH?

First and foremost, PH is designed to automate certain actions and to simplify life players.

 

About HELP:

This help file is written to version 3.5.1.100 and will be gradually updated and extended. Help made in an attempt to completely cover the interface and some aspects of writing plugins and scripts. And also added FAQ taken from the forum.

Disclaimer:

will be updated only those elements which are considered critical, ie screen program updates will not be just for the fact that the title was a new version, etc. etc.

Developers:

In writing the code, was attended by the following people:

xkor;

NLObP;

Wanick;

QaK;

alexteam.

 

The Forum of the program is this.

The compiled version can be found here.

 

Disclaimer:

Appointment of PH is not connected with the burglary of servers, this side effect enjoyed by people wishing to gain from the program much more, and with relevant experience and knowledge of defects servers - get this opportunity.

The same should specify just what the forum is not to ask "crack" of a particular server, or to "packages" under it. This is against the forum and has a minimum to prevent, to the maximum Banu, in principle, only option 2.

It is highly recommended to get acquainted with this topic here.

 


 

[2]The main program window

 

The main program window. (The structure of the main menu)

MainForm.jpg

In the above screenshot shows the main window PH version 3.5.1.100

 

Comment:

[No Connections] is notified that there is currently no intercepted connections, rather than that of the PH check your version, or the possibility of using it.

 


 

[2.1]File

 

[2.1.1]Log L2PH

 

Item displays a form containing the system log PH. (example):

log.jpg

In the system log shows what is happening in the PH.

It is a window - it is very important for the user, provides a detailed picture of the course of action PH.

Also here can write a message scripts.

 

 

[2.1.2]Open the log packages

 

File \ Open log packages

 

Allows you to open a previously saved log package for analysis.

Simplifies life so that does not necessarily need to run the client to look the look of a package, simply download the pre-saved log.

 

Example:

width=768 height=472http://l2phx.pp.ru/arhive/l2ph_help/scr/PSD/plog.jpg[/img]

More information about the interface elements can be found in the "frame" the connection.

 

 

[2.1.3]Operations with equal packet logs

 

File \ Open RAW log packages

 

RavLogi, very interesting thing, they contain something that sends the server sends the client in the same condition, namely, what happens at the level of TCP, this does not happen even raskleyka packages.

 

This menu item will be useful for those who are trying to write newxor for servers with non-standard encryption. It allows you to run through ravlog said he library and displays the resulting outcome and result of verification (verification is that of a package, descramble, encrypted, and compared with the original version, if found differences mean anything in the library is not well written, and check the log show the original package, dekriptovany option, and cryptography option)

 

So he fit for the ordinary users PH. use to taste.

 

This window has 3 tabs:

 

The tab "Current Status"

RawLog.jpg

 

Displays the contents of ravloga.

 

Toolbar buttons:

1. Open RavLog - is the File Open dialog

2. Displays a log in the form in which it exists (shoots pushing from 3 and 4)

3. Will try to split the packages on the format (2bayta (length), the body of the package (length in the first 2 bytes - 2))

4. Will try to decode the packets via NewXor (if it is not set - through the algorithm) and using the current settings in the options (requires 3)

5. Rereads RavLog from file

6. Shows the direction of the package in the "Current Status"

7. Displays the time of sending / receiving packet

 

 

 

Tab "Parsing"

rawlog-razbor.jpg

 

 

Displays the result of decoding packages of ravloga, details about the interface elements can be found in the "frame" the connection.

 

The tab "Log check"

 

Contains box outlet check log, the contents of the log is missing when there are no discrepancies between the original package and the same set of pre-decoded and encoded.

 

 

[2.1.4]Update information from the *. ini

 

File \ Open RAW log packages

 

Reboots the information from the following files:

settings \ sysmsgid.ini

settings \ itemsid.ini

settings \ npcsid.ini

settings \ classid.ini

settings \ skillsid.ini

 

The same force is updating the package list all intercepted connections / open logs.

 

This item is useful when done changed the files. allows you to reread the information from them without closing PH.

 

 

[2.1.5]Preferences

 

File \ Options

 

PH Settings window consists of 3 types nastroyek tabs are divided into groups.

 

Tab "General Settings"

s1.jpg

 

Contains configuration data decryption intercepts

 

1. PH will not attempt to dekriptovat traffic at the specified options. This option is used to create logs on servers with non-standard encryption for writing NewXor

2. Set in the case of the use of servers Protect me Xor key.

3. Installed on servers in the respective versions.

4. Mounted on the official servers, Lineage, not working at the Russian office server.

5. Specify that you want to use NewXor path that is specified in the element 6.

6. The path to NewXor prescribed by hand or by Clause 7.

7. Opens a search dialog dll file.

8. Specify which of packetsHH.ini use to render a frame packet connection.

9. Saves and applies option.

10. Reboots data Options.ini anuliruya all changes in the current dialogue.

 

The tab "Customize intercept"

s2.jpg

 

 

Contains techniques concern intercept the connection.

 

1. Specify the application, the connection which is required to intercept.

2. Specifies the list of ports, a connection which will be ignored.

3. Includes a method to intercept, through introducing the library loaded in the Ph to help p.6. path which is set in Clause 7. while running applications will be scanned for new instances of processes with the names of p.1. at intervals specified in paragraph 4.

4,5,6,7 - see 3.

8. Includes a method of intercepting the connection using the Layered Service Provider.

9. Specifies the path to the dll module (without spaces or Cyrillic letters in its name! Otherwise problems may occur)

10. Indicates that L2PH will be used as a Socks5 proxy. This mode allows you to run client / bot on another machine.

Disclaimer:

To intercept the connection will need to use additional software (freecap, permeo security driver, etc.)

11. Port at which PH accepts connections in the case of paragraph 3 or P.10.

 

 

Advanced tab

s3.jpg

It contains several auxiliary settings PH.

 

Disclaimer:

Default - the setting for the newly created frame connections. applied to each new frame. in a given frame to be changed.

 

1,2,3,5. Set the appropriate option in the frame connections

4. Allows you to maintain and preserve the RAW logs

6. It will ask "Are you sure you want to go" when closing ph.

7. When you run PH PH dialogue box will appear automatically.

 

 

[2.1.6]Logout

 

File \ Exit

Closes PH, previously asked about the need for this action (the request can be turned off in the settings).

 

When you close the gap happens all intercepted connections regardless of the type of interception, and (or) your desire.

 

Disclaimer:

When using the LSP to intercept the gap itself is not the case. intercepted application (client / bot) is unable to receive / send data. sure to exit from the client before closing PH. (or use ctrl + alt + del to close the client.

 


 

[2.2]Automation

 

[2.2.1]Scripts

 

Automation \ Scripts

 

According to the users - one of the most important features can be found here

The window allows you to manage the scripts and write new / modify existing ones. using a programming language ObjectPascal.

 

Disclaimer

This is not a compiler, a compiler, assembler is very limited and not all of what can be done in pascals is realizable.

More features enable plugins.

 

Exterior windows with busy editing the script, open the WatchList and a list of scripts.

width=768 height=544http://l2phx.pp.ru/arhive/l2ph_help/scr/PSD/scr.jpg[/img]

Short-appointed elements:

 

1. Creates a new script, tentatively seeking a name for it, and places it in the folder Scripts \

2. Saves the script (ctrl + s)

3. Loads the script from the text file and stores it in the manner p.1.

4. Renames the current open for editing the script.

5. Deletes the currently open script.

6. Compiles the script. compilation fails with an error message is displayed in statusbare (P.26), and an error string is allocated using a marker (p. 24)

7. Compiles the script (if it has not been compiled), translates to the editor readonly, and starts the procedure in the Init script.

8. Runs Free procedure in the script and removes the readonly flag from the editor.

9. Reboots the list of available files in the folder Scripts \ and displays them in paragraph 18.

10. Hides / shows a list of available scripts (p. 18)

11. Shows the log window PH (file \ log l2ph) rendered as a button in the Script Editor from the fact that the script can write on this very log.

12. Shows / Hides the Watchlist (P.16)

13. Displays a form containing a list of classes supported scripting engine as well as functions.

14. Opens the Preferences window highlighting editor. (Standard box. Language Eng. Not even asking to translate!)

15. Opens the Preferences window hot key editor. (Standard box. Language Eng. Not even asking to translate!)

16. Watchlist. Displays the state variables at the time of the implementation of the script.

17. The window itself is the editor.

18. List of files in the scripts folder Scrypt \. in order of their execution, in order to set the script executable require checkbox (P.19 opposite script), change the order of using the P.20 and P.21, as it is possible to maintain order of scripts (at the next startup scripts loaded in the ph that order, and activated if required).

19. Will execute script in the parish of the packet.

20.21. Move the selected script in the list of up / down the list.

22. Preserves order and the state of checkbox (P.19) in options.ini

23. Status line (Blue - modified / added and was maintained, Yellow - Changed, Green - added.)

24. Tag notifying an error in this line.

25. Tab of the script with his name and status (modified - leaf with karandashikom not modified - leaf), and click Close. Course can have several tabs and simultaneous editing of several scripts.

26. Status bar displays the last message from the editor.

 

More information about the syntax, see the section "Development \ scripting.

 

 

 

[2.2.2]Plugins

 

 Automation \ Plugins

 

Contains a list of plugins, their descriptions and functions they support. And also allows to load / unload the plugin from the list.

 

Window "Plugins":

plugins.jpg

Description of elements:

 

1. The list of plugins in the folder Plugins \. Marked plugins - downloaded.

2. Description of the plugin.

3. Supported plug-ins function.

 

Learn more about writing plugins, see the section "Design \ About plugins"

 

 

 

[2.2.3]Custom shape

 

Automation \ Custom shape

 

It contains a blank form which has its own button in taskabare and available for posting on her copies of a component / object in scripts or plugins.

The default format can not be displayed.

On the use of forms, see the relevant sections.

 


 

[2.3]Help

 

[2.3.1]About

 

Help \ About

 

Appearance:

about.jpg

 

Information box containing the version, funny picture, go to the page program.

 

Comment author:

The picture was taken from the jedi library, put the first pop. Later in the root.

in principle, clearly shows the educational attainment and humanity majority of players in the lineage. as well as their level of development.

 

 

[2.3.2]Language

 

Help \ Language

 

Change the interface language to the desired.

 


 

[2.4]"Frame" connection

 

 "Frame" connection

 

The total entry for the compounds, see the logs.

 

Disclaimer

Why the frame? - Because each element is created dynamically for each connection / open the log and the objects contained therein are original object tFrame.

 

The appearance of the main window with multiple open connections, and log to display a copy of the frame connection.

 

Tab View:

width=768 height=453http://l2phx.pp.ru/arhive/l2ph_help/scr/PSD/connections.jpg[/img]

 

Elements:

 

1. Rereads data from ini files, and updates the list of packages in the current frame.

2. Keeps a log packets requesting a file name.

Disclaimer

When activated the "Add ability to save RAW logs" option \ Advanced next to the item you receive another "diskette" allowing to save the RAW output.

3. Clears the list of packages in the current frame.

4. Adds the current batch in the filter. (all packages with the current type will not be displayed in the log package)

5. Deletes the current package from the package list (no filtering, ie deletes).

6. Adds a set of P.16 in the menu package.

7. When deactivated the list of packages will not be displayed packets coming from the server.

8. When deactivated the list of packages will not be displayed packets coming from a client.

9. When deactivated tracking the latest package will come disabled (Autoscroll).

10. When activated the log package to avtoochistkoy will be saved automatically (avtoochistka happens every 3000 packets, you can specify the number of option MaxLinesInPktLog in options.ini (Section general)

11. Open the packet filter (Optional \ Filter package).

12. Return the offset (offset) in the HEX / DEC

13. If you have a prohibited avtozakrytie of the frame with a loss of connection to which the frame is anchored. then you can close with the help of Pres 14.

14. Closes the current frame and closes the connection to which the frame is bound (if it still exists).

15. Contains a list of received / sent by the client with their serial numbers and type.

16. Displays the selected package P.15 in HEX form.

17. Explanation package selected P.15 (uses. Ini files to determine the name and number of fields)

18. All that is surrounded by this frame and have a "frame" the connection, depending on where it was created, it can not be certain tabs, or buttons.

19. The list of compounds, either open the logs, to make a connection for which "the name" tab is called the name of the connection. In other cases, the name of the tab is described as follows: [interception type / log] # (connection ID / Name of log file)

 

Tab premise:

 

Designed for manual sending a package (package states without first bytes long) to the server / client.

 

Appearance:

width=768 height=472http://l2phx.pp.ru/arhive/l2ph_help/scr/PSD/posilka.jpg[/img]

 

Elements:

 

1. Saves the current package (s) in the file

2. Load package (s) from the file.

3. Sending packages will be made to the server.

4. Sending packages will be made to the customer

5. When you set the option, each line will be perceived as a separate package.

6. Send in the specified direction.

7. Interval timer for sending

8. Enables the timer to send this (e) of the package (s) at intervals specified in Clause 7.

9. Protects the frame from closing when diskonnekte.

10. Closes the frame and connected with the connection.

11. list of packets to send

12. hex type of package for the current line in P.11.

13. The detailed decoding of the package in item 12.

 

 

 

Advanced tab:

 

It contains the editor of scripts tied specifically to the compound. Unlike the basic script editor - no procedure Init, Free. basically it checks whether the script works on the server at all. The default script sends a notification to the client "Hello!!!"

 

Appearance:

width=768 height=472http://l2phx.pp.ru/arhive/l2ph_help/scr/PSD/dopolnitelno.jpg[/img]

 

Elements.

 

1. Saves the script to a file.

2. Load script from file.

3. Runs the script.

4. Aborts the script.

 


 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

[3.0]Development

 

[3.1.0]Scripting

 

[3.1.1]The list of supported functions / procedures, variables.

 

The list of supported functions / procedures, variables.

 

The list of added PH in dvizhek 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

 

 

 

 

Available in FastScript according to the official manual

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;

 

 

 

The list of variables added PH:

var buf: string;

var pck: string;

const FromServer: Boolean;

const FromClient: Boolean;

const ConnectID: Integer;

const ConnectName: string;

 

[3.1.2]What you need to know to write scripts.

 

What you need to know to write scripts.

 

Author xkor. Original here.

Slightly modified.

 

First of all, you need programming skills to the Object Pascal (or Delphi, which is about the same) and for the manipulation of the package of course need to know that they are the, package details can be read in the relevant section.

 

In this topic, I just give the description of internal functions and variables of the program.

 

Description FastScript: (this is a script dvizhek used in the program)

http://forum.coderx.ru/uploads/fs.rtf

 

Available variables:

pck (string) - the current piece package (without first two bytes in size)

FromClient (boolean) - package (pck) has come from the client (всеравно that not FromServer)

FromServer (boolean) - package (pck) has come from the server (всеравно that not FromClient)

buf (string) - a buffer that is used by some functions

ConnectName (string) - name of Chara or which is a package (v. 3.1.3 +)

ConnectID (integer) - number of connections for which the script is executed

 

Available functions:

ShowForm and HideForm - to show / hide forms (UserForm), which can operate from a script

To paint it controls necessary to put the UserForm as a parent

SendToClient - the client sends the contents of the buf

SendToServer - the server sends the contents of the buf

SendToClientEx (CharName: string) - sends the client with the name CharName content variable buf (v. 3.1.3 +)

SendToServerEx (CharName: string) - sends a server named CharName content variable buf (v. 3.1.3 +)

(buf package to automatically add 2 bytes length)

CanUseAltTab (FormCaption: string) - Adds a shape to create a script to the list of visible forms of alt + tab. as a parameter - the title of the form. (v. 3.5.1 +)

NoCloseServerAfterClientDisconnect - prohibits the closure of the connection when the client diskonekte (v. 3.5.1 +)

NoCloseClientAfterServerDisconnect - prohibits the closure of the connection with diskonekte server (v. 3.5.1 +)

CloseServerAfterClientDisconnect - authorizes the closing of the connection when the client diskonekte (v. 3.5.1 +)

CloseClientAfterServerDisconnect - authorizes the closing of a connection with diskonekte server (v. 3.5.1 +)

(default closure allowed)

Disconnect - close the connection (v. 3.5.1 +)

 

ConnectNameByID (id: integer): string - returns the name of the connection to his ID (v. 3.2.0 +)

ConnectIDByName (name: string): integer - returns the ID for the connection of his name (v. 3.2.0 +)

SetName (Name: string) - sets the name of the connection (v. 3.2.0 +)

 

ReadC (var index: integer): byte - reads from a variable pck byte

ReadH (var index: integer): word - reading from a variable pck number (2 bytes) (v. 3.1.8 +)

ReadD (var index: integer): integer - reads from a variable pck number (4 bytes)

ReadF (var index: integer): double - reads from a variable pck c floating-point number (8 bytes) (v. 3.1.8 +)

ReadS (var index: integer): string - reads from a variable pck line (in the package string unicode nulterminirovannaya, and the resulting string normal paskalevskaya)

Index - the initial position of reading, which modifies the function (shifted by the number of read bytes)

 

HStr (h: string): string - converts a string to HEX-sequence

For example, HStr ( 'AA 00 BB 00 CC 00') will return a chain of bytes # $ AA # $ 00 # $ BB # $ 00 # $ CC # $ 00. You can pass a string with blanks, and without them, the register of symbols has no value.

 

WriteC (v: byte; ind: integer = 0) - writes to a variable buf one byte

WriteH (v: word; ind: integer = 0) - writes to a variable buf number (2 bytes) (v. 3.1.8 +)

WriteD (v: integer; ind: integer = 0) - writes to a variable buf number (4 bytes)

WriteF (v: double; ind: integer = 0) - writes to a variable buf number c floating point (8 bytes) (v. 3.1.8 +)

WriteS (v: string) - writes to a variable buf a line (automatic translation in unicode)

In the first four procedures is an optional parameter ind. If this option is not specified, the variable buf is supplemented bytes / number, otherwise part of modified buffer.

 

sendMSG (msg: String) - writes msg in the log PH.

LoadLibrary (LibName: String): Integer - load the program library LibName and returns a pointer to it (v. 3.1.8 +)

FreeLibrary (LibHandle: Integer): Boolean - unloads from memory the program library (v. 3.1.8 +)

CallFnc (LibHandle: integer; FunctionName: String; Count: Integ er; Params: array of variant): String-FunctionName is a function from the previously loaded library with a pointer LibHandle and the parameters listed in Params (v. 3.5.1 +)

CallPr (LibHandle: integer; FunctionName: String; Count: Integ er; Params: array of variant); - FunctionName is the procedure from the previously loaded library with a pointer LibHandle and the parameters listed in Params (v. 3.5.1 +)

CallSF (ScriptName: String; FunctionName: String; Params: array of variant): variant - cause FunctionName function of the script ScriptName (v. 3.5.1 +)

 

Example:

buf = HStr ( 'AA BB CC DD EE');

If the call WriteD (10,1), we get buf = [0A 00 00 00 EE].

And if just WriteD (10), the [AA BB CC DD EE 0A 00 00 00].

 

For example the script:


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.

 

Upon receipt of a client for playing with Chara nick SokolA package 1b 04 00 00 00 (social action "Victory") nepropustit the package and send the package 45 00 00 00 00 00 00 00 00 00 (the seat), on behalf of a client for playing with Chara nick SokolB, ie you are playing in two windows, one SokolA, in another SokolB, click in the first Victory, and SokolB sets.

 

Example callback functions from system libraries:


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.

 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

Scripts:

Procedure Init is called when you set the checkbox next to the script. or call TestInit.

Procedure Free is caused when you remove the tick next to the script. or call TestFree.

The main body of the script (between begin and end) is called each time you receive a package from the server or the client if the script is checked.

[/color]

[3.2.0]About plugins

 

[3.2.1]Purpose and opportunities

 

Plugins. Appointment and opportunities.

 

Plug-ins are intended to empower the work or complete scripts (scripts) replacement.

Expansion dostigaetsya due to the possibility of adding its functions / procedures in a scripting dvizhek with the help of plug-ins (for details see the examples available in the IOS, either here in the branch) and the handlers of these functions.

Replacement script possibly due to the fact that the plug-ins and scripts are the same (if possible) due to the methods.

Unlike scripts one - no restrictions nakladvaemogo scripting engine, tobish can fully utilize all the power of programming language and not enough opportunities fastscript.

[3.2.2]The structure of the plugin (required elements)

Plugins. The structure of the plug-in.

 

For version 3.5.2.102

 

The structure of the plug, MANDATORY.

 


uses
  FastMM4 in '.. \ fastmm \ FastMM4.pas', / / Must be first.
  FastMM4Messages in '.. \ fastmm \ FastMM4Messages.pas',
  windows,
    / / Module description of the main types
    / / Used in the plugin and the program
  usharedstructs in '.. \ units \ usharedstructs.pas';

var (version) (revision)
  min_ver_a: array [0 .. 3] of Byte = (3,5,1, 98);
  min_ver: Integer absolute min_ver_a; / / the minimum supported version of
  ps: TPluginStruct; / / structure passed to the plugin

/ / Make sure the called function.
/ / Should return a description of the plugin
/ / At the same time can check the version of the program
function GetPluginInfo (const ver: Integer): PChar; stdcall;
begin
  if ver <min_ver then
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak +
            'For versions 3.5.1.98 +' + sLineBreak +
            'You have an old version of the program! The plugin will not be able to correctly work with it! "
  else
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak +
            'For versions 3.5.1.98 +';
end;

/ / Make sure the called function.
/ / Retrieves the structure with links to all the functions of the core program,
/ / Which can be called from a plugin.
/ / If it returns False plugin unloaded.
function SetStruct (const struct: PPluginStruct): Boolean; stdcall;
begin
  ps: = TPluginStruct (struct ^);
  Result: = True;
end;

/ / Exported functions used by the program
exports
  GetPluginInfo,
  SetStruct;
  / / The rest is optional, and ispolzuyutssya optional.
  (
  OnPacket,
  OnConnect,
  OnDisconnect,
  OnLoad,
  OnFree,
  OnCallMethod,
  OnRefreshPrecompile;
  )

begin
end.

 

Class TPluginStruct a copy of which is transmitted in the plugin, you can look under "Contents uSharedStructs"

All of its functions / procedures in it are similar to that used in scripts.

 

[3.2.3]plugin_demo.dpr; work packages

 

plugin_demo.dpr; work packages

 

For version 3.5.2.102

 

library plugin_demo; 

($ define RELEASE) / / for compatibility with release pakethaka when debuge can be commented out 

uses 
  FastMM4 in '.. \ fastmm \ FastMM4.pas', 
  FastMM4Messages in '.. \ fastmm \ FastMM4Messages.pas', 
  SysUtils, 
  Windows, 
  dialogs, 
  Classes, 
  usharedstructs in '.. \ units \ usharedstructs.pas'; 


var (version) (revision) 
  min_ver_a: array [0 .. 3] of Byte = (3,5,1, 98); 
  min_ver: Integer absolute min_ver_a; / / the minimum supported version of 
  ps: TPluginStruct; 
  ppck: PPacket; 
const 
  pause = 15000; 

var 
  ColvoHP, CharObjID, ItemObjHP: integer; 
  CurHP, MaxHP, lastHP, cntHP: integer; 
  TimerHP: Boolean; 
  StatusHP: Boolean; 

function GetPluginInfo (const ver: Integer): PChar; stdcall;
begin 
  if ver <min_ver then 
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak + 
            'For versions 3.5.1.98 +' + sLineBreak + 
            'You have an old version of the program! The plugin will not be able to correctly work with it! " 
  else 
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak + 
            'For versions 3.5.1.98 +' + sLineBreak + 
            'Avtovypivalka ÍÐ bottles'; 
end; 


procedure Say (msg: string); 
var 
  buf: string; 
begin 
  with ps do begin 
    buf: = HexToString ('4 A 00 00 00 00 '); 
    WriteD (buf, 2); 
    WriteS (buf, 'AutoHP'); 
    WriteS (buf, msg); 
    SendPacketStr (buf, cntHP, False); 
  end; 
end; 


function SetStruct (const struct: PPluginStruct): Boolean; stdcall; 

begin 
  ps: = TPluginStruct (struct ^); 
  Result: = True; 
end; 





procedure StatsUpdate; 
var 
 i: integer; 
begin 
 for i: = 0 to ps.ReadDEx (ppck ^, 7) -1 do 
 case ppck ^. data [i * 8 +8] of 
   $ 09: CurHP: = ps.ReadDEx (ppck ^, i * 8 +15); 
   $ 0A: MaxHP: = ps.ReadDEx (ppck ^, i * 8 +15); 
 end; 
 say ( 'CurHP / MaxHP =' + inttostr (curhp )+'/'+ inttostr (maxhp)); 
 if (CurHP <= MaxHP-50) then TimerHP: = true else TimerHP: = false; 
end; 

procedure OnLoad; stdcall; 
begin 
  statusHP: = false; 
  CharObjID: = 0; 
  ItemObjHP: = 0; 
  TimerHP: = false; 
  lastHP: = 0; 
  cntHP: = 0; 
  with ps do 
    begin 

    if GoFirstConnection then 
      repeat 
      cntHP: = ConnectInfo.ConnectID; 
      Say ( 'to select your connection type in the chat and send the word set'); 
      until GoNextConnection; 
      
    end; 
end; 

procedure OnPacket (const cnt: Cardinal; const fromServer: Boolean; var pck: Tpacket); stdcall; 
var 
  buf: string; 
begin 
  if pck.size <3 then exit; 
  ppck: = @ pck; 

  if not FromServer and (pck.pckId = $ 38) and (cntHP =- 1) then 
  if (ps.ReadSEx (pck, 3) = 'set') then begin 
    pck.size: = 2; / / do not ignore the package 
    cntHP: = cnt; 
    Say ( 'Selected this connection. "); 
    Say ( 'to throw the beginning of the script, select or drinks Heal Potion!'); 
  end; 

  if FromServer and (cnt = cntHP) then begin 
    / / InventoryUpdate 
    if (pck.pckId = $ 27) and ((ps.ReadDEx (pck, 13) = 1060) 
    or (ps.ReadDEx (pck, 13) = 1061)) then begin / / Healing Potion, Lesser Healing Potion 
      ItemObjHP: = ps.ReadDEx (pck, 9); 
      ColvoHP: = ps.ReadDEx (pck, 17); / / number hilok 
      if statusHP then exit; 
      Say ( 'Automatic Rotion Neal is ready to work! "); 
      Say ( 'Hilok =' + IntToStr (ColvoHP)); 
      statusHP: = true; 
    end; 

    / / UserInfo 
    if (pck.pckId = $ 04) then 
      begin 
        CharObjID: = ps.ReadDEx (ppck ^, 19); 
        MaxHP: = ps.ReadDEx (ppck ^, 83); 
      end; 

    / / StatusUpdate 
    if ((pck.pckId = $ 0E) and (ps.ReadDEx (pck, 3) = CharObjID) and (pck.data [4] = $ 04)) then 
      StatsUpdate; 

    if TimerHP and (GetTickCount-lastHP> pause) then begin 
      lastHP: = GetTickCount; 
      buf: = # $ 14; 
      ps.WriteD (buf, ItemObjHP); 
      ps.WriteD (buf, 0); 
      ps.SendPacketStr (buf, cnt, True); 
      if ColvoHP <5 then 
        Say ( 'end hilki! Buy Heal Potion!'); 
      if ColvoHP = 1 then begin 
        Say ( 'Hilok =' + inttostr (ColvoHP-1)); 
        Say ( 'ran out hilki! Buy Heal Potion!'); 
        TimerHP: = False; 
      end; 
    end; 
  end; 

end; 

exports 
  GetPluginInfo, 
  OnPacket, 
  OnLoad, 
  SetStruct; 

begin 
end.

 

[3.2.4]plugin_demo2.dpr; Adding its functions

 

plugin_demo2.dpr; Adding its functions

 

For version 3.5.2.102

 



library plugin_demo2;

($ define RELEASE) / / for compatibility with release pakethaka when debuge can be commented out

uses
  FastMM4 in '.. \ fastmm \ FastMM4.pas',
  FastMM4Messages in '.. \ fastmm \ FastMM4Messages.pas',
  windows,
  usharedstructs in '.. \ units \ usharedstructs.pas';


var (version) (revision)
  min_ver_a: array [0 .. 3] of Byte = (3,5,1, 98);
  min_ver: Integer absolute min_ver_a; / / the minimum supported version of
  ps: TPluginStruct; / / structure passed to the plugin

/ / Make sure the called function.
/ / Should return a description of the plugin
/ / At the same time can check the version of the program
function GetPluginInfo (const ver: Integer): PChar; stdcall;
begin
  if ver <min_ver then
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak +
            'For versions 3.5.1.98 +' + sLineBreak +
            'You have an old version of the program! The plugin will not be able to correctly work with it! "
  else
    Result: = 'Plugin Demonstration program l2phx' + sLineBreak +
            'For versions 3.5.1.98 +' + sLineBreak +
            'Shows how to add a function / procedure in PH' + sLineBreak +
            '';
end;

/ / Make sure the called function.
/ / Retrieves the structure with links to all the functions of the core program,
/ / Which can be called from a plugin.
/ / If it returns False plugin unloaded.
function SetStruct (const struct: PPluginStruct): Boolean; stdcall;
begin
  ps: = TPluginStruct (struct ^);
  Result: = True;
end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called when a connection (cnt) to the client (withServer = False)
/ / Or server (withServer = True)
procedure OnConnect (const cnt: Cardinal; / / number of connections
                    const withServer: Boolean); stdcall; / / to the server?
begin

end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called when the connection (cnt) to the client (withServer = False)
/ / Or server (withServer = True)
procedure OnDisconnect (const cnt: Cardinal; / / number of connections
                       const withServer: Boolean); stdcall; / / to the server?
begin

end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called when unloading the plugin
procedure OnFree; stdcall;
begin

end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called when loading plugin
procedure OnLoad; stdcall;
begin

end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called when calling scripting functions of advertisements in RefreshPrecompile
function OnCallMethod (const MethodName: String; / / a function name in uppercase
                      var Params, / / function parameters
                      FuncResult: Variant / / result of functions
         ): Boolean; stdcall; / / returns True if a further
                              / / Stop processing functions
begin
  Result: = False; / / extend the processing functions of the program
  if MethodName = 'PI' then begin
    Result: = True; / / prohibit further processing functions in the program
    FuncResult: = Pi;
  end;

  if MethodName = 'SHOW_MY_MESSAGE' then begin
    MessageBox (0, pchar (string (Params [0 ])),'', MB_OK);
    Result: = True; / / prohibit further processing functions in the program
    FuncResult: = 0; / / what result? this procedure.
  end;
end;

/ / Optional function is called. (may be missing in the plugin)
/ / Called after initsalizatsii plugin allows you to add features to the editor / scripting dvizhek
Procedure OnRefreshPrecompile; stdcall;
begin
  ps.UserFuncs.Add ( 'function Pi: Extended');
  ps.UserFuncs.Add ( 'procedure Show_my_message (msg: string)');
  / / and now account
  / / ps.UserFuncs.Add ( 'procedure Show_my_message (% s)');
  / /% s suggests that the function of its parameters to be initially
  / / ekzemplyar class TfsScript
  / /% s must be the last or only option
  / / for example, advertisement of some functions in the ph
  / /
  / / 'procedure SetName (Name: string;% s)'
  / / 'procedure Disconnect (% s)'
  / / 'procedure WriteS (v: string;% s)'
  / /
  / / pay attention to, "" before the parameter, it is provided that% s is not the only parameter function
  / / it gives:
  / / an opportunity to pull variables from fastskripta.
  / / as in ph delaetsya:
  (
  if sMethodName = 'DISCONNECT' then
  begin
    ConId: = TfsScript (Integer (Params [0])). Variables [ 'ConnectID'];
    DoDisconnect (ConId);
  end

  whether

  if sMethodName = 'SETNAME' then
  begin
    buf: = TfsScript (Integer (Params [1])). Variables [ 'buf'];
    ConId: = TfsScript (Integer (Params [1])). Variables [ 'ConnectID'];
    SetConName (ConId, String (Params [0]));
  end
  )
  / / TfsScript (Integer (Params [0])) - ekzemplyar TfsScript


end;


/ / Optional function is called. (may be missing in the plugin)
/ / Called when the parish of package options:
/ / Cnt - number of connections
/ / FromServer - if the package from the server is equal to True, if the client is False
/ / Pck - actually a package (as an array)
procedure OnPacket (const cnt: Cardinal; const fromServer: Boolean; var pck: TPacket); stdcall;
begin
  if pck.size <3 then exit; / / in case the previous plugins reset packet

end;

/ / Exported functions used by the program
exports
  GetPluginInfo,
  SetStruct,
  OnPacket,
  OnConnect,
  OnDisconnect,
  OnLoad,
  OnFree,
  OnCallMethod,
  OnRefreshPrecompile;

begin
end.

 

[3.2.5]Plugin_demo4; Adding their functions (Advanced Example)

 

Plugin_demo4; Adding their functions (Advanced Example)

 

For version 3.5.2.102

 

library plugin_demo4;

{$define RELEASE} // для совместимости с релизом пакетхака, при дебуге можно закоментировать

uses
 FastMM4 in '..\fastmm\FastMM4.pas',
 FastMM4Messages in '..\fastmm\FastMM4Messages.pas',
 windows,
 variants,
 classes,   
 usharedstructs in '..\units\usharedstructs.pas';

var                                {version} {revision}
 min_ver_a: array[0..3] of Byte = ( 3,5,1,      100   );
 min_ver: Integer absolute min_ver_a; // минимальная поддерживаемая версия программы
 ps: TPluginStruct;

function GetPluginInfo(const ver: Integer): PChar; stdcall;
begin
 if ver<min_ver then
   Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
           'Для версий 3.5.1.100+'+sLineBreak+
           'У вас старая версия программы! Плагин не сможет корректно с ней работать!'
 else
   Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
           'Для версий 3.5.1.100+'+sLineBreak+
           '"Как добавить свою функцию и ее обработчик" часть вторая. © alexteam'+sLineBreak+
           sLineBreak+
           sLineBreak+
           'Плагин - хранилище глобальных переменных, обьектов, все что можно впихнуть в тип variant (тобиш все). общих для всех скриптов'+sLineBreak+
           sLineBreak+
           'Функции говорят сами за себя:'+sLineBreak+
           'function isGlobalVarExists(name:string):boolean'+sLineBreak+
           'procedure SetGlobalVar(name:string; variable:Variant)'+sLineBreak+
           'procedure DeleteGlobalVar(name:string)'+sLineBreak+
           'Function GetGlobalVar(name:string):Variant'+sLineBreak+
           'procedure DeleteAllGlobalVars'+sLineBreak;
end;

function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
 ps := TPluginStruct(struct^);
 Result:=True;
end;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Код плагина.


type
 TVariable = class(tobject)
 name : string;
 variable : variant;
 Constructor create;
 Destructor destroy; override;
 end;

var
 VarList : Tlist;


constructor TVariable.create;
begin
 //Добавляем себя в глобальный список
 VarList.Add(self);
end;

destructor TVariable.destroy;
var
 i: integer;
begin
 //Удаляем себя из глобального списка
 i := 0;
 while i < VarList.Count do
 begin
   if TVariable(VarList.Items[i]) = self then
   begin
     VarList.Delete(i);
     exit;
   end;
   inc(i);
 end;
 inherited;
end;


procedure OnLoad; stdcall;
begin
 VarList := TList.Create;

end;


procedure DeleteAllGlobalVars;
begin
while VarList.Count > 0 do
 TVariable(VarList.Items[0]).destroy;
end;

procedure OnFree; stdcall;
begin
 DeleteAllGlobalVars;
 VarList.Destroy;
end;         

Function GetTVariable(name:string):TVariable;
var
 i : integer;
begin
 result := nil;

 i := 0;
 while i < VarList.Count do
 begin
   if TVariable(VarList.Items[i]).name = name then
     begin
       Result := TVariable(VarList.Items[i]);
       exit;
     end;
   inc(i);
 end;
end;

Procedure SetOrCreateVar(Name:string; variable: variant);
var
 MyVar : TVariable;
begin
 myvar := GetTVariable(name);

 if not assigned(MyVar) then
   begin
     MyVar := TVariable.create;
     MyVar.name := Name;
   end;

 MyVar.variable := variable;
end;

procedure deletevar(name:string);
var
 i:integer;
begin
 i := 0;
 while i < VarList.Count do
 begin
   if TVariable(VarList.Items[i]).name = name then
     begin
       TVariable(VarList.Items[i]).destroy;
       exit;
     end;
   inc(i);
 end;
end;

function OnCallMethod(const MethodName: String; // имя функции в верхнем регистре
                     var Params, // параметры функции
                     FuncResult: Variant // результат функции
        ): Boolean; stdcall; // если вернёт True то дальнейшая
                             // обработка функции прекратиться
var
 variable : TVariable;
begin
 Result:=False;
 if MethodName='ISGLOBALVAREXISTS' then
 begin
   FuncResult := assigned(GetTVariable(VarAsType(Params[0], varString)));
   
   Result := True;     
 end else

 if MethodName='SETGLOBALVAR' then
 begin
   SetOrCreateVar(
     VarAsType(Params[0], varString),
     Params[1]);

   Result:=True;
   FuncResult := Null;    
 end else

 if MethodName='DELETEGLOBALVAR' then
 begin
   deletevar(VarAsType(Params[0], varString));

   Result:=True;
   FuncResult := Null;    
 end else

 if MethodName='GETGLOBALVAR' then
 begin
   variable := GetTVariable(VarAsType(Params[0], varString));
   if assigned(variable) then
     FuncResult := variable.variable
   else
     FuncResult := Null;

   Result:=True; // запрещаем дальнейшую обработку функции в программе
 end else

 if MethodName='DELETEALLGLOBALVARS' then
 begin
   DeleteAllGlobalVars;

   Result:=True;
   FuncResult := Null;
 end;
end;

Procedure OnRefreshPrecompile; stdcall;
begin
 ps.UserFuncs.Add('function isGlobalVarExists(name:string):boolean');
 ps.UserFuncs.Add('procedure SetGlobalVar(name:string; variable:Variant)');
 ps.UserFuncs.Add('procedure DeleteGlobalVar(name:string)');
 ps.UserFuncs.Add('Function GetGlobalVar(name:string):Variant');
 ps.UserFuncs.Add('procedure DeleteAllGlobalVars');
end;

// экспортируем используемые программой функции
exports
 GetPluginInfo,
 SetStruct,
 OnLoad,
 OnRefreshPrecompile,
 OnCallMethod,
 OnFree;


begin
end.

 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

[3.2.6]Contents uSharedStructs.pas

 

Contents uSharedStructs.pa

 

For version 3.5.2.102

 



unit usharedstructs;

interface
uses Classes;

const
  PCK_GS_ToServer = 4;
  PCK_GS_ToClient = 3;
  PCK_LS_ToServer = 2;
  PCK_LS_ToClient = 1;

type

  TEncDecSettings =
  record
    isChangeXor,
    isNoDecrypt,
    isNoProcessToClient,
    isNoProcessToServer,
    isKamael,
    isGraciaOff,
    isSaveLog,
    ShowLastPacket,
    HexViewOffset: boolean;
  end;

  () Is used by plugins

  PCodingClass = ^ TCodingClass;
  TCodingClass = class (TObject)
  public
    GKeyS, GKeyR: array [0 .. 15] of Byte;
    procedure InitKey (const XorKey; Interlude: Boolean = False); Virtual; Abstract;
    procedure DecryptGP (var Data; const Size: Word); Virtual; Abstract;
    procedure EncryptGP (var Data; const Size: Word); Virtual; Abstract;
  end;


  PCorrectorData = ^ TCorrectorData;
  TCorrectorData = packed record
    _seed: integer; / / random generator seed for mixing id tables
    _1_byte_table: String;
    _2_byte_table: String;
    _2_byte_table_size: Integer;
    _id_mix: boolean;
    temp_seed: integer;
    protocol: integer;
  end;

  TCharArray = array [0 .. $ FFFF] of AnsiChar;
 
  PPacket = ^ TPacket;
  TPacket = packed record case Integer of
    0: (Size: Word;
        Data: array [0 .. $ FFFD] of Byte);
    1: (PacketAsByteArray: array [0 .. $ FFFF] of Byte);
    2: (PacketAsCharArray: TCharArray);
    3: (pckSize: Word;
        pckId: Byte;
        pckData: array [0 .. $ FFFC] of Byte);
  end;


  TNewPacket = procedure (var Packet: tpacket; FromServer: boolean; Caller: TObject) of object; / / Caller is TencDec for example -> TencDec (caller). Name is akshin only TencDec
  TNewAction = procedure (action: byte; Caller: TObject) of object; / / Caller is dependent on action
  TStringArray = array of string;

 
  TOnTimer = procedure (const param: Cardinal); stdcall;
  tConnectInfo = packed record
    ConnectID: integer;
    ConnectName: string [200];
  end;

  (instance of this class (or rather its descendant) is passed to plugins.)
  PPluginStruct = ^ TPluginStruct;
  TPluginStruct = class (tobject)
    private
    public
    userFormHandle: THandle;
    ConnectInfo: tConnectInfo;
    UserFuncs: tstringlist;
    function ReadC (const pck: string; const index: integer): byte; Virtual; Abstract;
    function ReadH (const pck: string; const index: integer): word; Virtual; Abstract;
    function ReadD (const pck: string; const index: integer): integer; Virtual; Abstract;
    function ReadF (const pck: string; const index: integer): double; Virtual; Abstract;
    function ReadS (const pck: string; const index: integer): string; Virtual; Abstract;
    function ReadCEx (const pck; const index: integer): byte; Virtual; Abstract;
    function ReadHEx (const pck; const index: integer): word; Virtual; Abstract;
    function ReadDEx (const pck; const index: integer): integer; Virtual; Abstract;
    function ReadFEx (const pck; const index: integer): double; Virtual; Abstract;
    function ReadSEx (const pck; const index: integer): string; Virtual; Abstract;
    procedure WriteC (var pck: string; const v: byte; ind: integer =- 1); Virtual; Abstract;
    procedure WriteH (var pck: string; const v: word; ind: integer =- 1); Virtual; Abstract;
    procedure WriteD (var pck: string; const v: integer; ind: integer =- 1); Virtual; Abstract;
    procedure WriteF (var pck: string; const v: double; ind: integer =- 1); Virtual; Abstract;
    procedure WriteS (var pck: string; const v: string; ind: integer =- 1); Virtual; Abstract;
    procedure WriteCEx (var pck; const v: byte; ind: integer =- 1); Virtual; Abstract;
    procedure WriteHEx (var pck; const v: word; ind: integer =- 1); Virtual; Abstract;
    procedure WriteDEx (var pck; const v: integer; ind: integer =- 1); Virtual; Abstract;
    procedure WriteFEx (var pck; const v: double; ind: integer =- 1); Virtual; Abstract;
    procedure WriteSEx (var pck; const v: string; ind: integer =- 1); Virtual; Abstract;

    function CreateAndRunTimerThread (const interval, usrParam: Cardinal;
                                      const OnTimerProc: TOnTimer): Pointer; Virtual; Abstract;
    procedure ChangeTimerThread (const timer: Pointer; const interval: Cardinal;
                                const usrParam: Cardinal = $ ffffffff;
                                const OnTimerProc: TOnTimer = nil); Virtual; Abstract;
    procedure DestroyTimerThread (var timer: Pointer); Virtual; Abstract;
    function StringToHex (str1, Separator: String): String; Virtual; Abstract;
    function HexToString (Hex: String): String; Virtual; Abstract;
    function DataPckToStrPck (var pck): string; Virtual; Abstract;
    procedure SendPacketData (var pck; const tid: integer; const ToServer: Boolean); Virtual; Abstract;
    procedure SendPacketStr (pck: string; const tid: integer; const ToServer: Boolean); Virtual; Abstract;
    procedure SendPacket (Size: Word; pck: string; tid: integer; ToServer: Boolean); Virtual; Abstract;
   
    function getConnectionName (id: integer): string; Virtual; Abstract;
    function getConnectioidByName (name: string): integer; Virtual; Abstract;
    Function GoFirstConnection: boolean; Virtual; Abstract;
    Function GoNextConnection: boolean; Virtual; Abstract;
    procedure ShowUserForm (ActivateOnly: boolean); Virtual; Abstract;
    Procedure HideUserForm; Virtual; Abstract;
  end;

implementation



end.


 

[4.0]FAQ

 

FAQ. general questions.

 

Comment author:

Information was taken from the forum software.

I hope the authors will not be in the grievance for a malignant kopipast and lack of copyright in many places.

 

Question: start L2ph (x) version of 3.hh swears at antivir trojan?

Solution: This is normal. Pakethak use the procedure in the implementation process, as the majority virey - hence the swearing. In late July 2008, it was found that the program vylozhennaya on the server contains a signature similar to a trojan. If you recompile the source project in the new version of development environment like the signature will no longer appear. The program was re-lined and поновой. If you are still worried - download the source yourself and compile it.

 

Question: run scripts which has taken on this forum off the bug?

Solution: The most common mistake: not prescribes the constant Name etc. the script is not suitable for your chronicles. Either the script requires modification due to the change of names of built-in functions.

 

Question: PH start, go to the server, the connection is intercepted in the list of packages but not the packets that it should be, what should I do?

Solution: The most frequently raised question on the forum, which has already been out a pattern, make sure the ph is configured correctly for your server, this is the main reason. If you are sure that all settings are set correctly - read the next question.

 

Question: Instead of a character in the upper left corner of the program written in "empty" (for versions lower than 3.5.1 to version higher than this place - the connection tab), or any kind of abracadabra, what should I do?

Reshenie1: most likely on the server to change encryption of traffic, by no means asking for and do not pester people to see or write dllku by your server. There is a topic DESHIFRUEM TRAFFIC

 

on this issue. Read it. Try searching algorithm. If something does not succeed - ask a specific question: I do not get it, then it is with examples rather than from mneya it fails - help OWL. Next you need to download the source and recompile the library Pakethaka newxor.dll, which is responsible for decoding / zashifrovku traffic in Pakethake.

Reshenie2: In version 3.2.0 pakethaka name in connection Kamaele will not be displayed because of the fact that the name is taken from the package $ 04-UserInfo, but he has another Kamaele Id = $ 32. A possible solution to the problem - try to take pakethak of topics Modification L2phx 3.2.0

 

Q: Someone has already tried to подружить pakethak of xkora with the client Hellbounda?

Solution: Try to take pakethak of the topic [/url=http://coderx.ru/showthread.php?t=618]Modifying L2phx 3.2.0[/u] it works on gracia. The set goes inishki to decrypt packets (C4, Interludes, Kamael), communications itemov etc. etc.

 

Question:

Quote:

Note from Sn00pu

And why am I knocking you in the ICQ and you do not answer???

Decision:

person you are with me still I do not stukani NLObP banned for a couple of months. have the forum questions here! wait until the developer script will take the time to answer to your question is not always audible. © Grinch

 

Question: catching package, modify it, refer it to the client, the inventory is a welcome fluff, but when the opening stock, it disappears. Prompt: What do I do?

Solution: All data is stored on серваке, modify them by changing the package of 99% will not lead to anything, throw it work.

 

Question: Why and how to use pakethakom

Answer: The Guide to L2PHX, batch level guides written by J-Fobos or Hide for L2PHX, batch level guides written MarShall'om either, yet this chm file written induskim encoders with alfatsentavry.

 

Question: On the show when you select a package in the list ... off error?

Solution: The most common mistake: you packets.ini for other chronicles.

 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

[4.0]FAQ

 

FAQ. general questions.

 

Comment author:

Information was taken from the forum software.

I hope the authors will not be in the grievance for a malignant kopipast and lack of copyright in many places.

 

Question: start L2ph (x) version of 3.hh swears at antivir trojan?

Solution: This is normal. Pakethak use the procedure in the implementation process, as the majority virey - hence the swearing. In late July 2008, it was found that the program vylozhennaya on the server contains a signature similar to a trojan. If you recompile the source project in the new version of development environment like the signature will no longer appear. The program was re-lined and поновой. If you are still worried - download the source yourself and compile it.

 

Question: run scripts which has taken on this forum off the bug?

Solution: The most common mistake: not prescribes the constant Name etc. the script is not suitable for your chronicles. Either the script requires modification due to the change of names of built-in functions.

 

Question: PH start, go to the server, the connection is intercepted in the list of packages but not the packets that it should be, what should I do?

Solution: The most frequently raised question on the forum, which has already been out a pattern, make sure the ph is configured correctly for your server, this is the main reason. If you are sure that all settings are set correctly - read the next question.

 

Question: Instead of a character in the upper left corner of the program written in "empty" (for versions lower than 3.5.1 to version higher than this place - the connection tab), or any kind of abracadabra, what should I do?

Reshenie1: most likely on the server to change encryption of traffic, by no means asking for and do not pester people to see or write dllku by your server. There is a topic DESHIFRUEM TRAFFIC

 

on this issue. Read it. Try searching algorithm. If something does not succeed - ask a specific question: I do not get it, then it is with examples rather than from mneya it fails - help OWL. Next you need to download the source and recompile the library Pakethaka newxor.dll, which is responsible for decoding / zashifrovku traffic in Pakethake.

Reshenie2: In version 3.2.0 pakethaka name in connection Kamaele will not be displayed because of the fact that the name is taken from the package $ 04-UserInfo, but he has another Kamaele Id = $ 32. A possible solution to the problem - try to take pakethak of topics Modification L2phx 3.2.0

 

Q: Someone has already tried to подружить pakethak of xkora with the client Hellbounda?

Solution: Try to take pakethak of the topic [/url=http://coderx.ru/showthread.php?t=618]Modifying L2phx 3.2.0[/u] it works on gracia. The set goes inishki to decrypt packets (C4, Interludes, Kamael), communications itemov etc. etc.

 

Question:

Quote:

Note from Sn00pu

And why am I knocking you in the ICQ and you do not answer???

Decision:

person you are with me still I do not stukani NLObP banned for a couple of months. have the forum questions here! wait until the developer script will take the time to answer to your question is not always audible. © Grinch

 

Question: catching package, modify it, refer it to the client, the inventory is a welcome fluff, but when the opening stock, it disappears. Prompt: What do I do?

Solution: All data is stored on серваке, modify them by changing the package of 99% will not lead to anything, throw it work.

 

Question: Why and how to use pakethakom

Answer: The Guide to L2PHX, batch level guides written by J-Fobos or Hide for L2PHX, batch level guides written MarShall'om either, yet this chm file written induskim encoders with alfatsentavry.

 

Question: On the show when you select a package in the list ... off error?

Solution: The most common mistake: you packets.ini for other chronicles.

 

[4.1.1]Explanation packages for Intrelude

 

Explanation package for Intrelude.

 

by TAMBIK. original link here

 

Action

Purpose: The package, which is sent when the customer clicks the mouse on the NPC or another

 

charu

Format:

04

XX XX XX XX / / ID of object

XX XX XX XX / / X coordinate provision Chara

XX XX XX XX / / Y coordinate provision Chara

XX XX XX XX / / Z Coordinate provision Chara

XX / / 00 - just click, 01 - with the click caught shiftom

 

AttackRequest

Purpose: The request for an attack

Format:

0A

XX XX XX XX / / ID of someone going to attack

XX XX XX XX / / X coordinate of the position of Chara

XX XX XX XX / / Y coordinate of the position of Chara

XX XX XX XX / / Z coordinate of the position of Chara

XX XX XX XX / / 0 - Ctrl is not pressed, 1 - Ctrl pressed

 

RequestItemList

Purpose: to request a list of items in inventory. (Customer opens

 

equipment, when the server sends the list)

Format:

0F

-------------------------------------------------- ------------------------------

RequestUnEquipItem

Purpose: removes ekvip with Chara

Format:

11

XX XX XX XX / / Number of slots

-------------------------------------------------- ------------------------------

RequestDropItem

Purpose: The request for the drop itema. Route from a client, while attempting to throw out

 

inventory any thing

Format:

12

XX XX XX XX / / ID itema who want to throw

XX XX XX XX / / number itemov we want to throw

XX XX XX XX / / X kordinata place in which discharges item

XX XX XX XX / / Y kordinata place in which discharges item

XX XX XX XX / / Z kordinata place in which discharges item

-------------------------------------------------- ------------------------------

UseItem

Purpose: The request to use itema

Format:

14

XX XX XX XX / / ID of object

 

TradeRequest

Purpose: Request for trade.

Format:

15

XX XX XX XX / / ID of the object that want to trade

-------------------------------------------------- ------------------------------

AddTradeItem

Purpose: adds item in the trade list.

Format:

16

XX XX XX XX / / ID trade

XX XX XX XX / / ID of object

XX XX XX XX / / number of

-------------------------------------------------- ------------------------------

TradeDone

Purpose: The request for the completion of trade.

Format:

17

XX XX XX XX / / 0 - cancel the transaction, 1 - to confirm the transaction

 

RequestSocialAction

Purpose: The animation is like the laughter of social action, etc.

Format:

1B

XX XX XX XX / / Number ekshina

/ / 0x02 - Greeting

/ / 0x03 - Victory

/ / 0x04 - Advance

/ / 0x05 - No

/ / 0x06 - Yes

/ / 0x07 - Bow

/ / 0x08 - Unaware

/ / 0x09 - Social Waiting

/ / 0x0A - Laugh

/ / 0x0B - Applaud

/ / 0x0C - Dance

/ / 0x0D - Sorrow

/ / 0x0F - Animation when lvl-up

/ / 0x10 - Animation characters

 

ChangeMoveType

Purpose: enables / disables the running

Format:

1C

XX XX XX XX / / 0 - run off, 1 - race included

-------------------------------------------------- ------------------------------

ChangeWaitType

Purpose: to sit / stand

Format:

1D

XX XX XX XX / / 0 - sit down, 1 - to stand

-------------------------------------------------- ------------------------------

RequestTargetCanceld

Purpose: Cancels Target

Format:

1D

-------------------------------------------------- ------------------------------

RequestBuyItem

Purpose: Request to buy things

Format:

1F

XX XX XX XX / / ID Cisco purchases

XX XX XX XX / / number of things you want to buy

/ / <<<The block is repeated as many times as you need to buy different things

XX XX XX XX / / ID of the subject that you want to buy

XX XX XX XX / / number of items you want to buy

 

RequestBypassToServer

Purpose: sends "bypass" (found in HTML), click the server.

Format:

21

XX XX XX XX 00 00 / / string with the team

-------------------------------------------------- ------------------------------

RequestJoinPledge

Purpose: sends charu proposal to join the clan.

Format:

24

XX XX XX XX / / ID Chara, who sent a proposal

-------------------------------------------------- ------------------------------

RequestAnswerJoinPledge

Purpose: The response to the proposal to join the clan

Format:

25

XX XX XX XX / / response: 00 - no 01 - yes

-------------------------------------------------- ------------------------------

RequestWithdrawalPledge

 

Purpose: to withdraw from the clan

Format:

26

-------------------------------------------------- ------------------------------

RequestOustPledgeMember

Purpose: to remove from the clan of Chara

Format:

27

XX XX XX XX 00 00 / / string with the name of Chara

-------------------------------------------------- ------------------------------

RequestJoinParty

Purpose: to offer to enter into пати

Format:

29

XX XX XX XX 00 00 / / Nick Chara, who sent a proposal

XX XX XX XX / / type of distribution:

/ / 0x00 - drop it gets picked CHAR, spoil - get spoiler

/ / 0x01 - drop is distributed randomly, spoil - get spoiler

/ / 0x02 - drop and spoil, is distributed randomly

/ / 0x03 - drop gives charam in turn, spoil - get spoiler

/ / 0x04 - drop and spoil, given charam in turn

 

RequestAnswerJoinParty

Purpose: The response to the invitation to join the пати

Format:

2A

XX XX XX XX / / response: 00 - no 01 - yes

-------------------------------------------------- ------------------------------

RequestWithDrawalParty

Purpose: to withdraw from пати

Format:

2B

-------------------------------------------------- ------------------------------

RequestOustPartyMember

Purpose: to remove from Chara пати

Format:

2C

XX XX XX XX 00 00 / / string with the name of Chara which must be removed

-------------------------------------------------- ------------------------------

RequestMagicSkillUse

Purpose: The use of magic skill

Format:

2F

XX XX XX XX / / ID skill

XX XX XX XX / / state of CTRL: 00 - released 01 - PUSH

XX XX XX XX / / state of SHIFT: 00 - released 01 - PUSH

-------------------------------------------------- ------------------------------

Appearing

Assignment: Find a rebirth after the death of Chara. Called after package

 

RequestRestartPoint and ValidatePosition

Format:

30

 

RequestShortCutReg

Purpose: Regestriruet label on the toolbar shortcuts.

Format:

33

XX XX XX XX / / Type of Label

/ / 0x01 - item

/ / 0x02 - skill

/ / 0x03 - Action

/ / 0x04 - macro

XX XX XX XX / / ID of the object put on the cover

XX XX XX XX / / number of slots

XX XX XX XX / / number of tabs

XX XX XX XX / / unknown

-------------------------------------------------- ------------------------------

RequestShortCutDel

Purpose: Removes the label from the panel shortcuts.

Format:

35

XX XX XX XX / / number of slots

XX XX XX XX / / number of tabs

-------------------------------------------------- ------------------------------

Say2

Purpose: send a message to other players

Format:

38

XX XX XX XX 00 00 / / Ctroka message

XX XX XX XX / / Type of message

/ / 0x00 - ALL

/ / 0x01 - SHOUT (!)

/ / 0x02 - TELL ( ")

/ / 0x03 - PARTY (#)

/ / 0x04 - CLAN (@)

/ / 0x05 - GM

/ / 0x06 - PETITION_PLAYER

/ / 0x07 - PETITION_GM

/ / 0x08 - TRADE (+)

/ / 0x09 - ALLIANCE ($)

/ / 0x0A - ANNOUNCEMENT

/ / 0x0F - PARTYROOM_ALL (yellow)

/ / 0x10 - PARTYROOM_COMMANDER (blue)

/ / 0x11 - The Voice of the hero

XX XX XX XX 00 00 / / For private messages. Contains the nickname that Chara

 

intended message.

 

RequestPledgeMemberList

Purpose: to request a list of members of the clan

Format:

3C

-------------------------------------------------- ------------------------------

RequestSkillList

Purpose: requesting a list of skills studied

Format:

3F

-------------------------------------------------- ------------------------------

AnswerTradeRequest

Purpose: The response to the trade

Format:

40

XX XX XX XX / / Response to Trade: 00 - to reject, the 01 - to confirm

-------------------------------------------------- ------------------------------

RequestActionUse

Purpose: executes an action

Format:

45

XX XX XX XX / / Action ID (a list is not complete, there ekshinov дофига)

/ / 0x00 - Take / stand

/ / 0x01 - Walk / run

/ / 0x19 - Ansammonit peta

/ / 0x33 - General manufacture

/ / 0x38 - Zazezt / get off with straydera (Virno???)

XX XX XX XX / / 00 - CTRL is not pressed, 01 - CTRL pressed

XX / / 01 - SHIFT is not pressed, 01 - SHIFT pressed

-------------------------------------------------- ------------------------------

RequestRestart

Purpose: returns the selection Chara

Format:

46

 

 

StartRotating

Purpose: Enables Chara rotation around its axis

Format:

4A

XX XX XX XX / / Angle (takes values from 0 to 65535)

XX XX XX XX / / party (01 00 00 00 - rotation to the right, FF FF FF FF - rotate left)

-------------------------------------------------- ------------------------------

FinishRotating

Purpose: Chara stops spinning around its axis

Format:

4B

XX XX XX XX / / Unknown

XX XX XX XX / / Unknown

-------------------------------------------------- ------------------------------

RequestStartPledgeWar

Purpose: to begin klanvar

Format:

4D

XX XX XX XX 00 00 / / string with the name of a clan, who declared klanvar

-------------------------------------------------- ------------------------------

RequestStartPledgeWar

Purpose: to end the clan pitch

Format:

4F

XX XX XX XX 00 00 / / string with the name of a clan

 

RequestGiveNickName

Purpose: install title.

Format:

55

XX XX XX XX 00 00 / / a string containing the username Chara who want to set the title

XX XX XX XX 00 00 / / a string containing the title

-------------------------------------------------- ------------------------------

RequestEnchantItem

Purpose: enchat INTEM asks.

Format:

58

XX XX XX XX / / ID itema who want zaenchatit

-------------------------------------------------- ------------------------------

RequestDestroyItem

Purpose: The request to destroy itema

Format:

59

XX XX XX XX / / ID itema

XX XX XX XX / / number itemov?

-------------------------------------------------- ------------------------------

RequestFriendInvite

Purpose: to put in Chara Frendo list

Format:

5E

XX XX XX XX 00 00 / / string with the name of Chara, which should be added

-------------------------------------------------- ------------------------------

RequestAnswerFriendInvite

Purpose: The response to the proposal add to friends list

Format:

5F

XX XX XX XX / / 00 - no 01 - yes

-------------------------------------------------- ------------------------------

RequestFriendList

Purpose: The request frendlista

Format:

60

 

 

RequestFriendDel

Purpose: The request to remove from Chara Frendo sheet

Format:

61

XX XX XX XX 00 00 / / string with the name of Chara, which should be removed

-------------------------------------------------- ------------------------------

 

 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

CharacterRestore

Purpose: undo delete Chara

Format:

62

XX XX XX XX / / number of slots with charom

-------------------------------------------------- ------------------------------

RequestQuestList

Purpose: to request a list of quests

Format:

63

-------------------------------------------------- ------------------------------

RequestQuestAbort

Purpose: to suspend the execution of quest

Format:

64

XX XX XX XX / / ID quest

-------------------------------------------------- ------------------------------

CharacterRestore

Purpose: Request for information on the Clan

Format:

66

XX XX XX XX / / ID clan

-------------------------------------------------- ------------------------------

RequestPledgeCrest

Purpose: Sets the icon of the clan

Format:

68

XX XX XX XX / / ID icons

-------------------------------------------------- ------------------------------

RequestRide

Purpose: to climb / get off with straydera / viverna

Format:

6A

XX XX XX XX / / 0 - get off, 1 - to climb

XX XX XX XX / / 1 - strayder, 2 - viviren

-------------------------------------------------- ------------------------------

RequestAquireSkillInfo

Purpose: The request for information on skill

Format:

6B

XX XX XX XX / / ID skill

XX XX XX XX / / level of skill

-------------------------------------------------- ------------------------------

RequestAquireSkill

Purpose: The request to study skill

Format:

6C

XX XX XX XX / / ID skill

XX XX XX XX / / level of skill

-------------------------------------------------- ------------------------------

RequestRestartPoint

Purpose: asks for restart after the death of Chara

Format:

6D

XX XX XX XX / / point which will be refunded to the player

/ / 0x00 - City

/ / 0x01 - Clan Hall

/ / 0x02 - The Castle

/ / 0x03 - The flag (in the siege of the castle)

/ / 0x04 - Ressam at the scene where the player died, used at the festival

-------------------------------------------------- ------------------------------

RequestGMCommand

Purpose: sends a request to the GM command

Format:

6E

XX XX XX XX 00 00 / / string with the name Chara - goals

XX XX XX XX / / ID command

/ / 0x01 - player status

/ / 0x02 - clan players

/ / 0x03 - player skills

/ / 0x04 - player quests

/ / 0x05 - Player's Equipment

/ / 0x06 - varhaus player

XX XX XX XX / / unknown

-------------------------------------------------- ------------------------------

RequestPartyMatchConfig

Purpose: to open a search box пати

Format:

6F

XX XX XX XX / / automatically register: 00 - no 01 - yes

XX XX XX XX / / show level: 00 - no 01 - yes

XX XX XX XX / / show the class: 00 - no 01 - yes

-------------------------------------------------- ------------------------------

RequestPartyMatchList

Purpose: to request a list of charov seeking пати

Format:

70

XX XX XX XX / / status may be 1 and 3. What is for sure, I do not know.

-------------------------------------------------- ------------------------------

RequestPartyMatchDetail

Purpose: to seek detailed informutsiyu on chare seeking пати

Format:

71

XX XX XX XX / / ID Chara

-------------------------------------------------- ------------------------------

RequestCrystallizeItem

Purpose: The request for crystallization itema

Format:

72

XX XX XX XX / / ID itema you want kristalizovat

XX XX XX XX / / number itemov you want kristalizovat

-------------------------------------------------- ------------------------------

SetPrivateStoreMsgSell

Purpose: Sets the message to sell to PrivateStore

Format:

77

XX XX XX XX 00 00 / / string with a message

-------------------------------------------------- ------------------------------

RequestGmList

Purpose: Query a list GMov

Format:

81

-------------------------------------------------- ------------------------------

RequestJoinAlly

Purpose: to offer to enter into allians

Format:

82

XX XX XX XX / / ID leader of the clan, which preglashaetsya to Ally

-------------------------------------------------- ------------------------------

RequestAnswerJoinAlly

Purpose: The response to the offer of entry into allians

Format:

83

XX XX XX XX / / response: 00 - no 01 - yes

 

AllyLeave

Purpose: to leave allians

Format:

84

XX XX XX XX 00 00 / / string with the name of a clan

-------------------------------------------------- ------------------------------

AllyDismiss

Purpose: The request for the dissolution of alliansa

Format:

85

XX XX XX XX 00 00 / / string with the name of the clan

-------------------------------------------------- ------------------------------

RequestAllyCrest

Purpose: The request to install icons alliansa

Format:

88

XX XX XX XX / / ID icons

-------------------------------------------------- ------------------------------

RequestChangePetName

Purpose: change the name of peta

Format:

89

XX XX XX XX 00 00 / / string with a new name pita

-------------------------------------------------- ------------------------------

RequestPetUseItem

Purpose: Team petu use item

Format:

8A

XX XX XX XX / / ID of object that you want to use

-------------------------------------------------- ------------------------------

RequestGiveItemToPet

Purpose: to move the item from its inventory in stock pita

Format:

8B

XX XX XX XX / / ID itema

XX XX XX XX / / number of

-------------------------------------------------- ------------------------------

RequestGetItemFromPet

Purpose: to move item from inventory peta to their inventory

Format:

8S

XX XX XX XX / / ID itema

XX XX XX XX / / number of

XX XX XX XX / / Fig knows. In most cases - 0

-------------------------------------------------- ------------------------------

RequestAllyInfo

Purpose: Request for information on allianse.

Format:

8E

-------------------------------------------------- ------------------------------

RequestPetGetItem

Purpose: to raise the team petu item.

Format:

8F

XX XX XX XX / / ID to be raised

-------------------------------------------------- ------------------------------

SetPrivateStoreMsgBuy

Purpose: Sets the message to purchase for PrivateStore

Format:

94

XX XX XX XX 00 00 / / string with a message

-------------------------------------------------- ------------------------------

RequestStartAllianceWar

Purpose: to declare the pitch Ally

Format:

98

XX XX XX XX 00 00 / / string with the name alliansa

-------------------------------------------------- ------------------------------

RequestStopAllianceWar

Purpose: The request to terminate Ally var'a

Format:

9A

XX XX XX XX 00 00 / / string with the name alliansa

-------------------------------------------------- ------------------------------

RequestBlock

Purpose: query operations on the black list

Format:

A0

XX XX XX XX / / request type:

/ / 0x00 - Chara add to ignore

/ / 0x01 - remove from Chara ignore

/ / 0x02 - vyvesli list charov listed in the ignore

/ / 0x03 - ignore all

/ / 0x04 - cancel ignore all

XX XX XX XX 00 00 / / string with the name of Chara which should add to ignore

-------------------------------------------------- ------------------------------

RequestSiegeAttackerList

Purpose: The list of requests recorded in the siege of the castle attacking clans

Format:

A2

XX XX XX XX / / ID lock

-------------------------------------------------- ------------------------------

RequestJoinSiege

Purpose: to add / delete a clan on the list of the siege of the castle

Format:

A4

XX XX XX XX / / ID lock

XX XX XX XX / / 00 - join the defenders, the 01 - to join the attack

XX XX XX XX / / 00 - Remove the clan from the list, 01 - add the clan to the list

-------------------------------------------------- ------------------------------

RequestRecipeBookOpen

Purpose: to open a book of recipes

Format:

AS

-------------------------------------------------- ------------------------------

RequestEvaluate

Purpose: Request for recommendation to the player

Format:

B9

XX XX XX XX / / ID goals

-------------------------------------------------- ------------------------------

RequestHennaList

Purpose: to request a list of available Tattoos

Format:

BA

XX XX XX XX / / unknown

-------------------------------------------------- ------------------------------

RequestHennaItemInfo

Purpose: to obtain information about the tattoo

Format:

BB

XX XX XX XX / / ID tattoos

-------------------------------------------------- ------------------------------

RequestHennaEquip

Purpose: The request for tattooing

Format:

BS

XX XX XX XX / / ID tattoo that you want to put

-------------------------------------------------- ------------------------------

RequestMakeMacro

Purpose: The request to create a macro

Format:

C1

XX XX XX XX / / ID macro

XX XX XX XX 00 00 / / a string containing the name of a macro

XX XX XX XX 00 00 / / string with a description of the macro

XX XX XX XX 00 00 / / string with the text on the icon

XX / / ID icons

XX / / number of rows

/ / <<<<< The next block is repeated as many times as rows in a macro.

XX / / string

XX / / type

XX / / ID skill

XX / / ID label on the panel

XX XX XX XX 00 00 / / name of the command

-------------------------------------------------- ------------------------------

RequestDeleteMacro

Purpose: The request to remove the macro

Format:

C2

XX XX XX XX / / ID macro

-------------------------------------------------- ------------------------------

RequestAutoSoulShot

Purpose: enables / disables the use of AutoSS

Format:

CF

XX XX XX XX / / ID itema

XX XX XX XX / / 1 - include: 0 - disable

-------------------------------------------------- ------------------------------

RequestExPledgeCrestLarge

Purpose: to seek information Larger icons clan (for those that razmeschayutsya

 

things clan-type shields) clan

Format:

D0

10

XX XX XX XX / / ID icons

-------------------------------------------------- ------------------------------

RequestExSetPledgeCrestLarge

Purpose: to send these images large icons clan (for those that razmeschayutsya

 

things clan-type boards) on the server

Format:

D0

11

XX XX XX XX / / data size

/ / <<<<< The next block is repeated many times, how many bytes in the image data

XX / / image data

-------------------------------------------------- ------------------------------

RequestChangePartyLeader

Purpose: transmits leadership in пати

Format:

EE

XX XX XX XX 00 00 / / string with the name of Chara, which is transmitted Leadership

 

Credits: TehGeorge

Source: http://www.worldb0x.com/

 

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

Rofl no need to put 1 karma for something like that...

There is an explanation in english about the phx (latest version) by Stealth and it isn't hidden (if it is, cuz i dont remember, it will be low), it is not need to hide this for even 100 posts rofl...

 

Anyway thanks for bringing it here..

 

EDIT: you could also make some changes instead of copying/pasting exactly as it was there...Example item = itema in your guide >.>

Posted

guys if you dont like it then dont post here...

 

 

Look that:

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

Posted

guys if you dont like it then dont post here...

 

 

Look that:

Note: I asked TehGeorge if i am allowed to post it and he said post it but with +1 karma hide, else delete it!

 

Well our forum has other rules.

And most topics with super small/big/inapropriate hide ammount, are getting junked/locked...

Although you can leave it as it is, and if any Mod judges that it is wrong, he will change it..

 

Anyway please do what I told you in my post.

Posted

Well our forum has other rules.

And most topics with super small/big/inapropriate hide ammount, are getting junked/locked...

Although you can leave it as it is, and if any Mod judges that it is wrong, he will change it..

 

Anyway please do what I told you in my post.

Well man as he said that was a share from TehGeorge he was the 1 who told him to put 1 karma to read it so...

 

Guys open your eyes this has the SOURCE CODE of phx which means phx can be 100% fixable..

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...