Exemplo n.º 1
0
        public void HandleAttack(Player player, Pbmsg.AttackReq reqMsg)
        {
            Role roleTarget = RoleMgr.Instance().GetRoleBySessionID(reqMsg.Targetid);

            if (roleTarget == null)
            {
                return;
            }
            Pbmsg.AttackRet retMsg = new Pbmsg.AttackRet()
            {
                Id       = player.GetID(),
                Targetid = reqMsg.Targetid,
                Magicid  = reqMsg.Magicid,
            };
            FFWorker.Instance().GateBroadcastMsg((int)Pbmsg.ServerCmdDef.SAttack, retMsg);
            Random rd         = new Random();
            int    hpChaneged = rd.Next(1, roleTarget.maxhp / 10);

            //hpChaneged = 1;

            if (roleTarget.hp >= hpChaneged)
            {
                roleTarget.hp -= hpChaneged;
            }
            else
            {
                roleTarget.hp = 0;
            }
            Pbmsg.HPChangedRet retMsg2 = new Pbmsg.HPChangedRet()
            {
                Id         = roleTarget.GetID(),
                Magicid    = reqMsg.Magicid,
                ValCur     = roleTarget.hp,
                ValChanged = hpChaneged,
            };
            FFWorker.Instance().GateBroadcastMsg((int)Pbmsg.ServerCmdDef.SHpChanged, retMsg2);
            roleTarget.nLastAttackedTime = Util.GetNowTimeMs();

            if (roleTarget is Monster)
            {
                Monster monster = roleTarget as Monster;
                monster.direction           = (player.direction + 4) % 8;
                monster.nLastAttackedRoleID = player.GetID();
                if (monster.hp == 0)
                {
                    Pbmsg.LeaveMapRet leaveMsg = new Pbmsg.LeaveMapRet()
                    {
                        Id = roleTarget.GetID(),
                    };
                    FFWorker.Instance().GateBroadcastMsg((int)Pbmsg.ServerCmdDef.SLeaveMap, leaveMsg);
                }
            }
        }
Exemplo n.º 2
0
        public void HandleAttack(Player player, Pbmsg.AttackReq reqMsg)
        {
            Role roleTarget = getRoleBySessionID(reqMsg.Targetid);

            if (roleTarget == null)
            {
                return;
            }
            Pbmsg.AttackRet retMsg = new Pbmsg.AttackRet()
            {
                Id       = player.getID(),
                Targetid = reqMsg.Targetid,
                Magicid  = reqMsg.Magicid,
            };
            BroadcastPlayerMsg <Pbmsg.AttackRet>(Pbmsg.ServerCmdDef.SAttack, retMsg);
            Random rd         = new Random();
            int    hpChaneged = 1 + rd.Next() % 5;

            if (roleTarget.hp >= hpChaneged)
            {
                roleTarget.hp -= hpChaneged;
            }
            else
            {
                roleTarget.hp = 0;
            }
            int hpNow = roleTarget.hp;

            Pbmsg.HPChangedRet retMsg2 = new Pbmsg.HPChangedRet()
            {
                Id         = roleTarget.getID(),
                Magicid    = reqMsg.Magicid,
                ValCur     = hpNow,
                ValChanged = hpChaneged,
            };
            BroadcastPlayerMsg <Pbmsg.HPChangedRet>(Pbmsg.ServerCmdDef.SHpChanged, retMsg2);

            if (roleTarget is Monster && hpChaneged <= 3)
            {
                Monster monster = roleTarget as Monster;
                monster.direction = (player.direction + 4) % 8;
                Pbmsg.AttackRet monsterAttackMsg = new Pbmsg.AttackRet()
                {
                    Id       = monster.getID(),
                    Targetid = player.getID(),
                };
                BroadcastPlayerMsg <Pbmsg.AttackRet>(Pbmsg.ServerCmdDef.SAttack, monsterAttackMsg);

                roleTarget = player;
                if (roleTarget.hp >= hpChaneged)
                {
                    roleTarget.hp -= hpChaneged;
                }
                else
                {
                    roleTarget.hp = 0;
                }
                hpNow = roleTarget.hp;
                Pbmsg.HPChangedRet retMsg3 = new Pbmsg.HPChangedRet()
                {
                    Id         = roleTarget.getID(),
                    ValCur     = hpNow,
                    ValChanged = hpChaneged,
                };
                BroadcastPlayerMsg <Pbmsg.HPChangedRet>(Pbmsg.ServerCmdDef.SHpChanged, retMsg3);
            }
        }