Пример #1
0
	// 소환수 출현 정보 수신 함수.
	// 소환수는 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);
	}
Пример #2
0
        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);
            }
        }
Пример #3
0
	// 소환수를 소환한다.
	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);
	}