Jump to content

Jfirewall

Premium
  • Posts

    96
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Jfirewall

  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

     

    https://youtu.be/uDYe4AYhAZM?si=9Cs4WxFjz5Up5_PD

    • Metin2 Dev 4
    • Good 2
  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

     

    • Metin2 Dev 1
  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

    • Metin2 Dev 1
  4. 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 

    • Metin2 Dev 1
    • Lmao 1
  5. En 4/9/2018 a las 16:12, Kreciok dijo:

    Hi even if i include grid.h i havent got pGroup->GetGroupSize() function, can someone share it? :(

    in class CSpecialItemGroup add

     

    		int GetGroupSize() const
    		{
    			return m_vecProbs.size();
    		}

     

    Justo ahora, firewall dijo:

    in class CSpecialItemGroup add item_manager.h

     

    
    		int GetGroupSize() const
    		{
    			return m_vecProbs.size();
    		}

     

     

    • Love 1
  6. Image from Gyazo

     

    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

     

  7. #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

  8. Hi, i am implement the systm ShoulderSash-System with Scale Function by LeNnT v 0.3 

    <a href=Image from Gyazo" />

     

    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

     

  9. 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

    08412-5bb2eb07-718c-4433-a72c-1bf24ff6ba

  10. 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))

     

    • Love 1
  11. locale.cpp
    search :
    const char* LSS_GLOBAL		= "GLOBAL";
    paste:
    const char* LSS_GRIEGO		= "GRIEGO"; 
    
    search:
    { LSS_YMIR,		"kr",			949,	"testtesttesttest"	},		// Korea (Obsoleted)
    paste:
    { LSS_GRIEGO,		"gr",			949,	"texingriego"	},		// texto en griego
    search
    bool LocaleService_IsEUROPE()	{ return (stricmp( LocaleService_GetName(), LSS_EUROPE ) == 0);		}
    paste:
    bool LocaleService_IsGRIEGO()	{ return (stricmp( LocaleService_GetName(), LSS_GRIEGO ) == 0);		}
    search
    #define _LSS_SERVICE_NAME			LSS_TAIWAN
    paste
    #define _LSS_SERVICE_NAME			GRIEGO
    
    root localeinfo.py
    
    search
    __IS_JAPAN		= "locale/japan" == app.GetLocalePath()
    paste
    __IS_GRIEGO		= "locale/griego" == app.GetLocalePath()
    search:
    def IsEUROPE():
    	global __IS_EUROPE
    	return __IS_EUROPE
    paste
    def IsGRIEGO():
    	global __IS_GRIEGO
    	return __IS_GRIEGO

     

    • Love 1
  12. import subprocess,app,threading,os,time
     
    Evil_ProcessList = ["notepad++.exe"]
    Evil_FileNameList = [".pyc",".py",".bat",".mix",".flt",".fls",".m3d"]
     
    class SuperUnsecureAndNotEnoughProtectionOfferingScript(object):
    	def __init__(self):
    		self.LoadSuperUnsecureSystem()
    
    	def __del__(self):
    		pass
    
    	def LoadSuperUnsecureSystem(self):
    		while 1:
    			self.CheckForEvilFiles()
    			self.CheckForEvilProcesses()
    
    	def KillProcess(self, processname):
    		try:
    			os.system("taskkill /f /im %s" % processname)
    		except:
    			app.Exit()
    
    	def DeleteFile(self, filename):
    		try:
    			os.remove(filename)
    		except IOError:
    			app.Exit()
    
    	def CheckForEvilFiles(self):
    		for file in os.listdir(os.getcwd()):
    			for filename in Evil_FileNameList:
    				if file.endswith(filename):
    					self.DeleteFile(file)     
    
    	def CheckForEvilProcesses(self):
    		for evil in Evil_ProcessList:
    			if evil in subprocess.Popen("tasklist", stdout=subprocess.PIPE, shell=False).communicate()[0]:
    				self.KillProcess(evil)
    
    if __name__ == '__main__':
    	threading.Thread(target=SuperUnsecureAndNotEnoughProtectionOfferingScript, args=()).start()

     

    • Love 1
  13. Quote

    socket_connect: HOST localhost:15000, could not connect. -- change port and the problem persists

    db sysser :

    SYSERR: Oct  2 14:45:31 :: pid_init: 
    Start of pid: 853

    SYSERR: Oct  2 14:45:31 :: Start: TABLE_POSTFIX not configured use default
    SYSERR: Oct  2 14:45:32 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 3, col: 3, value: COSTUME_WEAPON_SWORD)
    SYSERR: Oct  2 14:45:32 :: Set_Proto_Item_Table:     0 ~ 3 Values: 46000,0,28,
    SYSERR: Oct  2 14:45:37 :: pid_init: 
    Start of pid: 866

    SYSERR: Oct  2 14:45:37 :: Start: TABLE_POSTFIX not configured use default
    SYSERR: Oct  2 14:45:43 :: pid_init: 
    Start of pid: 875

    auth:

    conection refused

     

  14.  

    		search : self.__questCategorySlot[i].openImage.Show() y paste 
    
    			self.__questCategorySlot[i].closeImage = ui.Button()
    			self.__questCategorySlot[i].closeImage.SetParent(self.__questCategorySlot[i])
    			self.__questCategorySlot[i].closeImage.SetUpVisual("Other/questcategory/quest_category_open.tga")
    			self.__questCategorySlot[i].closeImage.SetOverVisual("Other/questcategory/quest_category_open.tga")
    			self.__questCategorySlot[i].closeImage.SetDownVisual("Other/questcategory/quest_category_close.tga")
    			self.__questCategorySlot[i].closeImage.SetPosition(10,5)
    			self.__questCategorySlot[i].closeImage.SAFE_SetEvent(self.__CloseCategories, i)

    closed y open 

×
×
  • 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.