Example #1
0
        //发送爵位被改变的文字消息,全服广播
        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;
            }
            }
        }
Example #2
0
        //取当前玩家爵位等级
        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);
        }
Example #3
0
        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();
            }
        }
Example #4
0
        //玩家捐献爵位
        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);
        }