Jump to content

Cataclismo

Premium
  • Posts

    232
  • Joined

  • Last visited

  • Days Won

    7
  • Feedback

    0%

Everything posted by Cataclismo

  1. Hello, A few weeks ago, being bored I thought about creating a visual editor for item_proto, without the need of XML, and here's the result: [Hidden Content] I should mention that this is my first time working with CLI and C#. Pretty fun actually. Also, the binaries for graphic interface (including library dll) are built for x64 arch. If anyone wants, I can provide the source code for the graphic interface, but because of laziness, I made the interface a bit tricky, yet easy to modify (on some parts). Enjoy PS: Any feedback is welcome. Not tested with an actual client. Just read and written some item_proto files. xD
  2. That's very bad practice. You should cipher your packets. That's the best method. And you already have all the resources in game/client.
  3. This just copy/paste from here. Nice. Can you stop copying other's stuff? Thanks.
  4. Refactored like this? std::vector<DWORD> exp_vector; bool LoadExpTableFromMySQL() { std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT level, exp FROM common.exp_table")); if (pMsg->uiSQLErrno != 0) { sys_err("Failed to load exp table!"); return false; } exp_vector.reserve(pMsg->Get()->uiNumRows); MYSQL_ROW row; while((row = mysql_fetch_row(pMsg->Get()->pSQLResult))) { DWORD level, exp; str_to_number(level, row[0]); str_to_nubmer(exp, row[1]); exp_vector[level] = exp; if (test_server) sys_log(0, "MYSQL EXP LOAD: LEVEL %u EXP %u", level, exp); } return true; } Since GetNextExp() will return DWORD, you should use DWORD too for your vector. You will fool the users thinking that they can increase exp limit over 4kkk (DWORD limit). Also, if you're using C++11 or higher consider using unique_ptr instead of auto_ptr.
  5. There's no bug here, actually. You already have a function which checks the name of guild: if (!check_name(gcp.name)) You don't have to escape the string again. This function allows only alphanumeric characters (a-z, 0-9).
  6. Yes, it is already posted for a year or more. Watch your language and use search
  7. Hi, Aurora. TEH wants to tell you that PLAYER_EXP_TABLE_MAX is equal to 120, which means your experience table can have only 120 values. If you want 250 then you have to find where it's defined (probably in length.h) and change the value to 250.
  8. Did you try to modify source to be able to put more than 7 bonuses on an item or more than 3 metin stones?
  9. Remove skill books and spirit stones from game. Easy. You don't need the source for that...
  10. It's not so weird... your slot's are not "refreshing". You probably forgot some piece of codes when you redesigned the inventory. Can't you just compare the codes with an working inventory and see what do you miss?
  11. Or .bin, as I told you. So, it compiles fine, and i can open the client but, hackshield does not show on task, i have seen a video from you showing the hackshield launching when you open the game, (in another post). Yeah. It's a little secret xD, but I discovered that this is just a break in security. You don't have to open that thing , hackshield will work without it.
  12. I think you have to install SP1 for Visual Studio. I am not sure.
  13. Did you even search the forum before you post? There's a solution already posted.
  14. 1. Just don't do it. Instead of just hiding errors you should repair them. 2. Take a look here:
  15. metin2team, you forgot something: function give_multiple_items(item, count) while(count > 200) do print("pc.give_item2(item, 200)") pc.give_item2(item, 200) count = count - 200 end if count > 0 then print("pc.give_item2(item, "..count..")") pc.give_item2(item, count) --!!! THIS FUNCTION end end
  16. Find #include "sectree_manager.h" And add after: #include "desc.h" And I recommend you to use this function, otherwise your game may crash: int npc_get_ip(lua_State* L) { LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr(); if (!npc || !npc->GetDesc()) { lua_pushstring(L, "INVALID"); return 1; } lua_pushstring(L, npc->GetDesc()->GetHostName()); return 1; } If the enemy is not a PC (if you forgot to check or you don't want to) or it's an invalid instance (kinda impossible) then the function will return "INVALID" and you may do a check in your quest (if pc.get_ip() == "INVALID" then). Tell me if that works.
  17. Well, commands that start with that letters, but I'm not sure which of them. Check them all. There are a few starting with those letters.
  18. Well, you probably created it when you modified max yang. Check the types of yang in the buy functions. Or just follow the tutorial again and check everything. You're not alone, btw. Check this reply.
  19. There's a lot of places to change that. Every function that uses position should be changed. The packets have to be changed too.
  20. I actually found version 4.30 cracked yesterday
×
×
  • 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.