Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
KO Developers Platformuna Hoşgeldin!
vestside

JURAID mountain Hakkında

Önerilen Mesajlar

Herkese Iyi Forumlar Arkadaşlar; başlıktan da anlaşılacağı üzere JR problemi var. saati gelince NPC ile konusuyorum içeriye alıyor. 1 saat geriye doğru sayıyor ve slotlardaki monsterlar yerlerinde yalnız kestikten sonra kapı açılmıyor ayrıca GM charla ışınlanıp DEVA kesiyorum JR i bitirmiyor. SRC tarafında sıkıntı var yalnız çözemedim.. farklı SRC dan paketi olduğu gibi kendi SRC ma göre uyarladım çok paket olduğu için çıkamadım işin içinden 100 den fazla hata veriyor her denememde, tam olarak bu iki problem için nereye bakmam gerekiyor oraya yoğunlaşayım.

şimdiden teşekkürler.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

o zaman eğer bu ssid'si bu zoneler içerisinde kesilirse paket bitişini gönder ufak bir küçük kontrol koy kolay gelsin

 


tam olarak ne demek istediğini anlamadım hocam ama sanırım bendeki SRC larda handlejuraidkill paketi eksik olduğu için JR problemli onuda eklemeye çalıştığım zaman bir dünya hata ile karşılaşıyorum.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

Charactermovement.cpp de ZoneChange bölümünde

if (!isEventUser() && !isGM())
g_pMain->AddEventUser(this);

if(!isGM())
g_pMain->SetEventUser(this);

diye bölüm vardır ordan !isGM() yazılarını silmen lazım yada user charla denersen silmene gerek olmaz.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

Charactermovement.cpp de ZoneChange bölümünde

if (!isEventUser() && !isGM())
g_pMain->AddEventUser(this);

if(!isGM())
g_pMain->SetEventUser(this);

diye bölüm vardır ordan !isGM() yazılarını silmen lazım yada user charla denersen silmene gerek olmaz.

 


user karakterle deneyeceğim dönüş yaparım kardeşim teşekkürler yorumun için.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

Deva kesince bitmesi için ayrı bir fonksiyon bulunabilir. TempleEventFinish'i çağıran fonksiyonları kontrol et deva kesildiğinde event bitmesi için yada TempleEventKickOutUser tarzı bir fonksiyon da çağırabilir userları mapden atması için o mantıktan yola çıkabilirsin.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

Deva kesince bitmesi için ayrı bir fonksiyon bulunabilir. TempleEventFinish'i çağıran fonksiyonları kontrol et deva kesildiğinde event bitmesi için yada TempleEventKickOutUser tarzı bir fonksiyon da çağırabilir userları mapden atması için o mantıktan yola çıkabilirsin.

 

 


hocam SRC içerisinde söyle bir paket var.

 

 

 

}

					if (m_DevakillSecond == DEVA_KILL_TIME && pTempleEvent.isActive)

					{

						TempleEventFinish(i, pTempleEvent.DevaNation[i]);

						m_DevakillSecond = 0;

						pTempleEvent.isDevaControl[i] = false;

					}







ayrıca buda sanırım JR ile ilgili bir paket.

 

 

 

if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)

		{

			for (int i = 0; i < JURAD_MOUNTAIN_EVENT_COUNT; i++)

			{

				if (nHour == m_nJuraidTime[i] && nMinute == 10 && !pTempleEvent.isActive)

				{

					m_nTempleEventRemainSeconds = 0;

					pTempleEvent.LastEventRoom = 1;

					pTempleEvent.isActive = true;

					JuraidTempleEventStart(); // Set RemainSeconds to zero

					Announcement(IDS_JURAD_EVENT_OPEN);

					TempleEventTeleportUsers();

					TempleEventSummon();

										break;

				}

				else if (nHour == m_nJuraidTime[i] && nMinute == 11 && !pTempleEvent.isAttackable)

				{

					pTempleEvent.isAttackable = true;

					break;

				}

				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && pTempleEvent.isAttackable)

				{

					TerminationFinish();

					pTempleEvent.isAttackable = false;

					break;

				}

				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 20 && pTempleEvent.isActive)

				{

					TempleEventFinish(0, 0);

					break;

				}

			}

		}

	}

}

 



# TempleEventKickOutUser paketi ise söyle;

 

 

 

 

void CGameServerDlg::TempleEventKickOutUser(CUser *pUser)

{

	if (pUser == nullptr

		|| !pUser->isInGame())

		return;



	uint8 nZoneID = 0;



	if (pUser->GetZoneID() == ZONE_BORDER_DEFENSE_WAR) {

		if (pUser->GetLevel() <  35)

			nZoneID = ZONE_MORADON;

		else

			nZoneID = pUser->GetNation();

	}

	else if (pUser->GetZoneID() == ZONE_CHAOS_DUNGEON)

	{

		if (pUser->GetLevel() <  35)

			nZoneID = ZONE_MORADON;

		else if (pUser->GetLevel() >= 35 && pUser->GetLevel() <= 59)

			nZoneID = ZONE_MORADON;

		else if (pUser->GetLevel() >= 60 && pUser->GetLevel() <= 69)

			nZoneID = ZONE_MORADON;

		else if (pUser->GetLevel() >= 70)

			nZoneID = ZONE_MORADON;

	}

	else if (pUser->GetZoneID() == ZONE_JURAD_MOUNTAIN) {

		nZoneID = pUser->GetNation() + 10;

	}

	if (nZoneID == 0)

		return;



	_START_POSITION * pStartPosition = GetStartPosition(nZoneID);



	if (pStartPosition == nullptr)

	{

		TRACE("### TempleEventKickOutUser - StartPosition not found : Zone ID=%d", nZoneID);

		return;

	}



	pUser->ZoneChange(nZoneID, 0.0f, 0.0f);

}

İletiyi paylaş


Link to post
Sitelerde Paylaş

Npc.CPP içerisinde void CNpc::OnDeathProcess(Unit *pKiller) paketinde.
 

if (pNpc == nullptr)

 


ile başlayan yerlere {} ile kapatıyoruz. daha sonra kesince atması içinde;

 

 

 

 

	if (GetProtoID() == 8106 && /* pUser->isDevaKilled() &&*/ pUser->GetZoneID() == ZONE_JURAD_MOUNTAIN)

	{

		pUser->ZoneChange(21, 0.0f, 0.0f); // 0.0f default db değer.

		pUser->GiveItem(ITEM_MONSTER_STONE, 1, true);

 




MyCODESEAT ve CENGLYY e teşekkürü borç bilirim..

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Misafir
Bu konu kapalıdır ama konuya cevap yazmaya yetkiniz var görünüyor.

×
×
  • Yeni Oluştur...