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

[svn] * Avoid access to bag item prototype for getting bag size, use related item update field instead as more fast source.
* Better check client inventory pos data received in some client packets to skip invalid cases.
* Removed some unnecessary database queries.
* Make guid lookup for adding ignore async.
* Added two parameter versions of the AsyncQuery? function
* Make queries for adding friends async. - Hunuza
* Replace some PQuery() calls with more simple Query() - Hunuza
* Mark spell as executed instead of deleteable to solve crash.
*** Source mangos.

**Its a big commit. so test with care... or without care.... whatever floats your boat.

Original author: KingPin?
Date: 2008-11-05 20:10:19-06:00

Files:
1 modified

Legend:

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

    r102 r173  
    165165        return; 
    166166 
     167    guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
     168    if(!guild) 
     169    { 
     170        SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
     171        return; 
     172    } 
     173     
     174    if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) 
     175    { 
     176        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     177        return; 
     178    } 
     179     
    167180    player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str()); 
    168     guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    169  
    170181    if(player) 
    171182    { 
     
    179190    } 
    180191 
    181     if(!guild) 
    182     { 
    183         SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
    184         return; 
    185     } 
    186  
    187192    if(!plGuid) 
    188193    { 
    189194        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND); 
    190         return; 
    191     } 
    192  
    193     if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) 
    194     { 
    195         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    196195        return; 
    197196    } 
     
    297296 
    298297    std::string plName; 
    299     uint64 plGuid; 
    300     uint32 plGuildId; 
    301     uint32 plRankId; 
    302     Player *player; 
    303     Guild *guild; 
    304298 
    305299    //sLog.outDebug("WORLD: Received CMSG_GUILD_PROMOTE"); 
     
    309303    if(!normalizePlayerName(plName)) 
    310304        return; 
    311  
    312     player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str()); 
    313     guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    314     if(player) 
    315     { 
    316         plGuid = player->GetGUID(); 
    317         plGuildId = player->GetGuildId(); 
    318         plRankId = player->GetRank(); 
    319     } 
    320     else 
    321     { 
    322         plGuid = objmgr.GetPlayerGUIDByName(plName); 
    323         plGuildId = Player::GetGuildIdFromDB(plGuid); 
    324         plRankId = Player::GetRankFromDB(plGuid); 
    325     } 
    326  
     305         
     306    Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    327307    if(!guild) 
    328308    { 
     
    330310        return; 
    331311    } 
    332     else if(!plGuid) 
     312    if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE)) 
     313    { 
     314        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     315        return; 
     316    } 
     317     
     318    uint64 plGuid = objmgr.GetPlayerGUIDByName(plName); 
     319     
     320    if(!plGuid) 
    333321    { 
    334322        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND); 
     
    340328        return; 
    341329    } 
    342     else if(GetPlayer()->GetGuildId() != plGuildId) 
     330     
     331    int32 plRankId = guild->GetRank(GUID_LOPART(plGuid)); 
     332    if(plRankId == -1) 
    343333    { 
    344334        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S); 
    345335        return; 
    346336    } 
    347     else if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE)) 
    348     { 
    349         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    350         return; 
    351     } 
    352     else if((plRankId-1) == 0 || (plRankId-1) < this->GetPlayer()->GetRank()) 
    353         return; 
    354  
    355     if(plRankId < 1) 
    356     { 
    357         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_INTERNAL); 
    358         return; 
    359     } 
     337    if(plRankId < 2 || (plRankId-1) < GetPlayer()->GetRank()) 
     338        return; 
    360339 
    361340    uint32 newRankId = plRankId < guild->GetNrRanks() ? plRankId-1 : guild->GetNrRanks()-1; 
     
    379358 
    380359    std::string plName; 
    381     uint64 plGuid; 
    382     uint32 plGuildId; 
    383     uint32 plRankId; 
    384     Player *player; 
    385     Guild *guild; 
    386360 
    387361    //sLog.outDebug("WORLD: Received CMSG_GUILD_DEMOTE"); 
     
    392366        return; 
    393367 
    394     player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str()); 
    395     guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    396     if(player) 
    397     { 
    398         plGuid = player->GetGUID(); 
    399         plGuildId = player->GetGuildId(); 
    400         plRankId = player->GetRank(); 
    401     } 
    402     else 
    403     { 
    404         plGuid = objmgr.GetPlayerGUIDByName(plName); 
    405         plGuildId = Player::GetGuildIdFromDB(plGuid); 
    406         plRankId = Player::GetRankFromDB(plGuid); 
    407     } 
     368    Guild* guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    408369 
    409370    if(!guild) 
     
    412373        return; 
    413374    } 
     375     
     376    if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE)) 
     377    { 
     378        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     379        return; 
     380    } 
     381     
     382    uint64 plGuid = objmgr.GetPlayerGUIDByName(plName); 
    414383 
    415384    if( !plGuid ) 
     
    425394    } 
    426395 
    427     if(GetPlayer()->GetGuildId() != plGuildId) 
     396    int32 plRankId = guild->GetRank(GUID_LOPART(plGuid)); 
     397    if(plRankId == -1) 
    428398    { 
    429399        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S); 
    430         return; 
    431     } 
    432  
    433     if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_DEMOTE)) 
    434     { 
    435         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    436400        return; 
    437401    } 
     
    536500    if(!normalizePlayerName(name)) 
    537501        return; 
     502         
     503    guild = objmgr.GetGuildById(oldLeader->GetGuildId()); 
     504     
     505    if(!guild) 
     506    { 
     507        SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
     508        return; 
     509    } 
     510     
     511    if(oldLeader->GetGUID() != guild->GetLeader()) 
     512    { 
     513        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     514        return; 
     515    } 
    538516 
    539517    newLeader = ObjectAccessor::Instance().FindPlayerByName(name.c_str()); 
     
    548526        newLeaderGuild = Player::GetGuildIdFromDB(newLeaderGUID); 
    549527    } 
    550     guild = objmgr.GetGuildById(oldLeader->GetGuildId()); 
    551  
    552     if(!guild) 
    553     { 
    554         SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
    555         return; 
    556     } 
    557     else if(!newLeaderGUID) 
     528    if(!newLeaderGUID) 
    558529    { 
    559530        SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND); 
     
    563534    { 
    564535        SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S); 
    565         return; 
    566     } 
    567     if(oldLeader->GetGUID() != guild->GetLeader()) 
    568     { 
    569         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    570536        return; 
    571537    } 
     
    636602        return; 
    637603 
     604    guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
     605    if(!guild) 
     606    { 
     607        SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
     608        return; 
     609    } 
     610     
     611    if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE)) 
     612    { 
     613        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     614        return; 
     615    } 
     616     
    638617    player = ObjectAccessor::Instance().FindPlayerByName(name.c_str()); 
    639     guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    640618    if(player) 
    641619    { 
     
    649627    } 
    650628 
    651     if(!guild) 
    652     { 
    653         SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
    654         return; 
    655     } 
    656     else if(!plGuid) 
     629    if(!plGuid) 
    657630    { 
    658631        SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND); 
     
    662635    { 
    663636        SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S); 
    664         return; 
    665     } 
    666     if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EPNOTE)) 
    667     { 
    668         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    669637        return; 
    670638    } 
     
    693661        return; 
    694662 
     663    guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
     664    if(!guild) 
     665    { 
     666        SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
     667        return; 
     668    } 
     669    if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EOFFNOTE)) 
     670    { 
     671        SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
     672        return; 
     673    } 
     674     
    695675    player = ObjectAccessor::Instance().FindPlayerByName(plName.c_str()); 
    696     guild = objmgr.GetGuildById(GetPlayer()->GetGuildId()); 
    697676    if(player) 
    698677    { 
     
    706685    } 
    707686 
    708     if(!guild) 
    709     { 
    710         SendGuildCommandResult(GUILD_CREATE_S, "", GUILD_PLAYER_NOT_IN_GUILD); 
    711         return; 
    712     } 
    713     else if( !plGuid ) 
     687    if( !plGuid ) 
    714688    { 
    715689        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND); 
     
    719693    { 
    720694        SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S); 
    721         return; 
    722     } 
    723     if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_EOFFNOTE)) 
    724     { 
    725         SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_PERMISSIONS); 
    726695        return; 
    727696    }