1 mesaj
Administrator Administrator
  • Mesaje: 4001
  • Reacții: 74917
  • Mesaje utile: 39
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    *Descriere:

    Arata cati jucatori ONLINE sunt pe server, direct din joc - sub harta mini-map!

    Acest mic sistema rata numarul total de playeri on, dar si cati sunt in fiecare regat.

    Aveti mai jos tutorial full care merge 100% :)

    *Poze / Video:
    [C++/Py] Afiseaza playeri online sub minimap - Mesaj 1 - Imagine 1
    *Link download / Code:

    I. Client Source -> UseInterface -> PythonNetworkStreamCommand.cpp

    Deschidem PythonNetworkStreamCommand.cpp si cautam:
    Code:
    else if (!strcmpi(szCmd, "gift"))
    {
    	PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "Gift_Show", Py_BuildValue("()")); 	
    }
    
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    II. Server Source -> game/src/desc_manager.cpp

    Deschidem game/src/desc_manager.cpp si cautam:
    Code:
    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()];
    			}
    		}
    };
    
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    III. Server Source -> game/src/p2p.cpp

    Deschidem game/src/p2p.cpp si cautam functia:
    Code:
    void P2P_MANAGER::Login(LPDESC d, const TPacketGGLogin * p)
    Cautam urmatorul bloc:
    Code:
    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);
    	}
    }
    
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Tot in game/src/p2p.cpp cautam functia:
    Code:
    void P2P_MANAGER::Logout(CCI * pkCCI)
    Cautam urmatorul bloc:
    Code:
    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);
    		}
    	}
    
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    IV. Server Source -> game/src/main.cpp

    Deschidem game/src/main.cpp si cautam:
    Code:
    	if (!(pulse % (passes_per_sec * 5 + 2)))
    	{
    		ITEM_MANAGER::instance().Update();
    		DESC_MANAGER::instance().UpdateLocalUserCount();
    	}
    
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    V. Client -> locale/locale_game.txt

    Deschidem locale/locale_game.txt si adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    VI. Client -> root/game.py

    Deschidem root/game.py si cautam:
    Code:
    	def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
    		self.interface.UpdateCubeInfo(gold, itemVnum, count)
    
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    VII. Client -> root/uiminimap.py

    Deschidem root/uiminimap.py si cautam:
    Code:
    self.serverInfo = self.GetChild("ServerInfo")
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Tot in root/uiminimap.py cautam:
    Code:
    def UpdateObserverCount(self, observerCount):
    		if observerCount>0:
    			self.observerCount.Show()
    		elif observerCount<=0:
    			self.observerCount.Hide()
    
    		self.observerCount.SetText(localeInfo.MINIMAP_OBSERVER_COUNT % observerCount)
    
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    VIII. Client -> uiscript/minimap.py

    Deschidem uiscript/minimap.py si cautam:
    Code:
    				## ServerInfo
    				{
    					"name" : "ServerInfo",
    					"type" : "text",
    					
    					"text_horizontal_align" : "center",
    
    					"outline" : 1,
    
    					"x" : 67,
    					"y" : 165,
    
    					"text" : "",
    				},
    
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.




    Explicatie:
    Acest sistem afiseaza sub minimap numarul total de jucatori online, plus distributia lor pe regate:
    - total
    - Chunjo
    - Shinsoo
    - Jinno

    La final:
    - Compilam sursa serverului.
    - Compilam binarul clientului.
    - Impachetam fisierele root/uiscript/locale la loc.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/jWxeDSf7HP

    Suntem aproape 2000 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:




    See full signature

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: Google [Bot], Lapadat Claudiu, Manianu, Pointless și 4 vizitatori

    Discord ID copiat: