|
You last visited: Today at 04:43
Advertisement
PW Genesis offsets (ver. 493+)
Discussion on PW Genesis offsets (ver. 493+) within the PW Hacks, Bots, Cheats, Exploits forum part of the Perfect World category.
04/15/2011, 12:19
|
#31
|
elite*gold: 10
Join Date: Sep 2010
Posts: 400
Received Thanks: 234
|
|
|
|
04/16/2011, 22:14
|
#32
|
elite*gold: 10
Join Date: Sep 2010
Posts: 400
Received Thanks: 234
|
Not really an offset as such, but a nice way to get all the skill names and IDs automagically using a regex...
You need the skillstr.txt file from configs.pck and apply this regex to it. Try it out in RegexBuddy
^(\\d+)0\\s+\"(.+)\"
I love regex <3
If used in a bot or something, you could, for example, check if the skillstr.txt has been updated by checking the update logs
...\Perfect World International\config\element\update.log
And look for this to see the update timestamp:
2011/4/15 23:05:01Download file=./configs/skillstr.txt
If it's newer, invoke sPCK to extract that file, then do the regex and update the list.
As far as I could tell, there is no such list loaded in the client. So with this list, you can traverse the available skills list and get the names for them
available skill count: [[[playerBase] + 0x1040]+0]
available skill struct pointers: [[[playerBase]+0x103C]+i*4] Where i = 0 to skillCount
Example C# code:
Code:
String skillStrTextFile = File.ReadAllText("skillstr.txt");
Regex regex = new Regex("^(\\d+)0\\s+\"(.+)\"", RegexOptions.Multiline);
MatchCollection matches = regex.Matches(skillStrTextFile);
Dictionary skillList = new Dictionary<uint, string>();
foreach (Match m in matches)
{
skillList.Add(UInt32.Parse(m.Groups[1].Value), m.Groups[2].Value);
}
Display a list of skills that your char can use:
(Taken from some code I'm working on, assumes you have a combobox drop list thingy)
Code:
public void refreshSkillList()
{
uint skillCount = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x1040, 0);
availableSkills = new Dictionary<string, skills>();
skills thisSkill = new skills();
string skillsString = "";
for (uint i = 0; i < skillCount; i++)
{
thisSkill.uk0 = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x00, 0);
thisSkill.uk1 = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x04, 0);
thisSkill.skillId = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x08, 0);
thisSkill.flags = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x0C, 0);
thisSkill.cooldownRemaining = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x10, 0);
thisSkill.maxCooldown = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x14, 0);
availableSkills.Add(skillList[thisSkill.skillId], thisSkill);
ComboItem cbItem = new ComboItem(skillList[thisSkill.skillId], thisSkill.skillId);
cboStdSkills.Items.Add(cbItem);
skillsString += skillList[thisSkill.skillId] + "\r\n";
skillsString += "Id: " + thisSkill.skillId.ToString() + "\r\n";
skillsString += "flags: " + thisSkill.flags.ToString("X8") + "\r\n";
skillsString += "cd: " + thisSkill.cooldownRemaining.ToString() + " / ";
skillsString += thisSkill.maxCooldown.ToString() + "\r\n";
skillsString += "\r\n";
}
txtOutput.Text = skillsString;
cboStdSkills.SelectedIndex = 0;
}
public struct skills
{
public uint uk0; // 0x00
public uint uk1; // 0x04
public uint skillId; // 0x08
public uint flags; // 0x0C
public uint cooldownRemaining; // 0x10
public uint maxCooldown; // 0x14
}
*Edit:
Does anyone know how to get the other values for skills, like range, MP required, chi required etc? I thought I had found them, but the float values don't translate properly.
|
|
|
04/17/2011, 07:19
|
#33
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
Quote:
Originally Posted by dumbfck
Not really an offset as such, but a nice way to get all the skill names and IDs automagically using a regex...
You need the skillstr.txt file from configs.pck and apply this regex to it. Try it out in RegexBuddy
^(\\d+)0\\s+\"(.+)\"
I love regex <3
If used in a bot or something, you could, for example, check if the skillstr.txt has been updated by checking the update logs
...\Perfect World International\config\element\update.log
And look for this to see the update timestamp:
2011/4/15 23:05:01Download file=./configs/skillstr.txt
If it's newer, invoke sPCK to extract that file, then do the regex and update the list.
As far as I could tell, there is no such list loaded in the client. So with this list, you can traverse the available skills list and get the names for them
available skill count: [[[playerBase] + 0x1040]+0]
available skill struct pointers: [[[playerBase]+0x103C]+i*4] Where i = 0 to skillCount
Example C# code:
Code:
String skillStrTextFile = File.ReadAllText("skillstr.txt");
Regex regex = new Regex("^(\\d+)0\\s+\"(.+)\"", RegexOptions.Multiline);
MatchCollection matches = regex.Matches(skillStrTextFile);
Dictionary skillList = new Dictionary<uint, string>();
foreach (Match m in matches)
{
skillList.Add(UInt32.Parse(m.Groups[1].Value), m.Groups[2].Value);
}
Display a list of skills that your char can use:
(Taken from some code I'm working on, assumes you have a combobox drop list thingy)
Code:
public void refreshSkillList()
{
uint skillCount = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x1040, 0);
availableSkills = new Dictionary<string, skills>();
skills thisSkill = new skills();
string skillsString = "";
for (uint i = 0; i < skillCount; i++)
{
thisSkill.uk0 = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x00, 0);
thisSkill.uk1 = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x04, 0);
thisSkill.skillId = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x08, 0);
thisSkill.flags = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x0C, 0);
thisSkill.cooldownRemaining = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x10, 0);
thisSkill.maxCooldown = MemFunctions.resolveNestedPointer(pr_processHandle, playerBase, 0x103C, i * 4, 0x14, 0);
availableSkills.Add(skillList[thisSkill.skillId], thisSkill);
ComboItem cbItem = new ComboItem(skillList[thisSkill.skillId], thisSkill.skillId);
cboStdSkills.Items.Add(cbItem);
skillsString += skillList[thisSkill.skillId] + "\r\n";
skillsString += "Id: " + thisSkill.skillId.ToString() + "\r\n";
skillsString += "flags: " + thisSkill.flags.ToString("X8") + "\r\n";
skillsString += "cd: " + thisSkill.cooldownRemaining.ToString() + " / ";
skillsString += thisSkill.maxCooldown.ToString() + "\r\n";
skillsString += "\r\n";
}
txtOutput.Text = skillsString;
cboStdSkills.SelectedIndex = 0;
}
public struct skills
{
public uint uk0; // 0x00
public uint uk1; // 0x04
public uint skillId; // 0x08
public uint flags; // 0x0C
public uint cooldownRemaining; // 0x10
public uint maxCooldown; // 0x14
}
*Edit:
Does anyone know how to get the other values for skills, like range, MP required, chi required etc? I thought I had found them, but the float values don't translate properly.
|
For range you don't get the exact same range value for your character either, it seems to add a little to allow for the radius of your char I think. So perhaps that could be a reason they don't quite fit for skills either? Somewhere in my SkillIds link there is a guy that says how to find the skill names in memory, although the addresses he uses there are outdated now.
|
|
|
04/17/2011, 12:43
|
#34
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
is there any offset for checking if surrounding players have white , pink , light red or super red colours nickname ?
|
|
|
04/18/2011, 15:12
|
#35
|
elite*gold: 0
Join Date: Nov 2010
Posts: 59
Received Thanks: 18
|
im coding a damage dumper, for this im looking for the squad offsets, to get all names from squad player.
any one can help on research those offsets ?
edit:
lol i just see that there is no squad combat message in chat.
only ur own damage will list...
so i wasted my time coding the damage dumper, works only for urself and not all squad member.
|
|
|
04/18/2011, 16:15
|
#36
|
elite*gold: 10
Join Date: Sep 2010
Posts: 400
Received Thanks: 234
|
Yeah I don't think squad members damage on a mob is available in the client. The server calculates all of that and the mobs HP is periodically updated on your client. I think that's about all the info available.
|
|
|
04/19/2011, 09:28
|
#37
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
how about buff/debuff offsets for squad player/our player, we can see their buffs/debuffs icon, could be useful for auto dispelling if they have debuffs such as poison.
|
|
|
04/19/2011, 09:34
|
#38
|
elite*gold: 10
Join Date: Sep 2010
Posts: 400
Received Thanks: 234
|
I *think* I have buff/debuff offsets somewhere - I'll take a look later after work.
I had a quick look for player name colour last night but didn't find it. It must be there though, I would assume in the player object. I'm guessing either as a kind of enum, like 0-5 or as a pointer to a colour string, like ^FF0000
I'll look a bit deeper for that later.
|
|
|
04/19/2011, 10:25
|
#39
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
Heh, I was quite positive I had them somewhere as well
It's not hard to find though, just look for th enumber of icons (the game doesn't differentiate between buffs and debuffs) . Search for that number, than add a buff, search for the new number, etcetera until you have one value left. Then the list will be one offset away from there.
|
|
|
04/19/2011, 13:15
|
#40
|
elite*gold: 10
Join Date: Sep 2010
Posts: 400
Received Thanks: 234
|
Buff count:
[[[[BASE_CALL]+1C]+34]+36C]
Buff count temp?
[[[[BASE_CALL]+1C]+34]+370]
Buff ID list:
[[[[[BASE_CALL]+1C]+34]+368]+i*2]
Buff IDs are two bytes.
The buff descriptions are probably in the client somewhere, but I'd just read them from the buff_str.txt file in configs.pck lol.
That's pretty easy in C#
*EDIT: If anyone can find the buff timers, that would be splendid
|
|
|
04/20/2011, 23:02
|
#41
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
thanks for the informations on buffs, could add something useful to cleric bot later
|
|
|
04/22/2011, 10:35
|
#42
|
elite*gold: 0
Join Date: May 2010
Posts: 1
Received Thanks: 0
|
i cant use PWGT here. whats the base address to use? can anyone give it to me pls?
|
|
|
04/23/2011, 20:42
|
#43
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
is the offset for pk'er name stored in memory after our char got killed by it ? or is there an offset that informs whether the killer was a player or a mob ?
if it's a player, we can use Interest07's auto revive packet to go to nearest town then get back to spot and continue botting, but if it's a mob will trigger an alarm and need to revive manually using a cleric so we'll not lose exp.
|
|
|
04/23/2011, 22:51
|
#44
|
elite*gold: 0
Join Date: Mar 2010
Posts: 862
Received Thanks: 576
|
Quote:
Originally Posted by Smurfin
is the offset for pk'er name stored in memory after our char got killed by it ? or is there an offset that informs whether the killer was a player or a mob ?
if it's a player, we can use Interest07's auto revive packet to go to nearest town then get back to spot and continue botting, but if it's a mob will trigger an alarm and need to revive manually using a cleric so we'll not lose exp.
|
I suppose reading chatlog might work? I've never been killed by a player before but I suppose it should say who killed you. So as soon as you die, check both npc (mob) list and player list to see which list the name falls under.
|
|
|
04/24/2011, 04:49
|
#45
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,243
Received Thanks: 670
|
that could do the trick too without finding the killer offset (if exists) , have to scan for text that the game says when informing death and killer
|
|
|
 |
|
Similar Threads
|
Genesis A.D
03/16/2011 - Off Topic - 9 Replies
wie kan man sich bei Genesis A.D einloggen wer mir das sagen kan bekommt auchn dickes thx danke im voraus
|
Genesis AD spinnt?!
02/20/2011 - General Gaming Discussion - 1 Replies
Hey gleich zu meinem Problem
Wenn ich denn Ijji Reactor starte klappt alles aber wenn ich dann auf Genesis ad klicke um mich dort anzumelden mit meinem Account passiert eben nix
Ich gebe acc-name so wie pw ein klick auf anmelden und dann passiert garnichts Ich versuchs mit der Eingabe taste und eben auch mit der Maus klappt alles nichts
Kann mir da jemand helfen?
|
Genesis A.D.
11/14/2010 - Off Topic - 1 Replies
Genesis AD section?
Genesis A.D. is a new first person pc sci-fi shooter from ijji.
The game is going to open beta on November 8th.
The games has gorgeous graphics and is really addicting (played it for two hours and didint feel anything).
And heres the oficial gameplay video.
YouTube - Genesis A.D: Intense Twitch Action
Gameplay screenshots (pre-open beta)
http://i1023.photobucket.com/albums/af360/TheConA rtistSignatures/Kill.gif
|
Neon Genesis Evangelion
08/29/2010 - Anime & Manga - 3 Replies
wie findet ihr den maga im title ich liebe ihn wollte mal paar feed backs vonandren dazu hören <3
|
Genesis 3d genesis.lib no logo
12/28/2008 - General Coding - 0 Replies
I´m seeking the genesis.lib out of the engine genesis 3d.
I´m looking for a version WITHOUT the logo in the beginning, cause my pc freezes every time this logo appears. some others had the same prob, if you dont believe me...
Yeah, i know the license, and i won´t release a prog on it. its just for private use.
thx to all usefull posts...
|
All times are GMT +1. The time now is 04:44.
|
|