// Start is called before the first frame update void Start() { isAi = gameObject.transform.GetChild(7).gameObject.activeSelf; if (isAi) { Debug.Log("I am AI"); enemyAttack = gameObject.GetComponent <CAttack>(); player = GameObject.FindGameObjectWithTag("Player"); rb = gameObject.GetComponent <Rigidbody2D>(); cmove = gameObject.GetComponent <CharMovement>(); chooseWalk(); jump(); crouch(); } }
public async Task CAttack(GSSession session, CAttack message) { var target = message.Number.ShufleEnding(); var Dir = message.DirDis & 0x0F; var Dis = (message.DirDis & 0xF0) >> 4; //Logger.ForAccount(session) // .Debug("Attack {0} {1}:{2} {3}", message.AttackAction, Dir, Dis, target); session.Player.Character.Direction = message.DirDis; if (target >= MonstersMng.MonsterStartIndex) // Is Monster { try { var monster = MonstersMng.Instance.GetMonster(target); if (monster.Life <= 0) { return; } await session.Player.SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, target)); if (monster.Type == ObjectType.NPC) { Logger.ForAccount(session) .Error("NPC Can't be attacked"); return; } DamageType type; var attack = session.Player.Character.Attack(monster, out type); await monster.GetAttacked(session.Player, attack, type); } catch (Exception ex) { Logger.ForAccount(session) .Error(ex, "Invalid monster #{0}", target); } } else { } }
public async Task CAttack(GSSession session, CAttack message) { var targetId = message.Number; var Dir = message.DirDis & 0x0F; var Dis = (message.DirDis & 0xF0) >> 4; session.Player.Character.Direction = message.DirDis; if (message.Number >= MonstersMng.MonsterStartIndex) // Is Monster { try { var monster = MonstersMng.Instance.GetMonster(targetId); if (monster.Life <= 0) { return; } session.Player.SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, targetId)); if (monster.Type == ObjectType.NPC) { return; } DamageType type; var attack = session.Player.Character.Attack(monster, out type); var eAttack = await session.Player.Character.PentagramAttack(monster); await monster.GetAttacked(session.Player, attack, type, eAttack); } catch (Exception ex) { Logger.ForAccount(session) .Error(ex, "Invalid monster #{0}", targetId); } } else { try { var target = Program.server.Clients.First(x => x.ID == targetId); if (target.Player.Character.Health <= 0.0f) { return; } var rivals = session.Player.Character.Duel == target.Player.Character.Duel; if (!(Program.XMLConfiguration.GamePlay.PVP || rivals)) { return; } /*await session.Player * .SendV2Message(new SAction((ushort)session.ID, message.DirDis, message.AttackAction, targetId));*/ var attack = session.Player.Character .Attack(target.Player.Character, out DamageType type); var eattack = await session.Player.Character .PentagramAttack(target.Player.Character); await target.Player.Character .GetAttacked((ushort)session.ID, message.DirDis, message.AttackAction, attack, type, Spell.None, eattack); } catch (Exception ex) { Logger.ForAccount(session) .Error(ex, "Invalid player #{0}", targetId); } } }