Example #1
0
        // 데미지, 공격자(어그로 시스템, 공격자 보상)
        // 여러명이 동시에 친다면?
        public virtual void OnDamaged(GameObject attacker, int damage)
        {
            Stat.Hp = Math.Max(Stat.Hp - damage, 0); // -hp방지

            // 모두에게 알린다 -> BroadCasting Packet
            S_ChangeHp changePacket = new S_ChangeHp();

            changePacket.ObjectId = Id;
            changePacket.Hp       = Stat.Hp;
            Room.Broadcast(changePacket); // 방에 있는 모두에게 나 얻어맞았다고 전송

            if (Stat.Hp <= 0)
            {
                Stat.Hp = 0;
                OnDead(attacker);
            }
        }
Example #2
0
    public static void S_ChangeHpHandler(PacketSession session, IMessage packet)
    {
        S_ChangeHp changePacket = packet as S_ChangeHp;

        GameObject go = Managers.Object.FindById(changePacket.ObjectId);

        if (go == null)
        {
            return;
        }

        CreatureController cc = go.GetComponent <CreatureController>();

        if (cc != null)
        {
            cc.Hp = changePacket.Hp;
        }
    }
Example #3
0
        // 데미지 처리 (피해자시점)
        public virtual void OnDamaged(GameObject attecker, int damage)
        {
            // 스텟에서 HP불러와서 damage만큼 깎아주기
            damage  = Math.Max(damage - TotalDefence, 0);
            Stat.Hp = Math.Max(Stat.Hp - damage, 0);

            // 깎인체력을 룸안에 브로드캐스팅
            S_ChangeHp changePacket = new S_ChangeHp();

            changePacket.ObjectId = Id;
            changePacket.Hp       = Stat.Hp;
            Room.Broadcast(CellPos, changePacket);

            if (Stat.Hp <= 0)
            {
                OnDead(attecker);
            }
        }
        public virtual void OnDamaged(GameObject attacker, int damage)
        {
            if (Room == null)
            {
                return;
            }

            Stat.Hp = Math.Max(Stat.Hp - damage, 0);

            S_ChangeHp changePacket = new S_ChangeHp();

            changePacket.ObjectId = Id;
            changePacket.Hp       = Stat.Hp;
            Room.Broadcast(changePacket);

            if (Stat.Hp <= 0)
            {
                OnDead(attacker);
            }
        }
Example #5
0
    public static void S_ChangeHpHandler(PacketSession session, IMessage packet)
    {
        S_ChangeHp changePacket = packet as S_ChangeHp;

        // 여기서 찾은 PlayerId가 꼭 나라는 보장은 없다. 스킬은 아무나 쓰니깐
        GameObject go = Managers.Object.FindById(changePacket.ObjectId);

        if (go == null)
        {
            return;
        }

        CreatureController cc = go.GetComponent <CreatureController>();

        if (cc != null)
        {
            // 체력을 깎자
            cc.Hp = changePacket.Hp;             // ui 갱신도 같이 됨
            // UI 갱신
            Debug.Log($"ChangeHP : {changePacket.Hp}");
        }
    }
Example #6
0
 public static void S_ChangeHpHandler(PacketSession session, IMessage packet) // 누군가의 HP 가 줄어듦
 {
     S_ChangeHp changePacket = packet as S_ChangeHp;
 }