Server de metin2 pe hamachi

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Închis
Avatar utilizator
udrescuilie
Nou Venit

Nou Venit
Mesaje: 17
Membru din: 20 Feb 2019, 19:03
Aprecieri: 10  
Mulţumiri: 2  
Medalii

Buna ziua dupa ce am urmarit mai multe tutoriale si am citit mai multe articole pe diverse situri incluzandul ce ascesta am reusit sa fac un server de metin2 pe hamachi, avand in acest moment cam 20% din obiectiv realizat cu ajutorul vostru si al altor oameni insa munca grea acuma vine servarul desi ma pot conecta eu la el (lucru normal pentru ca sunt host) alti oameni nu se pot conecta desi au clientul de la mine cu ip. 100 si conectati la vpn-ul facut pe hamachi cu ajutorul vostru as dori sa pot trece si peste acest mic obstacol deci intrebarea fiind de ce nu pot alte persoane sa ae conecteze trebuie sa mai setez ceva gen porturi sau este alta problema? Si alta problema care vreau sa o rezolv ar fi urmatoarea: incerc sa modific baza de date cu itele din navicat gen sa pun evolutii insa dupa reboot tot ce modific revine la normal credeti ca e un bug sau este ceva in server file care ma opreste gen un fisier de backup? Astept pareri si sfaturi!
Multumesc pentru timpul acordat, o zi buna!

[ Postat de pe Android ] Imagine
Avatar utilizator
Ene
Nivel 8

Nivel 8
Mesaje: 1659
Membru din: 09 Sep 2016, 01:00
Server: Clasic
Regat: Jinno
Aprecieri: 274  
Mulţumiri: 603  
  Rezolvări prob.: 2
Discord: Copiază ID
Medalii

in prima faza cu itemele cum zici u ca faci modificari si dupa rebot dispar tu ai server cel mai probabil care citeste txt adica din game /db acolo ai item_names.txt item_proto.txt

a 2 faza din ce stiu eu si sper sa nu ma insel sv 40k nu merg pe hamachi sa intre si alti doar tu eventual pentru a face teste imbunatatiri etc eventual daca iei un sv vechii de 28k 17 16k pnm daro eventual si un client cu mc ar fi posibil

alt fel zis nu prea merita cata bataie de cap ai cu el sa faci pe hamachi cand cu un 5 euro ati iei host si nu te mai stresezi
Pentru acest mesaj, Ene for the post:
udrescuilie

=============
dacă răspunsul meu te-a ajutat nu uita butonul LIKE



Imagine
Afișează semnătura
Avatar utilizator
udrescuilie
Nou Venit

Nou Venit
Mesaje: 17
Membru din: 20 Feb 2019, 19:03
Aprecieri: 10  
Mulţumiri: 2  
Medalii

Ene scrie: ↑24 Dec 2019, 17:38 in prima faza cu itemele cum zici u ca faci modificari si dupa rebot dispar tu ai server cel mai probabil care citeste txt adica din game /db acolo ai item_names.txt item_proto.txt

a 2 faza din ce stiu eu si sper sa nu ma insel sv 40k nu merg pe hamachi sa intre si alti doar tu eventual pentru a face teste imbunatatiri etc eventual daca iei un sv vechii de 28k 17 16k pnm daro eventual si un client cu mc ar fi posibil

alt fel zis nu prea merita cata bataie de cap ai cu el sa faci pe hamachi cand cu un 5 euro ati iei host si nu te mai stresezi
deci zici sa iau un client si un server file mai vechi ai cumva o recomandare? as dori unul cat mai clasic cu putinta multumesc

Si daca poti sa-mi zici si mie ce inseamna 28k si 40K diferente si lucruri despre ele
Avatar utilizator
Anojhin
Nou Venit

Nou Venit
Mesaje: 24
Membru din: 10 Aug 2019, 09:17
Server: Yes
Regat: Chunjo
Aprecieri: 60  
Mulţumiri: 0
Medalii

udrescuilie scrie: ↑26 Dec 2019, 14:37
Ene scrie: ↑24 Dec 2019, 17:38 in prima faza cu itemele cum zici u ca faci modificari si dupa rebot dispar tu ai server cel mai probabil care citeste txt adica din game /db acolo ai item_names.txt item_proto.txt

a 2 faza din ce stiu eu si sper sa nu ma insel sv 40k nu merg pe hamachi sa intre si alti doar tu eventual pentru a face teste imbunatatiri etc eventual daca iei un sv vechii de 28k 17 16k pnm daro eventual si un client cu mc ar fi posibil

alt fel zis nu prea merita cata bataie de cap ai cu el sa faci pe hamachi cand cu un 5 euro ati iei host si nu te mai stresezi
deci zici sa iau un client si un server file mai vechi ai cumva o recomandare? as dori unul cat mai clasic cu putinta multumesc

Si daca poti sa-mi zici si mie ce inseamna 28k si 40K diferente si lucruri despre ele
28k e asemănător 34k
34k - Poți aplica diferite chestii doar prin diff-uri, cum ar venii să rezolvi bug-urile la crash /war sau să adaugi un nivel mai mare de 105 în server , de exemplu 250!
40k - Poți să faci multe chestii din sursă dacă o deții, să adaugi mai multe inventare, să implementezi un sistem ,sau să rezolvi mai ușor bug-urile serverului!

Ceea ce scrie mai sus este un copy paste din topic-ul acesta Click
Avatar utilizator
Moț
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 2825
Membru din: 03 Apr 2017, 15:00
Aprecieri: 216  
Mulţumiri: 3040  
Discord: Copiază ID
Medalii

Da poti pe hamachi, dar trebuie sa modifici in sursa cateva chestii.

./Srcs/Server/game/src/config.cpp
cauta

Cod: Selectaţi tot

bool GetIPInfo()
si modifica cu

Cod: Selectaţi tot

bool GetIPInfo()
{
#if !defined(_MSC_VER)
    struct ifaddrs * ifaddrp = NULL;

    if (0 != getifaddrs(&ifaddrp))
        return false;

    for (struct ifaddrs * ifap = ifaddrp; NULL != ifap; ifap = ifap->ifa_next)
    {
        struct sockaddr_in * sai = (struct sockaddr_in *)ifap->ifa_addr;

        if (!ifap->ifa_netmask || sai->sin_addr.s_addr == 0 || sai->sin_addr.s_addr == 16777343)
            continue;
#else
    WSADATA wsa_data;
    char host_name[100];
    HOSTENT * host_ent;
    int n = 0;

    if (WSAStartup(0x0101, &wsa_data))
    {
        return false;
    }

    gethostname(host_name, sizeof(host_name));
    host_ent = gethostbyname(host_name);
    if (host_ent == NULL)
    {
        return false;
    }
    for (; host_ent->h_addr_list[n] != NULL; ++n)
    {
        struct sockaddr_in addr;
        struct sockaddr_in * sai = &addr;
        memcpy(&sai->sin_addr.s_addr, host_ent->h_addr_list[n], host_ent->h_length);
#endif

        char * netip = inet_ntoa(sai->sin_addr);

        if (!strncmp(netip, "10.", 3))
        {
            strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP));
        }
        else if (g_szPublicIP[0] == '0')
        {
            strlcpy(g_szPublicIP, netip, sizeof(g_szPublicIP));
        }
    }
#if !defined(_MSC_VER)
    freeifaddrs(ifaddrp);
#else
    WSACleanup();
#endif

    if (g_szPublicIP[0] != '0')
    {
        return true;
    }
    else
    {
        if (g_szInternalIP[0] == '0')
        {
            return false;
        }
        else
        {
            strlcpy(g_szPublicIP, g_szInternalIP, sizeof(g_szPublicIP));
            return true;
        }
    }
}
./Srcs/Server/game/src/input_db.cpp

cauta

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
si modifica cu

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
{
	BYTE bCount = *(BYTE*)(c_pData++);

	sys_log(0, "InputDB::MapLocations %d", bCount);

	TMapLocation* pLoc = (TMapLocation*)c_pData;

	while (bCount--)
	{
		for (int i = 0; i < 32; ++i)
		{
			if (0 == pLoc->alMaps[i])
				break;

			//CMapLocation::instance().Insert(pLoc->alMaps[i], pLoc->szHost, pLoc->wPort);
			CMapLocation::instance().Insert(pLoc->alMaps[i], g_szPublicIP, pLoc->wPort);
		}

		pLoc++;
	}
}
Recompileaza si testeaza, daca nu functioneaza lasa-mi syslog si syserr.
Pentru acest mesaj, Moț for the post:
udrescuilie
Imagine
Afișează semnătura
Avatar utilizator
udrescuilie
Nou Venit

Nou Venit
Mesaje: 17
Membru din: 20 Feb 2019, 19:03
Aprecieri: 10  
Mulţumiri: 2  
Medalii

Moț scrie: ↑26 Dec 2019, 18:40 Da poti pe hamachi, dar trebuie sa modifici in sursa cateva chestii.

./Srcs/Server/game/src/config.cpp
cauta

Cod: Selectaţi tot

bool GetIPInfo()
si modifica cu

Cod: Selectaţi tot

bool GetIPInfo()
{
#if !defined(_MSC_VER)
    struct ifaddrs * ifaddrp = NULL;

    if (0 != getifaddrs(&ifaddrp))
        return false;

    for (struct ifaddrs * ifap = ifaddrp; NULL != ifap; ifap = ifap->ifa_next)
    {
        struct sockaddr_in * sai = (struct sockaddr_in *)ifap->ifa_addr;

        if (!ifap->ifa_netmask || sai->sin_addr.s_addr == 0 || sai->sin_addr.s_addr == 16777343)
            continue;
#else
    WSADATA wsa_data;
    char host_name[100];
    HOSTENT * host_ent;
    int n = 0;

    if (WSAStartup(0x0101, &wsa_data))
    {
        return false;
    }

    gethostname(host_name, sizeof(host_name));
    host_ent = gethostbyname(host_name);
    if (host_ent == NULL)
    {
        return false;
    }
    for (; host_ent->h_addr_list[n] != NULL; ++n)
    {
        struct sockaddr_in addr;
        struct sockaddr_in * sai = &addr;
        memcpy(&sai->sin_addr.s_addr, host_ent->h_addr_list[n], host_ent->h_length);
#endif

        char * netip = inet_ntoa(sai->sin_addr);

        if (!strncmp(netip, "10.", 3))
        {
            strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP));
        }
        else if (g_szPublicIP[0] == '0')
        {
            strlcpy(g_szPublicIP, netip, sizeof(g_szPublicIP));
        }
    }
#if !defined(_MSC_VER)
    freeifaddrs(ifaddrp);
#else
    WSACleanup();
#endif

    if (g_szPublicIP[0] != '0')
    {
        return true;
    }
    else
    {
        if (g_szInternalIP[0] == '0')
        {
            return false;
        }
        else
        {
            strlcpy(g_szPublicIP, g_szInternalIP, sizeof(g_szPublicIP));
            return true;
        }
    }
}
./Srcs/Server/game/src/input_db.cpp

cauta

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
si modifica cu

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
{
	BYTE bCount = *(BYTE*)(c_pData++);

	sys_log(0, "InputDB::MapLocations %d", bCount);

	TMapLocation* pLoc = (TMapLocation*)c_pData;

	while (bCount--)
	{
		for (int i = 0; i < 32; ++i)
		{
			if (0 == pLoc->alMaps[i])
				break;

			//CMapLocation::instance().Insert(pLoc->alMaps[i], pLoc->szHost, pLoc->wPort);
			CMapLocation::instance().Insert(pLoc->alMaps[i], g_szPublicIP, pLoc->wPort);
		}

		pLoc++;
	}
}
Recompileaza si testeaza, daca nu functioneaza lasa-mi syslog si syserr.
ce sa fac la erorile astea ??

config.cpp:242: error: expected constructor, destructor, or type conversion before '(' token
config.cpp:244: error: expected unqualified-id before 'if'
config.cpp:246: error: expected unqualified-id before 'else'
config.cpp:248: error: expected declaration before '}' token
compile entity_view.cpp


acestea sunt liniile de cod cu pricina
FILE *fp;

char buf[256];
char token_string[256];
char value_string[256];

// LOCALE_SERVICE
string st_configFileName;
Avatar utilizator
udrescuilie
Nou Venit

Nou Venit
Mesaje: 17
Membru din: 20 Feb 2019, 19:03
Aprecieri: 10  
Mulţumiri: 2  
Medalii

Moț scrie: ↑26 Dec 2019, 18:40 Da poti pe hamachi, dar trebuie sa modifici in sursa cateva chestii.

./Srcs/Server/game/src/config.cpp
cauta

Cod: Selectaţi tot

bool GetIPInfo()
si modifica cu

Cod: Selectaţi tot

bool GetIPInfo()
{
#if !defined(_MSC_VER)
    struct ifaddrs * ifaddrp = NULL;

    if (0 != getifaddrs(&ifaddrp))
        return false;

    for (struct ifaddrs * ifap = ifaddrp; NULL != ifap; ifap = ifap->ifa_next)
    {
        struct sockaddr_in * sai = (struct sockaddr_in *)ifap->ifa_addr;

        if (!ifap->ifa_netmask || sai->sin_addr.s_addr == 0 || sai->sin_addr.s_addr == 16777343)
            continue;
#else
    WSADATA wsa_data;
    char host_name[100];
    HOSTENT * host_ent;
    int n = 0;

    if (WSAStartup(0x0101, &wsa_data))
    {
        return false;
    }

    gethostname(host_name, sizeof(host_name));
    host_ent = gethostbyname(host_name);
    if (host_ent == NULL)
    {
        return false;
    }
    for (; host_ent->h_addr_list[n] != NULL; ++n)
    {
        struct sockaddr_in addr;
        struct sockaddr_in * sai = &addr;
        memcpy(&sai->sin_addr.s_addr, host_ent->h_addr_list[n], host_ent->h_length);
#endif

        char * netip = inet_ntoa(sai->sin_addr);

        if (!strncmp(netip, "10.", 3))
        {
            strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP));
        }
        else if (g_szPublicIP[0] == '0')
        {
            strlcpy(g_szPublicIP, netip, sizeof(g_szPublicIP));
        }
    }
#if !defined(_MSC_VER)
    freeifaddrs(ifaddrp);
#else
    WSACleanup();
#endif

    if (g_szPublicIP[0] != '0')
    {
        return true;
    }
    else
    {
        if (g_szInternalIP[0] == '0')
        {
            return false;
        }
        else
        {
            strlcpy(g_szPublicIP, g_szInternalIP, sizeof(g_szPublicIP));
            return true;
        }
    }
}
./Srcs/Server/game/src/input_db.cpp

cauta

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
si modifica cu

Cod: Selectaţi tot

void CInputDB::MapLocations(const char* c_pData)
{
	BYTE bCount = *(BYTE*)(c_pData++);

	sys_log(0, "InputDB::MapLocations %d", bCount);

	TMapLocation* pLoc = (TMapLocation*)c_pData;

	while (bCount--)
	{
		for (int i = 0; i < 32; ++i)
		{
			if (0 == pLoc->alMaps[i])
				break;

			//CMapLocation::instance().Insert(pLoc->alMaps[i], pLoc->szHost, pLoc->wPort);
			CMapLocation::instance().Insert(pLoc->alMaps[i], g_szPublicIP, pLoc->wPort);
		}

		pLoc++;
	}
}
Recompileaza si testeaza, daca nu functioneaza lasa-mi syslog si syserr.
Am reusit multumesc!
Închis

Înapoi la “Probleme rezolvate”

  • Informaţie