Go Back   EQEmulator Home > EQEmulator Forums > General > General::Server Discussion

General::Server Discussion Discussion about emulator servers.
Do not post support topics here.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #8  
Old 04-17-2025, 01:55 PM
m0th
Fire Beetle
 
Join Date: Apr 2025
Posts: 21
Default

PROGRESS LOG 4/17/2025

Poking at Character Creation right now.
Found these addresses change when selecting a class and match the class value (1 through 16) on the Character Creation screen. (Using CheatEngine)

The two addresses that I found seemed to be a "Selector" and "Final Value", however, they are inconsistent and random.
Digging further into it with Cheat Engine, point scanning the addresses, I can at least conclude two things.
There was a single result from the Selector pointmaps with the offset 0C, which is 011D43D4.
The offset for the Final Value is 00003374, however running scans on this didn't yield any results.
Not sure if coincidence, but the numbers 3374 also match up with 0x3374 DWORD for "Class" in EQData.h

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Experimental

Setting them to 17 has funny effects.
- Can't add or subtract any points.
- Right clicking any attribute buttons will subtract them to 0 and dump the points into "Points Left" - but I can't redistribute them.
Attempting to make a character shows "Missing Expansion" and "Select another Class"

Adding an entry to the Character Combination will validate the point allocation and allow us to redistribute them. (NICE)
Attempting to make a character shows "You cannot create this character because you have not unlocked this class."

So, now we have something in the backend blocking a class unlock. I'll need to dig further.

//eq_packet_structs.h
LINE 6079 - Membership_Entry_Struct membership_classes[16]; (( Setting this to 16 - arrays start at 0 position, so 16 = 17 ))

//rof2_structs.h
LINE 300 - Membership_Entry_Struct membership_classes[16]; (( Setting this to 16 - arrays start at 0 position, so 16 = 17 ))

//client.cpp
LINE 352 - class_entry_count = 16; (again, 16 = 17 because arrays)
LINE 357 - entry_id < 16 for classes (( Split the if statement checks here between race and class ))

Quote:
// RACIAL CHECKS
for (int entry_id=0; entry_id < 15; entry_id++)
{
if (entry_id == 0)
{
mds->membership_races[entry_id].purchase_id = 1;
mds->membership_races[entry_id].bitwise_entry = 0x1ffff;
}
else
{
mds->membership_races[entry_id].purchase_id = cur_purchase_id;

if (entry_id == 1)
{
mds->membership_races[entry_id].bitwise_entry = 4110;
}
else if (entry_id == 2)
{
mds->membership_races[entry_id].bitwise_entry = 4110;
}
else
{
if (entry_id == 12)
{
// Live Skips 4096
cur_bitwise_value *= 2;
}
mds->membership_races[entry_id].bitwise_entry = cur_bitwise_value;
}
cur_purchase_id++;
}
cur_bitwise_value *= 2;
}

// CLASS CHECKS
for (int entry_id = 0; entry_id < 16; entry_id++)
{
if (entry_id == 0)
{
mds->membership_classes[entry_id].purchase_id = 1;
mds->membership_classes[entry_id].bitwise_entry = 0x1ffff;
}
else
{
if (entry_id < 3)
{
mds->membership_classes[entry_id].purchase_id = cur_purchase_id;
}
else
{
mds->membership_classes[entry_id].purchase_id = cur_purchase_id2;
cur_purchase_id2++;
}

if (entry_id == 1)
{
mds->membership_classes[entry_id].bitwise_entry = 4614;
}
else if (entry_id == 2)
{
mds->membership_classes[entry_id].bitwise_entry = 4614;
}
else
{
if (entry_id == 12)
{
// Live Skips 4096
cur_bitwise_value *= 2;
}
mds->membership_classes[entry_id].bitwise_entry = cur_bitwise_value;
}
cur_purchase_id++;
}
cur_bitwise_value *= 2;
}
After recompiling, we are no longer crashing from the previous edits, but we're still met with the "Cannot create character because you have not unlocked this class." when setting the class to 17 with Cheat Engine.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Added Starting Items to Class 17
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:45 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3