Problema regat rosu si galben

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

Nivel 1
Mesaje: 74
Membru din: 21 Dec 2014, 09:45
Server: Metin2
Regat: Shinsoo
Aprecieri: 31  
Mulţumiri: 1  
Medalii

**Problemă: Eroare La Conectarea La Server
Tipologie server(PvM / PvP): PvP-PvM
**Resursă folosită: altele/varianta-python-t54462.html
**ServerFiles utilizat: serverfiles/serverfiles-just4metin-cura ... 82055.html
**Syserr:
0405 16:33:29116 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
**Poze: https://imgur.com/a/ugAz8E0

https://imgur.com/a/ym44Od3
**Detalii suplimentare: Am implementat acel sistem de VIP de la "Resursa folosita" si pe langa chestia ca alte regate(galben si rosu) nu-mi vad stema de Mister, cand iau abilitatile secundare P de la npc pe alte caractere si ma teleportez sau dau schimba caracter se reseteaza pe toate 3 regate dar pe unele cum ar fi caracterul cu mister din poza si caracterul de implementator nu se reseteaza si dupa caracterul de impementator inteleg ce zic regatele si sunt inteles, dupa caracterul de Mister doar inteleg ce zic alte regate dar nu sunt inteles si pe caracterele simple nu inteleg ce zic alte regate.. stiu ca sunt mai multe probleme dar eu zic ca au legatura intre ele si stiu ca nu m-am exprimat foarte corect dar in situatia de fata nu stiu cum sa ma exprim sa va fac sa-mi intelegeti problema mai bine..
Avatar utilizator
bobococox
Nivel 1

Nivel 1
Mesaje: 74
Membru din: 21 Dec 2014, 09:45
Server: Metin2
Regat: Shinsoo
Aprecieri: 31  
Mulţumiri: 1  
Medalii

upp va rog
Avatar utilizator
[GabrieL]
Utilizator interzis !

Utilizator interzis !
Mesaje: 288
Membru din: 31 Aug 2014, 10:24
Server: Metin2Class
Regat: Shinsoo
Aprecieri: 21  
Mulţumiri: 445  
Discord: Copiază ID
Medalii

Salutare! Te sfătuiesc să elimini definitiv "limbile" dintre regate. Am lucrat și eu pe acest svr și are nevoie de multe fix uri. Problema nu e de la sistemul implementat de tine.

[ Postat de pe Android ] Imagine
Avatar utilizator
bobococox
Nivel 1

Nivel 1
Mesaje: 74
Membru din: 21 Dec 2014, 09:45
Server: Metin2
Regat: Shinsoo
Aprecieri: 31  
Mulţumiri: 1  
Medalii

[GabrieL] scrie: ↑18 Apr 2020, 12:29 Salutare! Te sfătuiesc să elimini definitiv "limbile" dintre regate. Am lucrat și eu pe acest svr și are nevoie de multe fix uri. Problema nu e de la sistemul implementat de tine.

[ Postat de pe Android ] Imagine
Ok, si cum as putea face asta?
Avatar utilizator
[GabrieL]
Utilizator interzis !

Utilizator interzis !
Mesaje: 288
Membru din: 31 Aug 2014, 10:24
Server: Metin2Class
Regat: Shinsoo
Aprecieri: 21  
Mulţumiri: 445  
Discord: Copiază ID
Medalii

Deschide game/src/empire_text_convert.cpp
Cauta:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    if (dwEmpireID < 1 || dwEmpireID > 3 || len == 0)
        return;

    const STextConvertTable& rkTextConvTable = g_aTextConvTable[dwEmpireID - 1];

    for (BYTE* pbText = reinterpret_cast<BYTE*>(szText) ; len > 0 && *pbText != '\0' ; --len, ++pbText)
    {
        if (number(1,100) > iPct)
        {
            if (*pbText & 0x80)
            {
                if (g_iUseLocale)
                {
                    static char s_cChinaTable[][3] = {"ˇň","ŁŁ","٤","ˇů","ˇđ" };
                    int n = number(0, 4);
                    pbText[0] = s_cChinaTable[n][0];
                    pbText[1] = s_cChinaTable[n][1];
                }
                else
                {
                    if (pbText[0] >= 0xB0 && pbText[0] <= 0xC8 && pbText[1] >= 0xA1 && pbText[1] <= 0xFE)
                    {
                        UINT uHanPos = (pbText[0] - 0xB0) * (0xFE - 0xA1 + 1) + (pbText[1] - 0xA1);
                        pbText[0] = rkTextConvTable.aacHan[uHanPos][0];
                        pbText[1] = rkTextConvTable.aacHan[uHanPos][1];
                    }
                    else if ( pbText[0] == 0xA4 )
                    {
                        if ( pbText[1] >=0xA1 && pbText[1] <= 0xBE )
                        {
                            pbText[0] = rkTextConvTable.aacJaum[pbText[1]-0xA1][0];
                            pbText[1] = rkTextConvTable.aacJaum[pbText[1]-0xA1][1];
                        }
                        else if ( pbText[1] >= 0xBF && pbText[1] <= 0xD3 )
                        {
                            pbText[0] = rkTextConvTable.aacMoum[pbText[1]-0xBF][0];
                            pbText[1] = rkTextConvTable.aacMoum[pbText[1]-0xBF][1];
                        }
                    }
                }

                ++pbText;
                --len;
            }
            else
            {
                if (*pbText >= 'a' && *pbText <= 'z')
                {
                    *pbText = rkTextConvTable.acLower[*pbText - 'a'];
                }
                else if (*pbText >= 'A' && *pbText <= 'Z')
                {
                    *pbText = rkTextConvTable.acUpper[*pbText - 'A'];
                }
            }
        }
        else
        {
            if (*pbText & 0x80)
            {
                ++pbText;
                --len;
            }
        }
    }
}
Inlocuieste cu:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    return;
}
Pentru acest mesaj, [GabrieL] for the post:
bobococox
Avatar utilizator
bobococox
Nivel 1

Nivel 1
Mesaje: 74
Membru din: 21 Dec 2014, 09:45
Server: Metin2
Regat: Shinsoo
Aprecieri: 31  
Mulţumiri: 1  
Medalii

[GabrieL] scrie: ↑26 Apr 2020, 19:48 Deschide game/src/empire_text_convert.cpp
Cauta:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    if (dwEmpireID < 1 || dwEmpireID > 3 || len == 0)
        return;

    const STextConvertTable& rkTextConvTable = g_aTextConvTable[dwEmpireID - 1];

    for (BYTE* pbText = reinterpret_cast<BYTE*>(szText) ; len > 0 && *pbText != '\0' ; --len, ++pbText)
    {
        if (number(1,100) > iPct)
        {
            if (*pbText & 0x80)
            {
                if (g_iUseLocale)
                {
                    static char s_cChinaTable[][3] = {"ˇň","ŁŁ","٤","ˇů","ˇđ" };
                    int n = number(0, 4);
                    pbText[0] = s_cChinaTable[n][0];
                    pbText[1] = s_cChinaTable[n][1];
                }
                else
                {
                    if (pbText[0] >= 0xB0 && pbText[0] <= 0xC8 && pbText[1] >= 0xA1 && pbText[1] <= 0xFE)
                    {
                        UINT uHanPos = (pbText[0] - 0xB0) * (0xFE - 0xA1 + 1) + (pbText[1] - 0xA1);
                        pbText[0] = rkTextConvTable.aacHan[uHanPos][0];
                        pbText[1] = rkTextConvTable.aacHan[uHanPos][1];
                    }
                    else if ( pbText[0] == 0xA4 )
                    {
                        if ( pbText[1] >=0xA1 && pbText[1] <= 0xBE )
                        {
                            pbText[0] = rkTextConvTable.aacJaum[pbText[1]-0xA1][0];
                            pbText[1] = rkTextConvTable.aacJaum[pbText[1]-0xA1][1];
                        }
                        else if ( pbText[1] >= 0xBF && pbText[1] <= 0xD3 )
                        {
                            pbText[0] = rkTextConvTable.aacMoum[pbText[1]-0xBF][0];
                            pbText[1] = rkTextConvTable.aacMoum[pbText[1]-0xBF][1];
                        }
                    }
                }

                ++pbText;
                --len;
            }
            else
            {
                if (*pbText >= 'a' && *pbText <= 'z')
                {
                    *pbText = rkTextConvTable.acLower[*pbText - 'a'];
                }
                else if (*pbText >= 'A' && *pbText <= 'Z')
                {
                    *pbText = rkTextConvTable.acUpper[*pbText - 'A'];
                }
            }
        }
        else
        {
            if (*pbText & 0x80)
            {
                ++pbText;
                --len;
            }
        }
    }
}
Inlocuieste cu:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    return;
}
In game am doar: configurari, loguri, server, share si niste fisiere cu .sh dar src nu am si nu este in niciunu din acele fisiere mentionate.. Singurul src este in usr si acolo nu am niciun fisier empire_text_convert.cpp.. mai nicaieri nu am vazut vreun fisier .cpp.. Daca ai discord si ai timp sa ma ajuti ti-as fi recunoscator...
Avatar utilizator
[GabrieL]
Utilizator interzis !

Utilizator interzis !
Mesaje: 288
Membru din: 31 Aug 2014, 10:24
Server: Metin2Class
Regat: Shinsoo
Aprecieri: 21  
Mulţumiri: 445  
Discord: Copiază ID
Medalii

Documenteaza-te cu privire la ce inseamna "sursa"/"surse" si dupa ce simti ca stii , incearca sa folosesti informatiile pe care ti le-am lasat mai sus.
[Tutorial] Instalare && compilare sursa: ghiduri-tutoriale/instalare-sursa-t74147.html
Avatar utilizator
bobococox
Nivel 1

Nivel 1
Mesaje: 74
Membru din: 21 Dec 2014, 09:45
Server: Metin2
Regat: Shinsoo
Aprecieri: 31  
Mulţumiri: 1  
Medalii

[GabrieL] scrie: ↑26 Apr 2020, 19:48 Deschide game/src/empire_text_convert.cpp
Cauta:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    if (dwEmpireID < 1 || dwEmpireID > 3 || len == 0)
        return;

    const STextConvertTable& rkTextConvTable = g_aTextConvTable[dwEmpireID - 1];

    for (BYTE* pbText = reinterpret_cast<BYTE*>(szText) ; len > 0 && *pbText != '\0' ; --len, ++pbText)
    {
        if (number(1,100) > iPct)
        {
            if (*pbText & 0x80)
            {
                if (g_iUseLocale)
                {
                    static char s_cChinaTable[][3] = {"ˇň","ŁŁ","٤","ˇů","ˇđ" };
                    int n = number(0, 4);
                    pbText[0] = s_cChinaTable[n][0];
                    pbText[1] = s_cChinaTable[n][1];
                }
                else
                {
                    if (pbText[0] >= 0xB0 && pbText[0] <= 0xC8 && pbText[1] >= 0xA1 && pbText[1] <= 0xFE)
                    {
                        UINT uHanPos = (pbText[0] - 0xB0) * (0xFE - 0xA1 + 1) + (pbText[1] - 0xA1);
                        pbText[0] = rkTextConvTable.aacHan[uHanPos][0];
                        pbText[1] = rkTextConvTable.aacHan[uHanPos][1];
                    }
                    else if ( pbText[0] == 0xA4 )
                    {
                        if ( pbText[1] >=0xA1 && pbText[1] <= 0xBE )
                        {
                            pbText[0] = rkTextConvTable.aacJaum[pbText[1]-0xA1][0];
                            pbText[1] = rkTextConvTable.aacJaum[pbText[1]-0xA1][1];
                        }
                        else if ( pbText[1] >= 0xBF && pbText[1] <= 0xD3 )
                        {
                            pbText[0] = rkTextConvTable.aacMoum[pbText[1]-0xBF][0];
                            pbText[1] = rkTextConvTable.aacMoum[pbText[1]-0xBF][1];
                        }
                    }
                }

                ++pbText;
                --len;
            }
            else
            {
                if (*pbText >= 'a' && *pbText <= 'z')
                {
                    *pbText = rkTextConvTable.acLower[*pbText - 'a'];
                }
                else if (*pbText >= 'A' && *pbText <= 'Z')
                {
                    *pbText = rkTextConvTable.acUpper[*pbText - 'A'];
                }
            }
        }
        else
        {
            if (*pbText & 0x80)
            {
                ++pbText;
                --len;
            }
        }
    }
}
Inlocuieste cu:

Cod: Selectaţi tot

void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
{
    return;
}
da, am rezolvat. Multumesc !
Avatar utilizator
[RaKu]
Membru Club

Membru Club
Mesaje: 2137
Membru din: 30 Noi 2016, 21:49
Regat: Jinno
Aprecieri: 202  
Mulţumiri: 424  
Discord: Copiază ID
Medalii

Rezolvat!
Închis

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 32 vizitatori