示例#1
0
文件: Guild.cs 项目: Lenzan/newmmo
        public void AddMember(int characterId, string name, int @class, int leave, GuildTitle title)
        {
            DateTime     now      = DateTime.Now;
            TGuildMember dbMember = new TGuildMember()
            {
                CharacterId = characterId,
                Name        = name,
                Class       = @class,
                Level       = leave,
                Title       = (int)title,
                JoinTime    = now,
                LastTime    = now
            };

            this.Data.Members.Add(dbMember);
            var character = CharacterManager.Instance.GetCharacter(characterId);

            if (character != null)
            {
                character.Data.GuildId = this.Id;
            }
            else
            {
                // DBService.Instance.Entities.Database.ExecuteSqlCommand("UPDATE Characters SET GuildId=@p0 Where CharacterId=@p1",this.Id,characterId);
                TCharacter dbChar = DBService.Instance.Entities.Characters.SingleOrDefault(c => c.ID == characterId);
                dbChar.GuildId = this.Id;
            }
            timestamp = TimeUtil.timestamp;
        }
        public Character AddCharacter(TCharacter cha)
        {
            Character character = new Character(CharacterType.Player, cha);

            this.Characters[cha.ID] = character;
            return(character);
        }
示例#3
0
 public Character(CharacterType type, TCharacter cha) :
     base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(cha.MapDirection, 0, 0))
 {
     this.Data          = cha;
     this.Info          = new NCharacterInfo();
     this.Id            = cha.ID;
     this.Info.Type     = type;
     this.Info.Id       = cha.ID;
     this.Info.EntityId = this.entityId;
     this.Info.ConfigId = cha.TID;
     this.Info.Name     = cha.Name;
     this.Info.Level    = cha.Level;
     this.Info.Class    = cha.Class;
     this.Info.mapId    = cha.MapID;
     this.Info.Entity   = this.EntityData;
     this.Info.Gold     = this.Gold;
     this.Info.Equiped  = cha.Equiped;
     this.Define        = DataManager.Instance.Characters[cha.TID];
     this.itemManager   = new ItemManager(this);
     this.itemManager.GetItemInfo(Info.Items);
     this.statusManager     = new StatusManager(this);
     this.goodsLimitManager = new GoodsLimitManager(this);
     this.goodsLimitManager.GetGoodsLimits(Info.goodsLimits);
     this.equipManager = new EquipManager(this);
     this.equipManager.GetEquipInfos(Info.Equips);
     this.questManager = new QuestManager(this);
     this.questManager.GetQuestInfos(Info.Quests);
     this.messageManager = new MessageManager(this);
     this.messageManager.GetMessageInfos(Info.Messages);
     this.friendManager = new FriendManager(this);
     this.friendManager.GetFriendsInfo(Info.Friends);
 }
示例#4
0
        private void OnCreateCharacter(NetConnection <NetSession> sender, UserCreateCharacterRequest request)
        {
            Log.InfoFormat("UserCreateCharacterRequest: Name:{0}  Class:{1}", request.Name, request.Class);

            TCharacter character = new TCharacter()
            {
                Name    = request.Name,
                Class   = (int)request.Class,
                TID     = (int)request.Class,
                MapID   = 1,
                MapPosX = 5000,
                MapPosY = 4000,
                MapPosZ = 820,
            };


            DBService.Instance.Entities.Characters.Add(character);
            sender.Session.User.Player.Characters.Add(character);
            DBService.Instance.Entities.SaveChanges();

            NetMessage message = new NetMessage();

            message.Response                     = new NetMessageResponse();
            message.Response.createChar          = new UserCreateCharacterResponse();
            message.Response.createChar.Result   = Result.Success;
            message.Response.createChar.Errormsg = "None";

            byte[] data = PackageHandler.PackMessage(message);
            sender.SendData(data, 0, data.Length);
        }
示例#5
0
        public Character(CharacterType type, TCharacter cha) :
            base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
        {
            this.Data        = cha;
            this.Info        = new NCharacterInfo();
            this.Info.Type   = type;
            this.Info.Id     = cha.ID;
            this.Info.Name   = cha.Name;
            this.Info.Level  = 10;//cha.Level;
            this.Info.Tid    = cha.TID;
            this.Info.Class  = (CharacterClass)cha.Class;
            this.Info.mapId  = cha.MapID;
            this.Info.Gold   = cha.Gold;
            this.Info.Entity = this.EntityData;
            //this.Define = DataManager.Instance.Characters[this.Info.Tid];

            ItemManager = new ItemManager(this);
            this.ItemManager.GetItemInfos(this.Info.Items);
            this.Info.Bag          = new NBagInfo();
            this.Info.Bag.Unlocked = this.Data.Bag.Unlocked;
            this.Info.Bag.Items    = this.Data.Bag.Items;
            this.Info.Equips       = this.Data.Equips;
            this.QuestManager      = new QuestManager(this);
            this.QuestManager.GetQuestInfos(this.Info.Quests);
            StatusManager = new StatusManager(this);
        }
示例#6
0
        public Character(CharacterType type, TCharacter cha) :
            base(type, cha.TID, cha.Level, new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
        {
            this.AI         = new AIAgent(this);
            this.Data       = cha;
            this.Id         = cha.ID;
            this.Info.Id    = cha.ID;
            this.Info.Exp   = cha.Exp;
            this.Info.Class = (CharacterClass)cha.Class;
            this.Info.mapId = cha.MapID;
            this.Info.Gold  = cha.Gold;
            this.Info.Ride  = 0;
            this.Info.Name  = cha.Name;

            this.ItemManager = new ItemManager(this);
            this.ItemManager.GetItemInfos(this.Info.Items);
            this.Info.Bag          = new NBagInfo();
            this.Info.Bag.Unlocked = this.Data.Bag.Unlocked;
            this.Info.Bag.Items    = this.Data.Bag.Items;
            this.Info.Equips       = this.Data.Equips;
            this.QuestManager      = new QuestManager(this);
            this.QuestManager.GetQuestInfos(this.Info.Quests);
            this.StatusManager = new StatusManager(this);
            this.FriendManager = new FriendManager(this);
            this.FriendManager.GetFriendInfos(this.Info.Friends);
            this.PetManager = new PetManager(this);

            this.Guild = GuildManager.Instance.GetGuild(this.Data.GuildId);

            this.Chat                = new Chat(this);
            this.Info.attrDynamic    = new NAttributeDynamic();
            this.Info.attrDynamic.Hp = cha.HP;
            this.Info.attrDynamic.Mp = cha.MP;
        }
示例#7
0
        public Character(CharacterType type, TCharacter cha) :
            base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
        {
            //data为数据库表角色
            this.Data          = cha;
            this.Id            = cha.ID;
            this.Info          = new NCharacterInfo();
            this.Info.Type     = type;
            this.Info.Id       = cha.ID;
            this.Info.EntityId = this.entityId;
            this.Info.Name     = cha.Name;
            this.Info.Level    = 10;//cha.Level;
            this.Info.ConfigId = cha.TID;
            this.Info.Gold     = cha.Gold;
            this.Info.Ride     = 0;
            this.Info.Class    = (CharacterClass)cha.Class;
            this.Info.mapId    = cha.MapID;
            this.Info.Entity   = this.EntityData;
            this.Define        = DataManager.Instance.Characters[this.Info.ConfigId];

            this.ItemManager = new ItemManager(this);
            this.ItemManager.GetItemInfos(this.Info.Items);
            this.Info.Bag          = new NBagInfo();
            this.Info.Bag.Unlocked = this.Data.Bag.Unlocked;
            this.Info.Bag.Items    = this.Data.Bag.Items;
            this.Info.Equips       = this.Data.Equips;
            this.QuestManager      = new QuestManager(this);
            this.QuestManager.GetQuestInfos(this.Info.Quests);
            this.StatusManager = new StatusManager(this);
            this.FriendManager = new FriendManager(this);
            this.FriendManager.GetFriendInfos(this.Info.Friends);

            this.Guild = GuildManager.Instance.GetGuild(this.Data.GuildId);
        }
示例#8
0
        public void AddMember(int characterId, string name, int @class, int level, GuildTitle title)
        {
            DateTime     now      = DateTime.Now;
            TGuildMember dbmember = new TGuildMember
            {
                CharacterId = characterId,
                Name        = name,
                Class       = @class,
                Level       = level,
                Title       = (int)title,
                JoinTime    = now,
                LastTime    = now
            };

            this.Data.Members.Add(dbmember);
            var character = CharacterManager.Instance.GetCharacter(characterId);

            if (character != null)
            {
                character.Data.GuildId = this.Id;
            }
            else
            {
                TCharacter dbChr = DBService.Instance.Entities.Characters.SingleOrDefault(c => c.ID == characterId);
                dbChr.GuildId = this.Id;
            }
            timestamp = TimeUtil.timestamp;
        }
示例#9
0
        public Character AddCharacter(TCharacter tCharacter)
        {
            Character character = new Character(CharacterType.Player, tCharacter);

            this.Characters[tCharacter.ID] = character;
            return(character);
        }
示例#10
0
        public Character AddCharacter(TCharacter cha)
        {
            Character character = new Character(CharacterType.Player, cha);

            Managers.EntityManager.Instance.AddEntity(character.Info.mapId, character);
            this.Characters[character.Id] = character;
            return(character);
        }
示例#11
0
        public Character AddCharacter(TCharacter cha)
        {
            Character character = new Character(CharacterType.Player, cha);

            EntityManager.Instance.AddEntity(cha.MapID, character);
            this.Characters[character.entityId] = character;
            return(character);
        }
示例#12
0
        private void OnCreateCharacter(NetConnection <NetSession> sender, UserCreateCharacterRequest request)
        {
            Log.InfoFormat(" UserCreateCharacterRequest: name:{0}  class:{1}", request.Name, request.Class);
            NetMessage message = new NetMessage();

            message.Response            = new NetMessageResponse();
            message.Response.createChar = new UserCreateCharacterResponse();
            TCharacter character = new TCharacter()
            {
                Name    = request.Name,
                Class   = (int)request.Class,
                TID     = (int)request.Class,
                MapID   = 1,
                MapPosX = 5000,
                MapPosY = 4000,
                MapPosZ = 820,
                Gold    = 100000,
                Equips  = new byte[28],
            };
            var bag = new TCharacterBag();

            bag.Owner     = character;
            bag.Items     = new byte[0];
            bag.Unlocked  = 20;
            character.Bag = DBService.Instance.Entities.TCharacterBags.Add(bag);

            character.Items.Add(new TCharacterItem()
            {
                Owner     = character,
                IteamID   = 1,
                ItemCount = 20,
            });
            character.Items.Add(new TCharacterItem()
            {
                Owner     = character,
                IteamID   = 2,
                ItemCount = 20,
            });
            character = DBService.Instance.Entities.Characters.Add(character);
            sender.Session.User.Player.Characters.Add(character);
            DBService.Instance.Entities.SaveChanges();
            foreach (var c in sender.Session.User.Player.Characters)
            {
                NCharacterInfo info = new NCharacterInfo();
                info.Id    = 0;
                info.Name  = c.Name;
                info.Type  = CharacterType.Player;
                info.Class = (CharacterClass)c.Class;
                info.Tid   = c.ID;
                message.Response.createChar.Characters.Add(info);
            }

            message.Response.createChar.Result   = Result.Success;
            message.Response.createChar.Errormsg = "None";

            byte[] data = PackageHandler.PackMessage(message);
            sender.SendData(data, 0, data.Length);
        }
示例#13
0
        public Character AddCharacter(TCharacter cha)
        {
            Character character = new Character(CharacterType.Player, cha);

            EntityManager.Instance.AddEntity(cha.MapID, character);
            character.Info.Id = character.Id;
            Log.InfoFormat("info.id:{0},id={1},entityid:{2}", character.Info.Id, character.Id, character.entityId);
            this.Characters[character.Id] = character;
            return(character);
        }
示例#14
0
        /// <summary>
        /// Create a character and adds it to the character manager
        /// </summary>
        /// <param name="tChar"></param>
        /// <returns></returns>
        public Character AddCharacter(TCharacter tChar)
        {
            Character character = new Character(CharacterType.Player, tChar);

            //set entity id, add player to entitymanager
            EntityManager.Instance.AddEntity(tChar.MapID, character);

            characters.Add(character.entityId, character);

            return(character);
        }
示例#15
0
        private void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest message)
        {
            TCharacter chooseChar = sender.Session.User.Player.Characters.ElementAt(message.characterIdx);

            Log.InfoFormat("UserGameEnterRequest: Name:{0}  index:{1} CharacterName:{2}", sender.Session.User.ID, message.characterIdx, chooseChar.Name);
            sender.Session.Character = Managers.CharacterManager.Instance.AddCharacter(chooseChar);
            Managers.MapManager.Instance[chooseChar.MapID].CharacterEnter(sender, sender.Session.Character);
            SkillBridge.Message.NetMessage rsp = new NetMessage();
            rsp.Response                  = new NetMessageResponse();
            rsp.Response.gameEnter        = new UserGameEnterResponse();
            rsp.Response.gameEnter.Result = Result.Success;
            byte[] data = PackageHandler.PackMessage(rsp);
            //sender.SendData(data, 0, data.Length);
        }
示例#16
0
 public Character(CharacterType type, TCharacter cha) :
     base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
 {
     this.Data        = cha;
     this.Info        = new NCharacterInfo();
     this.Info.Type   = type;
     this.Info.Id     = cha.ID;
     this.Info.Name   = cha.Name;
     this.Info.Level  = 1;//cha.Level;
     this.Info.Tid    = cha.TID;
     this.Info.Class  = (CharacterClass)cha.Class;
     this.Info.mapId  = cha.MapID;
     this.Info.Entity = this.EntityData;
 }
示例#17
0
        private void OnCreatCharacter(NetConnection <NetSession> sender, UserCreateCharacterRequest message)
        {
            NetMessage rsp = new NetMessage();

            rsp.Response            = new NetMessageResponse();
            rsp.Response.createChar = new UserCreateCharacterResponse();

            if (sender.Session.User == null)
            {
                rsp.Response.createChar.Result   = Result.Failed;
                rsp.Response.createChar.Errormsg = "未登录,请重新登录";
            }
            else
            {
                if (/*Illegal(message.Class)*/ false)
                {
                    rsp.Response.createChar.Result   = Result.Failed;
                    rsp.Response.createChar.Errormsg = $"职业错误,不含职业Id{message.Class}";
                }
                else if (/*illegal(message.Name)*/ false)
                {
                    rsp.Response.createChar.Result   = Result.Failed;
                    rsp.Response.createChar.Errormsg = $"命名非法";
                }
                else
                {
                    rsp.Response.createChar.Result = Result.Success;
                    TCharacter character = new TCharacter();
                    character.Name    = message.Name;
                    character.Class   = (int)message.Class;
                    character.TID     = (int)message.Class;
                    character.MapID   = 1;
                    character.MapPosX = 5000;
                    character.MapPosY = 5000;
                    character.MapPosZ = 5000;
                    sender.Session.User.Player.Characters.Add(character);
                    DBService.Instance.Entities.SaveChanges();
                    foreach (var c in sender.Session.User.Player.Characters)
                    {
                        NCharacterInfo info = new NCharacterInfo();
                        info.Id    = c.ID;
                        info.Name  = c.Name;
                        info.Class = (CharacterClass)c.Class;
                        rsp.Response.createChar.Characters.Add(info);
                    }
                }
                byte[] mes = PackageHandler.PackMessage(rsp);
                sender.SendData(mes, 0, mes.Length);
            }
        }
示例#18
0
        void OnCharacterCreate(NetConnection <NetSession> sender, UserCreateCharacterRequest request)
        {
            sender.Session.Response.createChar = new UserCreateCharacterResponse();

            TCharacter character = DBService.Instance.Entities.Characters.Where(c => c.Name == request.Name).FirstOrDefault();

            if (character == null)
            {
                character = new TCharacter()
                {
                    Name         = request.Name,
                    Class        = (int)request.Class,
                    TID          = (int)request.Class,
                    MapID        = 1,
                    MapPosX      = 32508,
                    MapPosY      = 39126,
                    MapPosZ      = 2233,
                    MapDirection = 9000,
                    Equiped      = new byte[sizeof(int) * 10],
                    Gold         = 10000,
                    Level        = 1,
                    CGMsgID      = 0
                };
                character = DBService.Instance.Entities.Characters.Add(character);
                sender.Session.TUser.Player.Characters.Add(character);
                DBService.Instance.Entities.SaveChanges();
                sender.Session.Response.createChar.Result   = Result.Success;
                sender.Session.Response.createChar.Errormsg = "None";
                foreach (TCharacter chr in sender.Session.TUser.Player.Characters)
                {
                    NCharacterInfo nCharacterInfo = new NCharacterInfo()
                    {
                        Id    = chr.ID,
                        Name  = chr.Name,
                        Class = chr.Class,
                        Level = chr.Level
                    };
                    sender.Session.Response.createChar.Characters.Add(nCharacterInfo);
                }
            }
            else
            {
                sender.Session.Response.createChar.Result   = Result.Failed;
                sender.Session.Response.createChar.Errormsg = "重复的角色名";
            }

            sender.SendResponse();
        }
示例#19
0
 public Character(CharacterType type, TCharacter cha) :
     base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
 {
     this.Data        = cha;
     this.Info        = new NCharacterInfo();
     this.Info.Type   = type;
     this.Info.Id     = cha.ID;
     this.Info.Name   = cha.Name;
     this.Info.Level  = 1;//cha.Level;
     this.Info.Tid    = cha.TID;
     this.Info.Class  = (CharacterClass)cha.Class;
     this.Info.mapId  = cha.MapID;
     this.Info.Entity = this.EntityData;
     this.ItemManager = new ItemManager(this);
     this.ItemManager.GetItemInfos(this.Info.Items);
     //this.Define = DataManager.Instance.Characters[this.Info.Tid];
 }
示例#20
0
        void OnCreateCharacter(NetConnection <NetSession> sender, UserCreateCharacterRequest request)
        {
            NetMessage message = new NetMessage();

            message.Response            = new NetMessageResponse();
            message.Response.createChar = new UserCreateCharacterResponse();

            TCharacter character = DBService.Instance.Entities.Characters.Where(
                u => u.Name == request.Name).FirstOrDefault();

            if (character != null)
            {
                message.Response.createChar.Result   = Result.Failed;
                message.Response.createChar.Errormsg = "角色名已存在";
                sender.SendData(message);
                return;
            }
            Log.InfoFormat("OnCreateCharacter:昵称{0},角色职业{1}", request.Name, request.Class);
            character         = new TCharacter();
            character.Name    = request.Name;
            character.TID     = (int)request.Class;
            character.MapID   = 1;
            character.Class   = (int)request.Class;
            character.MapPosX = 4700;
            character.MapPosY = 4500;
            character.MapPosZ = 800;
            character         = DBService.Instance.Entities.Characters.Add(character);
            sender.Session.User.Player.Characters.Add(character);
            DBService.Instance.Entities.SaveChanges();

            message.Response.createChar.Result   = Result.Success;
            message.Response.createChar.Errormsg = "none";
            foreach (var c in sender.Session.User.Player.Characters)
            {
                NCharacterInfo info = new NCharacterInfo();
                info.Id    = c.ID;
                info.Name  = c.Name;
                info.Type  = CharacterType.Player;
                info.Class = (CharacterClass)c.Class;
                info.Tid   = c.TID;
                message.Response.createChar.Characters.Add(info);
            }
            sender.SendData(message);
        }
        private void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest message)
        {
            TCharacter dbCharacter = sender.Session.User.Player.Characters.ElementAt(message.characterIdx);

            Log.InfoFormat("UserGameEnterRequest: characterId:{0}:{1} Map:{2}", dbCharacter.ID, dbCharacter.Name, dbCharacter.MapID);



            Character character = CharacterManager.Instance.AddCharacter(dbCharacter); //角色管理器添加角色

            sender.Session.Character     = character;                                  //在会话中绑定当前角色
            sender.Session.PostResponser = character;
            SessionManager.Instance.AddSession(character.Id, sender);
            MapManager.Instance[dbCharacter.MapID].CharacterEnter(sender, character);//调用Map类的角色进入

            sender.Session.Response.gameEnter          = new UserGameEnterResponse();
            sender.Session.Response.gameEnter.Result   = Result.Success;
            sender.Session.Response.gameEnter.Errormsg = "None";



            sender.Session.Response.gameEnter.Character = character.Info;//道具消息

            /* #region 道具测试用例
             * int itemID = 1;
             * bool hasItem = character.ItemManager.HasItem(itemID);
             * Log.InfoFormat("HasItem[{0}]{1}", itemID, hasItem);
             * if (hasItem)
             * {
             *   //character.ItemManager.RemoveItem(itemID, 1);
             * }
             * else
             * {
             *   character.ItemManager.AddItem(1,200);
             *   character.ItemManager.AddItem(2, 100);
             *   character.ItemManager.AddItem(3, 30);
             *   character.ItemManager.AddItem(4, 120);
             * }
             * // Models.Item item = character.ItemManager.GetItem(itemID);
             * // Log.InfoFormat("Item:[{0}][{1}]", itemID, item);
             #endregion*/

            sender.SendResponse();
        }
示例#22
0
        void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest request)
        {
            TCharacter dbchar = sender.Session.User.Player.Characters.ElementAt(request.characterIdx);

            Log.InfoFormat("UserGameEnterRequest: characterID:{0}:{1} Map:{2}", dbchar.ID, dbchar.Name, dbchar.MapID);
            Character character = CharacterManager.Instance.AddCharacter(dbchar);

            SessionManager.Instance.AddSession(character.Id, sender);
            sender.Session.Response.gameEnter          = new UserGameEnterResponse();
            sender.Session.Response.gameEnter.Result   = Result.Success;
            sender.Session.Response.gameEnter.Errormsg = "None";
            //进入成功发送初始角色信息
            sender.Session.Character     = character;
            sender.Session.PostResponser = character;
            sender.Session.Response.gameEnter.Character = character.Info;
            sender.SendResponse();

            MapManager.Instance[dbchar.MapID].CharacterEnter(sender, character);
        }
示例#23
0
        void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest request)
        {
            Log.InfoFormat("UserGameEnterRequest: id: {0}", request.characterId);

            TCharacter tCharacter = DBService.Instance.Entities.Characters.Where((c) => c.ID == request.characterId).FirstOrDefault();
            Character  character  = CharacterManager.Instance.AddCharacter(tCharacter);

            character.ItemManager.GetItemList(character.Info.Items);

            sender.Session.Response.gameEnter           = new UserGameEnterResponse();
            sender.Session.Response.gameEnter.Result    = Result.Success;
            sender.Session.Response.gameEnter.Errormsg  = "None";
            sender.Session.Response.gameEnter.Character = character.Info;

            sender.SendResponse();
            sender.Session.Character = character;

            MapManager.Instance[character.Data.MapID].CharacterEnter(sender, character);
        }
示例#24
0
        void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest request)
        {
            TCharacter dbchar = sender.Session.User.Player.Characters.ElementAt(request.characterIdx);

            Log.InfoFormat("UserGameEnterRequest: characterID:{0}:{1} Map:{2}", dbchar.ID, dbchar.Name, dbchar.MapID);
            Character character = CharacterManager.Instance.AddCharacter(dbchar);

            NetMessage message = new NetMessage();

            message.Response                    = new NetMessageResponse();
            message.Response.gameEnter          = new UserGameEnterResponse();
            message.Response.gameEnter.Result   = Result.Success;
            message.Response.gameEnter.Errormsg = "None";

            byte[] data = PackageHandler.PackMessage(message);
            sender.SendData(data, 0, data.Length);
            sender.Session.Character = character;
            MapManager.Instance[dbchar.MapID].CharacterEnter(sender, character);
        }
示例#25
0
        private void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest request)
        {
            TCharacter tchr      = sender.Session.TUser.Player.Characters.ElementAt(request.characterIdx);
            Character  character = CharacterManager.Instance.AddCharacter(tchr);

            // character.itemManager.AddItem(1, 1);

            sender.Session.Response.gameEnter = new UserGameEnterResponse()
            {
                Result    = Result.Success,
                Errormsg  = "None",
                Character = character.Info
            };
            SessionManager.Instance.AddSession(character.Id, sender);
            sender.SendResponse();
            Log.Info($"OnGameEnter Id: {character.Id} EntityId:{character.Info.EntityId}");
            MapManager.Instance[tchr.MapID].CharacterEnter(sender, character);
            sender.Session.Character     = character;
            sender.Session.postProcesser = character;
        }
示例#26
0
文件: Map.cs 项目: dearQQ/mmorpg
        /// <summary>
        /// 角色进入地图
        /// </summary>
        /// <param name="character"></param>
        internal void CharacterEnter(NetConnection <NetSession> conn, Character character)
        {
            Log.InfoFormat("CharacterEnter: Map:{0} characterId:{1}", this.Define.ID, character.entityId);
            character.Info.mapId = this.ID;
            //通知自己这个地图有多少玩家
            NetMessage message = new NetMessage();

            message.Response = new NetMessageResponse();
            message.Response.mapCharacterEnter       = new MapCharacterEnterResponse();
            message.Response.mapCharacterEnter.mapId = this.ID;
            message.Response.mapCharacterEnter.Characters.Add(character.Info);

            //通知所有玩家我进入地图了
            NetMessage bordcast = new NetMessage();

            bordcast.Response = new NetMessageResponse();
            bordcast.Response.mapCharacterEnter       = new MapCharacterEnterResponse();
            bordcast.Response.mapCharacterEnter.mapId = this.ID;

            foreach (var kv in this.MapCharacters)
            {
                //添加这个地图的所以角色信息
                message.Response.mapCharacterEnter.Characters.Add(kv.Value.character.Info);

                //通知每个玩家我进入地图了
                bordcast.Response.mapCharacterEnter.Characters.Clear();
                bordcast.Response.mapCharacterEnter.Characters.Add(character.Info);
                //给其他玩家发消息
                kv.Value.connection.SendData(bordcast);
            }
            TCharacter tcha = DBService.Instance.Entities.Characters.Where(u => u.Name == character.Info.Name).FirstOrDefault();

            tcha.MapID = character.Info.mapId;
            DBService.Instance.Entities.SaveChanges();

            CharacterManager.Instance.AddCharacter(tcha);

            this.MapCharacters[character.entityId] = new MapCharacter(conn, character);
            //给自己发消息
            conn.SendData(message);
        }
示例#27
0
文件: Map.cs 项目: dearQQ/mmorpg
 internal void UpdateEntity(NEntitySync nEntity)
 {
     foreach (var item in this.MapCharacters)
     {
         if (item.Value.character.entityId == nEntity.Id)
         {
             item.Value.character.Position  = nEntity.Entity.Position;
             item.Value.character.Direction = nEntity.Entity.Direction;
             item.Value.character.Speed     = nEntity.Entity.Speed;
             TCharacter tcha = DBService.Instance.Entities.Characters.Where(u => u.Name == item.Value.character.Info.Name).FirstOrDefault();
             tcha.MapPosX = nEntity.Entity.Position.X;
             tcha.MapPosY = nEntity.Entity.Position.Y;
             tcha.MapPosZ = nEntity.Entity.Position.Z;
             DBService.Instance.Entities.SaveChanges();
         }
         else
         {
             MapService.Instance.SendEntityUpdate(item.Value.connection, nEntity);
         }
     }
 }
示例#28
0
        public Character(CharacterType type, TCharacter cha) :
            base(new Core.Vector3Int(cha.MapPosX, cha.MapPosY, cha.MapPosZ), new Core.Vector3Int(100, 0, 0))
        {
            this.Data = cha;
            this.Id   = cha.ID;

            //init character info
            this.Info        = new NCharacterInfo();
            this.Info.Type   = type;
            this.Info.Id     = cha.ID;
            this.Info.Name   = cha.Name;
            this.Info.Level  = 1;//cha.Level;
            this.Info.Tid    = cha.TID;
            this.Info.Class  = (CharacterClass)cha.Class;
            this.Info.mapId  = cha.MapID;
            this.Info.Entity = this.EntityData;
            this.Info.Gold   = (int)cha.Gold;
            //Init bag
            this.Info.Bag       = new NBagInfo();
            this.Info.Bag.Size  = this.Data.Bag.Size;
            this.Info.Bag.Items = this.Data.Bag.Items;
            //Init equipments
            this.Info.Equip           = new NEquipInfo();
            this.Info.Equip.Equips    = new int[7];
            this.Info.Equip.Equips[0] = this.Data.Equip.Weapon;
            this.Info.Equip.Equips[1] = this.Data.Equip.Accessory;
            this.Info.Equip.Equips[2] = this.Data.Equip.Helmet;
            this.Info.Equip.Equips[3] = this.Data.Equip.Chest;
            this.Info.Equip.Equips[4] = this.Data.Equip.Shoulder;
            this.Info.Equip.Equips[5] = this.Data.Equip.Pants;
            this.Info.Equip.Equips[6] = this.Data.Equip.Boots;

            //get character define from json configuration file
            this.Define = DataManager.Instance.Characters[this.Info.Tid];

            //init item system
            ItemManager = new ItemManager(this);
            ItemManager.GetItemList(Info.Items);
        }
示例#29
0
        private void OnGameLeave(NetConnection <NetSession> sender, UserGameLeaveRequest message)
        {
            Character cha = sender.Session.Character;

            RemoveChara(cha);
            SkillBridge.Message.NetMessage rsp = new NetMessage();
            rsp.Response                  = new NetMessageResponse();
            rsp.Response.gameLeave        = new UserGameLeaveResponse();
            rsp.Response.gameLeave.Result = Result.Success;
            byte[] data = PackageHandler.PackMessage(rsp);
            sender.SendData(data, 0, data.Length);
            TCharacter character = sender.Session.Character.Data;

            character.MapID   = cha.Info.mapId;
            character.MapPosX = cha.EntityData.Position.X;
            character.MapPosY = cha.EntityData.Position.Y;
            character.MapPosZ = cha.EntityData.Position.Z;
            character.MapRotX = cha.EntityData.Direction.X;
            character.MapRotY = cha.EntityData.Direction.Y;
            DBService.Instance.Entities.SaveChangesAsync();
            sender.Session.Character = null;
        }
示例#30
0
        void OnGameEnter(NetConnection <NetSession> sender, UserGameEnterRequest request)
        {
            //根据索引找到这个角色
            TCharacter Tchar = sender.Session.User.Player.Characters.ElementAt(request.characterIdx);

            //加入到CharacterManager
            Character  character = CharacterManager.Instance.AddCharacter(Tchar);
            NetMessage message   = new NetMessage();

            message.Response                     = new NetMessageResponse();
            message.Response.gameEnter           = new UserGameEnterResponse();
            message.Response.gameEnter.Result    = Result.Success;
            message.Response.gameEnter.Errormsg  = "none";
            message.Response.gameEnter.Character = character.Info;


            int  itemId  = 1;
            bool hasItem = character.ItemManager.HasItem(itemId);

            Log.InfoFormat("hasItem{0},{1}", itemId, hasItem);

            if (hasItem)
            {
                character.ItemManager.RemoveItem(itemId, 1);
            }
            else
            {
                character.ItemManager.AddItem(itemId, 2);
            }

            Models.Item item = character.ItemManager.GetItem(itemId);
            Log.InfoFormat("item:{0},count{1}", itemId, item.Count);
            sender.Session.Character = character;
            sender.SendData(message);
            MapManager.Instance[Tchar.MapID].CharacterEnter(sender, character);
        }