//发送爵位被改变的文字消息,全服广播 public void SendChangeGuanJueMsg(PlayerObject play, GameStruct.GUANGJUELEVEL lv) { String str = ""; switch (lv) { case GameStruct.GUANGJUELEVEL.KING: { str = string.Format("这一天将载入永恒的史册,玩家[{0}]赢得了至高无上的光荣与祝福,登上了国王的宝座!", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.SCREEN, str); break; } case GameStruct.GUANGJUELEVEL.QUEEN: { str = string.Format("这是万众曙目的时刻![{0}]戴上了神圣的王冠,让我们为新的卡诺萨城女王欢呼喝彩吧!", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.SCREEN, str); break; } case GameStruct.GUANGJUELEVEL.DUKE: { str = string.Format("卡诺萨城的钟声轰然响起,[{0}]为王国做出来重大贡献,欶封为皇家公爵!", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.SCREEN, str); break; } case GameStruct.GUANGJUELEVEL.MARQUIS: { str = string.Format("光荣的号角响起,[{0}]受封为皇家候爵,愿他的荣耀之旗永闪光芒!", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.SCREEN, str); break; } case GameStruct.GUANGJUELEVEL.EARL: { str = string.Format("恭祝玩家[{0}]受封为伯爵,庆祝的歌声将响彻全城,他的名字将与卡诺萨城同在", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.CHAT, str); break; } case GameStruct.GUANGJUELEVEL.VISCOUNT: { str = string.Format("恭祝玩家[{0}]受封为子爵,在神圣的光芒下,让我们共同见证这份光荣!", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.CHAT, str); break; } case GameStruct.GUANGJUELEVEL.LORD: { str = string.Format("祝贺玩家[{0}]晋升为勋爵,卡诺萨城有多了一位尊贵的守护者。", play.GetName()); UserEngine.Instance().BroadcastMsg(BROADCASTMSGTYPE.CHAT, str); break; } } }
//取当前玩家爵位等级 public GameStruct.GUANGJUELEVEL GetLevel(PlayerObject play) { GameStruct.GUANGJUELEVEL level = GameStruct.GUANGJUELEVEL.NORMAL; int pos = -1; for (int i = 0; i < mList.Count; i++) { if (mList[i].id == (uint)play.GetBaseAttr().player_id) { pos = i; break; } } if (pos != -1) { //1-3名- 王- 女王 if (pos >= 0 && pos <= 2) { level = play.GetSex() == Sex.MAN ? GameStruct.GUANGJUELEVEL.KING : GameStruct.GUANGJUELEVEL.QUEEN; } //公爵 4-15名 else if (pos >= 3 && pos <= 14) { level = GameStruct.GUANGJUELEVEL.DUKE; } //侯爵 16-50名 else if (pos >= 15 && pos <= 49) { level = GameStruct.GUANGJUELEVEL.MARQUIS; } return(level); } ulong guanjue = play.GetBaseAttr().guanjue; //伯爵 大于2亿 if (guanjue >= 200000000) { level = GameStruct.GUANGJUELEVEL.EARL; } //子爵 大于1亿 else if (guanjue >= 100000000) { level = GameStruct.GUANGJUELEVEL.VISCOUNT; } //勋爵 大于30000000 else if (guanjue >= 30000000) { level = GameStruct.GUANGJUELEVEL.LORD; } return(level); }
public void AddTempPlayObject(GameBase.Network.Internal.RoleInfo info) { TempPlayObject temp = new TempPlayObject(); PlayerObject play = new PlayerObject(); temp.play = play; temp.key = info.mKey; temp.key2 = info.mKey1; temp.isRole = info.isRole; temp.accountid = info.accountid; //基本属性 m_DicTempPlayObject[play.GetGameID()] = temp; if (temp.isRole) { play.SetName(info.name); GameStruct.PlayerAttribute attr = play.GetBaseAttr(); attr.account_id = info.accountid; attr.player_id = info.playerid; attr.mana = info.mana; attr.lookface = info.lookface; attr.hair = info.hair; attr.profession = info.profession; attr.level = info.lv; attr.exp = (int)info.exp; attr.life = info.life; attr.pk = info.pk; attr.gold = info.gold; attr.gamegold = info.gamegold; attr.stronggold = info.stronggold; attr.mapid = (uint)info.mapid; attr.guanjue = info.guanjue; attr.sAccount = info.sAccount; attr.godlevel = (byte)info.godlevel; attr.maxeudemon = info.maxeudemon; play.SetHotKeyInfo(info.hotkey); play.CalcSex(); play.SetPoint(info.x, info.y); //官爵信息 GameStruct.GUANGJUELEVEL gjlevel = GuanJueManager.Instance().GetLevel(play); play.SetGuanJue(gjlevel); //初始化军团信息 play.GetLegionSystem().Init(); } }
//玩家捐献爵位 public void Donation(PlayerObject play, GameStruct.MONEYTYPE type, int value) { const int MIN_GOLD = 3000000; //最低捐献金额- 防封包 GameStruct.GUANGJUELEVEL oldlv = play.GetGuanJue(); int gold = 0; switch (type) { case GameStruct.MONEYTYPE.GOLD: { if (gold < MIN_GOLD) { play.LeftNotice("最低捐献" + MIN_GOLD.ToString() + "万金币起。"); return; } if (play.GetMoneyCount(GameStruct.MONEYTYPE.GOLD) < value) { play.LeftNotice("金币不足,无法捐献!"); return; } gold = value; play.ChangeAttribute(GameStruct.UserAttribute.GOLD, -gold); break; } case GameStruct.MONEYTYPE.GAMEGOLD: { if (play.GetMoneyCount(GameStruct.MONEYTYPE.GAMEGOLD) < value) { play.LeftNotice("魔石不足,无法捐献!"); return; } play.ChangeAttribute(GameStruct.UserAttribute.GAMEGOLD, -value); //转换成金币 一个魔石等于7100金币 const int _gold = 7100; gold = value * _gold; if (gold < MIN_GOLD) { play.LeftNotice("最低捐献" + MIN_GOLD.ToString() + "万金币起。"); return; } break; } } play.GetBaseAttr().guanjue += (uint)gold; SetValue(play.GetBaseAttr().player_id, play.GetName(), play.GetBaseAttr().guanjue); //通知客户端 //重新计算一下等级 GameStruct.GUANGJUELEVEL level = this.GetLevel(play); //爵位被改变- 发公告 if (oldlv != level) { this.SendChangeGuanJueMsg(play, level); } if (level != play.GetGuanJue()) { play.SetGuanJue(level); } this.SendGuanJueInfo(play); DB_Update(play); }