*Problemă/Întrebare:
Toate resursele le-am folosit de aici de pe forum si de prin alte server postate pe alte forum-uri toate fac la fel ma deconecteaza la login fara sa lase vro urma de erroare am incercat sa ii fac trace error pe la functiile de open din client dar nici un rezultat ma depaseste problema nu stiu de la ce poate sa fie dar stiu sigur ca sunt personele care l-au rezolvat sa mearga pe tmp4 lasati un mesaj pe discord sau aici la postare daca stiti cumva de la ce este merci frumos
*Resursă folosită (sistem/funcție/modificare):
*Syserr:
SA NU MA INTREBATI DE ASA CEVA CA DACA EXISTA NU MAI FACEAM TOPIC DE MAI BINE DE JUMATE DE AN INCERC SA IL REPAR
*Fișier(e) cu problema (link pastebin / code):
*Poze / Video:
Toate resursele le-am folosit de aici de pe forum si de prin alte server postate pe alte forum-uri toate fac la fel ma deconecteaza la login fara sa lase vro urma de erroare am incercat sa ii fac trace error pe la functiile de open din client dar nici un rezultat ma depaseste problema nu stiu de la ce poate sa fie dar stiu sigur ca sunt personele care l-au rezolvat sa mearga pe tmp4 lasati un mesaj pe discord sau aici la postare daca stiti cumva de la ce este merci frumos
*Resursă folosită (sistem/funcție/modificare):
*Syserr:
SA NU MA INTREBATI DE ASA CEVA CA DACA EXISTA NU MAI FACEAM TOPIC DE MAI BINE DE JUMATE DE AN INCERC SA IL REPAR
*Fișier(e) cu problema (link pastebin / code):
*Poze / Video:
Contact:
Nu stiu de la ce e, nu l-am implementat niciodată, dar te pot ajuta cu idei, poate reușești.
In primul rand, se vede clar din video că se apelează fereastra + acel loading circle. Practic asta inseamnă că python face partea de UI + trimite request către server. Practic pe fir urmează binarul C++ incearcă să citească raspunsul primit de la server. Deci stim unde să punem un traceback, practic intra in sursa client si du-te in UserInterface/PythonNetworkStreamPhaseGame.cpp(sau unde a avut resursa partea de network), intr-una din ăstea ai implementat probabil functia Recv, practic cauta ceva gen bool CPythonNetworkStream::Recv(). Sub ea ai un if statement ceva gen if (!Recv(sizeof(pachetul tau ), &p))
return false; -> Aici te deconectează pe ascuns!. inainte de return adaugi un TraceError. Bonus poti sa adaugi si la void CPythonNetworkStream::Disconnect() un TraceError si practic vei vedea clar în syserr.txt dacă binarul inițiază deconectarea în momentul respectiv. Sigur e ceva incompatibilitate intre DWORD, int sau byte pe undeva. Mai jos e un exemplu cum il am eu implementat. Si practic dacă apare UNKNOWN OFFLINESHOP SUBHEADER, e clar că serverul trimite un subheader pe care clientul nu îl are definit în enum-ul din binar, iar dacă iti returnează un subheader înseamnă că structura pachetului din acea funcție e greșită.
In primul rand, se vede clar din video că se apelează fereastra + acel loading circle. Practic asta inseamnă că python face partea de UI + trimite request către server. Practic pe fir urmează binarul C++ incearcă să citească raspunsul primit de la server. Deci stim unde să punem un traceback, practic intra in sursa client si du-te in UserInterface/PythonNetworkStreamPhaseGame.cpp(sau unde a avut resursa partea de network), intr-una din ăstea ai implementat probabil functia Recv, practic cauta ceva gen bool CPythonNetworkStream::Recv(). Sub ea ai un if statement ceva gen if (!Recv(sizeof(pachetul tau ), &p))
return false; -> Aici te deconectează pe ascuns!. inainte de return adaugi un TraceError. Bonus poti sa adaugi si la void CPythonNetworkStream::Disconnect() un TraceError si practic vei vedea clar în syserr.txt dacă binarul inițiază deconectarea în momentul respectiv. Sigur e ceva incompatibilitate intre DWORD, int sau byte pe undeva. Mai jos e un exemplu cum il am eu implementat. Si practic dacă apare UNKNOWN OFFLINESHOP SUBHEADER, e clar că serverul trimite un subheader pe care clientul nu îl are definit în enum-ul din binar, iar dacă iti returnează un subheader înseamnă că structura pachetului din acea funcție e greșită.
Code:
bool CPythonNetworkStream::RecvOfflineshopPacket()
{
TPacketGCNewOfflineshop pack;
if(!Recv(sizeof(pack), &pack))
{
TraceError("=== OFFLINESHOP CRASH === Eroare la citirea pachetului principal!");
return false;
}
// Aici vedem ce subheader se execută fix în secunda când te dă afară
TraceError("=== OFFLINESHOP DEBUG === Am primit subheader-ul: %d", pack.bSubHeader);
switch (pack.bSubHeader)
{
case offlineshop::SUBHEADER_GC_SHOP_LIST: return RecvOfflineshopShopList();
case offlineshop::SUBHEADER_GC_SHOP_OPEN: return RecvOfflineshopShopOpen();
case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER: return RecvOfflineshopShopOpenOwner();
case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER_NO_SHOP: return RecvOfflineshopShopOpenOwnerNoShop();
case offlineshop::SUBHEADER_GC_SHOP_CLOSE: return RecvOfflineshopShopClose();
case offlineshop::SUBHEADER_GC_SHOP_BUY_ITEM_FROM_SEARCH: return RecvOfflineshopShopBuyItemFromSearch();
case offlineshop::SUBHEADER_GC_SHOP_FILTER_RESULT: return RecvOfflineshopShopFilterResult();
case offlineshop::SUBHEADER_GC_OFFER_LIST: return RecvOfflineshopOfferList();
case offlineshop::SUBHEADER_GC_SHOP_SAFEBOX_REFRESH: return RecvOfflineshopShopSafeboxRefresh();
case offlineshop::SUBHEADER_GC_AUCTION_LIST: return RecvOfflineshopAuctionList();
case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION: return RecvOfflineshopOpenMyAuction();
case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION_NO_AUCTION: return RecvOfflineshopOpenMyAuctionNoAuction();
case offlineshop::SUBHEADER_GC_OPEN_AUCTION: return RecvOfflineshopOpenAuction();
#ifdef ENABLE_NEW_SHOP_IN_CITIES
case offlineshop::SUBHEADER_GC_INSERT_SHOP_ENTITY: return RecvOfflineshopInsertEntity();
case offlineshop::SUBHEADER_GC_REMOVE_SHOP_ENTITY: return RecvOfflineshopRemoveEntity();
#endif
#ifdef ENABLE_OFFLINESHOP_REWORK
case offlineshop::SUBHEADER_GC_NOTIFICATION: return RecvOfflineshopNotification();
#endif
default:
TraceError("UNKNOWN OFFLINESHOP SUBHEADER : %d ",pack.bSubHeader);
return false;
}
}da am pus si nu functioneaza nu da nici o erroare am incercat si cu debug nimicbebame3140 scrie: ↑ Nu stiu de la ce e, nu l-am implementat niciodată, dar te pot ajuta cu idei, poate reușești.
In primul rand, se vede clar din video că se apelează fereastra + acel loading circle. Practic asta inseamnă că python face partea de UI + trimite request către server. Practic pe fir urmează binarul C++ incearcă să citească raspunsul primit de la server. Deci stim unde să punem un traceback, practic intra in sursa client si du-te in UserInterface/PythonNetworkStreamPhaseGame.cpp(sau unde a avut resursa partea de network), intr-una din ăstea ai implementat probabil functia Recv, practic cauta ceva gen bool CPythonNetworkStream::Recv(). Sub ea ai un if statement ceva gen if (!Recv(sizeof(pachetul tau ), &p))
return false; -> Aici te deconectează pe ascuns!. inainte de return adaugi un TraceError. Bonus poti sa adaugi si la void CPythonNetworkStream::Disconnect() un TraceError si practic vei vedea clar în syserr.txt dacă binarul inițiază deconectarea în momentul respectiv. Sigur e ceva incompatibilitate intre DWORD, int sau byte pe undeva. Mai jos e un exemplu cum il am eu implementat. Si practic dacă apare UNKNOWN OFFLINESHOP SUBHEADER, e clar că serverul trimite un subheader pe care clientul nu îl are definit în enum-ul din binar, iar dacă iti returnează un subheader înseamnă că structura pachetului din acea funcție e greșită.
Code:bool CPythonNetworkStream::RecvOfflineshopPacket() { TPacketGCNewOfflineshop pack; if(!Recv(sizeof(pack), &pack)) { TraceError("=== OFFLINESHOP CRASH === Eroare la citirea pachetului principal!"); return false; } // Aici vedem ce subheader se execută fix în secunda când te dă afară TraceError("=== OFFLINESHOP DEBUG === Am primit subheader-ul: %d", pack.bSubHeader); switch (pack.bSubHeader) { case offlineshop::SUBHEADER_GC_SHOP_LIST: return RecvOfflineshopShopList(); case offlineshop::SUBHEADER_GC_SHOP_OPEN: return RecvOfflineshopShopOpen(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER: return RecvOfflineshopShopOpenOwner(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER_NO_SHOP: return RecvOfflineshopShopOpenOwnerNoShop(); case offlineshop::SUBHEADER_GC_SHOP_CLOSE: return RecvOfflineshopShopClose(); case offlineshop::SUBHEADER_GC_SHOP_BUY_ITEM_FROM_SEARCH: return RecvOfflineshopShopBuyItemFromSearch(); case offlineshop::SUBHEADER_GC_SHOP_FILTER_RESULT: return RecvOfflineshopShopFilterResult(); case offlineshop::SUBHEADER_GC_OFFER_LIST: return RecvOfflineshopOfferList(); case offlineshop::SUBHEADER_GC_SHOP_SAFEBOX_REFRESH: return RecvOfflineshopShopSafeboxRefresh(); case offlineshop::SUBHEADER_GC_AUCTION_LIST: return RecvOfflineshopAuctionList(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION: return RecvOfflineshopOpenMyAuction(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION_NO_AUCTION: return RecvOfflineshopOpenMyAuctionNoAuction(); case offlineshop::SUBHEADER_GC_OPEN_AUCTION: return RecvOfflineshopOpenAuction(); #ifdef ENABLE_NEW_SHOP_IN_CITIES case offlineshop::SUBHEADER_GC_INSERT_SHOP_ENTITY: return RecvOfflineshopInsertEntity(); case offlineshop::SUBHEADER_GC_REMOVE_SHOP_ENTITY: return RecvOfflineshopRemoveEntity(); #endif #ifdef ENABLE_OFFLINESHOP_REWORK case offlineshop::SUBHEADER_GC_NOTIFICATION: return RecvOfflineshopNotification(); #endif default: TraceError("UNKNOWN OFFLINESHOP SUBHEADER : %d ",pack.bSubHeader); return false; } }
Contact:
Ai facut partea de disconnect? void CPythonNetworkStream::Disconnect() si pune-i un traceback. Dacă mesajul APARE în syserr Înseamnă că binarul clientului decide voluntar deconectarea. Este 99% o desincronizare de pachete. Dacă NU apare, e mai complicat puțin.salexandru9982 scrie: ↑da am pus si nu functioneaza nu da nici o erroare am incercat si cu debug nimicbebame3140 scrie: ↑ Nu stiu de la ce e, nu l-am implementat niciodată, dar te pot ajuta cu idei, poate reușești.
In primul rand, se vede clar din video că se apelează fereastra + acel loading circle. Practic asta inseamnă că python face partea de UI + trimite request către server. Practic pe fir urmează binarul C++ incearcă să citească raspunsul primit de la server. Deci stim unde să punem un traceback, practic intra in sursa client si du-te in UserInterface/PythonNetworkStreamPhaseGame.cpp(sau unde a avut resursa partea de network), intr-una din ăstea ai implementat probabil functia Recv, practic cauta ceva gen bool CPythonNetworkStream::Recv(). Sub ea ai un if statement ceva gen if (!Recv(sizeof(pachetul tau ), &p))
return false; -> Aici te deconectează pe ascuns!. inainte de return adaugi un TraceError. Bonus poti sa adaugi si la void CPythonNetworkStream::Disconnect() un TraceError si practic vei vedea clar în syserr.txt dacă binarul inițiază deconectarea în momentul respectiv. Sigur e ceva incompatibilitate intre DWORD, int sau byte pe undeva. Mai jos e un exemplu cum il am eu implementat. Si practic dacă apare UNKNOWN OFFLINESHOP SUBHEADER, e clar că serverul trimite un subheader pe care clientul nu îl are definit în enum-ul din binar, iar dacă iti returnează un subheader înseamnă că structura pachetului din acea funcție e greșită.
Code:bool CPythonNetworkStream::RecvOfflineshopPacket() { TPacketGCNewOfflineshop pack; if(!Recv(sizeof(pack), &pack)) { TraceError("=== OFFLINESHOP CRASH === Eroare la citirea pachetului principal!"); return false; } // Aici vedem ce subheader se execută fix în secunda când te dă afară TraceError("=== OFFLINESHOP DEBUG === Am primit subheader-ul: %d", pack.bSubHeader); switch (pack.bSubHeader) { case offlineshop::SUBHEADER_GC_SHOP_LIST: return RecvOfflineshopShopList(); case offlineshop::SUBHEADER_GC_SHOP_OPEN: return RecvOfflineshopShopOpen(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER: return RecvOfflineshopShopOpenOwner(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER_NO_SHOP: return RecvOfflineshopShopOpenOwnerNoShop(); case offlineshop::SUBHEADER_GC_SHOP_CLOSE: return RecvOfflineshopShopClose(); case offlineshop::SUBHEADER_GC_SHOP_BUY_ITEM_FROM_SEARCH: return RecvOfflineshopShopBuyItemFromSearch(); case offlineshop::SUBHEADER_GC_SHOP_FILTER_RESULT: return RecvOfflineshopShopFilterResult(); case offlineshop::SUBHEADER_GC_OFFER_LIST: return RecvOfflineshopOfferList(); case offlineshop::SUBHEADER_GC_SHOP_SAFEBOX_REFRESH: return RecvOfflineshopShopSafeboxRefresh(); case offlineshop::SUBHEADER_GC_AUCTION_LIST: return RecvOfflineshopAuctionList(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION: return RecvOfflineshopOpenMyAuction(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION_NO_AUCTION: return RecvOfflineshopOpenMyAuctionNoAuction(); case offlineshop::SUBHEADER_GC_OPEN_AUCTION: return RecvOfflineshopOpenAuction(); #ifdef ENABLE_NEW_SHOP_IN_CITIES case offlineshop::SUBHEADER_GC_INSERT_SHOP_ENTITY: return RecvOfflineshopInsertEntity(); case offlineshop::SUBHEADER_GC_REMOVE_SHOP_ENTITY: return RecvOfflineshopRemoveEntity(); #endif #ifdef ENABLE_OFFLINESHOP_REWORK case offlineshop::SUBHEADER_GC_NOTIFICATION: return RecvOfflineshopNotification(); #endif default: TraceError("UNKNOWN OFFLINESHOP SUBHEADER : %d ",pack.bSubHeader); return false; } }
void CPythonNetworkStream::Disconnect() asta nu o gasescbebame3140 scrie: ↑Ai facut partea de disconnect? void CPythonNetworkStream::Disconnect() si pune-i un traceback. Dacă mesajul APARE în syserr Înseamnă că binarul clientului decide voluntar deconectarea. Este 99% o desincronizare de pachete. Dacă NU apare, e mai complicat puțin.salexandru9982 scrie: ↑da am pus si nu functioneaza nu da nici o erroare am incercat si cu debug nimicbebame3140 scrie: ↑ Nu stiu de la ce e, nu l-am implementat niciodată, dar te pot ajuta cu idei, poate reușești.
In primul rand, se vede clar din video că se apelează fereastra + acel loading circle. Practic asta inseamnă că python face partea de UI + trimite request către server. Practic pe fir urmează binarul C++ incearcă să citească raspunsul primit de la server. Deci stim unde să punem un traceback, practic intra in sursa client si du-te in UserInterface/PythonNetworkStreamPhaseGame.cpp(sau unde a avut resursa partea de network), intr-una din ăstea ai implementat probabil functia Recv, practic cauta ceva gen bool CPythonNetworkStream::Recv(). Sub ea ai un if statement ceva gen if (!Recv(sizeof(pachetul tau ), &p))
return false; -> Aici te deconectează pe ascuns!. inainte de return adaugi un TraceError. Bonus poti sa adaugi si la void CPythonNetworkStream::Disconnect() un TraceError si practic vei vedea clar în syserr.txt dacă binarul inițiază deconectarea în momentul respectiv. Sigur e ceva incompatibilitate intre DWORD, int sau byte pe undeva. Mai jos e un exemplu cum il am eu implementat. Si practic dacă apare UNKNOWN OFFLINESHOP SUBHEADER, e clar că serverul trimite un subheader pe care clientul nu îl are definit în enum-ul din binar, iar dacă iti returnează un subheader înseamnă că structura pachetului din acea funcție e greșită.
Code:bool CPythonNetworkStream::RecvOfflineshopPacket() { TPacketGCNewOfflineshop pack; if(!Recv(sizeof(pack), &pack)) { TraceError("=== OFFLINESHOP CRASH === Eroare la citirea pachetului principal!"); return false; } // Aici vedem ce subheader se execută fix în secunda când te dă afară TraceError("=== OFFLINESHOP DEBUG === Am primit subheader-ul: %d", pack.bSubHeader); switch (pack.bSubHeader) { case offlineshop::SUBHEADER_GC_SHOP_LIST: return RecvOfflineshopShopList(); case offlineshop::SUBHEADER_GC_SHOP_OPEN: return RecvOfflineshopShopOpen(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER: return RecvOfflineshopShopOpenOwner(); case offlineshop::SUBHEADER_GC_SHOP_OPEN_OWNER_NO_SHOP: return RecvOfflineshopShopOpenOwnerNoShop(); case offlineshop::SUBHEADER_GC_SHOP_CLOSE: return RecvOfflineshopShopClose(); case offlineshop::SUBHEADER_GC_SHOP_BUY_ITEM_FROM_SEARCH: return RecvOfflineshopShopBuyItemFromSearch(); case offlineshop::SUBHEADER_GC_SHOP_FILTER_RESULT: return RecvOfflineshopShopFilterResult(); case offlineshop::SUBHEADER_GC_OFFER_LIST: return RecvOfflineshopOfferList(); case offlineshop::SUBHEADER_GC_SHOP_SAFEBOX_REFRESH: return RecvOfflineshopShopSafeboxRefresh(); case offlineshop::SUBHEADER_GC_AUCTION_LIST: return RecvOfflineshopAuctionList(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION: return RecvOfflineshopOpenMyAuction(); case offlineshop::SUBHEADER_GC_OPEN_MY_AUCTION_NO_AUCTION: return RecvOfflineshopOpenMyAuctionNoAuction(); case offlineshop::SUBHEADER_GC_OPEN_AUCTION: return RecvOfflineshopOpenAuction(); #ifdef ENABLE_NEW_SHOP_IN_CITIES case offlineshop::SUBHEADER_GC_INSERT_SHOP_ENTITY: return RecvOfflineshopInsertEntity(); case offlineshop::SUBHEADER_GC_REMOVE_SHOP_ENTITY: return RecvOfflineshopRemoveEntity(); #endif #ifdef ENABLE_OFFLINESHOP_REWORK case offlineshop::SUBHEADER_GC_NOTIFICATION: return RecvOfflineshopNotification(); #endif default: TraceError("UNKNOWN OFFLINESHOP SUBHEADER : %d ",pack.bSubHeader); return false; } }
mia scris cineva pe discord ca sar putea sa fie din cauza ca eu nu am system de long long gold si eu am DWORD gold;
edit: nu cred ca este de la asta pentru ca am verificat vro 2 servere care are offlineshop asta si nu are nici o treaba tot asa nu am long long gold; problema este din alta parte de unde nu am nici cea mai mica idee
edit: nu cred ca este de la asta pentru ca am verificat vro 2 servere care are offlineshop asta si nu are nici o treaba tot asa nu am long long gold; problema este din alta parte de unde nu am nici cea mai mica idee
Contact:
Oare lucrezi pe serverfile-ul , pe care l-ai postat ca resursă? Dacă da, si are acest sistem zi-mi si il descarc si mă uit eu.salexandru9982 scrie: ↑ mia scris cineva pe discord ca sar putea sa fie din cauza ca eu nu am system de long long gold si eu am DWORD gold;
edit: nu cred ca este de la asta pentru ca am verificat vro 2 servere care are offlineshop asta si nu are nici o treaba tot asa nu am long long gold; problema este din alta parte de unde nu am nici cea mai mica idee
pe tmp4 este dar nu are bagat shop-ul offline ala postat de mine este un backup vechi de vrun an si cevabebame3140 scrie: ↑Oare lucrezi pe serverfile-ul , pe care l-ai postat ca resursă? Dacă da, si are acest sistem zi-mi si il descarc si mă uit eu.salexandru9982 scrie: ↑ mia scris cineva pe discord ca sar putea sa fie din cauza ca eu nu am system de long long gold si eu am DWORD gold;
edit: nu cred ca este de la asta pentru ca am verificat vro 2 servere care are offlineshop asta si nu are nici o treaba tot asa nu am long long gold; problema este din alta parte de unde nu am nici cea mai mica idee
Contact:
Mno, fă cumva dacă vrei si simti că merită si trimite-mi undeva serverfille-ul si mă uit zilele ăstea peste.salexandru9982 scrie: ↑pe tmp4 este dar nu are bagat shop-ul offline ala postat de mine este un backup vechi de vrun an si cevabebame3140 scrie: ↑Oare lucrezi pe serverfile-ul , pe care l-ai postat ca resursă? Dacă da, si are acest sistem zi-mi si il descarc si mă uit eu.salexandru9982 scrie: ↑ mia scris cineva pe discord ca sar putea sa fie din cauza ca eu nu am system de long long gold si eu am DWORD gold;
edit: nu cred ca este de la asta pentru ca am verificat vro 2 servere care are offlineshop asta si nu are nici o treaba tot asa nu am long long gold; problema este din alta parte de unde nu am nici cea mai mica idee
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.
Autentifică-te
-
Subiecte similare
Informații
Utilizatori ce navighează pe acest forum: bebame3140, P1KS3L și 1 vizitator
Discord ID copiat:



