Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/19/20 in all areas

  1. This means that something is already bound to this address (ip and port). So in this case you either have another program running that listens to the ports of ch2 or ch2 is already running. Can you check with ps -aux if ch2 is already running? Also I saw a critical error from your Ch2 log: !!! FATAL ERROR !!! multiple MAP_ALLOW setting!! You may want to have a look at this. It may be the reason why your ch2 freezes.
    2 points
  2. Download Metin2 Download Hi, I did not find a share with the Sources of Metin2... I share the sources with you today ! Kraizy sources with all branches of development. External Link : Mega or Go Sincerly, ASIKOO
    1 point
  3. As promised, here's to you: 1 - NullPtr + NewCase on famous Item MYTHICAL_PEACH char_item.cpp Find for: case 71107: Add below of this line: quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID()); This prevent: if (!pPC) return false; In your database there is an item like 71107, add the other case for it. case 71107: case 39032: 2 - Warp_all_to_village function was keeping also STAFF out. Replace the struct like this in questlua_global.cpp struct FWarpAllToVillage { FWarpAllToVillage() {}; void operator()(LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { const LPCHARACTER ch = (LPCHARACTER) ent; if (ch) { if (ch->IsPC() && !ch->IsGM()) { const auto bEmpire = ch->GetEmpire(); if (!bEmpire) return; ch->WarpSet( g_start_position[bEmpire][0], g_start_position[bEmpire][1] ); } } } } }; 3 - Enable Syserr also in LUA. In file questlua_global.cpp find for int _syserr(lua_State* L) or ALUA(_syserr) If you don't have it or if you have, replace or insert this function . int _syserr(lua_State* L) { if (!lua_isstring(L, 1)) return 0; sys_err("From LUA: %s", lua_tostring(L, 1)); /* PC* pc = CQuestManager::instance().GetCurrentPC(); if (!pc) return 0; LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (!ch) return 0; ch->ChatPacket(CHAT_TYPE_INFO, "QUEST_SYSERR %s", lua_tostring(L, 1)); */ return 0; } OR int _syserr(lua_State* L) { if (!lua_isstring(L, 1)) return 0; sys_err("From LUA: %s", lua_tostring(L, 1)); PC* pc = CQuestManager::instance().GetCurrentPC(); if (!pc) return 0; LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch) ch->ChatPacket(CHAT_TYPE_INFO, "QUEST_SYSERR %s", lua_tostring(L, 1)); return 0; } As you can see I commented the char part, because I suggest to use without! For server_timer and automatic things without char entity etc. Don't forget to add the function in RegisterGlobalFunctionTable and quest_functions file. 4 - Fix of bonus application like Official on special mineral slots. File item.cpp find for: if (0 != accessoryGrade) replace the if statement with this for 2 bonus only: if (0 != accessoryGrade && i < ITEM_APPLY_MAX_NUM - 1) UPDATE: From 2020-21 in official site, the bonus are shown and apply x3. So if you want to have like official, just leave c++ default and fix in python the show of the 3rd bonus. 5 - item with remain time stay into a shop, time shows: "Remain time 0 Sec.". In file uitooltip.py replace these functions: def AppendUniqueItemLastTime(self, restMin): def AppendMallItemLastTime(self, endTime): Like this: def AppendUniqueItemLastTime(self, restMin): if restMin > 0: restSecond = restMin*60 self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToHM(restSecond), self.NORMAL_COLOR) def AppendMallItemLastTime(self, endTime): if endTime > 0: leftSec = max(0, endTime - app.GetGlobalTimeStamp()) self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftSec), self.NORMAL_COLOR)
    1 point
  4. I have analyze a lot of that kind of crashes, i'm pretty sure that i know exactly where the problem is. Send me your PythonWindowManager.cpp
    1 point
  5. Oh yes, I was blind about that. Didn't even look at the caracter, my bad^^' Well, you have implemented the weapon in a wrong way. Did you check logfiles? Either you're missing the line in item_list.txt or your 3d model is missing/corrupt. Can you check this?
    1 point
  6. What exactly is the error here? You mean the sword being aligned on top? Does that happen for every weapon or only this one? And why is that an issue at all?
    1 point
  7. Host equals your machine's name. Domain is for networking purpose. For example you can use "test" as your host and "local" for domain. The only thing thay may cause a bit of trouble is sendmail which requires FQDN for hostname. But you can also disable it, especially since you're only working locally on your machine.
    1 point
  8. socket_tcp_bind: tcp_socket: Address already in use
    1 point
  9. I'd say some incopatibility between discord rcp and libjpeg, in my opinion you should rebuild libjpeg, for example by using something better like libjpeg turbo and not ijg libjpeg, otherwise check for /MT or /MD.
    1 point
  10. Such a small system for extracting stones.
    1 point
  11. 1- 2- 3- I saved Australia :$ , next i will save the world from Global Warming
    1 point
  12. Hello, Quick back story, those are official from early 2014 pretty much, they contain SG sources, nova sources (2014+) and some wolfman prototype. Those are a small part of a big leak that occured in 2014. It contained Metin2 sources, Metin1 sources as well as Inferna sources. We currently have two theories that are sometimes called official theories but we can't really know who to trust. I am going to be short: It was either a leak made by an employee that copied the file and sold them later on. Or it was downloaded from their server after someone exploited a breach in it. Ever since, we never had any more leaks, might it be core or sources like we had from 2008 to 2014. The only "leak" was an uncythonized root from 2018 because they forgot to cythonize it.
    1 point
  13. 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
  14. 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
  15. Hi, Metin2Dev Each version is compatible. information; root/uiSystemOption.py Open.. Search; Kod: self.tilingModeButtonList = [] Add; Kod: self.ctrlShadowQuality = 0 Search; Kod: self.tilingApplyButton=GetObject("tiling_apply") Add; Kod: self.ctrlShadowQuality = GetObject("shadow_bar") Search; Kod: self.ctrlSoundVolume.SetEvent(ui.__mem_func__(self.OnChangeSoundVolume)) Add; Kod: self.ctrlShadowQuality.SetSliderPos(float(systemSetting.GetShadowLevel()) / 5.0) self.ctrlShadowQuality.SetEvent(ui.__mem_func__(self.OnChangeShadowQuality)) Search; Kod: def OnChangeSoundVolume(self): pos = self.ctrlSoundVolume.GetSliderPos() snd.SetSoundVolumef(pos) systemSetting.SetSoundVolumef(pos) Add; Kod: def OnChangeShadowQuality(self): pos = self.ctrlShadowQuality.GetSliderPos() systemSetting.SetShadowLevel(int(pos / 0.2)) uiscript/SystemOptionDialog.py Open.. Search; Kod: { "name" : "tiling_apply", "type" : "button", "x" : 90+100, "y" : 185, "text" : uiScriptLocale.OPTION_TILING_APPLY, "default_image" : ROOT_PATH + "middle_Button_01.sub", "over_image" : ROOT_PATH + "middle_Button_02.sub", "down_image" : ROOT_PATH + "middle_Button_03.sub", }, Add; Kod: { "name" : "shadow_mode", "type" : "text", "x" : 30, "y" : 210, "text" : uiScriptLocale.OPTION_SHADOW, }, { "name" : "shadow_bar", "type" : "sliderbar", "x" : 110, "y" : 210, },
    1 point
  16. 0 points
  17. Thank you for maintaining the board from now on. For me it's time to say goodbye, thank you to everyone who I was able to meet over the past years. Maybe our paths will cross again.
    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.