新人进入游戏欢迎公告测试成功.

写在前面的话.

从今年二月份开始研究MaNGOS以来,走了很长一段路,从一开始下载一键安装版进去做一些设置到开始关注数据库再到上周五开始接触MaNGOS的编译工作,这个周末,从周五到现在,忙了很久。到处收集已有的代码加入到mangos里,之前的很多代码因为mangos接口的改变已经无法直接使用,又不得不去研究新的接口和数据库结构。所幸的是,花费了这么长时间总算做出了一些小东西。

1:超级宝石,npc传送编译测试成功。这部分的代码直接用到了网络上的资源,花费了我很长的时间。

2:会员,积分系统,这个似乎没有现成的,所以只能自己去研究,运气好,也捣鼓出来了。

3:添加了一个sj世界聊天命令。感谢网络上的资源

3:新人进入欢迎信息。结合到mgcore的现有代码,自己再完善了一些东西。也算是做出来了。



现在的感觉就是很疲惫,嗯,不过心里还是有小小的安慰,毕竟花了这么长时间做出了一些东西。

以下是新人进入游戏欢迎信息的测试界面.我自己写了三个函数,在CharacterHandler.cpp里面,不知道其他朋友是怎么实现的,请多多指教。

感谢mgcore提供的这么好一个平台,让我学到了很多东西。
 
以下是人物初次创建进入游戏时的世界公告

 
代码部分,CharacterHandler.cpp
 
InBlock.gif//初始化公告内容
InBlock.gifstd::string welcomeStr = " |CFF00FFFF幻想魔兽世界迎来新的勇士:|R";
InBlock.gif//获取玩家姓名
InBlock.gifstd::string playerName = pCurrChar->GetName();
InBlock.gif//获得玩家种族
InBlock.gifuint8 playerRace = pCurrChar->getRace();
InBlock.gif//获得玩家职业
InBlock.gifuint8 playerClass = pCurrChar->getClass();
InBlock.gifwelcomeStr+= "[ |Cff0000ff";
InBlock.gifwelcomeStr+= playerName;
InBlock.gifwelcomeStr+= "|R ]";
InBlock.gifwelcomeStr+= " 他是一名来自|Cffffff00";
InBlock.gifwelcomeStr+= GetPlayerCamp(playerRace);
InBlock.gifwelcomeStr+= "|R 的|CFFFF8000";
InBlock.gifwelcomeStr+= GetPlayerRace(playerRace);
InBlock.gifwelcomeStr+= "|CFF8080FF";
InBlock.gifwelcomeStr+= GetPlayerClass(playerClass);
InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif//显示公告
InBlock.gifsWorld.SendWorldText(LANG_PLAYER_LOGIN_WORLD_CHAT, welcomeStr.c_str());
 
获得玩家阵营的函数,这是我开始写的,原理在于通过种族玩家id来判断属于联盟还是部落。
 
InBlock.gif//获取玩家阵营
InBlock.gifchar const* WorldSession::GetPlayerCamp(uint8 campId) const
InBlock.gif{
InBlock.gifif(campId == 1 || campId == 3 || campId == 4 || campId == 7 || campId == 12)
InBlock.gif{
InBlock.gifreturn "★联盟★";
InBlock.gif}
InBlock.gifif(campId == 2 || campId == 5 || campId == 6 || campId == 8 || campId == 11)
InBlock.gif
InBlock.gif{
InBlock.gifreturn "☆部落☆";
InBlock.gif}
InBlock.gifreturn "●其他阵营●";
InBlock.gif}
 
后来经过MG Core论坛的fiver提醒
 
可以简化成这样:
InBlock.gif//获取玩家阵营
InBlock.gif
InBlock.gif//可以直接用系统内核函数
InBlock.gif                         //是否为联盟
InBlock.gif                        if(player->GetTeam() == ALLIANCE)
InBlock.gif                    //是否为部落
InBlock.gif                        if(player->GetTeam() == HORDE)
 
获取玩家种族
InBlock.gif//获取玩家种族
InBlock.gifchar const* WorldSession::GetPlayerRace(uint8 raceId) const
InBlock.gif{
InBlock.gifswitch(raceId)
InBlock.gif    {
InBlock.gif    case 1:
InBlock.gif      return "[人类]";
InBlock.gif      break;
InBlock.gif    case 2:
InBlock.gif      return "[兽人]";
InBlock.gif      break;
InBlock.gif    case 3:
InBlock.gif      return "[矮人]";
InBlock.gif      break;
InBlock.gif    case 4:
InBlock.gif      return "[暗夜精灵]";
InBlock.gif      break;
InBlock.gif    case 5:
InBlock.gif      return "[亡灵]";
InBlock.gif      break;
InBlock.gif    case 6:
InBlock.gif      return "[牛头人]";
InBlock.gif      break;
InBlock.gif    case 7:
InBlock.gif      return "[侏儒]";
InBlock.gif      break;
InBlock.gif    case 8:
InBlock.gif      return "[巨魔]";
InBlock.gif      break;
InBlock.gif    case 11:
InBlock.gif      return "[血精灵]";
InBlock.gif      break;
InBlock.gif      case 12:
InBlock.gif      return "[德莱尼人]";
InBlock.gif    break;
InBlock.gif    default:
InBlock.gif      break;
InBlock.gif    }
InBlock.gif    return "[未知种族]";
InBlock.gif}
 
//获取玩家职业
InBlock.gif//获取玩家职业
InBlock.gifchar const* WorldSession::GetPlayerClass(uint8 classId) const
InBlock.gif{
InBlock.gif    switch(classId)
InBlock.gif    {
InBlock.gif    case 1:
InBlock.gif      return "[战士]";
InBlock.gif      break;
InBlock.gif    case 2:
InBlock.gif      return "[圣骑士]";
InBlock.gif      break;
InBlock.gif    case 3:
InBlock.gif      return "[猎人]";
InBlock.gif      break;
InBlock.gif    case 4:
InBlock.gif      return "[盗贼]";
InBlock.gif      break;
InBlock.gif    case 5:
InBlock.gif      return "[牧师]";
InBlock.gif      break;
InBlock.gif    case 7:
InBlock.gif      return "[萨满]";
InBlock.gif      break;
InBlock.gif    case 8:
InBlock.gif      return "[法师]";
InBlock.gif      break;
InBlock.gif    case 9:
InBlock.gif      return "[术士]";
InBlock.gif      break;
InBlock.gif    case 11:
InBlock.gif      return "[德鲁伊]";
InBlock.gif      break;
InBlock.gif    default:
InBlock.gif      break;
InBlock.gif    }
InBlock.gif      return "[未知职业]";
InBlock.gif}