[HELP]Bezáródik

Indította steis, 2017-12-07, 17:05:19

sziasztok
egyszercsak bezáródik a kliens mindenféle hibaüzi nélkül.


sysrr-ben ez található
CInstanceBase::AttachTextTail - VID [44211] ALREADY EXIST

Szia. Mit próbáltál csinálni?

Idézetet írta: MartinezTheKing Dátum 2017-12-07, 17:06:33
Szia. Mit próbáltál csinálni?

Srmmi különöset :D
vagyis semmit......csak teleportálásnál néha bezárja a klienst ezzel a sysrr el

Akkor a klienseddel lesz a hiba :D

Idézetet írta: MartinezTheKing Dátum 2017-12-07, 17:13:47
Akkor a klienseddel lesz a hiba :D

köszönöm a segítséget ... -.-
ki gondolta volna

Vagy a locale_game, locale_interface -ből hiányzik valami azért dob ki a teleportálásnál

Szerintem a 44211-es npc msm-jében lesz a gubanc.

Az üzenet egyértelmű:
44211 ID-n a AttachTextTail már létezik, tehát kétszer van ráhívva!
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

nem létezik se mob se tárgy ilyen ID-n

2017-12-07, 17:53:47 #9 Utolsó szerkesztés: 2017-12-07, 18:09:55 Szerző: udvatt108
Keresd meg a 44211 ID-vel rendelkező npc .msm fájlját majd nyisd meg egy szöveg szerkesztővel.

Ezután keress alábbihoz hasonló szöveget:
Group AttachingData

Ha kettő egyformát találsz, mondjuk:

Group AttachingData01

és

Group AttachingData01


Akkor nyilván megtaláltad a hiba forrását.

:)

Üzenet összefésülés: 2017-12-07, 18:04:29

Szétnéztem és (--> NÁLLAM <--) sehol egy fájlban vagy fájl névben sem szerepel a szóban forgó VNUM.

De ha megtalálod, akkor a hibát orvosolhatod a fent leírtak alapján.

Persze ha nem valami rendszer hiba idézi elő ami esetleges előző módosítás okozott. :)
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Idézetet írta: udvatt108 Dátum 2017-12-07, 17:53:47
Keresd meg a 44211 ID-vel rendelkező npc .msm fájlját majd nyisd meg egy szöveg szerkesztővel.

Ezután keress alábbihoz hasonló szöveget:
Group AttachingData

Ha kettő egyformát találsz, mondjuk:

Group AttachingData01

és

Group AttachingData01


Akkor nyilván megtaláltad a hiba forrását.

:)

Üzenet összefésülés: 2017-12-07, 18:04:29

Szétnéztem és (--> NÁLLAM <--) sehol egy fájlban vagy fájl névben sem szerepel a szóban forgó VNUM.

De ha megtalálod, akkor a hibát orvosolhatod a fent leírtak alapján.

Persze ha nem valami rendszer hiba idézi elő ami esetleges előző módosítás okozott. :)

Szia
nálam se azért furcsálom

2017-12-07, 18:39:51 #11 Utolsó szerkesztés: 2017-12-07, 18:50:12 Szerző: udvatt108
Ez a funkció felel a TextTail kiírásért a karakter felett (PL.: Szint, Név):

void CInstanceBase::AttachTextTail()
{
if (m_isTextTail)
{
TraceError("CInstanceBase::AttachTextTail - VID [%d] ALREADY EXIST", GetVirtualID());
return;
}

m_isTextTail=true;

DWORD dwVID=GetVirtualID();

float fTextTailHeight=IsMountingHorse() ? 110.0f : 10.0f;

static D3DXCOLOR s_kD3DXClrTextTail=D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
CPythonTextTail::Instance().RegisterCharacterTextTail(m_dwGuildID, dwVID, s_kD3DXClrTextTail, fTextTailHeight);

// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}
}


És tisztán látható, hogy akkor ír csak hibát ha ismétlés van.

Keresgélj még kicsit mélyebben és ha nem megy tudok egy debug megoldást.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

módosítsd erre és elvileg nem lesz baj:

void CInstanceBase::AttachTextTail()
{
if (m_isTextTail)
{
TraceError("CInstanceBase::AttachTextTail - VID [%d] ALREADY EXIST", GetVirtualID());
CPythonTextTail::Instance().DeleteCharacterTextTail(GetVirtualID());
}

m_isTextTail=true;

DWORD dwVID=GetVirtualID();

float fTextTailHeight=IsMountingHorse() ? 110.0f : 10.0f;

static D3DXCOLOR s_kD3DXClrTextTail=D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
CPythonTextTail::Instance().RegisterCharacterTextTail(m_dwGuildID, dwVID, s_kD3DXClrTextTail, fTextTailHeight);

// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}
}

C++ programmer at Gameloft

- Distraught

Persze csak akkor használhatja teljes kódot, ha nála is bent van a ez:

// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}


Ami a karakter szint frissítésért felel.

És egyébként mivel TraceError-ban küldi a hibát ugyan úgy klienset zár.

Szóval én így módosítanám:

void CInstanceBase::AttachTextTail()
{
if (!m_isTextTail)
{
//TraceError("CInstanceBase::AttachTextTail - VID [%d] ALREADY EXIST", GetVirtualID());
m_isTextTail=true;

DWORD dwVID=GetVirtualID();

float fTextTailHeight=IsMountingHorse() ? 110.0f : 10.0f;

static D3DXCOLOR s_kD3DXClrTextTail=D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
CPythonTextTail::Instance().RegisterCharacterTextTail(m_dwGuildID, dwVID, s_kD3DXClrTextTail, fTextTailHeight);

// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}
}
}


Szintén figyelni kell az én kódomnál is arra, hogy a te előző kódodban benne van e az alábbi, mert ha nincs értelem szerűen törlöd az én féle kódomból:
// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}

Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.


void CInstanceBase::AttachTextTail()
{
if (m_isTextTail)
{
CPythonTextTail::Instance().DeleteCharacterTextTail(GetVirtualID());
}

m_isTextTail=true;

DWORD dwVID=GetVirtualID();

float fTextTailHeight=IsMountingHorse() ? 110.0f : 10.0f;

static D3DXCOLOR s_kD3DXClrTextTail=D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
CPythonTextTail::Instance().RegisterCharacterTextTail(m_dwGuildID, dwVID, s_kD3DXClrTextTail, fTextTailHeight);

// CHARACTER_LEVEL
if (m_dwLevel)
{
UpdateTextTailLevel(m_dwLevel);
}
}

Vagy egyszerűen kiszedi a trace error sort, mivel akkor már nincs értelme logolni.

C++ programmer at Gameloft

így van, tökéletesen igazad van.

Csak ha már létezik, minek töröljük az előzőt és deklaráljuk újra?
Egyszerűen csak ignoráljuk a következő vagy az utáni és azutáni és így további újra deklarálásokat.
Nincs felesleges munkája a kliensnek, bár nem mintha jelentős lenne. :)

Pacsi Distraught.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Van benne valami, csak nem tudom mi miatt küldi ki újra. Lehet, hogy történik valami változás benne, és amiatt. Sajnos ennyiből ezt nem igazán tudjuk megállapítani, ezért célszerűbb inkább töröltetni és újraküldetni.

C++ programmer at Gameloft

Így van, bár véleményem szerint az eredeti tervezőket sem értem miért hisztisre irtat a kódok nagy részét mint ezt is. A jelen felvázolt  megoldások talán az eredetit is felül múlják hatékonyságilag. :P
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Hát valóban van jópár dolog, amit célszerűbb átírni. Szerintem hanyagok és fáradtak voltak, bár fura, hogy a GF szervereken meg nagyon sok másik szerveren sem jött elő ez a hiba. Szóval a probléma gyökere máshol lesz szerintem, amit pedig ő ronthatott el. De teljesen igazad van, hogy rengeteg hely van, ahol direkt lehetőséget hagynak a hibának. :D

C++ programmer at Gameloft

Grqnny kisül, hiaba nyitsz 40 témát, a 34k visszamaradott sajnos.