mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-01 03:16:42 +00:00
State of Commit: Testable if you ask me (Akkadius) what you need to do
- Need to convert a list of functions and columns and should be ready to start intensive testing phase - All preliminary tests show things working great - All of player profile is saved and loaded from the database - DBAsync has been completely removed from all code - Removed zone/dbasync.cpp/.h - Removed common/dbasync.cpp/.h - Removed dbasync from cmake commmon and zone - Cleaned up a ton of functions - Added several tables to world CheckDatabaseConversions script: - `character_skills` - `character_languages` - `character_bind` - `character_alternate_abilities` - `character_currency` - `character_data` - `character_spells` - `character_memmed_spells` - `character_disciplines` - `character_material` - `character_tribute` - `character_bandolier` - `character_potionbelt` - Character select now loads from `character_data` - Character creation now creates to `character_data` - Updated function Database::UpdateName to use `character_data` - Updated function Database::CheckUsedName to use `character_data` - Updated function Database::MoveCharacterToZone to use `character_data` - Updated function Database::SetLoginFlags to use `character_data` - Updated function Database::SetFirstLogon to use `character_data` - Updated function Database::SetLFG to use `character_data` - Removed CopyCharacter functions and commands, to be recreated later since it never worked to begin with - Removed SharedDatabase::SetPlayerProfile - Trimmed down redundant case switch statements for World sendpackets to QueryServ - Added Character Methods to Database class: Loads: bool LoadCharacterBandolier(uint32 character_id, PlayerProfile_Struct* pp); bool LoadCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp); bool LoadCharacterPotions(uint32 character_id, PlayerProfile_Struct* pp); Saves: bool SaveCharacterBindPoint(uint32 character_id, uint32 zone_id, uint32 instance_id, float x, float y, float z, float heading, uint8 is_home); bool SaveCharacterCurrency(uint32 character_id, PlayerProfile_Struct* pp); bool SaveCharacterData(uint32 character_id, uint32 account_id, PlayerProfile_Struct* pp); bool SaveCharacterAA(uint32 character_id, uint32 aa_id, uint32 current_level); bool SaveCharacterSpellSwap(uint32 character_id, uint32 spell_id, uint32 from_slot, uint32 to_slot); bool SaveCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool SaveCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool SaveCharacterMaterialColor(uint32 character_id, uint32 slot_id, uint32 color); bool SaveCharacterSkill(uint32 character_id, uint32 skill_id, uint32 value); bool SaveCharacterLanguage(uint32 character_id, uint32 lang_id, uint32 value); bool SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id); bool SaveCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp); bool SaveCharacterBandolier(uint32 character_id, uint8 bandolier_id, uint8 bandolier_slot, uint32 item_id, uint32 icon, const char* bandolier_name); bool SaveCharacterPotionBelt(uint32 character_id, uint8 potion_id, uint32 item_id, uint32 icon); Deletes: bool DeleteCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool DeleteCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id); bool DeleteCharacterDisc(uint32 character_id, uint32 slot_id); bool DeleteCharacterBandolier(uint32 character_id, uint32 band_id);
This commit is contained in:
+35
-74
@@ -652,17 +652,17 @@ bool ZoneServer::Process() {
|
||||
client->Clearance(wtz->response);
|
||||
}
|
||||
case ServerOP_ZoneToZoneRequest: {
|
||||
//
|
||||
// solar: ZoneChange is received by the zone the player is in, then the
|
||||
// zone sends a ZTZ which ends up here. This code then find the target
|
||||
// (ingress point) and boots it if needed, then sends the ZTZ to it.
|
||||
// The ingress server will decide wether the player can enter, then will
|
||||
// send back the ZTZ to here. This packet is passed back to the egress
|
||||
// server, which will send a ZoneChange response back to the client
|
||||
// which can be an error, or a success, in which case the client will
|
||||
// disconnect, and their zone location will be saved when ~Client is
|
||||
// called, so it will be available when they ask to zone.
|
||||
//
|
||||
//
|
||||
// solar: ZoneChange is received by the zone the player is in, then the
|
||||
// zone sends a ZTZ which ends up here. This code then find the target
|
||||
// (ingress point) and boots it if needed, then sends the ZTZ to it.
|
||||
// The ingress server will decide wether the player can enter, then will
|
||||
// send back the ZTZ to here. This packet is passed back to the egress
|
||||
// server, which will send a ZoneChange response back to the client
|
||||
// which can be an error, or a success, in which case the client will
|
||||
// disconnect, and their zone location will be saved when ~Client is
|
||||
// called, so it will be available when they ask to zone.
|
||||
//
|
||||
|
||||
|
||||
if(pack->size != sizeof(ZoneToZone_Struct))
|
||||
@@ -675,43 +675,31 @@ bool ZoneServer::Process() {
|
||||
zlog(WORLD__ZONE,"ZoneToZone request for %s current zone %d req zone %d\n",
|
||||
ztz->name, ztz->current_zone_id, ztz->requested_zone_id);
|
||||
|
||||
printf("\n\n ZoneToZone request for %s current zone %d req zone %d\n\n",
|
||||
ztz->name, ztz->current_zone_id, ztz->requested_zone_id);
|
||||
|
||||
if(GetZoneID() == ztz->current_zone_id && GetInstanceID() == ztz->current_instance_id) // this is a request from the egress zone
|
||||
{
|
||||
/* This is a request from the egress zone */
|
||||
if(GetZoneID() == ztz->current_zone_id && GetInstanceID() == ztz->current_instance_id) {
|
||||
zlog(WORLD__ZONE,"Processing ZTZ for egress from zone for client %s\n", ztz->name);
|
||||
|
||||
if
|
||||
(
|
||||
ztz->admin < 80 &&
|
||||
ztz->ignorerestrictions < 2 &&
|
||||
zoneserver_list.IsZoneLocked(ztz->requested_zone_id)
|
||||
)
|
||||
{
|
||||
if (ztz->admin < 80 && ztz->ignorerestrictions < 2 && zoneserver_list.IsZoneLocked(ztz->requested_zone_id)) {
|
||||
ztz->response = 0;
|
||||
SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
|
||||
ZoneServer *ingress_server = nullptr;
|
||||
if(ztz->requested_instance_id > 0)
|
||||
{
|
||||
if(ztz->requested_instance_id > 0) {
|
||||
ingress_server = zoneserver_list.FindByInstanceID(ztz->requested_instance_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
ingress_server = zoneserver_list.FindByZoneID(ztz->requested_zone_id);
|
||||
|
||||
else {
|
||||
ingress_server = zoneserver_list.FindByZoneID(ztz->requested_zone_id);
|
||||
}
|
||||
|
||||
if(ingress_server) // found a zone already running
|
||||
{
|
||||
/* Zone was already running*/
|
||||
if(ingress_server) {
|
||||
_log(WORLD__ZONE,"Found a zone already booted for %s\n", ztz->name);
|
||||
ztz->response = 1;
|
||||
}
|
||||
else // need to boot one
|
||||
{
|
||||
/* Boot the Zone*/
|
||||
else {
|
||||
int server_id;
|
||||
if ((server_id = zoneserver_list.TriggerBootup(ztz->requested_zone_id, ztz->requested_instance_id))){
|
||||
_log(WORLD__ZONE,"Successfully booted a zone for %s\n", ztz->name);
|
||||
@@ -719,8 +707,7 @@ bool ZoneServer::Process() {
|
||||
ztz->response = 1;
|
||||
ingress_server = zoneserver_list.FindByID(server_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
_log(WORLD__ZONE_ERR,"FAILED to boot a zone for %s\n", ztz->name);
|
||||
// bootup failed, send back error code 0
|
||||
ztz->response = 0;
|
||||
@@ -728,27 +715,24 @@ bool ZoneServer::Process() {
|
||||
}
|
||||
if(ztz->response!=0 && client)
|
||||
client->LSZoneChange(ztz);
|
||||
SendPacket(pack); // send back to egress server
|
||||
if(ingress_server) // if we couldn't boot one, this is 0
|
||||
{
|
||||
ingress_server->SendPacket(pack); // inform target server
|
||||
}
|
||||
SendPacket(pack); // send back to egress server
|
||||
if(ingress_server) {
|
||||
ingress_server->SendPacket(pack); // inform target server
|
||||
}
|
||||
}
|
||||
else // this is response from the ingress server, route it back to the egress server
|
||||
{
|
||||
/* Response from Ingress server, route back to egress */
|
||||
else{
|
||||
|
||||
zlog(WORLD__ZONE,"Processing ZTZ for ingress to zone for client %s\n", ztz->name);
|
||||
ZoneServer *egress_server = nullptr;
|
||||
if(ztz->current_instance_id > 0)
|
||||
{
|
||||
if(ztz->current_instance_id > 0) {
|
||||
egress_server = zoneserver_list.FindByInstanceID(ztz->current_instance_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
egress_server = zoneserver_list.FindByZoneID(ztz->current_zone_id);
|
||||
}
|
||||
|
||||
if(egress_server)
|
||||
{
|
||||
if(egress_server) {
|
||||
egress_server->SendPacket(pack);
|
||||
}
|
||||
}
|
||||
@@ -786,21 +770,18 @@ bool ZoneServer::Process() {
|
||||
delete whom;
|
||||
break;
|
||||
}
|
||||
case ServerOP_RequestOnlineGuildMembers:
|
||||
{
|
||||
case ServerOP_RequestOnlineGuildMembers: {
|
||||
ServerRequestOnlineGuildMembers_Struct *srogms = (ServerRequestOnlineGuildMembers_Struct*) pack->pBuffer;
|
||||
zlog(GUILDS__IN_PACKETS, "ServerOP_RequestOnlineGuildMembers Recieved. FromID=%i GuildID=%i", srogms->FromID, srogms->GuildID);
|
||||
client_list.SendOnlineGuildMembers(srogms->FromID, srogms->GuildID);
|
||||
break;
|
||||
}
|
||||
case ServerOP_ClientVersionSummary:
|
||||
{
|
||||
case ServerOP_ClientVersionSummary: {
|
||||
ServerRequestClientVersionSummary_Struct *srcvss = (ServerRequestClientVersionSummary_Struct*) pack->pBuffer;
|
||||
client_list.SendClientVersionSummary(srcvss->Name);
|
||||
break;
|
||||
}
|
||||
case ServerOP_ReloadRules:
|
||||
{
|
||||
case ServerOP_ReloadRules: {
|
||||
zoneserver_list.SendPacket(pack);
|
||||
RuleManager::Instance()->LoadRules(&database, "default");
|
||||
break;
|
||||
@@ -1275,30 +1256,10 @@ bool ZoneServer::Process() {
|
||||
case ServerOP_QueryServGeneric:
|
||||
case ServerOP_Speech:
|
||||
case ServerOP_QSPlayerLogTrades:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_QSPlayerLogHandins:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_QSPlayerLogNPCKills:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_QSPlayerLogDeletes:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_QSPlayerLogMoves:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_QSPlayerLogMerchantTransactions:
|
||||
{
|
||||
QSLink.SendPacket(pack);
|
||||
|
||||
Reference in New Issue
Block a user