Jump to content

Draveniou1

Active Member
  • Posts

    252
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    100%

Everything posted by Draveniou1

  1. Then the client will not close ....................................... /quit = client turn closed ---> we need this---> ch->ChatPacket(CHAT_TYPE_COMMAND, "quit"); Its 100% fix without game.core or another problems case SCMD_QUIT: if (d) d->DelayedDisconnect(2); d->ChatPacket(CHAT_TYPE_COMMAND, "quit"); break;
  2. if remove this d-> Then there will be other problems on the game.core server in some random situations. If you want to it but after that you will soon encounter problems with many players online with game.core It's better to stay that way ----> if (d) d->DelayedDisconnect(2); d->ChatPacket(CHAT_TYPE_COMMAND, "quit");
  3. It's a different fix that may temporarily help many people who have had this problem for many years........ It has also been tested with many online players and works perfectly without any problems
  4. I notice various files with problem when exiting the game, If you leave the game the character is online, client is going off but character is still in game We fixed the problem today and it works perfectly /* It is only for files that have this problem like mainline ++ files */ 1) Open cmt_general.cpp search: case SCMD_QUIT: ch->ChatPacket(CHAT_TYPE_COMMAND, "quit"); break; change with: case SCMD_QUIT: if (d) d->DelayedDisconnect(2); d->ChatPacket(CHAT_TYPE_COMMAND, "quit"); break; Fix by @ martysama0134 case SCMD_QUIT: ch->ChatPacket(CHAT_TYPE_COMMAND, "quit"); if (d) d->DelayedDisconnect(1); break; ------------------------------------------------------------------------ for me good case SCMD_QUIT: ch->ChatPacket(CHAT_TYPE_COMMAND, "quit"); if (d) d->DelayedDisconnect(3); break;
  5. **Server deleted by ASIKOO - at the request of the server owner** * The Server is not mine but has the fix I have here in the post * My server will open shortly I'm waiting for you to break it
  6. Larger servers have also deleted it ---> (that's why it is called 'IMPROVED'). IMPROVED-> 1 A big BUG If you do not know do not answer, You sit down with IMPROVED All servers in 2019-2020 have deleted IMPROVED I know many servers that have deleted it and have not encountered a hack problem To answer so means you have no idea of programming Good luck
  7. It is also difficult to find the right keys because I say change the keys every 20-30 days did you understand?
  8. I know you look but it will not work because it has random BYTES long [9] I Can creating my client and you search my Byte and not fghfghfgjfgsdfsdfsdfgjhfgjhdfhdhd [Hidden Content]
  9. Can't find the key because it is in BYTE up 250 // long fghfghfgjfgsdfsdfsdfgjhfgjhdfhdhd [9]? 9x100 900 BYTE -100 byte after login it is safe try to break it you will not be able to If it wasn't safe I wouldn't post it It will also not be delayed, ... because you have deactivated the send packet
  10. With this method I am always safe in packets of course everyone has their own way for security in packets I work with BYTES because hackers can not break them With 1k player online server I was always safe no one could damage my server as long as these BYTES existed Because you have heard various things about it you think it is not a good solution just try it and you will find that it is a correct solution But I try to make a better security in lib I need to deal more with lib and not with packet.h So that I do not have to constantly make new BYTE
  11. Today creating new version for key 1) open in packet.h serverside/clientside packet.h search: command_login2 command_login3 command_login5 add: #ifdef PROTECTION_PACKET int bloPakediMiet[8]; long bloPwerdiMiet[9]; int bloPtwejiMiet[8]; long bloPgssdfiMiet[9]; int bloPghcvMiet[8]; long bloPghdsdiMiet[9]; int bloPaiopryiMiet[8]; #endif open service.h / locale_inc.h add #ifdef PROTECTION_PACKET After 20-30 days change name from code int bloPakediMiet[8]; long bloPwerdiMiet[9]; int bloPtwejiMiet[8]; long bloPgssdfiMiet[9]; int bloPghcvMiet[8]; long bloPghdsdiMiet[9]; int bloPaiopryiMiet[8]; example: int wertgwertgetgrgergrgyergh[8]; long fghfghfgjfgjhfgjhdfhdhd[9]; int AWERWQRWQEREFRSF[8]; long gsdfsfwetwerwertfwetfwefwefgUiet[9]; int WETWETWERTFWEFTWEFTWEFGWE[8]; long SDFWETGERTGWETFWERFWRFWQRQWRQWRt[9]; int WETFWEWETFGWETGWETGWEGWGWETGTG[8]; after 20 days again rename BYTES int wertgwertgetdfgsdfgsdgdsfggrgergrgyergh[8]; long fghfghfgjfgsdfsdfsdfgjhfgjhdfhdhd[9]; int AWERWQRWsdfgsdgfsdgsdQEREFRSF[8]; long gsdfsfwetwersdgsdfgsdgwertfwetfwefwefgUiet[9]; int WETWETWdfgdfgdfgfghERTFWEFTWEFTWEFGWE[8]; long SDFWETGfhdfhdfghERTGWETFWERFWRFWQRQWRQWRt[9]; int WETFWEWEfgsdsdhgsdsdghsdghsdTFGWETGWETGWEGWGWETGTG[8];
  12. I do not think the key can be found because it has more than 250 BYTES So it can be found long 250 easy found bytes it
  13. Need 1 example EXAMPLE: CLIENTSIDE: typedef struct command_login3 { BYTE header; char name[ID_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1]; DWORD adwClientKey[4]; #ifdef PROTECT_KEY_FROM_HACKERS long 28374235784954363253456345346346345634563456678678977823834681293345634563456675674784784574124792375237; //max hacker 255 :) not unlock #endif } TPacketCGLogin3; SERVERSIDE: typedef struct command_login3 { BYTE header; char login[LOGIN_MAX_LEN + 1]; char passwd[PASSWD_MAX_LEN + 1]; DWORD adwClientKey[4]; #ifdef PROTECT_KEY_FROM_HACKERS long 28374235784954363253456345346346345634563456678678977823834681293345634563456675674784784574124792375237; #endif } TPacketCGLogin3; SERVICE CLIENT/SERVER #define PROTECT_KEY_FROM_HACKERS Hackers can not find more than 250 BYTES as the number 28374235784954363253456345346346345634563456678678977823834681293345634563456675674784784574124792375237 It will protect you
  14. 12. And today shared Fix sequence from internal packet 1) open input.cpp search: bool CInputProcessor::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed) .............. ............ ...... return true; } change with : int g_iLastPacket[2] = { -1, -1 }; bool CInputProcessor::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed) { const char * c_pData = (const char *) c_pvOrig; int iPacketLen; if (!m_pPacketInfo) { sys_err("No packet info has been binded to"); return true; } for (m_iBufferLeft = iBytes; m_iBufferLeft > 0;) { BYTE bHeader = (BYTE) *(c_pData); const char * c_pszName; if (bHeader == 0) iPacketLen = 1; else if (!m_pPacketInfo->Get(bHeader, &iPacketLen, &c_pszName)) { lpDesc->SetPhase(PHASE_CLOSE); return true; } if (m_iBufferLeft < iPacketLen) return true; int originalPacketSize = iPacketLen; BYTE preAnalyzeSeq = *(BYTE*)(c_pData + iPacketLen - sizeof(BYTE)); if (bHeader) { if (test_server && bHeader != HEADER_CG_MOVE) sys_log(0, "Packet Analyze [Header %d][bufferLeft %d] ", bHeader, m_iBufferLeft); m_pPacketInfo->Start(); int iExtraPacketSize = Analyze(lpDesc, bHeader, c_pData); if (iExtraPacketSize < 0) { #ifdef ENABLE_ANTI_PACKET_FLOOD sys_err("Failed to analyze header(%u) host(%s)", bHeader, inet_ntoa(lpDesc->GetAddr().sin_addr)); lpDesc->SetPhase(PHASE_CLOSE); #endif return true; } iPacketLen += iExtraPacketSize; lpDesc->Log("%s %d", c_pszName, iPacketLen); m_pPacketInfo->End(); } c_pData += iPacketLen; m_iBufferLeft -= iPacketLen; r_iBytesProceed += iPacketLen; g_iLastPacket[1] = g_iLastPacket[0]; g_iLastPacket[0] = bHeader; if (GetType() != lpDesc->GetInputProcessor()->GetType()) return false; } return true; }
  15. I know If you want help I can help you, send me a message and I will help you [free help]
  16. normal why is there / * .... * / You put it as you want return false; or return true;
  17. Search : SendQuickSlotMovePacket SendQuickSlotDelPacket' SendQuickSlotAddPacket' SendItemPickUpPacket' SendItemDestroyPacket' SendItemDropPacketNew' SendItemDropPacket' SendItemUseToItemPacket SendShopSellPacketNew' SendShopSellPacket' SendShopEndPacket' SendShopBuyPacket' change: return sendsequence(); with: return false;
  18. Is there security in the sources that prevents you from buying with 0 yang, My method is safe and has been tested with 1k player online for 5 months SAFEZONE: if (r_item.price <= 0) { LogManager::instance().HackLog("SHOP_BUY_GOLD_OVERFLOW", ch); return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY; } if (IsPCShop()) { if (!pkSelectedItem) { sys_log(0, "Shop::Buy : Critical: This user seems to be a hacker : invalid pcshop item : BuyerPID:%d SellerPID:%d", ch->GetPlayerID(), m_pkPC->GetPlayerID()); return SHOP_SUBHEADER_GC_SOLD_OUT; // @fixme132 false to SHOP_SUBHEADER_GC_SOLD_OUT } if ((pkSelectedItem->GetOwner() != m_pkPC)) { sys_log(0, "Shop::Buy : Critical: This user seems to be a hacker : invalid pcshop item : BuyerPID:%d SellerPID:%d", ch->GetPlayerID(), m_pkPC->GetPlayerID()); return SHOP_SUBHEADER_GC_SOLD_OUT; // @fixme132 false to SHOP_SUBHEADER_GC_SOLD_OUT } } DWORD dwPrice = r_item.price; if (ch->GetGold() < (int) dwPrice) { sys_log(1, "Shop::Buy : Not enough money : %s has %d, price %d", ch->GetName(), ch->GetGold(), dwPrice); return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY; }
  19. Set(HEADER_CG_TIME_SYNC, sizeof(TPacketCGHandshake), "TimeSync", true); to Set(HEADER_CG_TIME_SYNC, sizeof(TPacketCGHandshake), "TimeSync"); remove all , true); from all HEADER you see good my tutorial send me PM for can help you if you have problem again
  20. You can make some small changes to the won system, I can help you if you want
  21. This system is .... to allow players to put an item without anyone being able to buy in privateshop
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.