Show
Ignore:
Timestamp:
11/19/08 13:46:22 (17 years ago)
Author:
yumileroy
Message:

[svn] * Improve some arena team related DB access
* Cache GM tickets on server startup.
* Remove unused src/game/HateMatrix.h and references.
* Better check client inventory pos data received in some client packets to
skip invalid cases

Original author: KingPin?
Date: 2008-11-10 09:04:23-06:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/ArenaTeam.cpp

    r111 r207  
    9191    uint8 plClass; 
    9292 
     93    // arena team is full (can't have more than type * 2 players!) 
    9394    if(GetMembersSize() >= GetType() * 2) 
    94     { 
    95         // arena team is full (can't have more than type * 2 players!) 
    96         // return false 
    9795        return false; 
    98     } 
    99  
    100     if(!objmgr.GetPlayerNameByGUID(PlayerGuid, plName))     // player doesnt exist 
    101         return false; 
    102                                                             // player already in arenateam of that size 
    103     if(Player::GetArenaTeamIdFromDB(PlayerGuid, GetType()) != 0) 
    104     { 
    105         sLog.outError("Arena::AddMember() : player already in this sized team"); 
    106         return false; 
     96 
     97    Player *pl = objmgr.GetPlayer(PlayerGuid); 
     98    if(pl) 
     99    { 
     100        if(pl->GetArenaTeamId(GetType())) 
     101        { 
     102            sLog.outError("Arena::AddMember() : player already in this sized team"); 
     103            return false; 
     104        } 
     105 
     106        plClass = (uint8)pl->getClass(); 
     107        plName = pl->GetName(); 
     108    } 
     109    else 
     110    { 
     111        //                                                     0     1 
     112        QueryResult *result = CharacterDatabase.PQuery("SELECT name, class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid)); 
     113        if(!result) 
     114            return false; 
     115 
     116        plName = (*result)[0].GetCppString(); 
     117        plClass = (*result)[1].GetUInt8(); 
     118        delete result; 
     119 
     120        // check if player already in arenateam of that size 
     121        if(Player::GetArenaTeamIdFromDB(PlayerGuid, GetType()) != 0) 
     122        { 
     123            sLog.outError("Arena::AddMember() : player already in this sized team"); 
     124            return false; 
     125        } 
    107126    } 
    108127 
     
    110129    // this will be prevent attempt joining player to many arenateams and corrupt arena team data integrity 
    111130    Player::RemovePetitionsAndSigns(PlayerGuid, GetType()); 
    112  
    113     Player *pl = objmgr.GetPlayer(PlayerGuid); 
    114     if(pl) 
    115     { 
    116         plClass = (uint8)pl->getClass(); 
    117     } 
    118     else 
    119     { 
    120         QueryResult *result = CharacterDatabase.PQuery("SELECT class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid)); 
    121         if(!result) 
    122             return false; 
    123         plClass = (*result)[0].GetUInt8(); 
    124         delete result; 
    125     } 
    126131 
    127132    ArenaTeamMember newmember;