Perfect World Function Library

08/07/2013 06:41 ntldr32#1
Note : This is not a bot, its only a bundle of all basic things you need to make a bot.
With this function library, you can start to make your own bot, based on your algorthm. I made all this function easy as i can. You dont need to read/write memory, all you need to do is to make some algorithm for your bot. This Library can be use with most popular programing langs (as long there is .Net Framework on user computer). You can use it with VB.net, C# .net, C++ .net, Delphi?, autoit?,
Pliss report if you find any bugs.

Req :
1. Need .Net framework to run (use google to search it), windows vista and UP, no need to download it anymore.
2. Need Visual Studio 2010 or up, to compile (you can also use console from .Net Framework to compile it)
3. A DLL version of [Only registered and activated users can see links. Click Here To Register...] class from [Only registered and activated users can see links. Click Here To Register...] (write in C# .Net, compile it to DLL so it can be use with VB)
4. Need someone who can help me make some documenttion about this library XD
5. All function are declared as Shared.

Using :
1. Include this library into your project as Project Reference, put the Custom_OffSets.ini, skillstr.txt, MemFunction.dll and PacketSender.dll into your project binary root folder (not in project root), by default its located on "[project Root]\Bin\Debug\"
2. Load the offset file: offsets.loadOffset("Custom_OffSets.ini")
3. Attach to client: client.hookChar("charname")

Example (in VB.net, you can try it with your fav programing lang (read documentation on your programing lang about using DLL function.)):
PHP Code:
Imports Perfect_World    'import the library, dont forget to add that library as reference before importing it
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '
load offset filethe format of the offset file is based on prophet bot 3.1 offset file
        offsets
.loadOffset("Custom_OffSets.ini")
        
'put all character that are curently open into combobox
        ComboBox1.Items.AddRange(client.getAllChar)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '
attach to client by using char name selected from combobox
        client
.hookChar(ComboBox1.Text)
        
'get you HP/MP info
        Label1.Text = "HP: " & character.HP
        '
get your class
        
Label2.Text "Class: " character.Profesion
        
'get item on 1st index of your bag
        Label3.Text = "Item on 1st Index: " & inventory.getID(0) & " : " & item.name(inventory.getID(0))
        '
load all items in your bag into combobox
        
For As Integer 0 To inventory.count 1
            ComboBox2
.Items.Add(item.name(inventory.getID(i)))
        
Next
        
'load all your skills into combobox
        For i As Integer = 0 To skill.Count - 1
            ComboBox3.Items.Add(skill.Name(skill.ID(i)))
        Next
        '
list all neares npc/mobs into combobox
        
For As Integer 0 To monsters.count 1
            ComboBox4
.Items.Add(monsters.Name(i))
        
Next
    End Sub
End 
Class 
Download (Souce code and Demo Included): [Only registered and activated users can see links. Click Here To Register...]

Function Tree

MemFunctions //See [Only registered and activated users can see links. Click Here To Register...]
PacketSender //See [Only registered and activated users can see links. Click Here To Register...]

Perfect_World.client.hookChar("charname") //Attach to client using character name
Perfect_World.client.getAllChar //Return all character name that are open in array data. Can be use for character selector before calling hookChar(strng)

Perfect_World.character.Name //Get the name of the of character on the attached client
Perfect_World.character.Level //Get level
Perfect_World.character.Gender //Get your sex (Male/Female)
Perfect_World.character.HP //Get current HP value
Perfect_World.character.maxHP //Get your maximum Health Point
Perfect_World.character.MP //Get current MP value
Perfect_World.character.maxMP //Get maximum Mana Point
Perfect_World.character.X(Boolean) //Get your X coordinat, put True as parameter for real X or False for raw X
Perfect_World.character.Y(Boolean) //see X
Perfect_World.character.Z(Boolean) //see X

Perfect_World.skill.Count //Get the amount of your learbed skills
Perfect_World.skill.Name(int skillID) //Get the skill name from skill ID
Perfect_World.skill.ID(int skillIndex) //Get the skill ID on the selected index
Perfect_World.skill.Level(int skillIndex) //Get the skill level on the selected index
Perfect_World.skill.CooldownTime(int skillIndex) //Get the skill cooldown time on the selected index
Perfect_World.skill.CooldownRemaining(int skillIndex)
Perfect_World.skill.isCooldown(int skillID) //Determine if the skill are coolingdown or not, retunr trus if the skill in CD false if not
Perfect_World.skill.Index(int skillID) //Get the index position of the skill by skill ID

Perfect_World.inventory.count
Perfect_World.inventory.getIndex(int itemID) //Get the index position of an item in your bag
Perfect_World.inventory.isPOT(int itemID) //Return true if the item id belong to item pots
Perfect_World.inventory.ID(int invIndex) //Get the item id on the selected inv index, to get the item name, see item class
Perfect_World.item(int itemID) //Return the item name from an item id

Perfect_World.monsters.count
Perfect_World.monsters.Selected //Get the id of the selected monster
Perfect_World.monsters.ID(int mobIndex) //Get id of monster on selected index
Perfect_World.monsters.Name(int mobIndex) //Get name of monster on selected index
Perfect_World.monsters.X(int mobIndex) //Get X coordinat of monster on selected index
Perfect_World.monsters.Y(int mobIndex)
Perfect_World.monsters.Z(int mobIndex)
Perfect_World.monsters.Distance(int mobID) //Get distance of monster that are selected
08/07/2013 14:16 dumbfck#2
Nice work dude!
I don't really fancy signing up to 4shared to download it though to be honest.
I'll try to take a look some time soon, but will be busy for a while. Interested to see what you've got in there :D
Do you have anything already, or have anything planned to handle asynchronous events? For example, something happens in a client (a hooked function is executed) and that then sends a signal or some data to the interface program, rather than continuously polling data structures or variables? If you've got anything like that, I may have some stuff you might like for the chat system.
08/08/2013 06:12 ntldr32#3
Quote:
Originally Posted by dumbfck View Post
Nice work dude!
I don't really fancy signing up to 4shared to download it though to be honest.
I'll try to take a look some time soon, but will be busy for a while. Interested to see what you've got in there :D
Do you have anything already, or have anything planned to handle asynchronous events? For example, something happens in a client (a hooked function is executed) and that then sends a signal or some data to the interface program, rather than continuously polling data structures or variables? If you've got anything like that, I may have some stuff you might like for the chat system.
idk if 4shared need register to download 0o, it conected with my google mail without register lol,.. im not upload this as attached file (i try 4 times attach file to post but not work), so i go to 4shared, you will not like if i upload via Ziddu right XD?

ya i still working on to make movement and chat system to be more portable, but still getting trouble on it.
in fact i not make all that function lol, i collect them from various source and make them portable as function library, you will find most of that function are somehow similar with your function or prophet bot function :D, lol,..
09/09/2013 06:36 oneormore#4
TO : ntldr32
I can't downloads (Souce code and Demo Included): Perfect World Function Library - Download - 4shared. Links is die.
Can you uploads again?
09/09/2013 11:54 ntldr32#5
it still there,.
09/12/2013 11:18 oneormore#6
TO : ntldr32
Thanks you for support, I have problem when try using your Example in VB.net

I was change my address base in Custom_OffSets.ini. When I call Perfect_World.client.getAllChar --> not run. It not show char in elementclient game. Can you help me.
09/14/2013 21:44 DerScreever#7
in what version was the libary coded? ^^ my programm say i cant open because its a other version.....
I have Vísual Studio 2012 Ultimate :)

Edit: It now work i can open the Source Code :O Its a really nice Code i need to say ^^ But if i try to run the Demo and have PWI running nothing happens.... ^^
can you help me? i want to make a bot... but i need help at start xD the rest is easy :)
09/17/2013 20:57 ntldr32#8
first, make sure the customoffset file are correct for you server,.
before you call any function, you have to load that offset by using code

offsets.loadOffset("Custom_OffSets.ini")

when you call function getAllChar, the return value is an array of all opened char its mean you have to loop it or put it in combobox,.

Perfect_World.client.getAllChar(0) //return the 1st char that are open
Perfect_World.client.getAllChar(1) //return the 2nd char that are open
and so on

look at the example code on the 1st post to see how to use it with combobox

This is compiled with vb 2010, but the code can be copy and use with other version as long you know sure the structure, then recompile it as dll library for your own bot
09/19/2013 07:37 kijaru#9
sorry
how can i add default skill in prophet bot??
can anyone help?
09/20/2013 04:45 oneormore#10
To ntldr32 :

I see your code in vb.net :
char_dbase_address = MemFunctions.MemReadInt(pr_handle, offsets.Base_Address) + offsets.CHARSTRUCT1_OffSet
char_dbase = MemFunctions.MemReadInt(pr_handle, char_dbase_address)
char_name_address = MemFunctions.MemReadInt(pr_handle, char_dbase + offsets.Name_offset)
charsName.Add(MemFunctions.MemReadUnicode(pr_handl e, char_name_address))

I know Base_Address = [[realAddress] + 1C]
addressName = [[Base_Address]+offsets.CHARSTRUCT1_OffSet]
charname =[[addressName]+offsets.Name_offset]
When I use your code vb.net is not get name char and HP @@

This is my address in my game :

Base_Address = 12124828 '' Hex B9029C
Real_Base_Address = 12123084 ''Hex b8fbcc
CHARSTRUCT1_OffSet = 52 ''Hex 34
Name_offset = 1648 ''Hex 670
CHARID_Offset = 1152 ''Hex 480
LVL_Offset = 1164 ''Hex 48c
Class_offset = 1656 '' Hex 678
HP_OffSet = 1172 ''Hex 494

So, I don't understand why it not run :confused: I use windows 64bit and Visual Studio 2012.
Maybe I have problem with windows 32 bit and windows 64bit? I am not programmer and only gammer.

Thanks you!
09/21/2013 21:31 DerScreever#11
Quote:
Originally Posted by ntldr32 View Post
first, make sure the customoffset file are correct for you server,.
before you call any function, you have to load that offset by using code

offsets.loadOffset("Custom_OffSets.ini")

when you call function getAllChar, the return value is an array of all opened char its mean you have to loop it or put it in combobox,.

Perfect_World.client.getAllChar(0) //return the 1st char that are open
Perfect_World.client.getAllChar(1) //return the 2nd char that are open
and so on

look at the example code on the 1st post to see how to use it with combobox

This is compiled with vb 2010, but the code can be copy and use with other version as long you know sure the structure, then recompile it as dll library for your own bot
i used your example in the zip and there i have to add it? ^^ but with only Perfect_World.client.getAllChar(0) the combobox is clear o.O but if im right there must be 1 char already in ^^ and where i get the right offesets? ^^ i have eu server and the offeset finder say the same offesets like the one in your file o.O
09/26/2013 06:26 oneormore#12
I was get info charactor include : HP, MP, Exp...

How i can get time online charactor?

And I can't get item inventory char?
10/11/2013 12:30 oneormore#13
To : ntldr32

How I can get skill of charactor with VB.net? Can you help me?


After killing monsters is done, I can not choose to be the next monster. Until recently killed the monster, the monster that it has chosen. Why??? Can't you help me please !!!