// 소환수 출현 정보 수신 함수. // 소환수는 PartyControl 클래스에서 관리하게 되었으므로. // 이쪽으로 이동. public void OnReceiveSummonPacket(int node, PacketId id, byte[] data) { SummonPacket packet = new SummonPacket(data); SummonData summon = packet.GetPacket(); string log = "[CLIENT] Receive summon packet: " + summon.summon; Debug.Log(log); if (this.beast != null) { // 이미 나타났므로 수신 패킷은 무시. Debug.Log("[CLIENT] Beast is already summoned."); return; } // 소환수 출현. this.summonBeast(summon.summon); }
public void ShowObjects(Character chr) { if (HasClock) { MapPacket.SendMapClock(chr, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); } if (chr.Pets.GetEquippedPet() != null) { Pet pet = chr.Pets.GetEquippedPet(); pet.Position = new Pos(chr.Position); pet.Foothold = chr.Foothold; pet.Stance = 0; } chr.Pets.SpawnPet(); Characters.ForEach(p => { if (p != chr) { MapPacket.SendCharacterEnterPacket(p, chr); MapPacket.SendCharacterEnterPacket(chr, p); p.Pets.SpawnPet(chr); if (p.Summons.mSummon != null) { SummonPacket.SendShowSummon(p, p.Summons.mSummon, false, chr); } if (p.Summons.mPuppet != null) { SummonPacket.SendShowSummon(p, p.Summons.mPuppet, false, chr); } } }); Life[(int)SpawnTypes.Npc].ForEach(n => { MapPacket.ShowNPC(n, chr); }); Mobs.ForEach(m => { if (m.HP != 0) { if (m.ControlStatus == MobControlStatus.ControlNone) { UpdateMobControl(m, true, chr); } else { MobPacket.SendMobSpawn(chr, m, 0, null, false, true); UpdateMobControl(m, false, null); } } }); foreach (KeyValuePair <int, Drop> drop in Drops) { drop.Value.ShowDrop(chr); } if (mWeatherID != 0) { MapPacket.SendWeatherEffect(ID, chr); } }
// 소환수를 소환한다. public void notifySummonBeast(Character.BEAST_TYPE beast_type) { string beast_name = ""; do { if(this.beast != null) { break; } switch(beast_type) { case Character.BEAST_TYPE.DOG: { beast_name = "Dog"; } break; case Character.BEAST_TYPE.NEKO: { beast_name = "Neko"; } break; } if(beast_name == "") { break; } // 소환수 출현 알림. if (m_network != null) { SummonData data = new SummonData(); data.summon = beast_name; SummonPacket packet = new SummonPacket(data); int serverNode = m_network.GetServerNode(); m_network.SendReliable<SummonData>(serverNode, packet); Debug.Log("[CLIENT] send summon beast:" + beast_name); } } while(false); }