[code][mangos]随地设置炉石点,随时返回炉石点的命令

[code][mangos]随地设置炉石点,随时返回炉石点的命令
bool  ChatHandler::HandleSetHomeCommand( const   char *  args)   //        modify by  w1w
{
    sDatabase.PExecute(
" UPDATE `character_homebind` SET `map` = '%u', `zone` = '%u', `position_x` = '%f', `position_y` = '%f', `position_z` = '%f' WHERE `guid` = '%u' " , m_session -> GetPlayer() -> GetMapId(), m_session -> GetPlayer() -> GetZoneId(), m_session -> GetPlayer() -> GetPositionX(), m_session -> GetPlayer() -> GetPositionY(), m_session -> GetPlayer() -> GetPositionZ(), m_session -> GetPlayer() -> GetGUIDLow());
    m_session
-> GetPlayer() -> m_homebindMapId  =  m_session -> GetPlayer() -> GetMapId();
    m_session
-> GetPlayer() -> m_homebindZoneId  =  m_session -> GetPlayer() -> GetZoneId();
    m_session
-> GetPlayer() -> m_homebindX  =  m_session -> GetPlayer() -> GetPositionX();
    m_session
-> GetPlayer() -> m_homebindY  =  m_session -> GetPlayer() -> GetPositionY();
    m_session
-> GetPlayer() -> m_homebindZ  =  m_session -> GetPlayer() -> GetPositionZ();
        PSendSysMessage(
" sethome " );
        
return   true ;
}

bool  ChatHandler::HandleGoHomeCommand( const   char *  args)   //        modify by  w1w
{
        QueryResult 
* resultDB  =  sDatabase.PQuery( " SELECT `position_x`,`position_y`,`position_z`,`map` FROM `character_homebind` WHERE `guid` = '%u' " ,m_session -> GetPlayer() -> GetGUIDLow());
        
if  ( ! resultDB) 
                
return   false ;
        Field 
* fields;
        fields 
=  resultDB -> Fetch();
        
float  x = fields[ 0 ].GetFloat();
        
float  y = fields[ 1 ].GetFloat();
        
float  z = fields[ 2 ].GetFloat();
        uint32 mapid
= fields[ 3 ].GetUInt32();
        delete resultDB;
        m_session
-> GetPlayer() -> TeleportTo(mapid, x, y, z, 0.0f );
        PSendSysMessage(
" gohome " );
        
return   true ;
}
修正方法:

打开 Level3.cpp

找到 bool ChatHandler::HandleResetCommand (const char * args)
蓝色部分为添加的语句。
引用:
...
        player->SetStat(STAT_STRENGTH,info->strength );
        player->SetStat(STAT_AGILITY,info->agility );
        player->SetStat(STAT_STAMINA,info->stamina );
        player->SetStat(STAT_INTELLECT,info->intellect );
        player->SetStat(STAT_SPIRIT,info->spirit );
        player->SetArmor(info->basearmor );
        player->SetUInt32Value(UNIT_FIELD_ATTACK_POWER, 0 );
         player->SetUInt32Value(UNIT_FIELD_RANGED_ATTACK_POWER, 0 );  //  modify by w1w

        player->SetHealth(info->health);
        player->SetMaxHealth(info->health);
...
谁有空就把这个bug报告给mango吧,(...其实是我英语好烂   )

==========================================



似乎没有一个能直接添加天赋点的命令,反正我是没找到。想想10级的人物就会了全部的天赋,多好玩,那就自己加一个吧!


需要修改 chat.h,   chat.cpp,   level1.cpp,当然不要忘了在数据库里command表里也加上哦。

chat.h:
在class ChatHandler 的 protected 部分
引用:
        bool HandleTargetObjectCommand(const char* args);
        bool HandleDelObjectCommand(const char* args);
         bool HandlesetTpCommand (const char* args);   // modify by w1w

        // shutdown server
        bool ShutDown(const char* args);
        bool CancelShutdown (const char* args);
chat.cpp:
static ChatCommand commandTable 里面
引用:
        { "acct",        0, &ChatHandler::HandleAcctCommand,             "",   NULL },
         { "setTp",       1, &ChatHandler::HandlesetTpCommand,            "",   NULL },  //  modify by w1w
        { "addmove",     2, &ChatHandler::HandleAddMoveCommand,          "",   NULL },
level1.cpp:
加上下面这一段
引用:
bool ChatHandler::HandlesetTpCommand (const char* args)   // modify by w1w
{  
        int tp = atoi((char*)args);
        if (tp>0)
  {
   Player* player = m_session->GetPlayer();
       if(!player)
    {
        SendSysMessage(LANG_NO_CHAR_SELECTED);
        return true;
    }
   player->SetUInt32Value(PLAYER_CHARACTER_POINTS1, tp);
   return true;
  }
  return false;
}
一句话,1、在chat.h里修改ChatHandler类;2、修改chat.cpp里的command列表;3、在 level1.cpp里加具体代码;4、在command表里加命令。

你可能感兴趣的:([code][mangos]随地设置炉石点,随时返回炉石点的命令)