Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/12/21 in all areas

  1. -1: Very serious common mistake, let's check. Run this query SELECT * FROM `item_proto` WHERE `size` <= '0' If you find something, fix all 'size' or you'll get serious problems with these items. -2: Fix rare crash core with cube (happened and fixxed like this) Go in cube.cpp and find for this log LogManager::instance().CubeLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), reward_value->vnum, new_item->GetID(), reward_value->count, 1); Replace the log with if (new_item) LogManager::instance().CubeLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(),reward_value->vnum, new_item->GetID(), reward_value->count, 1); else sys_err("Cannot find new_item on CUBE_MAKE!"); -3: config.cpp g_iFullUserCount g_iBusyUserCount These two const will set the STATE_DICT in your serverinfo.py. Edit them as you prefer. BUSY = Warning many users are connected in that channel. FULL = Stop login due to many users in the channel. -4: cmd_gm.cpp Find for: for (int i = 0; i < MAX_PRIV_NUM; ++i) Add the missing braces That's all for now, I'll update this thread if I remember any other useful change. Old threads
    1 point
  2. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) I would not recommend using this as it's missing many features, head over to Mali's release for an updated version. [Hidden Content]
    1 point
  3. M2 Download Center Download ( Latest Version ) THIS FILES ARE FOR METIN1 (METIN.CO.KR) NOT METIN2!!!!!! Downloaded from a Chinese forum/website. Year: 2008 They might contain unauthorized program, virus or anything, expect stuff. https://mega.nz/file/55tj1Y4Z#XkCW6oxtDWVEhg-TOFya40ENWTy84JYmU39sZfQjqXk Password: gkr40g3grgk)$j 小窗口登录 -> Windowed 全屏登录 -> Fullscreen Read 安装教程_文字.
    1 point
  4. Optimizing the packet traffic between server and client. To reduce the packet traffic generated by the ComputePoint function. Reduce UpdatePacket operation. 30packet * 20bytes = 600 bytes (total size of 30 packs) after this correction 1 pack of 400 - 500 bytes Sorry because my English is bad. Search and Adapt All (//Fixed_[C]Martin#2376_001) [Hidden Content]
    1 point
  5. This is Shining System by Sanii. His website is not working atm, so here it is: The product is free on his website for anyone asking. [Hidden Content] [Hidden Content] With this you can add effects on any armor/weapon/costume etc. with one simple way: 1. You will have a text file named shiningtable.txt in your pack/locale/xx folder, in which you add the shining path along with the item vnum. Example: 10 "D:/ymir work/pc/common/effect/sword/sword_8_s.mse" Don't forget to use Tabs between vnum and path Also: you can set up to three effects on an item. That's it. No more binary and proto stress.
    1 point
  6. The error is that you do not hear some sounds after teleporting. This error occurs on a large number of private servers, basically I did not play on any one that would have this bug fixed. I tried to look for a solution, but to no avail. I did not find anything about it. Solution to this problem he gave Abel(Tiger): // SoundManager.cpp // Search: void CSoundManager::StopAllSound3D() { for (int i = 0; i < CSoundManager3D::INSTANCE_MAX_COUNT; ++i) { StopSound3D(i); } } // Replace with: void CSoundManager::StopAllSound3D() { for (int i = 0; i < CSoundManager3D::INSTANCE_MAX_COUNT; ++i) { StopSound3D(i); } m_PlaySoundHistoryMap.clear(); } // Search: ms_SoundManager2D.Destroy(); // Add after: m_PlaySoundHistoryMap.clear();
    1 point
  7. Heya, when a party member is assigned a role, it's tiny icon will be displayed in the beginning instead of predefined position. Inside party.py replace SetAffect function with the following: def SetAffect(self, affectSlotIndex, affectValue): if affectSlotIndex >= len(self.partyAffectImageList): return if affectValue > 0: self.partyAffectImageList[affectSlotIndex].Show() else: self.partyAffectImageList[affectSlotIndex].Hide() self.affectValueDict[affectSlotIndex] = affectValue self.__ArrangeAffectPosition() Add this function to the class: def __ArrangeAffectPosition(self): x_pos = 22 y_pos = 24 affectIndex = 0 for image in self.partyAffectImageList: if image.IsShow(): image.SetPosition(x_pos + 14 * affectIndex, y_pos) affectIndex += 1
    1 point
  8. int item_vnum = Stones[number(0, _countof(Stones))]; to: int item_vnum = Stones[number(0, _countof(Stones) - 1)]; item_manager.cpp
    1 point
  9. Fix allow you to use vnum4 in refine_proto Explanation: By default refine materials are beign loaded until vnumx == 0, but if you assign item to the last socket, material_count will never be assigned. As a result material_count will remain 0, despite 5 material items being set. Adding simple additional check solves this problem Open db/ClientManagerBoot.cpp replace for (int i = 0; i < REFINE_MATERIAL_MAX_NUM; i++) { str_to_number(prt->materials[i].vnum, data[col++]); str_to_number(prt->materials[i].count, data[col++]); if (prt->materials[i].vnum == 0) { prt->material_count = i; break; } } with for (int i = 0; i < REFINE_MATERIAL_MAX_NUM; i++) { str_to_number(prt->materials[i].vnum, data[col++]); str_to_number(prt->materials[i].count, data[col++]); if (prt->materials[i].vnum == 0) { prt->material_count = i; break; } else if (i+1 == REFINE_MATERIAL_MAX_NUM) { prt->material_count = REFINE_MATERIAL_MAX_NUM; break; } } final result
    1 point
  10. For those who need FN_compare_item_socket function and also with fixed 'memory leak' which already is public. Srcs/game/src/char_item.cpp 1.0) Add at the beginning of file: static bool FN_compare_item_socket(const LPITEM pkItemSrc, const LPITEM pkItemDest) { if (!pkItemSrc || !pkItemDest) return false; return memcmp(pkItemSrc->GetSockets(), pkItemDest->GetSockets(), sizeof(long) * ITEM_SOCKET_MAX_NUM) == 0; } 2.0) Search for: 2.1) Replace it with: [Hidden Content]
    1 point
  11. Lambda expressions (since C++11), you need CFLAG += -std=c++11, if you want to do it without, then you've to do something like this: [Hidden Content]
    1 point
  12. Fix Dungeon count monsters: Dungeon.cpp struct FCountMonster { int n; FCountMonster() : n(0) {}; void operator()(LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { LPCHARACTER ch = (LPCHARACTER) ent; if (ch->IsMonster() || ch->IsStone())//FIX n++; } } }; (Function was keeping also NPC, it could make you ugly problems). Fix Dungeon memory usage: namespace { struct FNotice { FNotice(const char * psz) : m_psz(psz) { } void operator() (LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { LPCHARACTER ch = (LPCHARACTER) ent; if (ch->IsPC()) //FIX ch->ChatPacket(CHAT_TYPE_NOTICE, "%s", m_psz); } } const char * m_psz; }; } Just 2 errors. I hope that it'll be useful
    1 point
  13. Hello, let's start! 1- char_item.cpp Find for double ";;" It's ok for compiler but not good for other things that may happen. 2- On bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell) Find: if (iWearCell < 0) return false; Add below: //FIX BLOCK MARRIAGE ITEMS WHILE RIDING if (iWearCell == WEAR_BODY && IsRiding() && (item->GetVnum() >= 11901 && item->GetVnum() <= 11914)) //Marriage Armors { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("?????????????????????????????")); return false; } if (iWearCell == WEAR_WEAPON && IsRiding() && (item->GetVnum() == 50201)) //Marriage Weapon { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("?????????????????????????????")); return false; } 3- SMALL PREVENTS ON questlua_global.cpp int _clear_server_timer(lua_State* L) { CQuestManager & q = CQuestManager::instance(); const char * name = lua_tostring(L, 1); DWORD arg = (DWORD) lua_tonumber(L, 2); if (name && arg) q.ClearServerTimer(name, arg); else sys_err("LUA PREVENT: Wrong argument on ClearServerTimer!"); return 0; } int _char_log(lua_State * L) { CQuestManager& q = CQuestManager::instance(); LPCHARACTER ch = q.GetCurrentCharacterPtr(); DWORD what = 0; const char* how = ""; const char* hint = ""; if (lua_isnumber(L, 1)) what = (DWORD)lua_tonumber(L, 1); if (lua_isstring(L, 2)) how = lua_tostring(L, 2); if (lua_tostring(L, 3)) hint = lua_tostring(L, 3); if (ch) LogManager::instance().CharLog(ch, what, how, hint); else sys_err("LUA PREVENT: !ch on _char_log!"); return 0; } 4- FIX ISSUE ON WAR: battle.cpp Find: battle_is_attackable Must be like this: if (victim->IsDead() || victim->IsObserverMode()) return false; if (ch->IsStun() || ch->IsDead() || ch->IsObserverMode()) return false; Hope it'll be useful.
    1 point
  14. Hi there devs, Okay, so after reading the title you may (or may not) have some thougts/questions like "Hollllllllly sh..", "Oooookay..." or just "?". About one or two years ago a mapper questioned me: "Is this possible, to make the whole map visible? Like in normal games? This fog is sooo disgusting, I've could create more beautiful view with a normal fog..." I've tried to do it many ways until finally after some sleepless night I've made it about a year ago. Once it was done I didn't know what to do with it. It was pretty good (I think) but since I'm not a mapper I can't do anything with it. I could have sell it, but since there is no way to protect this code its not an option for me, so I've decided to share it with the public. This TuT gonna be a bit long and there are several things to discuss but FIRST lets watch this video (in the first part I disabled the fog). "Wow, thats actually not bad" this was my first reaction when I first saw this view. BUT enough from me, lets talk about more important things... So I decided to create stages for this tutorial (4 stages actually). Its a normal down-top thing, so it means that you can do stage 1, 2 and then you can stop, but can't do stage 2 without 1, 3 without 2 and 4 without 3... it will help you to customize these modifications. Also I may write some "interesting" (at least for me) notes/thoughts for each stages. However, as you will see the last 2 stages are not ready at the moment, so I would rather say its an experimental release... Anyway, before we start to implement this lets talk about the tests, performance and other more or less important things. Table of content: Stage 1: Removing garbage collectors, loading all map related things into memory ("chunks", objects, etc...) Stage 2: Rendering full terrain Stage 3: Rendering all objects on map [NOT READY YET] Stage 4: Create config for players [NOT READY YET] Performance One of the most important questions about a game: will I be able to play it with my spec? Well of course this depends on much things. Using high poly objects, large maps, HD textures, lots of trees, effects can highly impact the performance/rendering time. So all I can say about it in a nutshell: its really depends on your maps (and of course the player's machine). Until now this old buddy could be ran on almost every computer but with this could change things so this is why I created config for it, enabling or disabling this feature. About my experiences/tests Well the memory usage increased, from the default ~270 MB to ~300 MB (see the explanations later), the processor usage didn't change (~5-10%). About my video card usage I can't tell nothing since I can't monitor it, but I'm sure its usage (both video memory and processing) increased too... You maybe noticed some lag in the video but its not the case, its only because of my recorder, the game is still runs smoothly (remember, its depends on the computer and the map...) If it helps I have a Lenovo U41-70 notebook (Intel i7 5500U, 8GB DDR3 and GeForce 920M) and I used the "(old) wom2 maps". However, I noticed some fps drop with all shadows enabled, and also couldn't test it with many characters (cus the character render consumes so much processing time without this too), so I recommend to disable it by default and if the player decides to use it, he will be able to turn it on. Stage 1 Stage 2 Stage 3 Stage 4 So yeah this is it so far, if you have problem with the code (not compiling, etc) is probably because you did something wrong, I made these steps too on a full untouched client source so it should work for you too... (So pls don't ask me to help with this ) However, if something is not clear in the tutorial you can ask me for pictures or clarification. I didn't test it in dungeons (indoor maps) so there could be problems... Also if you made this and you have some nice maps or you find some great spots for some ingame pictures or videos, feel free to post them here
    0 points
  15. Thank you very much ! #solved !
    0 points
  16. The Arabs disagree! Jk nice idea.
    0 points
×
×
  • 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.