Jump to content

Jfirewall

Premium
  • Posts

    96
  • Joined

  • Last visited

  • Feedback

    0%

About Jfirewall

  • Birthday 11/19/1996

Informations

  • Gender
    Male

Social Networks

Recent Profile Visitors

2800 profile views

Jfirewall's Achievements

Collaborator

Collaborator (7/16)

  • Very Important Person Rare
  • Very Popular Rare
  • Reacting Well
  • Dedicated
  • Collaborator

Recent Badges

264

Reputation

  1. NEW FLAG NOMOVE_AFTER_SPAWM service.h #define ENABLE_NOMOVE_AFTER_SPAWM length.h search : AIFLAG_REVIVE = (1 << 11), add: #ifdef ENABLE_NOMOVE_AFTER_SPAWM AIFLAG_NOMOVE_AFTER_SPAWM = (1 << 12), #endif protoreader.cpp search int get_Mob_AIFlag_Value(string inputString) add in string arAIFlag[] #ifdef ENABLE_NOMOVE_AFTER_SPAWM "NOMOVE_AFTER_SPAWM", #endif char.cpp search bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList) add: #ifdef ENABLE_NOMOVE_AFTER_SPAWM if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE_AFTER_SPAWM)) return false; #endif char_skill.cpp search if (IS_SET(m_pkSk->dwFlag, SKILL_FLAG_CRUSH | SKILL_FLAG_CRUSH_LONG) add: #ifdef ENABLE_NOMOVE_AFTER_SPAWM && !IS_SET(pkChrVictim->GetAIFlag(), AIFLAG_NOMOVE_AFTER_SPAWM) #endif char_state.cpp search void CHARACTER::__StateIdle_Monster() in if (!no_wander && !IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE) add: #ifdef ENABLE_NOMOVE_AFTER_SPAWM && !IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE_AFTER_SPAWM) #endif src client locale_inc.h #define ENABLE_NOMOVE_AFTER_SPAWM search in pythonnonplayer.h AIFLAG_REVIVE = (1 << 11), add: #if defined ENABLE_NOMOVE_AFTER_SPAWM AIFLAG_NOMOVE_AFTER_SPAWM = (1 << 12), #endif 991 ????? S_KNIGHT MONSTER MELEE 59 SMALL AGGR,NOMOVE example a small flag so that the mobs always have their location, so that when searching for a player they are always in the same position [Hidden Content]
  2. A simple code that you can configure in the vector to add the maps where you do not want any boss or mob to drop their items. service.h #define ENABLE_BLOCK_DROP_MAP utils.h search: extern void set_global_time(time_t t); add: #ifdef ENABLE_BLOCK_DROP_MAP extern bool is_drop_item(int map_index); #endif utils.cpp add: #ifdef ENABLE_BLOCK_DROP_MAP bool is_drop_item(int map_index){ vector<int> DropMap {41}; // -- add index the map (41 == jinno map) //dungeon for (int i=180000; i<190000; i++) DropMap.push_back(i); return std::find(DropMap.begin(), DropMap.end(), map_index) != DropMap.end(); } #endif char_battle.cpp search: else if (IsRevive() == true) { Reward(false); } else { Reward(true); // Drops gold, item, etc.. } replace: else if (IsRevive() == true) { Reward(false); } else { #ifdef ENABLE_BLOCK_DROP_MAP if (is_drop_item(GetMapIndex())){ Reward(false);} else { Reward(true); } } #else Reward(true); } #endif
  3. def __IsSpecialMap(self): import background dis_maps = [ "metin2_map_duel", "metin2_map_ridack5", "metin2_map_t3" ] if str(background.GetCurrentMapName()) in dis_maps: return TRUE return FALSE def __OnClickPvPModeFreeButton(self): if self.__CheckPvPProtectedLevelPlayer(): return self.__RefreshPVPButtonList() if self.__IsSpecialMap(): chat.AppendChat(chat.CHAT_TYPE_INFO, "You can't do this here. ") elif constInfo.PVPMODE_ENABLE: net.SendChatPacket("/pkmode 2", chat.CHAT_TYPE_TALKING) else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_NOT_SUPPORT) In case someone wants to add more maps and not just 1
  4. I have been working for many years with excellent work recommending 100%
  5. in pythonplayersettingsmodule.cpp search const bool CPlayerSettingsModule::LoadGameSound() and under add: const bool CPlayerSettingsModule::LoadGameNPC() { using namespace boost::algorithm; CMappedFile file; const VOID* pvData; if (!CEterPackManager::Instance().Get(file, NPC_LIST_FILE_NAME, &pvData)) { TraceError("CPythonPlayerSettingsModule::LoadGameNPC(fileName=%s) - Load Error", NPC_LIST_FILE_NAME); return false; } CMemoryTextFileLoader fileLoader; fileLoader.Bind(file.Size(), pvData); CTokenVector kTokenVector; for (size_t i = 0; i < fileLoader.GetLineCount(); ++i) { if (!fileLoader.SplitLineByTab(i, &kTokenVector)) continue; const uint32_t& vnum = atoi(kTokenVector[0].c_str()); std::string& name = kTokenVector[1]; trim(name); if (vnum) { CRaceManager::Instance().RegisterRaceName(vnum, name.c_str()); } else { std::string& src = kTokenVector[2]; trim(src); CRaceManager::Instance().RegisterRaceSrcName(name.c_str(), src.c_str()); } } return true; } search cpsmLoadGameSkill and under add: PyObject* cpsmLoadGameNPC(PyObject* poSelf, PyObject* poArgs) { CPlayerSettingsModule::LoadGameNPC(); return Py_BuildNone(); } search { "LoadGameSkill", cpsmLoadGameSkill, METH_VARARGS }, and add under: { "LoadGameNPC", cpsmLoadGameNPC, METH_VARARGS }, in pythonplayersettingsmodule.h search #pragma once and under add: static const char* NPC_LIST_FILE_NAME = "npclist.txt"; search const static bool LoadGameSound(); and under add: const static bool LoadGameNPC(); in root playersetingmodule.py searh def __LoadGameNPC(): and replace: def __LoadGameNPC(): if app.ENABLE_CPP_PSM: cpsm.LoadGameNPC() else: ## paste your code here pass update npclist.txt
  6. elif itemType == item.ITEM_TYPE_COSTUME and itemSubType == item.COSTUME_TYPE_MOUNT: MountVnum = item.GetValue(3) if MountVnum != 0: self.__ModelPreview(MountVnum)
  7. in class CSpecialItemGroup add int GetGroupSize() const { return m_vecProbs.size(); }
  8. 0906 20:36:59765 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:59804 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:59818 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:59828 :: CANNOT_FIND_PACK_FILE [sound/npc/chstaruszka_mark/wait.mss] 0906 20:36:59835 :: CANNOT_FIND_PACK_FILE [sound/npc/chstaruszka_mark/wait1.mss] 0906 20:36:59847 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:59974 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:59985 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 512 0906 20:36:00052 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 1317864192 0906 20:36:46790 :: granny_shared_vbs: 0906 20:36:46790 :: 0: 40 0906 20:36:46791 :: 1: 53 0906 20:36:46792 :: 2: 20 0906 20:36:46792 :: 3: 40 0906 20:36:46793 :: 4: 0 0906 20:36:46793 :: 5: 20 0906 20:36:46793 :: 6: 0 0906 20:36:46794 :: 7: 0 0906 20:36:46794 :: 8: 0
  9. #ifdef ENABLE_ACCE_SYSTEM void CItemData::SetItemScale(const std::string strJob, const std::string strSex, const std::string strScaleX, const std::string strScaleY, const std::string strScaleZ, const std::string strPositionX, const std::string strPositionY, const std::string strPositionZ) { DWORD dwPos = 0; //DWORD dwPos; if (strJob == "JOB_WARRIOR") dwPos = NRaceData::JOB_WARRIOR; else if (strJob == "JOB_ASSASSIN") dwPos = NRaceData::JOB_ASSASSIN; else if (strJob == "JOB_SURA") dwPos = NRaceData::JOB_SURA; else if (strJob == "JOB_SHAMAN") dwPos = NRaceData::JOB_SHAMAN; dwPos += 1; if (strSex == "F") dwPos += 5; m_ScaleTable.tInfo[dwPos].fScaleX = float(atof(strScaleX.c_str()) / 100.0f); m_ScaleTable.tInfo[dwPos].fScaleY = float(atof(strScaleY.c_str()) / 100.0f); m_ScaleTable.tInfo[dwPos].fScaleZ = float(atof(strScaleZ.c_str()) / 100.0f); m_ScaleTable.tInfo[dwPos].fPositionX = float(atof(strPositionX.c_str()) * 100.0f); m_ScaleTable.tInfo[dwPos].fPositionY = float(atof(strPositionY.c_str()) * 100.0f); m_ScaleTable.tInfo[dwPos].fPositionZ = float(atof(strPositionZ.c_str()) * 100.0f); } bool CItemData::GetItemScale(DWORD dwPos, float & fScaleX, float & fScaleY, float & fScaleZ, float & fPositionX, float & fPositionY, float & fPositionZ) { fScaleX = m_ScaleTable.tInfo[dwPos].fScaleX; fScaleY = m_ScaleTable.tInfo[dwPos].fScaleY; fScaleZ = m_ScaleTable.tInfo[dwPos].fScaleZ; fPositionX = m_ScaleTable.tInfo[dwPos].fPositionX; fPositionY = m_ScaleTable.tInfo[dwPos].fPositionY; fPositionZ = m_ScaleTable.tInfo[dwPos].fPositionZ; return true; } #endif fix the my problem
  10. Hi, i am implement the systm ShoulderSash-System with Scale Function by LeNnT v 0.3 " /> syyser cleansed not game.core not db.core the uniq error is errorlog Module Name: J:\Metin2client\Metin2client.exe Time Stamp: 0x5b909eef - (null) Exception Type: 0xc0000005 eax: 0x30ffd293 ebx: 0x10554630 ecx: 0x00000000 edx: 0x010fd610 esi: 0x30ffd293 edi: 0x00000001 ebp: 0x010fd670 esp: 0x010fd644 0x00286c37 J:\Metin2client\Metin2client.exe 0x00294d85 J:\Metin2client\Metin2client.exe 0x001e8616 J:\Metin2client\Metin2client.exe 0x001ed022 J:\Metin2client\Metin2client.exe 0x1e0a87b7 J:\Metin2client\python27.dll 0x1e0ea900 J:\Metin2client\python27.dll 0x1e0ec65f J:\Metin2client\python27.dll 0x1e0ecd22 J:\Metin2client\python27.dll 0x1e0e93f5 J:\Metin2client\python27.dll 0x1e0ea977 J:\Metin2client\python27.dll
  11. search in intrologin def open(self): and add os.remove('lang/idioma.txt') reemplace for rute the you archive
  12. char.h #ifdef ENABLE_TIME_USE public: int m_iUpdate; int GetUpdatetTime() { return m_iUpdate; } void SetUpdatetTime() { m_iUpdate = thecore_pulse(); } #endif in cmd_general.cpp #ifdef ENABLE_TIME_USE ACMD(do_funciontime) int iPulse = thecore_pulse(); if (iPulse - ch->GetUpdatetTime() < PASSES_PER_SEC(10)) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("in 10 secon i´m use the button")); return; } ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Hi Fire")); ch->SetUpdatetTime()(); #endif in cmd.cpp #ifdef ENABLE_TIME_USE ACMD(do_funciontime); #endif #ifdef ENABLE_TIME_USE { "funciontime", do_funciontime, 0, POS_DEAD, GM_PLAYER }, #endif function in .py net.SendChatPacket("/funciontime") for the developers, who suddenly want to put a restriction when using a button and do not use it many times, they can put a time, I do not know if it is already public use, I only share how to do it in a simple way
  13. def OnUpdate(self): if app.ENABLE_COINS_INVENTORY: self.wndCoins.SetText(localeInfo.NumberToSecondaryCoinString(constInfo.Coins)) def RefreshStatus(self): money = player.GetElk() self.wndMoney.SetText(localeInfo.NumberToMoneyString(money)) if app.ENABLE_COINS_INVENTORY: self.wndCoins.SetText(localeInfo.NumberToSecondaryCoinString(constInfo.Coins))
×
×
  • 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.