Starting work on character guids

This commit is contained in:
KimLS 2024-11-14 22:13:36 -08:00
parent ce728c4d0d
commit fa91559a85
4 changed files with 51 additions and 28 deletions

View File

@ -6435,6 +6435,13 @@ struct BuylineItemDetails_Struct {
uint32 item_quantity; uint32 item_quantity;
}; };
struct EqGuid
{
uint32_t Id;
uint16_t WorldId;
uint16_t Reserved;
};
// Restore structure packing to default // Restore structure packing to default
#pragma pack() #pragma pack()

View File

@ -542,6 +542,7 @@ namespace Larion
out.WriteUInt32(0); out.WriteUInt32(0);
out.WriteUInt32(0); out.WriteUInt32(0);
//PcProfile begin
/* /*
u32 profile_type; u32 profile_type;
u32 profile_id; u32 profile_id;
@ -1059,6 +1060,7 @@ namespace Larion
out.WriteUInt64(emu->exp); out.WriteUInt64(emu->exp);
out.WriteUInt32(emu->expAA); out.WriteUInt32(emu->expAA);
//PcClient begin
/* /*
u32 character_id; u32 character_id;
u32 character_id2; u32 character_id2;
@ -1086,7 +1088,7 @@ namespace Larion
out.WriteUInt32(emu->birthday); out.WriteUInt32(emu->birthday);
out.WriteUInt32(emu->birthday); out.WriteUInt32(emu->birthday);
out.WriteUInt32(emu->lastlogin); out.WriteUInt32(emu->lastlogin);
out.WriteUInt32(emu->timePlayedMin); out.WriteUInt32(5000);
out.WriteUInt32(6000); out.WriteUInt32(6000);
out.WriteUInt32(0x3FFFFFFF); out.WriteUInt32(0x3FFFFFFF);
@ -1135,7 +1137,7 @@ namespace Larion
*/ */
out.WriteUInt64(0); out.WriteUInt64(0);
out.WriteUInt8(1); out.WriteUInt8(0);
out.WriteUInt8(5); out.WriteUInt8(5);
//Coin coin; //Coin coin;
@ -1202,11 +1204,22 @@ namespace Larion
out.WriteUInt32(0xFFFFFFFF); out.WriteUInt32(0xFFFFFFFF);
out.WriteUInt32(0); out.WriteUInt32(0);
} }
const uint8_t task_data[137] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00,
};
//u8 tasks[137]; //on live and on xac's capture from 12/28/23 these both are the same size; //u8 tasks[137]; //on live and on xac's capture from 12/28/23 these both are the same size;
for (int i = 0; i < 137; i++) for (int i = 0; i < 137; i++)
{ {
out.WriteUInt8(0); out.WriteUInt8(task_data[i]);
} }
/* /*
@ -1453,7 +1466,7 @@ namespace Larion
u8 show_helm; u8 show_helm;
u32 downtime; u32 downtime;
*/ */
out.WriteUInt8(0); out.WriteUInt8(1);
out.WriteUInt32(emu->level); out.WriteUInt32(emu->level);
out.WriteUInt8(emu->showhelm); out.WriteUInt8(emu->showhelm);
out.WriteUInt32(emu->RestTimer); out.WriteUInt32(emu->RestTimer);
@ -1487,7 +1500,7 @@ namespace Larion
//u32 starting_city_zone_id; //u32 starting_city_zone_id;
//we don't actually support this yet //we don't actually support this yet
out.WriteUInt32(1); out.WriteUInt32(394);
/* /*
u8 use_advanced_looting; u8 use_advanced_looting;
@ -1517,7 +1530,7 @@ namespace Larion
delete in; delete in;
} }
/*ENCODE(OP_ZoneEntry) { ENCODE_FORWARD(OP_ZoneSpawns); } ENCODE(OP_ZoneEntry) { ENCODE_FORWARD(OP_ZoneSpawns); }
ENCODE(OP_ZoneSpawns) ENCODE(OP_ZoneSpawns)
{ {
@ -1568,29 +1581,31 @@ namespace Larion
buffer.WriteFloat(SpawnSize - 0.7f); buffer.WriteFloat(SpawnSize - 0.7f);
} }
buffer.WriteUInt32(emu->spawnId); //player "id" we should consider supporting this in the future //buffer.WriteUInt32(0); //should be character id
buffer.WriteUInt32(103); //not sure //buffer.WriteUInt16(RuleI(World, Id)); //world id
buffer.WriteUInt8(emu->NPC); //npc/player flag //buffer.WriteUInt16(0); //reserved
structs::Spawn_Struct_Bitfields flags; //buffer.WriteUInt8(emu->NPC); //npc/player flag
flags.gender = emu->gender;
flags.gender = emu->gender; //structs::Spawn_Struct_Bitfields flags;
flags.ispet = emu->is_pet; //flags.gender = emu->gender;
flags.afk = emu->afk; //flags.gender = emu->gender;
flags.anon = emu->anon; //flags.ispet = emu->is_pet;
flags.gm = emu->gm; //flags.afk = emu->afk;
flags.sneak = 0; //flags.anon = emu->anon;
flags.lfg = emu->lfg; //flags.gm = emu->gm;
flags.invis = emu->invis; //flags.sneak = 0;
flags.linkdead = 0; //flags.lfg = emu->lfg;
flags.showhelm = emu->showhelm; //flags.invis = emu->invis;
flags.trader = emu->trader ? 1 : 0; //flags.linkdead = 0;
flags.targetable = 1; //flags.showhelm = emu->showhelm;
flags.targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0; //flags.trader = emu->trader ? 1 : 0;
flags.showname = emu->show_name; //flags.targetable = 1;
//flags.targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0;
//flags.showname = emu->show_name;
} }
}*/ }
// DECODE methods // DECODE methods

View File

@ -9,8 +9,8 @@ E(OP_ExpansionInfo)
E(OP_SpawnAppearance) E(OP_SpawnAppearance)
//E(OP_SendAATable) //E(OP_SendAATable)
E(OP_PlayerProfile) E(OP_PlayerProfile)
//E(OP_ZoneEntry) E(OP_ZoneEntry)
//E(OP_ZoneSpawns) E(OP_ZoneSpawns)
//list of packets we need to decode on the way in: //list of packets we need to decode on the way in:
D(OP_ZoneEntry) D(OP_ZoneEntry)

View File

@ -339,6 +339,7 @@ RULE_STRING(World, MOTD, "", "Server MOTD sent on login, change from empty to ha
RULE_STRING(World, Rules, "", "Server Rules, change from empty to have this be used instead of variables table 'rules' value, lines are pipe (|) separated, example: A|B|C") RULE_STRING(World, Rules, "", "Server Rules, change from empty to have this be used instead of variables table 'rules' value, lines are pipe (|) separated, example: A|B|C")
RULE_BOOL(World, EnableAutoLogin, false, "Enables or disables auto login of characters, allowing people to log characters in directly from loginserver to ingame") RULE_BOOL(World, EnableAutoLogin, false, "Enables or disables auto login of characters, allowing people to log characters in directly from loginserver to ingame")
RULE_BOOL(World, EnablePVPRegions, true, "Enables or disables PVP Regions automatically setting your PVP flag") RULE_BOOL(World, EnablePVPRegions, true, "Enables or disables PVP Regions automatically setting your PVP flag")
RULE_INT(World, Id, 100, "Used by later clients to create GUIDs, expected to be Unique to the world but ultimately not that important")
RULE_CATEGORY_END() RULE_CATEGORY_END()
RULE_CATEGORY(Zone) RULE_CATEGORY(Zone)