Changeset 62

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

[svn] * Added freeze/unfreeze/listfreeze commands patch by toilet1 (I swear I didnt make up the name)
* Fixed a couple of spelling errors in TC conf file

Original author: KingPin?
Date: 2008-10-19 11:42:21-05:00

Location:
trunk
Files:
1 added
6 modified

Legend:

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

    r44 r62  
    473473        { "damage",         SEC_ADMINISTRATOR,  &ChatHandler::HandleDamageCommand,              "", NULL }, 
    474474        { "combatstop",     SEC_GAMEMASTER,     &ChatHandler::HandleCombatStopCommand,          "", NULL }, 
     475        { "freeze",         SEC_ADMINISTRATOR,  &ChatHandler::HandleFreezeCommand,              "", NULL }, 
     476        { "unfreeze",       SEC_ADMINISTRATOR,  &ChatHandler::HandleUnFreezeCommand,            "", NULL }, 
     477        { "listfreeze",     SEC_ADMINISTRATOR,  &ChatHandler::HandleListFreezeCommand,          "", NULL }, 
    475478        { "flusharenapoints",    SEC_ADMINISTRATOR, &ChatHandler::HandleFlushArenaPointsCommand,         "",   NULL }, 
    476479 
  • trunk/src/game/Chat.h

    r44 r62  
    246246        bool HandleUnmuteCommand(const char* args); 
    247247        bool HandleMovegensCommand(const char* args); 
     248        bool HandleFreezeCommand(const char *args); 
     249        bool HandleUnFreezeCommand(const char *args); 
     250        bool HandleListFreezeCommand(const char* args); 
    248251 
    249252        bool HandleBanCommand(const char* args); 
  • trunk/src/game/Language.h

    r44 r62  
    660660 
    661661    // FREE IDS                           1000-9999 
     662    LANG_COMMAND_FREEZE                 = 1000, 
     663    LANG_COMMAND_FREEZE_ERROR           = 1001, 
     664    LANG_COMMAND_FREEZE_WRONG           = 1002, 
     665    LANG_COMMAND_UNFREEZE               = 1003, 
     666    LANG_COMMAND_NO_FROZEN_PLAYERS      = 1004, 
     667    LANG_COMMAND_LIST_FREEZE            = 1005, 
     668    LANG_COMMAND_FROZEN_PLAYERS         = 1006, 
    662669 
    663670    // Use for not-in-svn patches         10000-10999 
  • trunk/src/game/Level3.cpp

    r44 r62  
    55085508} 
    55095509 
     5510bool ChatHandler::HandleFreezeCommand(const char *args) 
     5511{ 
     5512    std::string name; 
     5513    Player* player; 
     5514    char* TargetName = strtok((char*)args, " "); //get entered name 
     5515    if (!TargetName) //if no name entered use target 
     5516    { 
     5517        player = getSelectedPlayer(); 
     5518                if (player) //prevent crash with creature as target 
     5519        {    
     5520           name = player->GetName(); 
     5521           normalizePlayerName(name); 
     5522        } 
     5523    } 
     5524    else // if name entered 
     5525    { 
     5526        name = TargetName; 
     5527        normalizePlayerName(name); 
     5528        player = objmgr.GetPlayer(name.c_str()); //get player by name 
     5529    } 
     5530     
     5531    if (!player) 
     5532    { 
     5533        SendSysMessage(LANG_COMMAND_FREEZE_WRONG); 
     5534        return true; 
     5535    } 
     5536 
     5537    if (player==m_session->GetPlayer()) 
     5538    { 
     5539        SendSysMessage(LANG_COMMAND_FREEZE_ERROR); 
     5540        return true; 
     5541    } 
     5542 
     5543    //effect 
     5544    if ((player) && (!(player==m_session->GetPlayer()))) 
     5545    { 
     5546        PSendSysMessage(LANG_COMMAND_FREEZE,name.c_str()); 
     5547 
     5548        //stop combat + make player unattackable + duel stop + stop some spells 
     5549        player->setFaction(35); 
     5550        player->CombatStop(); 
     5551                if(player->IsNonMeleeSpellCasted(true)) 
     5552        player->InterruptNonMeleeSpells(true); 
     5553        player->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); 
     5554        player->SetUInt32Value(PLAYER_DUEL_TEAM, 1); 
     5555 
     5556                //if player class = hunter || warlock remove pet if alive 
     5557        if((player->getClass() == CLASS_HUNTER) || (player->getClass() == CLASS_WARLOCK)) 
     5558        { 
     5559            if(Pet* pet = player->GetPet()) 
     5560            { 
     5561                pet->SavePetToDB(PET_SAVE_AS_CURRENT); 
     5562                // not let dismiss dead pet 
     5563                if(pet && pet->isAlive()) 
     5564                player->RemovePet(pet,PET_SAVE_NOT_IN_SLOT); 
     5565            } 
     5566        } 
     5567 
     5568        //stop movement and disable spells 
     5569        uint32 spellID = 9454; 
     5570        //m_session->GetPlayer()->CastSpell(player,spellID,false); 
     5571        SpellEntry const *spellInfo = sSpellStore.LookupEntry( spellID ); 
     5572        if(spellInfo) //TODO: Change the duration of the aura to -1 instead of 5000000 
     5573        { 
     5574            for(uint32 i = 0;i<3;i++) 
     5575            { 
     5576                uint8 eff = spellInfo->Effect[i]; 
     5577                if (eff>=TOTAL_SPELL_EFFECTS) 
     5578                    continue; 
     5579                if( eff == SPELL_EFFECT_APPLY_AREA_AURA_PARTY || eff == SPELL_EFFECT_APPLY_AURA || 
     5580                    eff == SPELL_EFFECT_PERSISTENT_AREA_AURA || eff == SPELL_EFFECT_APPLY_AREA_AURA_FRIEND ||  
     5581                    eff == SPELL_EFFECT_APPLY_AREA_AURA_ENEMY) 
     5582                { 
     5583                    Aura *Aur = CreateAura(spellInfo, i, NULL, player); 
     5584                    player->AddAura(Aur); 
     5585               } 
     5586            } 
     5587        } 
     5588 
     5589        //save player 
     5590        player->SaveToDB(); 
     5591    } 
     5592    return true; 
     5593} 
     5594 
     5595bool ChatHandler::HandleUnFreezeCommand(const char *args) 
     5596{ 
     5597    std::string name; 
     5598    Player* player; 
     5599    char* TargetName = strtok((char*)args, " "); //get entered name 
     5600    if (!TargetName) //if no name entered use target 
     5601    { 
     5602        player = getSelectedPlayer(); 
     5603                if (player) //prevent crash with creature as target 
     5604        {    
     5605           name = player->GetName(); 
     5606        } 
     5607    } 
     5608 
     5609    else // if name entered 
     5610    { 
     5611        name = TargetName; 
     5612        normalizePlayerName(name); 
     5613        player = objmgr.GetPlayer(name.c_str()); //get player by name 
     5614    } 
     5615 
     5616    //effect 
     5617    if (player) 
     5618    { 
     5619        PSendSysMessage(LANG_COMMAND_UNFREEZE,name.c_str()); 
     5620 
     5621        //Reset player faction + allow combat + allow duels 
     5622        player->setFactionForRace(player->getRace()); 
     5623        player->RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); 
     5624 
     5625        //allow movement and spells 
     5626        uint32 spellID = 9454; 
     5627        player->RemoveAurasDueToSpell(spellID); 
     5628 
     5629        //save player 
     5630        player->SaveToDB(); 
     5631    } 
     5632 
     5633    if (!player) 
     5634    { 
     5635        if (TargetName) 
     5636        {         
     5637            //check for offline players 
     5638                    QueryResult *result = CharacterDatabase.PQuery("SELECT characters.guid FROM `characters` WHERE characters.name = '%s'",name.c_str()); 
     5639            if(!result) 
     5640                    { 
     5641                            SendSysMessage(LANG_COMMAND_FREEZE_WRONG); 
     5642                return true; 
     5643                    } 
     5644                    //if player found: delete his freeze aura 
     5645                    Field *fields=result->Fetch(); 
     5646            uint64 pguid = fields[0].GetUInt64(); 
     5647                    delete result; 
     5648            CharacterDatabase.PQuery("DELETE FROM `character_aura` WHERE character_aura.spell = 9454 AND character_aura.guid = '%u'",pguid); 
     5649            PSendSysMessage(LANG_COMMAND_UNFREEZE,name.c_str()); 
     5650            return true; 
     5651                } 
     5652                else 
     5653        { 
     5654                SendSysMessage(LANG_COMMAND_FREEZE_WRONG); 
     5655            return true; 
     5656                } 
     5657    } 
     5658 
     5659    return true; 
     5660} 
     5661 
     5662bool ChatHandler::HandleListFreezeCommand(const char* args) 
     5663{ 
     5664    //Get names from DB 
     5665    QueryResult *result = CharacterDatabase.PQuery("SELECT characters.name FROM `characters` LEFT JOIN `character_aura` ON (characters.guid = character_aura.guid) WHERE character_aura.spell = 9454"); 
     5666    if(!result) 
     5667    { 
     5668        SendSysMessage(LANG_COMMAND_NO_FROZEN_PLAYERS); 
     5669        return true; 
     5670    } 
     5671    //Header of the names 
     5672    PSendSysMessage(LANG_COMMAND_LIST_FREEZE); 
     5673     
     5674    //Output of the results 
     5675        do 
     5676    { 
     5677        Field *fields = result->Fetch(); 
     5678        std::string fplayers = fields[0].GetCppString(); 
     5679        PSendSysMessage(LANG_COMMAND_FROZEN_PLAYERS,fplayers.c_str()); 
     5680    } while (result->NextRow()); 
     5681 
     5682    delete result; 
     5683    return true; 
     5684} 
     5685 
    55105686bool ChatHandler::HandleFlushArenaPointsCommand(const char * /*args*/) 
    55115687{ 
  • trunk/src/game/MiscHandler.cpp

    r44 r62  
    288288    if( GetPlayer()->isInCombat() ||                        //...is in combat 
    289289        GetPlayer()->duel         ||                        //...is in Duel 
     290        GetPlayer()->HasAura(9454,0)         ||             //...is frozen by GM via freeze command 
    290291                                                            //...is jumping ...is falling 
    291292        GetPlayer()->HasUnitMovementFlag(MOVEMENTFLAG_JUMPING | MOVEMENTFLAG_FALLING)) 
  • trunk/src/trinitycore/trinitycore.conf.dist

    r51 r62  
    8484# 
    8585#    ProcessPriority 
    86 #        Process proirity setting (Used only at Windows) 
     86#        Process priority setting (Used only at Windows) 
    8787#        Default: 1 (HIGH) 
    8888#                 0 (Normal) 
     
    846846#    Rate.Drop.Item.Referenced 
    847847#    Rate.Drop.Money 
    848 #         Drop rates (items by qualify and money) 
     848#         Drop rates (items by quality and money) 
    849849#         Default: 1 
    850850#