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); } } }
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); } }