Aller au contenu

Messages recommandés

Bonjour à tous,

 

Je viens vous faire parvenir ce système qui permet de voir les joueurs en ligne de votre serveur via un compteur.

 

171526Sans-titre.jpg

 

Sommaire :

 

  • Sources client
  • Sources Serveur
  • Python

 

I°/Sources client

Révélation

 

  • 1-Rendez vous dans le fichier PythonNetworkStreamCommand.cpp dans UserInterface.
  • 2- Cherchez cette fonction :
	else if (!strcmpi(szCmd, "gift"))
	{
		PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "Gift_Show", Py_BuildValue("()")); 	
	}
  • 3-Ajoutez en dessous de celle-ci :
	//JOUEURS EN LIGNE
	else if (!strcmpi(szCmd, "black"))
	{
		UINT black = atoi(TokenVector[1].c_str()); //toplam
		UINT sari = atoi(TokenVector[2].c_str());
		UINT kirmizi = atoi(TokenVector[3].c_str());
		UINT mavi = atoi(TokenVector[4].c_str());
		//elleme
		PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "oyuncu_black", Py_BuildValue("(iiii)", black, sari, kirmizi, mavi));
	}

 

Sauvegardez et compilez !

 

 

 

II°/Sources Serveur

Révélation

 

  • 1-Rendez-vous dans le fichier desc_manager.cpp
  • 2-Cherchez cette fonction :
class FuncWho
{
	public:
		int iTotalCount;
		int aiEmpireUserCount[EMPIRE_MAX_NUM];

		FuncWho()
		{
			iTotalCount = 0;
			memset(aiEmpireUserCount, 0, sizeof(aiEmpireUserCount));
		}

		void operator() (LPDESC d)
		{
			if (d->GetCharacter())
			{
				++iTotalCount;
				++aiEmpireUserCount[d->GetEmpire()];
			}
		}
};
  • 3-Remplacez la par :
class FuncWho
{
	public:
		int iTotalCount;
		int aiEmpireUserCount[EMPIRE_MAX_NUM];
		int toplam;
		int * Bayrak;
		int asdasdas;

		FuncWho()
		{
			iTotalCount = 0;
			memset(aiEmpireUserCount, 0, sizeof(aiEmpireUserCount));
		}

		void operator() (LPDESC d)
		{
			if (d->GetCharacter())
			{
				++iTotalCount;
				++aiEmpireUserCount[d->GetEmpire()];
				/**
				getusercount'dan getirmeseydim sadece bir kisi,
				icin guncellenecekti.Digerleri guncellenmeyecekti.
				Tecrubeyle sabit.
				*/
				DESC_MANAGER::instance().GetUserCount(toplam, &Bayrak, asdasdas);
				d->ChatPacket(CHAT_TYPE_COMMAND, "black %d %d %d %d", toplam, Bayrak[2], Bayrak[1], Bayrak[3]);
			}
		}
};
  • 4-Rendez vous dans le fichier p2p.cpp
  • 5-Cherchez la fonction :
void P2P_MANAGER::Login(LPDESC d, const TPacketGGLogin * p)
{
	CCI* pkCCI = Find(p->szName);

	bool UpdateP2P = false;

	if (NULL == pkCCI)
	{
		UpdateP2P = true;
		pkCCI = M2_NEW CCI;

		if (false == LC_IsBrazil())
			strlcpy(pkCCI->szName, p->szName, sizeof(pkCCI->szName));
		else
			trim_and_lower(p->szName, pkCCI->szName, sizeof(pkCCI->szName));

		pkCCI->dwPID = p->dwPID;
		pkCCI->bEmpire = p->bEmpire;

		if (p->bChannel == g_bChannel)
		{
			if (pkCCI->bEmpire < EMPIRE_MAX_NUM)
			{
				++m_aiEmpireUserCount[pkCCI->bEmpire];
			}
			else
			{
				sys_err("LOGIN_EMPIRE_ERROR: %d >= MAX(%d)", pkCCI->bEmpire, EMPIRE_MAX_NUM);
			}
		}

		m_map_pkCCI.insert(std::make_pair(pkCCI->szName, pkCCI));
		m_map_dwPID_pkCCI.insert(std::make_pair(pkCCI->dwPID, pkCCI));
	}

	pkCCI->lMapIndex = p->lMapIndex;
	pkCCI->pkDesc = d;
	pkCCI->bChannel = p->bChannel;
	sys_log(0, "P2P: Login %s", pkCCI->szName);

	CGuildManager::instance().P2PLoginMember(pkCCI->dwPID);
	CPartyManager::instance().P2PLogin(pkCCI->dwPID, pkCCI->szName);

	// CCI°¡ »ý¼º½Ã¿¡¸¸ ¸Þ½ÅÀú¸¦ ¾÷µ¥ÀÌÆ®ÇÏ¸é µÈ´Ù.
	if (UpdateP2P) {
		std::string name(pkCCI->szName);
	    MessengerManager::instance().P2PLogin(name);
	}
}
  • 6-Remplacez la par :
void P2P_MANAGER::Login(LPDESC d, const TPacketGGLogin * p)
{
	CCI* pkCCI = Find(p->szName);

	bool UpdateP2P = false;

	if (NULL == pkCCI)
	{
		UpdateP2P = true;
		pkCCI = M2_NEW CCI;

		if (false == LC_IsBrazil())
			strlcpy(pkCCI->szName, p->szName, sizeof(pkCCI->szName));
		else
			trim_and_lower(p->szName, pkCCI->szName, sizeof(pkCCI->szName));

		pkCCI->dwPID = p->dwPID;
		pkCCI->bEmpire = p->bEmpire;

		if (pkCCI->bEmpire < EMPIRE_MAX_NUM)
		{
			LPCHARACTER ch;
			++m_aiEmpireUserCount[pkCCI->bEmpire];
		}
		else
		{
			sys_err("LOGIN_EMPIRE_ERROR: %d >= MAX(%d)", pkCCI->bEmpire, EMPIRE_MAX_NUM);
		}

		m_map_pkCCI.insert(std::make_pair(pkCCI->szName, pkCCI));
		m_map_dwPID_pkCCI.insert(std::make_pair(pkCCI->dwPID, pkCCI));
	}

	pkCCI->lMapIndex = p->lMapIndex;
	pkCCI->pkDesc = d;
	pkCCI->bChannel = p->bChannel;
	sys_log(0, "P2P: Login %s", pkCCI->szName);

	CGuildManager::instance().P2PLoginMember(pkCCI->dwPID);
	CPartyManager::instance().P2PLogin(pkCCI->dwPID, pkCCI->szName);

	// CCI가 생성시에만 메신저를 업데이트하면 된다.
	if (UpdateP2P) {
		std::string name(pkCCI->szName);
	    MessengerManager::instance().P2PLogin(name);
	}
}
  • 7-Cherchez ensuite la fonction : 
void P2P_MANAGER::Logout(CCI * pkCCI)
{
	if (pkCCI->bChannel == g_bChannel)
	{
		if (pkCCI->bEmpire < EMPIRE_MAX_NUM)
		{
			--m_aiEmpireUserCount[pkCCI->bEmpire];
			if (m_aiEmpireUserCount[pkCCI->bEmpire] < 0)
			{
				sys_err("m_aiEmpireUserCount[%d] < 0", pkCCI->bEmpire);
			}
		}
		else
		{
			sys_err("LOGOUT_EMPIRE_ERROR: %d >= MAX(%d)", pkCCI->bEmpire, EMPIRE_MAX_NUM);
		}
	}

 

  • 8-Remplacez la par : 
void P2P_MANAGER::Logout(CCI * pkCCI)
{
		if (pkCCI->bEmpire < EMPIRE_MAX_NUM)
		{
			LPCHARACTER ch;
			--m_aiEmpireUserCount[pkCCI->bEmpire];
			if (m_aiEmpireUserCount[pkCCI->bEmpire] < 0)
			{
				sys_err("m_aiEmpireUserCount[%d] < 0", pkCCI->bEmpire);
			}
		}
		else
		{
			sys_err("LOGOUT_EMPIRE_ERROR: %d >= MAX(%d)", pkCCI->bEmpire, EMPIRE_MAX_NUM);
		}

	std::string name(pkCCI->szName);

	CGuildManager::instance().P2PLogoutMember(pkCCI->dwPID);
	CPartyManager::instance().P2PLogout(pkCCI->dwPID);
	MessengerManager::instance().P2PLogout(name);
	marriage::CManager::instance().Logout(pkCCI->dwPID);
	m_map_pkCCI.erase(name);
	m_map_dwPID_pkCCI.erase(pkCCI->dwPID);
	M2_DELETE(pkCCI);
}
  • 9-Rendez vous dans le fichier main.cpp
  • 10-Cherchez la fonction :
	if (!(pulse % (passes_per_sec * 5 + 2)))
	{
		ITEM_MANAGER::instance().Update();
		DESC_MANAGER::instance().UpdateLocalUserCount();
	}
  • 11-Remplacez par :
	if (!(pulse % (passes_per_sec + 1)))
	{
		ITEM_MANAGER::instance().Update();
		DESC_MANAGER::instance().UpdateLocalUserCount();
	}

 

Sauvegardez et compilez !

 

 

 

 

III°/Python

Révélation

 

  • 1-Rendez vous dans le fichier locale_game.txt (dans locale/X)
  • 2-Ajoutez ceci tout en bas de votre fichier :
BLACK_ONLINE	|cff00CC00|Hemp|hJoueurs en ligne:|h|r
BLACK_SARI	|cffFDD017|H|hChunjo:|h|r
BLACK_KIRMIZI	|cffff0000|Hemp|hShinsoo:|h|r
  • 3-Rendez vous dans le fichier game.py (root)
  • 4-Cherchez la fonction :
	def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
		self.interface.UpdateCubeInfo(gold, itemVnum, count)
  • 5-Ajoutez en dessous de celle-ci :
	def oyuncu_black(self, black, sari, kirmizi, mavi):
		#blackdragonx61
		self.interface.wndMiniMap.online_cok_hojdir_ama_benane(black, sari, kirmizi, mavi)

 

  • 6-Rendez vous dans le fichier uiminimap.py (root)
  • 7-Cherchez la fonction :
			self.serverInfo = self.GetChild("ServerInfo")
  • 8-Ajoutez en dessous de celle-ci :
			self.mali	= self.GetChild("Toplam")
			self.sari	= self.GetChild("sari")
			self.kirmizi	= self.GetChild("kirmizi")
			self.mavi	= self.GetChild("mavi")
  • 9-Cherchez la fonction :
	def UpdateObserverCount(self, observerCount):
		if observerCount>0:
			self.observerCount.Show()
		elif observerCount<=0:
			self.observerCount.Hide()

		self.observerCount.SetText(localeInfo.MINIMAP_OBSERVER_COUNT % observerCount)
  • 10-Ajoutez en dessous de celle-ci :
	def online_cok_hojdir_ama_benane(self, black, sari, kirmizi, mavi):	 	
		#blackdragonx61
		self.mali.Show()
		self.sari.Show()
		self.kirmizi.Show()
		self.mavi.Show()
		self.mali.SetText(localeInfo.BLACK_ONLINE + str(black))#Toplam
		self.sari.SetText(localeInfo.BLACK_SARI + str(sari))
		self.kirmizi.SetText(localeInfo.BLACK_KIRMIZI + str(kirmizi))
		self.mavi.SetText("|cff00ccffJinno:|h|r" + str(mavi))

 

  • 11-Rendez vous dans le fichier minimap.py (uiscript)
  • 12-Cherchez la fonction 
  • 				## ServerInfo
    				{
    					"name" : "ServerInfo",
    					"type" : "text",
    					
    					"text_horizontal_align" : "center",
    
    					"outline" : 1,
    
    					"x" : 67,
    					"y" : 165,
    
    					"text" : "",
    				},
  • 13-Ajoutez ceci en dessous :
				{
					"name" : "Toplam",
					"type" : "text",
					
					"text_horizontal_align" : "center",

					"outline" : 1,

					"x" : 70,
					"y" : 180,

					"text" : "",
				},
				{
					"name" : "sari",
					"type" : "text",
					
					"text_horizontal_align" : "center",

					"outline" : 1,

					"x" : 70,
					"y" : 195,

					"text" : "",
				},
				{
					"name" : "kirmizi",
					"type" : "text",
					
					"text_horizontal_align" : "center",

					"outline" : 1,

					"x" : 70,
					"y" : 210,

					"text" : "",
				},
				{
					"name" : "mavi",
					"type" : "text",
					
					"text_horizontal_align" : "center",

					"outline" : 1,

					"x" : 70,
					"y" : 225,

					"text" : "",
				},

 

 

Sauvegardez et repackez !

 

 

 

 

 

Source : Turkmmo

Enjoy,

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

A propos de nous

Funky-Emulation

© Funky Emulation est un forum d'entraide à l'émulation de différents jeux vidéo comme Metin 2, Dofus, World of Warcraft.

Rejoignez une communauté soudée et sympathique.

Réseaux Sociaux

Partenaires

Top Paradise

×

Information importante

By using this site, you agree to our Conditions d’utilisation.