Jump to content
metin2dev

Leaderboard


Popular Content

Showing content with the highest reputation since 06/19/2018 in Posts

  1. 14 points
    Latest update from .DE client: Hydra run content (boss, pet, map) <!> Protos are broken, don't use them <!> Download
  2. 13 points
    Korean errors on Dungeon.cpp Fix Dungeon count monsters: 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 using more memory than right, with notice on all entities: // DUNGEON_NOTICE 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; }; } (Notice was be triggered for every char entity) These was just 2 Korean errors that i want to share with you. I hope that it'll be useful Regards Hex.
  3. 10 points
    Description : The mount will follow you. The bonuses is set from item_proto. https://i.gyazo.com/9dac9deaada344672a153f37575d0b13.mp4 https://i.gyazo.com/05713068360a55cbbe25db6761925030.mp4https://i.gyazo.com/de7397f26a0b7aeeb66e1b4ce4af5b0d.mp4 Code is based on default pet code from Ymir, i don't offer support for extra features, details, anyway easy for use. (Sorry for tutorial, not so perfect.) Download: https://mega.nz/#!eMIgVajA!uxIaISsLj3S5BipWsgEHIX4k84AcyGByIcF8DsTfv_E
  4. 9 points
    Hello, let's start! [15 Reactions == New Thread] 1- char_item.cpp Find for double ;; Yeah Monkeys, surprised XD? 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 (Not for all sources, but you can put it also if you haven't the problem): find: battle_is_attackable on battle.cpp first IF for victim must be like this: if (victim->IsDead() || victim->IsObserverMode()) return false; second IF for Char must be like this: if (ch->IsStun() || ch->IsDead() || ch->IsObserverMode()) return false; Thx to read here, hope it'll be useful. Regards Hex
  5. 4 points
    Description: When you craft a item the bonuses from the old item will be transferred(saved). ### Cube.cpp //Search : this->gold = 0; //Add after : #ifdef ENABLE_CUBE_RENEWAL this->allowCopyAttr = false; #endif //Search: else TOKEN("gold") { cube_data->gold = value1; } //Add after : #ifdef ENABLE_CUBE_RENEWAL else TOKEN("allow_copy") { cube_data->allowCopyAttr = (value1 == 1 ? true : false); } #endif //Search in : bool Cube_make (LPCHARACTER ch) LPITEM new_item; Add after : #ifdef ENABLE_CUBE_RENEWAL DWORD copyAttr[ITEM_ATTRIBUTE_MAX_NUM][2]; #endif //Search : CUBE_VALUE *reward_value = cube_proto->reward_value(); //Add after: #ifdef ENABLE_CUBE_RENEWAL for (int i=0; i<CUBE_MAX_NUM; ++i) { if (NULL==items[i]) continue; if (items[i]->GetType() == ITEM_WEAPON || items[i]->GetType() == ITEM_ARMOR) { bool hasElement = false; for (int j = 0; j < cube_proto->item.size(); ++j) { if(cube_proto->item[j].vnum == items[i]->GetVnum()) { hasElement = true; break; } } if(hasElement == false) continue; for (int a = 0; a < ITEM_ATTRIBUTE_MAX_NUM; a++) { copyAttr[a][0] = items[i]->GetAttributeType(a); copyAttr[a][1] = items[i]->GetAttributeValue(a); } break; } continue; } #endif //Search: new_item = ch->AutoGiveItem(reward_value->vnum, reward_value->count); //Add after: #ifdef ENABLE_CUBE_RENEWAL if (cube_proto->allowCopyAttr == true && copyAttr != NULL) { new_item->ClearAttribute(); for (int a = 0; a < ITEM_ATTRIBUTE_MAX_NUM; a++) { new_item->SetForceAttribute(a, copyAttr[a][0], copyAttr[a][1]); } } #endif ###cube.h //Search in : struct CUBE_DATA int percent; unsigned int gold; //Add after : #ifdef ENABLE_CUBE_RENEWAL bool allowCopyAttr; #endif ###service.h /Add: #define ENABLE_CUBE_RENEWAL Example in cube.txt section npc 20378 item 11299 1 item 30509 10 item 30516 10 item 30514 10 allow_copy 1 reward 20000 1 gold 100000 percent 60 end
  6. 4 points
    Again, while the Worldcup is going on, the European Parliament is trying to pass a questionable law. Should this law be passed, everything you upload to the internet will be analysed - automatically by a potentially error-prone algorithm. If there is any doubt, your upload will never reach the world wide web! Imagine, you want to upload a picture of your dog, or your family, and you notice the upload failed just because an algorithm decided that YOUR picture already exists and is copyrighted. But that is not all! YOU can help stopping this! Sign the petition and send this message to all your friends! You can find more information under: https://savetheinternet.info/ Link to the petition: https://www.change.org/p/european-parliament-stop-the-censorship-machinery-save-the-internet (German) Discord Server: https://discord.gg/qgbQc86
  7. 3 points
    Description: If you send the duel command with argument 1, penetration ,critical and poison, in duel will be no longer valid. Download : https://mega.nz/#!3MhBmaQL!47Uy-RXRiEQynn9GmZcY0A93udg_UuPbWZHOjk0yPl4
  8. 3 points
    Hello. Today I'd like to share this little stuff what I reversed from the official binary a month ago. This will fix the positions of textails(name position changes by every update packet on the main character), and also the position of the emotions when you are on a mount . I've made a little demonstration video where you can see a private server without the fix, my fixxed version and the official aswell. 1. Client/bin/playersettingmodule.py 2. Client/bin/introLoading.py 3. Place the race_height.txt from the official client into the yours and pack it in the root. 4. Client/UserInterface/PythonCharacterManagerModule.cpp 5. Client/GameLib/RaceManager.h 6. Client/GameLib/RaceManager.cpp 7. Client/UserInterface/InstanceBase.h 8. Client/UserInterface/InstanceBase.cpp 9. Client/UserInterface/InstanceBaseEffect.cpp 10. Client/UserInterface/PythonTextTail.cpp 11. Client/GameLib/ActorInstance.cpp I hope you like it, and if you find any problem just let me know in this topic.
  9. 2 points
    Commands in C++ are terminated by using semicolon. If you add any other semicolon after that it won't have any other effect. So in this case TPacketLoginOnSetup * pck = (TPacketLoginOnSetup *) c_pData; is equal to TPacketLoginOnSetup * pck = (TPacketLoginOnSetup *) c_pData;;;;;;;;;;;;;;;;;;;.
  10. 2 points
    The correct is: pet.unsummon(mobVnum) if pet is 34001, then: pet.unsummon(34001)
  11. 2 points
    Hi, I'm a guy that enjoys to find and exploit vulnerabilities. So far I've been able to clear a few accounts of their items, but I'm looking forward to made the whole process easier. My question has to do with the fact that I know the username of a big metin2 gameforge partner and I want to bruteforce the password on the metin2.gameforge.com website. How can I do that ? How would the bruteforce script for metin2.gameforge.com would look like ? I've tried with Burp Suite but wasn't able to work it out.
  12. 2 points
    NOOO THANKSTRADING MY FRIEND!! Where did we land here? Best regards Raylee
  13. 2 points
    hi sorry but im more then "inactive" look please sometimes YouTube for new Downloads download this one: you have here a big pack.
  14. 2 points
  15. 1 point
    Hi devs, I just discovered many clients are using old versions of Unicows.dll, DevIL.dll and ILU.dll. It's not as hard to update them and if you are deeply into a client development you appreciate those SDK or PDB. DevIL & ILU (?) Default client is using 16 years old version. Come clean, looks horrible, right? These libraries are open source so you can modify them. Here you can download latest SDK. During those 16 years of development there have been a lot of changes, here is excerpt of them. Changes: DirectX 9 & 10 support New bilinear scaling routine Support for alpha-only formats Better support for ICO, GIF and DDS format Fixed minor bugs with BMP and PNG formats Fixed a lot of issues about DDS format A lot of bug fixes Unicows (?) Well, actually you can delete this library from your client and it won't have any effect on client proper working (Windows Vista and newer). However, you have to keep this library if you want to support compatibility with Windows 95, Windows 98 and Windows Millenium Edition. Here is available package which contains library, it's PDB and license. Sources: http://openil.sourceforge.net/ https://www.microsoft.com/en-us
  16. 1 point
    Hi there Devs, I would like to share my "little" system. If you aren't interested in the introduction/preview etc. and you just want to download it and put in to your server, just scroll down until the "[How-To] Set up" subtitle. The story Firstly let me tell this system's story. I've got an idea one year before, that it would be good if the players would be able to put their items into a "global" system where they could see the other player's items, and they could buy it for DC or gold (that time I worked with the latest vanilla core (not with the source)). Then in the following 8 days I made it (it took about 80-90 working hours). Originally the system was created for one of my friend's server. but this server has never started, and nobody used this system. After some mounts I've decided to publish it on the Hungarian forum, because it won't worth to work on it for long hours if nobody uses it and its just collecting dust on my computer. Then I've published it on the 2nd of December, 2014. After some time I've decided to translate it into English and I've got a new idea for a new feature. This feature was: the trade system (I will explain its working later). This idea inspired by one of the players (from a server where this system was able to use). He told me that it would be better if they could set the gold price via an item (what's value is very high). Then with more than 180 working hours (totally) behind my back I'm here. Overview [How-To] Set up Customizing the tradehouse Questions and Answers Notes changelog: 19th of August, 2015: I publicated the tradehouse here. my toDo list: add logging for the system (the released version don't log the actions in the tradehouse) Thanks for reading the topic, if you have any problem/remark feel free to ask it here or write me a PM. Have a good day!
  17. 1 point
    Seach in char_skill.cpp for: if (number(1, 21 - MIN(20, GetSkillLevel(pkSk->dwVnum))) == 1) SetSkillLevel(pkSk->dwVnum, 20); Change it to this: //if (number(1, 21 - MIN(20, GetSkillLevel(pkSk->dwVnum))) == 1) SetSkillLevel(pkSk->dwVnum, 20);
  18. 1 point
    /// UserInterface -> Packet.h /// Search: SE_EQUIP_RAMADAN_RING, Add below: SE_EQUIP_WELES_RING1, /// UserInterface -> InstanceBase.h /// Search: EFFECT_RAMADAN_RING_EQUIP, Add below: EFFECT_WELES_RING1_EQUIP, /// UserInterface -> PythonCharacterManagerModule.cpp /// Search: PyModule_AddIntConstant(poModule, "EFFECT_RAMADAN_RING_EQUIP", CInstanceBase::EFFECT_RAMADAN_RING_EQUIP); Add below: PyModule_AddIntConstant(poModule, "EFFECT_WELES_RING1_EQUIP", CInstanceBase::EFFECT_WELES_RING1_EQUIP); /// UserInterface -> PythonNetworkStreamPhaseGameItem.cpp /// Search: case SE_EQUIP_RAMADAN_RING: effect = CInstanceBase::EFFECT_RAMADAN_RING_EQUIP; break; Add below: case SE_EQUIP_WELES_RING1: effect = CInstanceBase::EFFECT_WELES_RING1_EQUIP; break; /// game/src -> char_item.cpp /// Search: if (true == CItemVnumHelper::IsRamadanMoonRing(dwVnum)) { this->EffectPacket(SE_EQUIP_RAMADAN_RING); } Add below: else if (true == CItemVnumHelper::IsWELESRing1(dwVnum)) { this->EffectPacket(SE_EQUIP_WELES_RING1); } /// game/src -> item.cpp /// Search: if (true == CItemVnumHelper::IsRamadanMoonRing(GetVnum()) || true == CItemVnumHelper::IsHalloweenCandy(GetVnum()) || true == CItemVnumHelper::IsHappinessRing(GetVnum()) || true == CItemVnumHelper::IsLovePendant(GetVnum())) Add to the function: || true == CItemVnumHelper::IsWELESRing1(GetVnum()) Example: if (true == CItemVnumHelper::IsRamadanMoonRing(GetVnum()) || true == CItemVnumHelper::IsHalloweenCandy(GetVnum()) || true == CItemVnumHelper::IsHappinessRing(GetVnum()) || true == CItemVnumHelper::IsLovePendant(GetVnum()) || true == CItemVnumHelper::IsWELESRing1(GetVnum())) /// common -> leght.h /// Search: SE_EQUIP_RAMADAN_RING, Add below: SE_EQUIP_WELES_RING1, /// common -> VnumHelper.h /// Search: static const bool IsRamadanMoonRing(DWORD vnum) { return 71135 == vnum; } Add below: static const bool IsWELESRing1(DWORD vnum) { return YOUR_ID == vnum; } /// root -> playersettingsmodule.py /// Search: chrmgr.RegisterCacheEffect(chrmgr.EFFECT_RAMADAN_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item1.mse") Add below: chrmgr.RegisterCacheEffect(chrmgr.EFFECT_WELES_RING1_EQUIP, "", "d:/ymir work/effect/etc/buff/your_effect.mse") /// item_proto /// Type: 16 Subtype: 0 WearFlags: 128
  19. 1 point
    Rules §1 Language (1.1) Language The language in this board is english. If you want to post something in your own language always add an english translation. The only exception for this rule is this section: Private Servers We are a global forum.Please translate your text in the english language.You can place your german text in a spoiler. Best regards Raylee
  20. 1 point
    http://crashrpt.sourceforge.net/ You mean something like this?
  21. 1 point
    When a shaman has 140+ attack speed one attack on his combo doesn't hit the target. That's what he was talking about.
  22. 1 point
    Hello people, i saw that a lot of people want to start developing on Metin2, but there isn't a place where the people can easly see tutorials without surf the whole internet. My idea is to create a reference for anyone who want to start creating his own server, starting from the first steps into the creation of a full Metin2 Server, but also a place where advanced developers could orient into the complicated parts of this world. The special thing about this wiki is that everyone could add or alter pages (that will be approved by moderators), so everyone could contribute to the wiki. The wiki his hosted inside a website that i own (it would be very complicated handle this kind of project inside any forum). At the monent, the wiki is started and it's only in english. (Translation system will be added, contact me if you would like to translate) The wiki will be completly free and without any kind of advertisement. (But altervista's limitated band could make the site unaccessible) Link here: https://rewardmetin2.altervista.org/index.php?title=Main_Page. Greets!
  23. 1 point
  24. 1 point
    sorry speak english Is the color that appears to each character when selected or give click, this color is changed depending on the kingdom which is the pj, this same applies to the NPC. The mobs appear with a different effect to common and is a matter of each effect changes the color depending on individual taste [Source Binary] 1. open InstanceBase.cpp in UserInterface 2. Open InstanceBase.h in UserInterface 3. Open InstanceBaseEffect.cpp in UserInterface 4. Open PythonCharacterManagerModule.cpp in UserInterface [Python Client] 1. Open playersettingmodule.py in root: Finally add eix epk and I leave at Download Img System Credits: me Greetings! Download Epk and Eix
  25. 1 point
    EN:Thank you vegas TR: Teşekkürlermiş ne gerek var amk coder'ı
×