Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
KODevelopers

21xx Bdw giremiyorum.

Önerilen Mesajlar

 
MAX_LEVEL_1=83
MAX_LEVEL_2=83
MAX_LEVEL_3=83
MAX_LEVEL_4=83
MAX_LEVEL_5=83
MIN_LEVEL_1=35
MIN_LEVEL_2=35
MIN_LEVEL_3=35
MIN_LEVEL_4=35
MIN_LEVEL_5=35

 


@ CerfiN

bunla ekledim de .ini de bağlı cünkü gene aynı olmadı bakmayı çalışıyorum.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
void CGameServerDlg::TempleEventTimer()
{
	uint32 nHour = g_localTime.tm_hour;
	uint32 nMinute = g_localTime.tm_min;
	uint32 nSeconds = g_localTime.tm_sec;
	std::string RemainNotice;

	if (m_nTempleEventRemainSeconds > 0)
		m_nTempleEventRemainSeconds--;

	if (pTempleEvent.ActiveEvent == -1)
	{
		for (int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
		{
			if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 0) 
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_BORDER_DEFENCE_WAR;
				pTempleEvent.ZoneID = ZONE_BORDER_DEFENSE_WAR;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				TempleEventStart();
				break;
			} 
		}

		for (int i = 0; i < CHAOS_EVENT_COUNT; i++)
		{
			if (nHour == m_nChaosTime[i] && nMinute == 0)
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_CHAOS;
				pTempleEvent.ZoneID = ZONE_CHAOS_DUNGEON;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				TempleEventStart();
				break;		
			}  
		}
		
		for (int i = 0; i < JURAD_MOUNTAIN_EVENT_COUNT; i++)
		{
			if (nHour == m_nJuraidTime[i] && nMinute == 5) 
			{
				Announcement(IDS_JURAD_EVENT_NOTICE);
			}
			if (nHour == m_nJuraidTime[i] && nMinute == 0) 
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_JURAD_MOUNTAIN;
				pTempleEvent.ZoneID = ZONE_JURAD_MOUNTAIN;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				JuraidTempleEventStart();
				break;
			}  
		}
	}
	
	else if (pTempleEvent.ActiveEvent != -1)
	{
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
		{
			for(int i = 0 ; i < MAX_TEMPLE_EVENT_ROOM ; i++)
			{
				if(pTempleEvent.m_sMiniTimerNation[i] == 0)
					continue;

				if(pTempleEvent.m_sBdwMiniTimer[i]-- != 0 )
					continue;

				TempleEventFinish(i,pTempleEvent.m_sMiniTimerNation[i]);
			}
			for(int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
			{
				if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 10 && nSeconds == 0)
				{
					m_nTempleEventRemainSeconds = 0; 
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					TempleEventStart();
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 11 && nSeconds == 0)   
				{
					pTempleEvent.isAttackable = true;
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 0)   
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 20) 
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr 
							|| !pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 30)
				{
					printf("BORDER DEFANSE WAR TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_CHAOS)
		{
			for(int i = 0; i < CHAOS_EVENT_COUNT; i++)
			{
				if (nHour == m_nChaosTime[i] && nMinute == 10 && nSeconds == 0) 
				{
					m_nTempleEventRemainSeconds = 0;
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					TempleEventStart(); // Set RemainSeconds to zero
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 11 && nSeconds == 0) 
				{
					pTempleEvent.isAttackable = true;
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 0) 
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 20)
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr ||
							!pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 30)
				{
					printf("CHAOS EXPANSION TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
		{
			for(int i = 0; i < JURAD_MOUNTAIN_EVENT_COUNT; i++)
			{
				if (nHour == m_nJuraidTime[i] && nMinute == 10 && nSeconds == 0)
				{
					m_nTempleEventRemainSeconds = 0; 
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					JuraidTempleEventStart();
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 11 && nSeconds == 0)   
				{
					pTempleEvent.isAttackable = true;
					break;
				}

				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 0)   
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 20) 
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr || 
							!pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 30)
				{
					printf("JURAID MOUNTION TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		
	}
}

 


@ EveryBodyFool Bakarmısın

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

void CGameServerDlg::TempleEventTimer()
{
	uint32 nHour = g_localTime.tm_hour;
	uint32 nMinute = g_localTime.tm_min;
	uint32 nSeconds = g_localTime.tm_sec;
	std::string RemainNotice;

	if (m_nTempleEventRemainSeconds > 0)
		m_nTempleEventRemainSeconds--;

	if (pTempleEvent.ActiveEvent == -1)
	{
		for (int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
		{
			if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 0) 
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_BORDER_DEFENCE_WAR;
				pTempleEvent.ZoneID = ZONE_BORDER_DEFENSE_WAR;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				TempleEventStart();
				break;
			} 
		}

		for (int i = 0; i < CHAOS_EVENT_COUNT; i++)
		{
			if (nHour == m_nChaosTime[i] && nMinute == 0)
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_CHAOS;
				pTempleEvent.ZoneID = ZONE_CHAOS_DUNGEON;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				TempleEventStart();
				break;		
			}  
		}
		
		for (int i = 0; i < JURAD_MOUNTAIN_EVENT_COUNT; i++)
		{
			if (nHour == m_nJuraidTime[i] && nMinute == 5) 
			{
				Announcement(IDS_JURAD_EVENT_NOTICE);
			}
			if (nHour == m_nJuraidTime[i] && nMinute == 0) 
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_JURAD_MOUNTAIN;
				pTempleEvent.ZoneID = ZONE_JURAD_MOUNTAIN;
				m_nTempleEventRemainSeconds = 600; // 10 minutes
				JuraidTempleEventStart();
				break;
			}  
		}
	}
	
	else if (pTempleEvent.ActiveEvent != -1)
	{
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
		{
			for(int i = 0 ; i < MAX_TEMPLE_EVENT_ROOM ; i++)
			{
				if(pTempleEvent.m_sMiniTimerNation[i] == 0)
					continue;

				if(pTempleEvent.m_sBdwMiniTimer[i]-- != 0 )
					continue;

				TempleEventFinish(i,pTempleEvent.m_sMiniTimerNation[i]);
			}
			for(int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
			{
				if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 10 && nSeconds == 0)
				{
					m_nTempleEventRemainSeconds = 0; 
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					TempleEventStart();
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 11 && nSeconds == 0)   
				{
					pTempleEvent.isAttackable = true;
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 0)   
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 20) 
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr 
							|| !pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 40 && nSeconds == 30)
				{
					printf("BORDER DEFANSE WAR TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_CHAOS)
		{
			for(int i = 0; i < CHAOS_EVENT_COUNT; i++)
			{
				if (nHour == m_nChaosTime[i] && nMinute == 10 && nSeconds == 0) 
				{
					m_nTempleEventRemainSeconds = 0;
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					TempleEventStart(); // Set RemainSeconds to zero
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 11 && nSeconds == 0) 
				{
					pTempleEvent.isAttackable = true;
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 0) 
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 20)
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr ||
							!pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nChaosTime[i] && nMinute == 30 && nSeconds == 30)
				{
					printf("CHAOS EXPANSION TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		if (pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
		{
			for(int i = 0; i < JURAD_MOUNTAIN_EVENT_COUNT; i++)
			{
				if (nHour == m_nJuraidTime[i] && nMinute == 10 && nSeconds == 0)
				{
					m_nTempleEventRemainSeconds = 0; 
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					JuraidTempleEventStart();
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 11 && nSeconds == 0)   
				{
					pTempleEvent.isAttackable = true;
					break;
				}

				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 0)   
				{
					TerminationFinish();
					pTempleEvent.isAttackable = false;
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 20) 
				{
					foreach_stlmap (itr, m_TempleEventUserArray)
					{
						CUser * pUser = GetUserPtr(itr->second->m_socketID);
						if (pUser == nullptr || 
							!pUser->isInGame())	
							continue;
						
						TempleEventFinish(pUser->GetEventRoom(),pUser->GetNation());
					}
					break;
				}
				else if (nHour == m_nJuraidTime[i] && nMinute == 50 && nSeconds == 30)
				{
					printf("JURAID MOUNTION TUM KANALLAR KAPATILDI !
");
					TempleEventReset();
					break;
				}
			}
		}
		
	}
}

 


@ EveryBodyFool Bakarmısın

 

 


Buradaki timer ile join butonunun bir alakası yok join butonuna bastığında gelen packet işleme giriyor orayı göster.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

void CUser::TempleEventJoin()

{

	if (g_pMain->pTempleEvent.ActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN && !isEventUser())

	{

		C3DMap * pMap = g_pMain->GetZoneByID(ZONE_JURAD_MOUNTAIN);



		if (pMap == nullptr) 

			return;



		WarpListResponse errorReason;

		if (!CanChangeZone(pMap, errorReason))

		{

			Packet hata(WIZ_WARP_LIST, uint8(2));



			hata << uint8(errorReason);



			if (errorReason == WarpListMinLevel)

				hata << pMap->GetMinLevelReq();



			if (g_pMain->pTempleEvent.ActiveEvent != -1 && GetLevel() < 70)

				Send(&hata);

			return;

		}



		Packet result (WIZ_SELECT_MSG);

		TempleOperations(TEMPLE_EVENT_JOIN);

		result << uint16(0x00) << uint8(0x07) << uint64(0x00) << uint32(0x06) << g_pMain->pTempleEvent.KarusUserCount << uint16(0x00) << g_pMain->pTempleEvent.ElMoradUserCount << uint16(0x00) << g_pMain->m_nTempleEventRemainSeconds << uint16(0x00);

		g_pMain->Send_All(&result);

	}

	else

		return;



}

 


@ CerfiN bunu mu diyorsun ?

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin

Alt tarafta anlatımını yaptığım kodlar herkes için geçerli olan sourcelerin içinden bakıp alınmıştır.
Eğer ki sistemim farklı diyorsan gidip kendin yazmışsın demektir burada kendi yazdığın hakkında bilgi isteyemezsin.
Yok efendim ben kendim yazmadım kodlar senin verdiğin ile aynı diyorsan bu saatten sonra cevap atan olursa hakkında işlem yapacağım haberiniz olsun.
Kimse yardım etmeyecek kendi çözecektir.

void CUser::TempleProcess(Packet &pkt )
bu fonksiyona clientten gelen packetler düşüyor.

case TEMPLE_EVENT_JOIN:
TempleOperations(opcode);
break;
aynı fonksiyon içerisinde switch ile opcode ayırıp TempleOperations fonksiyonuna join opcode olarak atıyor.

void CUser::TempleOperations(uint8 bType)
bu fonksiyon da ise şuan aktif olan evente göre senin o evente girebilecek misin yada giremeyecek misin kontrollerini sağlıyor.

Gerisi sana kalmış hala çözemedim yada çözemiyorum dersen bi daha açtığın yardım konuları silinecektir. İleri ye gidersen bende ileriye giderim haberin olsun.

Sana böyle davranmamın sebebi;
-> Ben anticheat yazıyorum yada dosya yazıyorum diye milleti küçümsüyorsun. Bana özel mesaj atmayın kendiniz yapın demesini biliyorsun.
-> İşine geldiğinde kendini acındırmasını biliyorsun ben söyleyim ben böyleyim bana yardım etmiyorsunuz diyorsun ama millete demediğini yapmadığını bırakmıyorsun.
-> Yardım istemeden önce kendine bişeyler katmaya çalışmıyorsun.
Benim söyle sorunum var diyip .cpp dosyasını olduğu gibi atıyorsun ve "Bunu düzeltip verir misin?" demeyi ayrıca "Teamviever vereyim gelin düzeltin" demesini biliyorsun ama gel gelelim yardım edilen şeye yada yazılan her hangi bir satır koda merak edip burası nasıl olmuş.
Özkan canım, Özkan abi gel ben şurasını anlamadım bana anlatır mısın?
Şu satır kod ne işe yarar? O yazdığın fonksiyon nedir ne yapar?
Niye oraya öyle static class açtın neden yaptın?
Bu tarz soruları bir kere olsun sormadığın için ve bilmişlik tasladığın için sana böyle davranıyorum.
Bir an önce kendine çeki düzen ver.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

ini ye lvl sınırı yazdırmıs olmayasın 🙂

 

 

 

 

 


	if (pTempleEvent.ActiveEvent == -1)
	{
		for (int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
		{
			if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 0) 
			{
				pTempleEvent.ActiveEvent = TEMPLE_EVENT_BORDER_DEFENCE_WAR;
				pTempleEvent.ZoneID = ZONE_BORDER_DEFENSE_WAR;

				pTempleEvent.m_nBorderDefenseWarPrizeWonItemNo1 = m_nBorderDefenseWarPrizeWonItemNo1[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonItemNo2 = m_nBorderDefenseWarPrizeWonItemNo2[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonItemNo3 = m_nBorderDefenseWarPrizeWonItemNo3[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonItemNo4_K = m_nBorderDefenseWarPrizeWonItemNo4_K[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonItemNo4_H = m_nBorderDefenseWarPrizeWonItemNo4_H[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonLoyalty = m_nBorderDefenseWarPrizeWonLoyalty[i];
				pTempleEvent.m_nBorderDefenseWarPrizeWonKnightCash = m_nBorderDefenseWarPrizeWonKnightCash[i];
				pTempleEvent.m_nBorderDefenseWarPrizeLoserKnightCash = m_nBorderDefenseWarPrizeLoserKnightCash[i];
				pTempleEvent.m_nBorderDefenseWarPrizeLoserLoyalty = m_nBorderDefenseWarPrizeLoserLoyalty[i];
				pTempleEvent.m_nBorderDefenseWarPrizeLoserItem = m_nBorderDefenseWarPrizeLoserItem[i];
				pTempleEvent.m_nBorderDefenseWarMAXLEVEL = m_nBorderDefenseWarMAXLEVEL[i];
				pTempleEvent.m_nBorderDefenseWarMINLEVEL = m_nBorderDefenseWarMINLEVEL[i];

				m_nTempleEventRemainSeconds = 600; // 10 minutes
				TempleEventStart();
				break;
			} 
		}

 

 

 

	for (int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
	{
		m_nBorderDefenseWarTime[i] = ini.GetInt("BDW",string_format("START_TIME%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonItemNo1[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE1_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonItemNo2[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE2_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonItemNo3[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE3_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonItemNo4_K[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE4KARUS_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonItemNo4_H[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE4HUMAN_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonLoyalty[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE_LOYALTY_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeWonKnightCash[i] = ini.GetInt("BDW",string_format("ITEM_WON_PRIZE_KC_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeLoserKnightCash[i] = ini.GetInt("BDW",string_format("ITEM_LOSE_PRIZE_KC_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeLoserLoyalty[i] = ini.GetInt("BDW",string_format("ITEM_LOSE_PRIZE_LOYALTY_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarPrizeLoserItem[i] = ini.GetInt("BDW",string_format("ITEM_LOSE_PRIZE_ITEM_%d",i+1).c_str(), 0);
		m_nBorderDefenseWarMAXLEVEL[i] = ini.GetInt("BDW",string_format("MAX_LEVEL_%d",i+1).c_str(), 80);
		m_nBorderDefenseWarMINLEVEL[i] = ini.GetInt("BDW",string_format("MIN_LEVEL_%d",i+1).c_str(), 1);

	}

 

 

 

[BDW]
ITEM_LOSE_PRIZE_ITEM_1=0
ITEM_LOSE_PRIZE_ITEM_2=0
ITEM_LOSE_PRIZE_ITEM_3=0
ITEM_LOSE_PRIZE_ITEM_4=0
ITEM_LOSE_PRIZE_ITEM_5=0
ITEM_LOSE_PRIZE_KC_1=0
ITEM_LOSE_PRIZE_KC_2=0
ITEM_LOSE_PRIZE_KC_3=0
ITEM_LOSE_PRIZE_KC_4=0
ITEM_LOSE_PRIZE_KC_5=0
ITEM_LOSE_PRIZE_LOYALTY_1=0
ITEM_LOSE_PRIZE_LOYALTY_2=0
ITEM_LOSE_PRIZE_LOYALTY_3=0
ITEM_LOSE_PRIZE_LOYALTY_4=0
ITEM_LOSE_PRIZE_LOYALTY_5=0
ITEM_WON_PRIZE1_1=0
ITEM_WON_PRIZE1_2=0
ITEM_WON_PRIZE1_3=0
ITEM_WON_PRIZE1_4=0
ITEM_WON_PRIZE1_5=0
ITEM_WON_PRIZE2_1=0
ITEM_WON_PRIZE2_2=0
ITEM_WON_PRIZE2_3=0
ITEM_WON_PRIZE2_4=0
ITEM_WON_PRIZE2_5=0
ITEM_WON_PRIZE3_1=0
ITEM_WON_PRIZE3_2=0
ITEM_WON_PRIZE3_3=0
ITEM_WON_PRIZE3_4=0
ITEM_WON_PRIZE3_5=0
ITEM_WON_PRIZE4HUMAN_1=0
ITEM_WON_PRIZE4HUMAN_2=0
ITEM_WON_PRIZE4HUMAN_3=0
ITEM_WON_PRIZE4HUMAN_4=0
ITEM_WON_PRIZE4HUMAN_5=0
ITEM_WON_PRIZE4KARUS_1=0
ITEM_WON_PRIZE4KARUS_2=0
ITEM_WON_PRIZE4KARUS_3=0
ITEM_WON_PRIZE4KARUS_4=0
ITEM_WON_PRIZE4KARUS_5=0
ITEM_WON_PRIZE_KC_1=0
ITEM_WON_PRIZE_KC_2=0
ITEM_WON_PRIZE_KC_3=0
ITEM_WON_PRIZE_KC_4=0
ITEM_WON_PRIZE_KC_5=0
ITEM_WON_PRIZE_LOYALTY_1=0
ITEM_WON_PRIZE_LOYALTY_2=0
ITEM_WON_PRIZE_LOYALTY_3=0
ITEM_WON_PRIZE_LOYALTY_4=0
ITEM_WON_PRIZE_LOYALTY_5=0
MAX_LEVEL_1=83
MAX_LEVEL_2=83
MAX_LEVEL_3=83
MAX_LEVEL_4=83
MAX_LEVEL_5=83
MIN_LEVEL_1=35
MIN_LEVEL_2=35
MIN_LEVEL_3=35
MIN_LEVEL_4=35
MIN_LEVEL_5=35
START_TIME1=0
START_TIME2=0
START_TIME3=0
START_TIME4=0
START_TIME5=0

 


.ini bağlı sanki kardeş.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

Alt tarafta anlatımını yaptığım kodlar herkes için geçerli olan sourcelerin içinden bakıp alınmıştır.
Eğer ki sistemim farklı diyorsan gidip kendin yazmışsın demektir burada kendi yazdığın hakkında bilgi isteyemezsin.
Yok efendim ben kendim yazmadım kodlar senin verdiğin ile aynı diyorsan bu saatten sonra cevap atan olursa hakkında işlem yapacağım haberiniz olsun.
Kimse yardım etmeyecek kendi çözecektir.

void CUser::TempleProcess(Packet &pkt )
bu fonksiyona clientten gelen packetler düşüyor.

case TEMPLE_EVENT_JOIN:
TempleOperations(opcode);
break;
aynı fonksiyon içerisinde switch ile opcode ayırıp TempleOperations fonksiyonuna join opcode olarak atıyor.

void CUser::TempleOperations(uint8 bType)
bu fonksiyon da ise şuan aktif olan evente göre senin o evente girebilecek misin yada giremeyecek misin kontrollerini sağlıyor.

Gerisi sana kalmış hala çözemedim yada çözemiyorum dersen bi daha açtığın yardım konuları silinecektir. İleri ye gidersen bende ileriye giderim haberin olsun.

Sana böyle davranmamın sebebi;
-> Ben anticheat yazıyorum yada dosya yazıyorum diye milleti küçümsüyorsun. Bana özel mesaj atmayın kendiniz yapın demesini biliyorsun.
-> İşine geldiğinde kendini acındırmasını biliyorsun ben söyleyim ben böyleyim bana yardım etmiyorsunuz diyorsun ama millete demediğini yapmadığını bırakmıyorsun.
-> Yardım istemeden önce kendine bişeyler katmaya çalışmıyorsun.
Benim söyle sorunum var diyip .cpp dosyasını olduğu gibi atıyorsun ve "Bunu düzeltip verir misin?" demeyi ayrıca "Teamviever vereyim gelin düzeltin" demesini biliyorsun ama gel gelelim yardım edilen şeye yada yazılan her hangi bir satır koda merak edip burası nasıl olmuş.
Özkan canım, Özkan abi gel ben şurasını anlamadım bana anlatır mısın?
Şu satır kod ne işe yarar? O yazdığın fonksiyon nedir ne yapar?
Niye oraya öyle static class açtın neden yaptın?
Bu tarz soruları bir kere olsun sormadığın için ve bilmişlik tasladığın için sana böyle davranıyorum.
Bir an önce kendine çeki düzen ver.

 


Kısmını orası yer..

 

 

 

 

void CUser::TempleOperations(uint8 bType)
{
	uint16 nActiveEvent = (uint16)g_pMain->pTempleEvent.ActiveEvent;

	uint8 bResult = 1;
	Packet result(WIZ_EVENT);
	Packet result2(WIZ_SELECT_MSG);

	if (bType == TEMPLE_EVENT_JOIN && !isEventUser())
	{
		if (nActiveEvent == TEMPLE_EVENT_CHAOS)
		{
			if (CheckExistItem(CHAOS_MAP, 1))
				bResult = 1;
			else if (m_sItemArray[RIGHTHAND].nNum == MATTOCK || m_sItemArray[RIGHTHAND].nNum == GOLDEN_MATTOCK || isMining())
				bResult = 4;
			else
				bResult = 3;
		}

		else if (nActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
		{
			if (GetLevel() < g_pMain->pTempleEvent.m_nBorderDefenseWarMINLEVEL)
				bResult = WarpListMinLevel;
		}

		result << bType << bResult << nActiveEvent;
		Send(&result);

		if (bResult == 1)
		{
			GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount++ : g_pMain->pTempleEvent.ElMoradUserCount++;
			g_pMain->pTempleEvent.AllUserCount = (g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount);
			g_pMain->AddEventUser(this);
			TempleOperations(TEMPLE_EVENT_COUNTER);
		}
	}
	else if (bType == TEMPLE_EVENT_DISBAND && isEventUser())
	{
		GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount-- : g_pMain->pTempleEvent.ElMoradUserCount--;
		g_pMain->pTempleEvent.AllUserCount = g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount;
		g_pMain->RemoveEventUser(this);
		result << bType << bResult << nActiveEvent;
		Send(&result);
		TempleOperations(TEMPLE_EVENT_COUNTER);
	}
	else if (bType == TEMPLE_EVENT_COUNTER)
	{
		result << bType << nActiveEvent;

		if (nActiveEvent == TEMPLE_EVENT_CHAOS)
			result << g_pMain->pTempleEvent.AllUserCount;
		else if (nActiveEvent == TEMPLE_EVENT_BORDER_DEFENCE_WAR)
			result << g_pMain->pTempleEvent.KarusUserCount << g_pMain->pTempleEvent.ElMoradUserCount;
		else if (nActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
			result2 << uint16(0x00) << uint8(0x07) << uint64(0x00) << uint32(0x06) << g_pMain->pTempleEvent.KarusUserCount << uint16(0x00) << g_pMain->pTempleEvent.ElMoradUserCount << uint16(0x00) << g_pMain->m_nTempleEventRemainSeconds << uint16(0x00);

		if (nActiveEvent == TEMPLE_EVENT_JURAD_MOUNTAIN)
			g_pMain->Send_All(&result2, nullptr, Nation::ALL, 0, true, 0);
		else
			g_pMain->Send_All(&result, nullptr, Nation::ALL, 0, true, 0);
	}
}

 



Yapmayı çalışıyorum sanki.. yapamam demiyorum yapmayı çalışıyorum..

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

emre ugrasma orda bak zaten ini ye attıgını goreceksin

m_nBorderDefenseWarMAXLEVEL = ini.GetInt("BDW",string_format("MAX_LEVEL_%d",i+1).c_str(), 80);

ini den 83 yap yada direk src dan 83 yap build le sorun kalmaz bu src u tanıyorum bi ara vardı sildim attım cok acıkları var gereksiz seyler var.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin

ben paketleri istemeden önce inceledim, işin ilginç tarafı stat puanları ile alakalı bi kontrol göremedim, o yüzden istedim gelen paket verilerini çünkü retval ne bilmek gerekiyor hatayı çözebilmek için
 

void CUser::TempleOperations(uint8 bType)

{

	uint16 nActiveEvent = (uint16)g_pMain->pTempleEvent.ActiveEvent;



	uint8 bResult = 1;

	Packet result(WIZ_EVENT);



	if(bType == TEMPLE_EVENT_JOIN && !isEventUser())

	{

		if (nActiveEvent == TEMPLE_EVENT_CHAOS)

		{

			if (CheckExistItem(CHAOS_MAP,1))

				bResult = 1;

			else if (m_sItemArray[RIGHTHAND].nNum == MATTOCK || m_sItemArray[RIGHTHAND].nNum == GOLDEN_MATTOCK || isMining())

				bResult = 4; 

			else

				bResult = 3;

		}



		result << bType << bResult << nActiveEvent;

		Send(&result);



		if (bResult == 1) 

		{

			GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount++ :g_pMain->pTempleEvent.ElMoradUserCount++;

			g_pMain->pTempleEvent.AllUserCount = (g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount);

			g_pMain->AddEventUser(this);

			TempleOperations(TEMPLE_EVENT_COUNTER);

		}

	}

	else if (bType == TEMPLE_EVENT_DISBAND && isEventUser())

	{

		GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount-- : g_pMain->pTempleEvent.ElMoradUserCount--;

		g_pMain->pTempleEvent.AllUserCount = g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount;

		g_pMain->RemoveEventUser(this);

		result <<  bType << bResult << nActiveEvent;

		Send(&result);

		TempleOperations(TEMPLE_EVENT_COUNTER);

	}

	else if (bType == TEMPLE_EVENT_COUNTER)

	{

		result << bType << nActiveEvent;



		if(nActiveEvent == TEMPLE_EVENT_CHAOS)

			result << g_pMain->pTempleEvent.AllUserCount;

		else

			result << g_pMain->pTempleEvent.KarusUserCount << g_pMain->pTempleEvent.ElMoradUserCount;



		g_pMain->Send_All(&result,nullptr,Nation::ALL,0,true,0);

	}

}

 


bu seçtiğim kırmızı olarak renklendirdiğim yerler çalışıyor sırası ile sanırım,

belki, uint16 nActiveEvent = (uint16)g_pMain->pTempleEvent.ActiveEvent; burada problem olabilir, bdw yerine başka bir event algılıyor ise
if (nActiveEvent == TEMPLE_EVENT_CHAOS)

burdan sonrası çalışıyordur ve retval yanlış bir şekilde değişiyordur

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

ben paketleri istemeden önce inceledim, işin ilginç tarafı stat puanları ile alakalı bi kontrol göremedim, o yüzden istedim gelen paket verilerini çünkü retval ne bilmek gerekiyor hatayı çözebilmek için
 


void CUser::TempleOperations(uint8 bType)

{

	uint16 nActiveEvent = (uint16)g_pMain->pTempleEvent.ActiveEvent;



	uint8 bResult = 1;

	Packet result(WIZ_EVENT);



	if(bType == TEMPLE_EVENT_JOIN && !isEventUser())

	{

		if (nActiveEvent == TEMPLE_EVENT_CHAOS)

		{

			if (CheckExistItem(CHAOS_MAP,1))

				bResult = 1;

			else if (m_sItemArray[RIGHTHAND].nNum == MATTOCK || m_sItemArray[RIGHTHAND].nNum == GOLDEN_MATTOCK || isMining())

				bResult = 4; 

			else

				bResult = 3;

		}



		result << bType << bResult << nActiveEvent;

		Send(&result);



		if (bResult == 1) 

		{

			GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount++ :g_pMain->pTempleEvent.ElMoradUserCount++;

			g_pMain->pTempleEvent.AllUserCount = (g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount);

			g_pMain->AddEventUser(this);

			TempleOperations(TEMPLE_EVENT_COUNTER);

		}

	}

	else if (bType == TEMPLE_EVENT_DISBAND && isEventUser())

	{

		GetNation() == KARUS ? g_pMain->pTempleEvent.KarusUserCount-- : g_pMain->pTempleEvent.ElMoradUserCount--;

		g_pMain->pTempleEvent.AllUserCount = g_pMain->pTempleEvent.KarusUserCount + g_pMain->pTempleEvent.ElMoradUserCount;

		g_pMain->RemoveEventUser(this);

		result <<  bType << bResult << nActiveEvent;

		Send(&result);

		TempleOperations(TEMPLE_EVENT_COUNTER);

	}

	else if (bType == TEMPLE_EVENT_COUNTER)

	{

		result << bType << nActiveEvent;



		if(nActiveEvent == TEMPLE_EVENT_CHAOS)

			result << g_pMain->pTempleEvent.AllUserCount;

		else

			result << g_pMain->pTempleEvent.KarusUserCount << g_pMain->pTempleEvent.ElMoradUserCount;



		g_pMain->Send_All(&result,nullptr,Nation::ALL,0,true,0);

	}

}

 


bu seçtiğim kırmızı olarak renklendirdiğim yerler çalışıyor sırası ile sanırım,

belki, uint16 nActiveEvent = (uint16)g_pMain->pTempleEvent.ActiveEvent; burada problem olabilir, bdw yerine başka bir event algılıyor ise
if (nActiveEvent == TEMPLE_EVENT_CHAOS)

burdan sonrası çalışıyordur ve retval yanlış bir şekilde değişiyordur

 

 


@ Nero tamamdır düzeltim teşekkür ederim şimdide oldu. yardımcı oldu valla teşekkür ederim.

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

emre ugrasma orda bak zaten ini ye attıgını goreceksin

m_nBorderDefenseWarMAXLEVEL = ini.GetInt("BDW",string_format("MAX_LEVEL_%d",i+1).c_str(), 80);

ini den 83 yap yada direk src dan 83 yap build le sorun kalmaz bu src u tanıyorum bi ara vardı sildim attım cok acıkları var gereksiz seyler var.

 


bende öyle sanki orası da sıkındı degil miş gene teşekkür ederim..

 

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin

o iptal edilen yerlerde benim ilk postumda bahsettiğim değişkene bdw eventid atayan bir bölüm var o atanmadığı için büyük ihtimal dediğim gibi chaos olarak kalıyor eventid ve o yüzden chaos kontrol bölümünde olan retval dönüş yapıyor ve o hata ile bu yuzden karşılaşıyorsun..

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı

biraz daha inceledim ve burası iptal edilmiş

c1i__uvJRKKbQZertTPDFQ.png

96QxOUaOT4SDTQGlU73tww.png

 

 

 

 

 

			for(int i = 0; i < BORDER_DEFENSE_WAR_EVENT_COUNT; i++)
			{
				if (nHour == m_nBorderDefenseWarTime[i] && nMinute == 10 && !pTempleEvent.isActive)
				{
					m_nTempleEventRemainSeconds = 0; 
					pTempleEvent.LastEventRoom = 1;
					pTempleEvent.isActive = true;
					TempleEventStart();
					TempleEventTeleportUsers();
					TempleEventSummon();
					break;
				}

 

 



orası kısımı farklı mı yoksa ?

 

 

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...