From: Borrillis <bor...@us...> - 2006-04-15 01:20:28
|
Update of /cvsroot/planeshift/planeshift/src/server/bulkobjects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25681/src/server/bulkobjects Modified Files: pscharacter.cpp pscharacter.h pscharacterloader.cpp Log Message: - Moved buddies, marriages, and pets to character_relationships. - bumped DB version. Index: pscharacter.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/pscharacter.cpp,v retrieving revision 1.390 retrieving revision 1.391 diff -C2 -d -r1.390 -r1.391 *** pscharacter.cpp 11 Apr 2006 11:43:52 -0000 1.390 --- pscharacter.cpp 15 Apr 2006 01:20:23 -0000 1.391 *************** *** 1163,1166 **** --- 1163,1167 ---- SetFullName(row["name"], row["lastname"]); + SetOldLastName( row["old_lastname"] ); unsigned int raceid = row.GetUInt32("racegender_id"); *************** *** 1249,1255 **** // Familiar Fields here animal_affinity = row[ "animal_affinity" ]; ! owner_id = row.GetUInt32( "owner_id" ); help_event_flags = row.GetUInt32("help_event_flags"); - LoadFamiliar(); if (!LoadTraits(use_id)) --- 1250,1255 ---- // Familiar Fields here animal_affinity = row[ "animal_affinity" ]; ! //owner_id = row.GetUInt32( "owner_id" ); help_event_flags = row.GetUInt32("help_event_flags"); if (!LoadTraits(use_id)) *************** *** 1274,1282 **** } - if ( !LoadMarriageInfo() ) - { - Error2("Cannot load Marriage Info for Character ID %u.",characterid); - return false; - } } --- 1274,1277 ---- *************** *** 1295,1304 **** } ! if ( !LoadBuddies( use_id ) ) { - Error2("Cannot load buddies for Character ID %u.",characterid); return false; } ! // Load merchant info csRef<psMerchantInfo> merchant = csPtr<psMerchantInfo>(new psMerchantInfo()); --- 1290,1298 ---- } ! if ( !LoadRelationshipInfo( characterid ) ) // Buddies, Marriage Info, Familiars { return false; } ! // Load merchant info csRef<psMerchantInfo> merchant = csPtr<psMerchantInfo>(new psMerchantInfo()); *************** *** 1376,1397 **** } ! ! bool psCharacter::LoadBuddies( unsigned int use_id ) { - Result results(db->Select("select a.name, b.player_buddy" - " from characters a," - " buddy_list b" - " where b.player_id=%d" - " and b.player_buddy=a.id",use_id)); - - if (!results.IsValid()) - return true; ! buddyList.SetLength( results.Count() ); ! for ( unsigned int x = 0; x < results.Count(); x++ ) { ! buddyList[x].name = results[x][0]; ! buddyList[x].playerID = results[x].GetUInt32( 1 ); } --- 1370,1417 ---- } ! bool psCharacter::LoadRelationshipInfo( unsigned int characterid ) { ! Result has_a( db->Select( "SELECT a.*, b.name AS 'buddy_name' FROM character_relationships a, characters b WHERE a.related_id = b.id AND a.character_id = %u", characterid ) ); ! Result of_a( db->Select( "SELECT a.*, b.name AS 'buddy_name' FROM character_relationships a, characters b WHERE a.character_id = b.id AND a.related_id = %u", characterid ) ); ! if ( !LoadFamiliar( has_a, of_a ) ) ! { ! Error2("Cannot load familiar info for Character ID %u.",characterid); ! return false; ! } ! ! if ( !LoadMarriageInfo( has_a ) ) ! { ! Error2("Cannot load Marriage Info for Character ID %u.",characterid); ! return false; ! } ! ! if ( !LoadBuddies( has_a, of_a ) ) ! { ! Error2("Cannot load buddies for Character ID %u.",characterid); ! return false; ! } ! return true; ! } ! ! bool psCharacter::LoadBuddies( Result& myBuddies, Result& buddyOf ) ! { ! unsigned int x; ! ! if ( !myBuddies.IsValid() ) ! return true; ! ! for ( x = 0; x < myBuddies.Count(); x++ ) { ! ! if ( strcmp( myBuddies[x][ "relationship_type" ], "buddy" ) == 0 ) ! { ! Buddy newBud; ! newBud.name = myBuddies[x][ "buddy_name" ]; ! newBud.playerID = myBuddies[x].GetUInt32( "related_id" ); ! ! buddyList.Insert( 0, newBud ); ! } } *************** *** 1399,1408 **** // Load all the people that I am a buddy of. This is used to inform these people // of when I log in/out. - Result buddyOfResult( db->Select( "select b.player_id from buddy_list b where b.player_buddy = %d", use_id )); - buddyOfList.SetLength( buddyOfResult.Count() ); ! for ( unsigned int z = 0; z < buddyOfResult.Count(); z++ ) { ! buddyOfList[z] = buddyOfResult[z].GetUInt32(0); } --- 1419,1429 ---- // Load all the people that I am a buddy of. This is used to inform these people // of when I log in/out. ! for (x = 0; x < buddyOf.Count(); x++ ) { ! if ( strcmp( buddyOf[x][ "relationship_type" ], "buddy" ) == 0 ) ! { ! buddyOfList.Insert( 0, buddyOf[x].GetUInt32( "character_id" ) ); ! } } *************** *** 1410,1413 **** --- 1431,1506 ---- } + bool psCharacter::LoadMarriageInfo( Result& result) + { + //Result result( db->Select("SELECT * FROM character_marriage_details" + // " WHERE character_id=%d", characterid)); + if ( !result.IsValid() ) + { + Error3("Could not load marriage info for character %d. Error was: %s", characterid, db->GetLastError() ); + return false; + } + + for ( unsigned int x = 0; x < result.Count(); x++ ) + { + + if ( strcmp( result[x][ "relationship_type" ], "spouse" ) == 0 ) + { + const char* spouseName = result[x]["spousename"]; + if ( spouseName == NULL ) + return true; + + SetSpouseName( spouseName ); + + Notify2( LOG_MARRIAGE, "Successfully loaded marriage info for %s", name.GetData() ); + break; + } + } + + return true; + } + + bool psCharacter::LoadFamiliar( Result& pet, Result& owner ) + { + familiar_id = 0; + owner_id = 0; + + if ( !pet.IsValid() ) + { + Error3("Could not load pet info for character %d. Error was: %s", characterid, db->GetLastError() ); + return false; + } + + if ( !owner.IsValid() ) + { + Error3("Could not load owner info for character %d. Error was: %s", characterid, db->GetLastError() ); + return false; + } + + unsigned int x; + for ( x = 0; x < pet.Count(); x++ ) + { + + if ( strcmp( pet[x][ "relationship_type" ], "pet" ) == 0 ) + { + familiar_id = pet[x].GetInt( "related_id" ); + Notify2( LOG_MARRIAGE, "Successfully loaded familair for %s", name.GetData() ); + break; + } + } + + for ( x = 0; x < owner.Count(); x++ ) + { + + if ( strcmp( owner[x][ "relationship_type" ], "pet" ) == 0 ) + { + owner_id = owner[x].GetInt( "character_id" ); + Notify2( LOG_MARRIAGE, "Successfully loaded owner for %s", name.GetData() ); + break; + } + } + + return true; + } + void psCharacter::SetLastLoginTime(const char *last_login, bool save ) { *************** *** 1451,1476 **** } - bool psCharacter::LoadFamiliar( ) - { - Result rs( db->Select( "SELECT id from characters where owner_id=%u ", characterid ) ); - if ( rs.IsValid() ) - { - int count = rs.Count(); - if ( count != 0 ) - { - if ( count > 1 ) - { - Error2("player %d has more than one familiar, using first.", characterid); - } - - familiar_id = rs[0].GetInt( "id" ); - } - else - familiar_id = 0; - return true; - } - else - return false; - } bool psCharacter::LoadSpells(unsigned int use_id) --- 1544,1547 ---- *************** *** 1627,1630 **** --- 1698,1714 ---- } + void psCharacter::SetFamiliarID( int v ) + { + csString sql; + + familiar_id = v; + sql.Format( "insert into character_relationships values ( %d, %d, 'pet', '', '' )", characterid, familiar_id ); + if( !db->Command( sql ) ) + { + Error3( "Couldn't execute SQL %s!, Character %u's pet relationship is not saved.", sql.GetData(), characterid ); + } + + }; + void psCharacter::AddAdvantage( PSCHARACTER_ADVANTAGE advantage) { *************** *** 3278,3306 **** } - bool psCharacter::LoadMarriageInfo() - { - Result result( db->Select("SELECT * FROM character_marriage_details" - " WHERE character_id=%d", characterid)); - if ( !result.IsValid() ) - { - Error3("Could not load marriage info for character %d. Error was: %s", characterid, db->GetLastError() ); - return false; - } - else if ( result.Count() == 0 ) - { - return true; - } - - const char* spouseName = result[0]["spousename"]; - if ( spouseName == NULL ) - return true; - - SetSpouseName( spouseName ); - SetIsMarried( true ); - - Notify2( LOG_MARRIAGE, "Successfully loaded marriage info for %s", name.GetData() ); - - return true; - } bool psCharacter::LoadQuestAssignments() --- 3362,3365 ---- Index: pscharacter.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/pscharacter.h,v retrieving revision 1.197 retrieving revision 1.198 diff -C2 -d -r1.197 -r1.198 *** pscharacter.h 11 Apr 2006 11:43:52 -0000 1.197 --- pscharacter.h 15 Apr 2006 01:20:24 -0000 1.198 *************** *** 45,48 **** --- 45,49 ---- class psQuest; class psGuildInfo; + struct Result; typedef struct *************** *** 755,762 **** bool LoadSkills(unsigned int use_id); bool LoadTraits(unsigned int use_id); - bool LoadBuddies( unsigned int use_id ); bool LoadQuestAssignments(); ! bool LoadMarriageInfo(); ! bool LoadFamiliar(); float override_max_hp,override_max_mana; // These values are loaded from base_hp_max,base_mana_max in the db and --- 756,764 ---- bool LoadSkills(unsigned int use_id); bool LoadTraits(unsigned int use_id); bool LoadQuestAssignments(); ! bool LoadRelationshipInfo( unsigned int characterid ); ! bool LoadBuddies( Result& myBuddy, Result& buddyOf); ! bool LoadMarriageInfo( Result& result); ! bool LoadFamiliar( Result& pet, Result& owner); float override_max_hp,override_max_mana; // These values are loaded from base_hp_max,base_mana_max in the db and *************** *** 786,789 **** --- 788,792 ---- csString lastname; csString fullname; + csString oldlastname; csString spouseName; *************** *** 899,906 **** void SetLastName(const char* newLastName) { SetFullName(name.GetData(),newLastName); } void SetFullName(const char* newFirstName, const char* newLastName); ! const char *GetCharName() { return name.GetData(); } const char *GetCharLastName() { return lastname.GetData(); } const char *GetCharFullName() { return fullname.GetData(); } unsigned int GetCharType() { return characterType; } --- 902,911 ---- void SetLastName(const char* newLastName) { SetFullName(name.GetData(),newLastName); } void SetFullName(const char* newFirstName, const char* newLastName); ! void SetOldLastName( const char* oldLastName ) { this->oldlastname = oldLastName; }; ! const char *GetCharName() { return name.GetData(); } const char *GetCharLastName() { return lastname.GetData(); } const char *GetCharFullName() { return fullname.GetData(); } + const char *GetOldLastName() { return oldlastname.GetData(); } unsigned int GetCharType() { return characterType; } *************** *** 1065,1069 **** bool IsPet() { return characterType == PSCHARACTER_TYPE_PET; }; int GetFamiliarID() { return familiar_id; }; ! void SetFamiliarID(int v) { familiar_id = v; }; const char *GetAnimalAffinity() { return animal_affinity.GetData(); }; void SetAnimialAffinity( const char* v ) { animal_affinity = v; }; --- 1070,1074 ---- bool IsPet() { return characterType == PSCHARACTER_TYPE_PET; }; int GetFamiliarID() { return familiar_id; }; ! void SetFamiliarID(int v); const char *GetAnimalAffinity() { return animal_affinity.GetData(); }; void SetAnimialAffinity( const char* v ) { animal_affinity = v; }; Index: pscharacterloader.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/pscharacterloader.cpp,v retrieving revision 1.120 retrieving revision 1.121 diff -C2 -d -r1.120 -r1.121 *** pscharacterloader.cpp 14 Apr 2006 00:53:44 -0000 1.120 --- pscharacterloader.cpp 15 Apr 2006 01:20:25 -0000 1.121 *************** *** 257,261 **** "kill_exp", "animal_affinity", - "owner_id", }; psStringArray values; --- 257,260 ---- *************** *** 306,310 **** values.FormatPush("%u",chardata->GetKillExperience() ); values.FormatPush("%s",chardata->GetAnimalAffinity() ); - values.FormatPush("%u",chardata->GetOwnerID() ); --- 305,308 ---- *************** *** 523,529 **** // Now delete this character and all refrences to him from DB ! query.Format("delete from buddy_list where player_id=%d", charID ); ! db->Command( query ); ! query.Format("delete from character_quests where player_id=%d", charID ); db->Command( query ); --- 521,530 ---- // Now delete this character and all refrences to him from DB ! ! // Note: Need to delete the pets using this function as well. ! ! query.Format( "delete from character_relationships where character_id=%d or related_id=%d", charID, charID ); ! db->Command( query ); ! query.Format("delete from character_quests where player_id=%d", charID ); db->Command( query ); *************** *** 534,543 **** query.Format("delete from character_traits where character_id=%d", charID ); db->Command( query ); - - query.Format("delete from character_marriage_details where character_id=%d", charID ); - db->Command( query ); - - query.Format("delete from character_marriage_details where spousename='%s'", charFullName.GetData() ); - db->Command( query ); query.Format("delete from player_spells where player_id=%d", charID); --- 535,538 ---- *************** *** 559,565 **** CPrintf( CON_DEBUG, "\nSuccessfully delete character id: %d\n", charID ); - // Delete this character's pet, too - query.Format("delete from characters where owner_id=%d", charID ); - return true; --- 554,557 ---- *************** *** 578,581 **** --- 570,574 ---- "name", "lastname", + "old_lastname", "racegender_id", "character_type", *************** *** 612,616 **** "duel_points", "animal_affinity", - "owner_id", "help_event_flags", "description" --- 605,608 ---- *************** *** 620,623 **** --- 612,616 ---- "name", "lastname", + "old_lastname", "racegender_id", "character_type", *************** *** 649,653 **** "duel_points", "animal_affinity", - "owner_id", "help_event_flags", "description" --- 642,645 ---- *************** *** 661,664 **** --- 653,657 ---- fields.FormatPush("%s",chardata->GetCharName()); fields.FormatPush("%s",chardata->GetCharLastName()); + fields.FormatPush("%s",chardata->GetOldLastName()); // old_lastname fields.FormatPush("%u",chardata->GetRaceInfo()->uid); fields.FormatPush("%u",chardata->GetCharType() ); *************** *** 752,756 **** fields.FormatPush("%1.2f", chardata->duel_points); fields.FormatPush("%s", chardata->animal_affinity.GetData() ); ! fields.FormatPush("%u", chardata->owner_id ); fields.FormatPush("%u", chardata->help_event_flags ); fields.FormatPush("%s",chardata->GetDescription()); --- 745,749 ---- fields.FormatPush("%1.2f", chardata->duel_points); fields.FormatPush("%s", chardata->animal_affinity.GetData() ); ! //fields.FormatPush("%u", chardata->owner_id ); fields.FormatPush("%u", chardata->help_event_flags ); fields.FormatPush("%s",chardata->GetDescription()); |