Jump to content

Search the Community

Showing results for tags 'exchange'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Community
    • M2Dev
    • Offtopic
    • Games Talk
    • Music / Videos / Art
    • Member Representations
    • Services & Sales
  • Metin2
    • General
    • Questions and Answers
    • Frequently Asked Questions
    • Private Servers
    • Videos
  • Suggest a Tutorial / Release
    • Suggest a Tutorial / Release
    • Temporary forum
  • Releases
    • General
    • Guides & HowTo
    • Tools
    • Programming & Scripts / Systems
    • Maps
    • Quests
    • Binaries & Clients / ServerFiles
    • 3D Models
    • 2D Graphics
    • Operating Systems


There are no results to display.

There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start







Steam ID













Found 16 results

  1. Hey y'all. Question has been given, let me know.
  2. Hello devs Today I would like to present you a new solution that can make you feel more safe with your GMs. This is my first release and it's very simple to do, I'm just posting it here for the newbies and those who don't know how to start searching and other shit like that WHAT IS THIS SYSTEM? This system is a number of preventions for GameMaster characters about certain interractions with normal players in the game. The functions you are about to see are blocking GMs from: Trading items with normal players (and the opposite) Invite normal players to parties (and the opposite) Invite normal players to guilds (and the opposite) Adding normal players as friend contacts (I would say and the opposite but it already exists by default ) Drop items to the ground Build their own private shops with the Bundle item Buy items from a private shop Block a GM from buffing normal players Using the commands /set, /a and /setskillother to normal players WHO IS THIS SYSTEM FOR? I believe we can all agree that trust in partnership is a rare thing these days. This system is released from me for the Admins out there that cannot trust their GMs (and many times their self) so much. Imagine having a server and your GM just gives away items for free to everyone. Bad huh? I thought so... So with this system you are sure that your GMs will do their job properly and won't violate any game rules behind your backs. Your server has rules (as all games out there) and if you wanted people to have some items for free you can easily put those items for sale into the town vendors. People who do this kind of things behind your backs are not authorized by you to do it but I believe that it happened (if not happening yet) to the best of you guys, that's why I'm releasing it. It's time to set some things right in your servers, GMs exist to answer questions and not helping players cheat without any authorization from the administrators, so without further ado, let's get started. SORRY AGAIN, ONE MORE THING I BELIEVE THIS QUESTION IS IN THE MIND OF A DEVELOPER WHO READS THIS GUIDE: MIND RAPIST, WHY DO YOU USE THE IsGM() BOOLEAN TO CHECK IF A PLAYER IS A GM AND NOT USE THE TRADITIONAL CHECK GetGMLevel() > GM_PLAYER? In this tutorial, we will be using the bool IsGM() instead of the usual check because some of the guys who see this may have added @Alina's GM Elevation system. In that case, GetGMLevel() won't work before the character elevates, so our GMs will be able to bypass the check and just create a perfect item, relog and give it away before they elevate. We don't want that don't we? So who ever wants to use GetGMLevel() > GM_PLAYER instead of IsGM() there is no difference you can do that guys, except if you did the elevation system, then you need to use my function in order to work. So let's get the party started. PARTY INVITATION BLOCK In char.cpp search for the function "void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)" and under add this: Done with party block, let's continue BUNDLE USAGE BLOCK FOR CREATING PRIVATE SHOPS In char_item.cpp search for the function "bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)" and under add this: Done, let's continue ITEM DROP BLOCK Still in char_item.cpp search for the function "bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)" and under add this: Done with that one, you can close char_item.cpp. Let's move on BUFF BLOCK In char_skill.cpp find this: and paste this under it: Done with that, next! /SET COMMAND BLOCK FOR PLAYERS In cmd_gm.cpp search for the function "ACMD(do_set)" and under add this: Done, but do not close, we have more commands to block! /A COMMAND BLOCK FOR PLAYERS Still in cmd_gm.cpp, search for the function "ACMD(do_advance)" and under add this: Do not close that file yet, one more command left to block /SETSKILLOTHER COMMAND BLOCK FOR PLAYERS Still in this file, search for the function "ACMD(do_setskillother)" and under add this: Done with the commands, you may close cmd_gm.cpp and move on EXCHANGE BLOCK In exchange.cpp search for the function "bool CHARACTER::ExchangeStart(LPCHARACTER victim)" and under (if you have sash system in your source, the top line may be "if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen() || IsAcceOpen() )") add this: Done with the exchange, moving on! GUILD INVITATION BLOCK In guild.cpp search for the function "void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )" and under add this: Here goes the guild invitation, let's move forward FRIEND LIST BLOCK In input_main.cpp search for the function "int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)" and find this line: change it like this: Still in the same function, find this line in "case MESSENGER_SUBHEADER_CG_ADD_BY_NAME:": and add this: Friends are done. Let's move on to the last one! BUYING ITEMS FROM PRIVATE SHOPS BLOCK In shop_manager.cpp search for the function "void CShopManager::Buy(LPCHARACTER ch, BYTE pos)" and under add this: Done It's not something hard to do, I just gathered everything in one place, you can now sleep at night knowing that your GMs cannot fraud you. I would like to give special thanks to @VegaS who wrote the blocks for buffs, party and guild invitation, thanks so much buddy Note: These will block any interraction between a GM and a normal player, but a GM will be able to interract with another GM (example trade GM with GM). And before someone asks yes I thought about a safebox block for GMs but there is no need for that since you can login to his account and create 3 players, then logout and delete them directly from their database, leaving 3 warriors with Level 0 that cannot login to the game. Let the poor GMs have their safebox it's the only thing left to them after that I think xD So I hope I helped some folks here the tutorial is done Kind regards ~ Mind Rapist
  3. Description: Drag and item(E.G: 27992) on NPC(9003) and receive another item Features You can add items easy It's a short quest It shows what you receive Ingame preview: Download: https://mega.nz/#!DxhDlaIL!ObiUgwydvpdcoLlz78Sdix9cllOiX3YgNhC_PJFNCGA Scan result(URL): VirusTotal
  4. I'm looking for that part of the code where a character is exchanging and hits logout, so the server doesn't start the countdown. I've looked everywhere but nowhere to find.
  5. Hello, I hope someone can offer me help. When trading and trying to put yang in trade window, it stays at 0 and this particular message comes out: The player owns more than 2 billion yang He says that the player with I am trying to trade has more than 2 billion yang, but the fact is that the player does not even have yang or have small amount. In the sysser this line comes out; SYSERR: Nov 2 01: 53: 53.530620 :: Exchange: [OVERFLOW_GOLD] ELK_ADD (884092571) id 1 name [GM] Luke
  6. any ideas? every item has this problem (only in exchange, in privat shop its all fine) €dit: fixxed
  7. Hi, I have a bug when I'm exchanging with someone: The thing is I add ,for example, a sword and when I try to add one more sword to the exchange, the first sword gets replaced by the second one. Before I asked this i tried to solve it myself , but I'm missing something. What can it be? Thanks by the way, José
  8. Hey hello i need new exchange gui my gui is so old hehehe Have you guys got better than this gui Pls help Thx :))
  9. Hello devs and merry christmas Today Im looking for a small tut kinda like the Non-tradable items effect system (on this board) but a little different. I want to make the item's slot red when somebody adds it into the trade window you know make it unusable for the rest of the trade because its already in the trade and I want to do that with the private shop building as well with the items that the player already put on the shop window for sale. Just like the official effect. If there is a tut like this please share the link here thank you so much guys
  10. Hello devs I'm looking for the function in the safebox (python) that checks if safebox is open or not. For example this is for trade and this is for shop so I'm looking that function in safebox Thanks in advance
  11. Hello guys I have a problem with my yang in the trade window when I click to add some yang to the trade nothing happens no little window pops up for yang. The syserr is empty, exchangewindow.py Please someone help Thanks in advance
  12. Hello guys. I have a bug with the exchange window and i don't know how to solve it. Soo...when i open the exchange window its closes immediately. When i open the second time works perfectly. So,anyone know how to solve it? It's really annoying. Srry for my bad English.
  13. Hello guys. Pls help me, what the problem?:/ exchange.cpp:511: error: a function-definition is not allowed here before '{' token exchange.cpp:619: error: expected `}' at end of input511: bool CExchange::Accept(bool bAccept) //511----------- { if (m_bAccept == bAccept) return true; m_bAccept = bAccept; // µŃ ´Ů µżŔÇ ÇßŔ¸ąÇ·Î ±łČŻ Ľş¸ł if (m_bAccept && GetCompany()->m_bAccept) { int iItemCount; LPCHARACTER victim = GetCompany()->GetOwner(); //PREVENT_PORTAL_AFTER_EXCHANGE GetOwner()->SetExchangeTime(); victim->SetExchangeTime(); //END_PREVENT_PORTAL_AFTER_EXCHANGE // exchange_check żˇĽ­´Â ±łČŻÇŇ ľĆŔĚĹ۵éŔĚ Á¦ŔÚ¸®żˇ ŔÖłŞ Č®ŔÎÇĎ°í, // ż¤Ĺ©µµ ĂćşĐČ÷ ŔÖłŞ Č®ŔÎÇŃ´Ů, µÎąř° ŔÎŔÚ·Î ±łČŻÇŇ ľĆŔĚĹŰ °łĽö // ¸¦ ¸®ĹĎÇŃ´Ů. if (!Check(&iItemCount)) { GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("µ·ŔĚ şÎÁ·ÇĎ°ĹłŞ ľĆŔĚĹŰŔĚ Á¦ŔÚ¸®żˇ ľř˝Ŕ´Ď´Ů.")); victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ëąćŔÇ µ·ŔĚ şÎÁ·ÇĎ°ĹłŞ ľĆŔĚĹŰŔĚ Á¦ŔÚ¸®żˇ ľř˝Ŕ´Ď´Ů.")); goto EXCHANGE_END; } // ¸®ĹĎ ąŢŔş ľĆŔĚĹŰ °łĽö·Î »ó´ëąćŔÇ ĽŇÁöÇ°żˇ ł˛Ŕş ŔÚ¸®°ˇ ŔÖłŞ Č®ŔÎÇŃ´Ů. if (!CheckSpace()) { GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ëąćŔÇ ĽŇÁöÇ°żˇ şó °ř°ŁŔĚ ľř˝Ŕ´Ď´Ů.")); victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ĽŇÁöÇ°żˇ şó °ř°ŁŔĚ ľř˝Ŕ´Ď´Ů.")); goto EXCHANGE_END; } // »ó´ëąćµµ ¸¶Âů°ˇÁö·Î.. if (!GetCompany()->Check(&iItemCount)) { victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("µ·ŔĚ şÎÁ·ÇĎ°ĹłŞ ľĆŔĚĹŰŔĚ Á¦ŔÚ¸®żˇ ľř˝Ŕ´Ď´Ů.")); GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ëąćŔÇ µ·ŔĚ şÎÁ·ÇĎ°ĹłŞ ľĆŔĚĹŰŔĚ Á¦ŔÚ¸®żˇ ľř˝Ŕ´Ď´Ů.")); goto EXCHANGE_END; } if (!GetCompany()->CheckSpace()) { victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ëąćŔÇ ĽŇÁöÇ°żˇ şó °ř°ŁŔĚ ľř˝Ŕ´Ď´Ů.")); GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ĽŇÁöÇ°żˇ şó °ř°ŁŔĚ ľř˝Ŕ´Ď´Ů.")); goto EXCHANGE_END; } if (db_clientdesc->GetSocket() == INVALID_SOCKET) { sys_err("Cannot use exchange feature while DB cache connection is dead."); victim->ChatPacket(CHAT_TYPE_INFO, "Unknown error"); GetOwner()->ChatPacket(CHAT_TYPE_INFO, "Unknown error"); goto EXCHANGE_END; } if (Done()) { if (m_lGold) // µ·ŔĚ ŔÖŔ» ‹š¸¸ ŔúŔĺ GetOwner()->Save(); if (GetCompany()->Done()) { if (GetCompany()->m_lGold) // µ·ŔĚ ŔÖŔ» ¶§¸¸ ŔúŔĺ victim->Save(); // INTERNATIONAL_VERSION GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ´Ô°úŔÇ ±łČŻŔĚ Ľş»ç µÇľú˝Ŕ´Ď´Ů."), victim->GetName()); victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ´Ô°úŔÇ ±łČŻŔĚ Ľş»ç µÇľú˝Ŕ´Ď´Ů."), GetOwner()->GetName()); // END_OF_INTERNATIONAL_VERSION } } EXCHANGE_END: Cancel(); return false; } else { // ľĆ´Ď¸é acceptżˇ ´ëÇŃ ĆĐŶŔ» ş¸ł»ŔÚ. exchange_packet(GetOwner(), EXCHANGE_SUBHEADER_GC_ACCEPT, true, m_bAccept, NPOS, 0); exchange_packet(GetCompany()->GetOwner(), EXCHANGE_SUBHEADER_GC_ACCEPT, false, m_bAccept, NPOS, 0); return true; } }And 619: void CExchange::Cancel() { exchange_packet(GetOwner(), EXCHANGE_SUBHEADER_GC_END, 0, 0, NPOS, 0); GetOwner()->SetExchange(NULL); for (int i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i) { if (m_apItems[i]) m_apItems[i]->SetExchanging(false); } if (GetCompany()) { GetCompany()->SetCompany(NULL); GetCompany()->Cancel(); } M2_DELETE(this); } //------> 619Pls help me!:)
  14. Hello, I will explain how you can have 24 slots item in exchange/trade dialog. ServerSide Open your "game/exchange.cpp" in Source File and search: m_pGrid = M2_NEW CGrid(4,3); Replace with: m_pGrid = M2_NEW CGrid(6,4); Open "game/exchange.h" and search: EXCHANGE_ITEM_MAX_NUM = 12 Replace with: EXCHANGE_ITEM_MAX_NUM = 24 Now you can compile your Game File. ClientSide Open "UserInterface/PythonExchange.h" from your Binary Source files and search: EXCHANGE_ITEM_MAX_NUM = 12 Replace with: EXCHANGE_ITEM_MAX_NUM = 24 Now you can compile your Client Binary. Extract "pack/uiscript" from your Client and open "exchangedialog.py", replace all content with: ExchangeDialog.py ~ 24 Slot Item Now you can compress your UiScript. Screen: Good work, Bye.
  15. I want to add level in trade , I edited PythonExchange.cpp / .h and PythonExchangeModule.cpp ( i added m_victim.level etc) but unsuccessfully. I want someone to tell me how to do reading level to m_victim like to m_victim.name. Thanks in advance.
  16. Hi Dev, I have a very strange problem... when i hit the exchange button i got a kick on both players then i check the syserr nothing interesting... I relog to the game and everything is fine server didnt crash. I didnt try to edit any files that correlated with the exchange here is the syserr, log, errorlog.... Syserr Log Errorlog
  • 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.