Honorable Member Mali 41891 Posted October 11, 2015 Honorable Member Share Posted October 11, 2015 (edited) Hi, developers! Before you start, create a backup from your source files immediately! Today I'm gonna share with you my last work. I have read every informations from the official binary from beta(metin2client_r11185) and r7071. It was not an easy task to understand functions but successed. I will not write down the implementation step by step, but I wrote some informations into the files what you should to do to implement the system. If you do not understand the steps I put original(from dev branch) and modified files into the archive to compare the original and the changed files with notepad++ or something else comparer tool to see the changes. - There are some files which optional changes to show the mob-aiflag on those monsters which are not aggressive but summoned by aggressive with "/ma" command.- There was a little problem with Python 2.7.3 therefore I split asunder the gui-script. And be careful, the main script is using True and False variables.- You can disable the whole system in common/service.h and UserInterface/Locale_inc.h with undefined or with commented macro. I hope everything are understandable and I did not miss something from the release, and sorry for my bad english.Special thanks to TheSLZ for test the implementation. And last but not least here is the result: This is the hidden content, please Sign In or Sign Up good job bro Hi, developers! Before you start, create a backup from your source files immediately! Today I'm gonna share with you my last work. I have read every informations from the official binary from beta(metin2client_r11185) and r7071. It was not an easy task to understand functions but successed. I will not write down the implementation step by step, but I wrote some informations into the files what you should to do to implement the system. If you do not understand the steps I put original(from dev branch) and modified files into the archive to compare the original and the changed files with notepad++ or something else comparer tool to see the changes. - There are some files which optional changes to show the mob-aiflag on those monsters which are not aggressive but summoned by aggressive with "/ma" command.- There was a little problem with Python 2.7.3 therefore I split asunder the gui-script. And be careful, the main script is using True and False variables.- You can disable the whole system in common/service.h and UserInterface/Locale_inc.h with undefined or with commented macro. I hope everything are understandable and I did not miss something from the release, and sorry for my bad english.Special thanks to TheSLZ for test the implementation. And last but not least here is the result: This is the hidden content, please Sign In or Sign Up good job bro Edited August 31, 2022 by Metin2 Dev Core X - External 2 Internal 1 1 Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 13, 2015 Share Posted October 13, 2015 hey guys can anybody help me compile the binary? all the binaries i have tried outputed window.h and some other files were not found!!! Link to comment Share on other sites More sharing options...
Former Staff Shisui 491 Posted October 21, 2015 Former Staff Share Posted October 21, 2015 How may I add pet lvl colour with your code? If I uncomment /*else if (IsPet()) CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kPetLevelColor);*/ I'll get some errors. Link to comment Share on other sites More sharing options...
Tasho 243 Posted October 21, 2015 Share Posted October 21, 2015 First of all sorry for lately reply.Yes I know already TheSLZ informed me, sorry for that but I missed out something from the UserInterface/NetworkActorManager.cpp, I will update the archive within some minutes after I had recheck everything again. CInstanceBase* CNetworkActorManager::__AppendCharacterManagerActor(SNetworkActorData& rkNetActorData) kCreateData.m_dwLevel=rkNetActorData.m_dwLevel; #if defined(WJ_SHOW_MOB_INFO) kCreateData.m_dwAIFlag=rkNetActorData.m_dwAIFlag; #endif kCreateData.m_dwGuildID=rkNetActorData.m_dwGuildID; The IsPet() part same with IsPC() if you follow the line in back(Go to definition in VS) just the different is that the Pets(the new growable pets) have new instance type (TYPE_PET = 10, pc is 6 etc). gameLib/ActorInstance.cpp + Header file into class CActorInstance bool IsPet(); bool CActorInstance::IsPet() { if (TYPE_PET == m_eActorType) return true; return false; } UserInterface/InstanceBase.cpp + Header file into class CInstanceBase BOOL IsPet(); BOOL CInstanceBase::IsPet() { return m_GraphicThingInstance.IsPet(); } gameLib/ActorInstance.h enum EType { TYPE_ENEMY, TYPE_NPC, TYPE_STONE, TYPE_WARP, TYPE_DOOR, TYPE_BUILDING, TYPE_PC, TYPE_POLY, TYPE_HORSE, TYPE_GOTO, TYPE_PET, TYPE_OBJECT, // Only For Client }; @koray: Sorry but I do not know what does it mean the WJ tag. @galet I have an unpacked r7071 but the imports are not corrected and crash when starts, but can load it in ida, and the (already not actual) r11185(from beta) able to debug with attach process when ... I do not want to tell that because "they" are reading this forum as Shogun said and I do not want to change this state, because I want to bebug the new binaries in the future continuously . About: Module object has no attribute "blablabla". Check your pythonsystemmodule.cpp file again and add the new variable if you did not do yet. here you go 1 Link to comment Share on other sites More sharing options...
Former Staff Shisui 491 Posted October 21, 2015 Former Staff Share Posted October 21, 2015 First of all sorry for lately reply.Yes I know already TheSLZ informed me, sorry for that but I missed out something from the UserInterface/NetworkActorManager.cpp, I will update the archive within some minutes after I had recheck everything again. CInstanceBase* CNetworkActorManager::__AppendCharacterManagerActor(SNetworkActorData& rkNetActorData) kCreateData.m_dwLevel=rkNetActorData.m_dwLevel; #if defined(WJ_SHOW_MOB_INFO) kCreateData.m_dwAIFlag=rkNetActorData.m_dwAIFlag; #endif kCreateData.m_dwGuildID=rkNetActorData.m_dwGuildID; The IsPet() part same with IsPC() if you follow the line in back(Go to definition in VS) just the different is that the Pets(the new growable pets) have new instance type (TYPE_PET = 10, pc is 6 etc). gameLib/ActorInstance.cpp + Header file into class CActorInstance bool IsPet(); bool CActorInstance::IsPet() { if (TYPE_PET == m_eActorType) return true; return false; } UserInterface/InstanceBase.cpp + Header file into class CInstanceBase BOOL IsPet(); BOOL CInstanceBase::IsPet() { return m_GraphicThingInstance.IsPet(); } gameLib/ActorInstance.h enum EType { TYPE_ENEMY, TYPE_NPC, TYPE_STONE, TYPE_WARP, TYPE_DOOR, TYPE_BUILDING, TYPE_PC, TYPE_POLY, TYPE_HORSE, TYPE_GOTO, TYPE_PET, TYPE_OBJECT, // Only For Client }; @koray: Sorry but I do not know what does it mean the WJ tag. @galet I have an unpacked r7071 but the imports are not corrected and crash when starts, but can load it in ida, and the (already not actual) r11185(from beta) able to debug with attach process when ... I do not want to tell that because "they" are reading this forum as Shogun said and I do not want to change this state, because I want to bebug the new binaries in the future continuously . About: Module object has no attribute "blablabla". Check your pythonsystemmodule.cpp file again and add the new variable if you did not do yet. here you go I saw that yesterday. (facepalm)Kids don't do drugs. Thanks. Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 28, 2015 Share Posted October 28, 2015 how do i fix this? never mind it was my fault ;p Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 28, 2015 Share Posted October 28, 2015 well i made it but as the guys mentioned before the name does not hide when i click the button and the * does not appear to the name of the aggressive mobs... here is my syserr 1029 00:33:06728 :: Traceback (most recent call last): 1029 00:33:06775 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:06775 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:06776 :: NameError 1029 00:33:06776 :: : 1029 00:33:06776 :: global name 'True' is not defined 1029 00:33:06776 :: 1029 00:33:07680 :: Traceback (most recent call last): 1029 00:33:07681 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:07681 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:07681 :: NameError 1029 00:33:07681 :: : 1029 00:33:07681 :: global name 'True' is not defined 1029 00:33:07681 :: 1029 00:33:08504 :: Traceback (most recent call last): 1029 00:33:08505 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:08505 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:08505 :: NameError 1029 00:33:08505 :: : 1029 00:33:08505 :: global name 'True' is not defined 1029 00:33:08505 :: 1029 00:33:09133 :: Traceback (most recent call last): 1029 00:33:09133 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:09133 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:09133 :: NameError 1029 00:33:09133 :: : 1029 00:33:09133 :: global name 'True' is not defined 1029 00:33:09133 :: Link to comment Share on other sites More sharing options...
Denis 1474 Posted October 29, 2015 Share Posted October 29, 2015 (edited) well i made it but as the guys mentioned before the name does not hide when i click the button and the * does not appear to the name of the aggressive mobs... here is my syserr 1029 00:33:06728 :: Traceback (most recent call last): 1029 00:33:06775 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:06775 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:06776 :: NameError 1029 00:33:06776 :: : 1029 00:33:06776 :: global name 'True' is not defined 1029 00:33:06776 :: 1029 00:33:07680 :: Traceback (most recent call last): 1029 00:33:07681 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:07681 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:07681 :: NameError 1029 00:33:07681 :: : 1029 00:33:07681 :: global name 'True' is not defined 1029 00:33:07681 :: 1029 00:33:08504 :: Traceback (most recent call last): 1029 00:33:08505 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:08505 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:08505 :: NameError 1029 00:33:08505 :: : 1029 00:33:08505 :: global name 'True' is not defined 1029 00:33:08505 :: 1029 00:33:09133 :: Traceback (most recent call last): 1029 00:33:09133 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:09133 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:09133 :: NameError 1029 00:33:09133 :: : 1029 00:33:09133 :: global name 'True' is not defined 1029 00:33:09133 :: Change True to TRUE Edited October 29, 2015 by Denis Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 29, 2015 Share Posted October 29, 2015 well i made it but as the guys mentioned before the name does not hide when i click the button and the * does not appear to the name of the aggressive mobs... here is my syserr 1029 00:33:06728 :: Traceback (most recent call last): 1029 00:33:06775 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:06775 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:06776 :: NameError 1029 00:33:06776 :: : 1029 00:33:06776 :: global name 'True' is not defined 1029 00:33:06776 :: 1029 00:33:07680 :: Traceback (most recent call last): 1029 00:33:07681 :: File "ui.py", line 1128, in OnToggleDown 1029 00:33:07681 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:07681 :: NameError 1029 00:33:07681 :: : 1029 00:33:07681 :: global name 'True' is not defined 1029 00:33:07681 :: 1029 00:33:08504 :: Traceback (most recent call last): 1029 00:33:08505 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:08505 :: File "uiGameOption.py", line 441, in __OnClickShowMobAIFlagButton 1029 00:33:08505 :: NameError 1029 00:33:08505 :: : 1029 00:33:08505 :: global name 'True' is not defined 1029 00:33:08505 :: 1029 00:33:09133 :: Traceback (most recent call last): 1029 00:33:09133 :: File "ui.py", line 1124, in OnToggleUp 1029 00:33:09133 :: File "uiGameOption.py", line 432, in __OnClickShowMobLevelButton 1029 00:33:09133 :: NameError 1029 00:33:09133 :: : 1029 00:33:09133 :: global name 'True' is not defined 1029 00:33:09133 :: Change True to TRUE Thank you so much now the * somebody please? Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 31, 2015 Share Posted October 31, 2015 Ok this can not be happening i have done twice the tut exactly as @p3ng3r described and the * is still not displayed... if it helps i have this syserr: 1031 22:28:13287 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR Link to comment Share on other sites More sharing options...
Former Staff Shisui 491 Posted October 31, 2015 Former Staff Share Posted October 31, 2015 You still have this error? global name 'True' is not defined Link to comment Share on other sites More sharing options...
SeXpL0SiVe 4 Posted October 31, 2015 Share Posted October 31, 2015 Just change 'True' to 'TRUE' and 'False' to 'FALSE'... or however your py has the rest of the trues and falses this system is case sensitive... now can you tell me how to fix the * please?? Link to comment Share on other sites More sharing options...
Berke58 97 Posted November 4, 2015 Share Posted November 4, 2015 thanks work 1 Link to comment Share on other sites More sharing options...
Veneno 7 Posted November 10, 2015 Share Posted November 10, 2015 Hello @xP3NG3Rx and great job I was wondering if you could help me about the aggressive flag (*) it's not working and as I saw other people have the same problem... I repeated all your steps in the files i downloaded and what i have seen in the comments and still the problem remains... Again great job Link to comment Share on other sites More sharing options...
Former Staff Shisui 491 Posted November 10, 2015 Former Staff Share Posted November 10, 2015 Hello @xP3NG3Rx and great job I was wondering if you could help me about the aggressive flag (*) it's not working and as I saw other people have the same problem... I repeated all your steps in the files i downloaded and what i have seen in the comments and still the problem remains... Again great job Compare his files with yours. This is working. Link to comment Share on other sites More sharing options...
Veneno 7 Posted November 10, 2015 Share Posted November 10, 2015 Hello @xP3NG3Rx and great job I was wondering if you could help me about the aggressive flag (*) it's not working and as I saw other people have the same problem... I repeated all your steps in the files i downloaded and what i have seen in the comments and still the problem remains... Again great job Compare his files with yours. This is working. I compared every file... It did not work :/ There must be something else... But the point is what... Can anybody help me? Link to comment Share on other sites More sharing options...
Tacticus 73 Posted November 14, 2015 Share Posted November 14, 2015 perfect work all...thx Link to comment Share on other sites More sharing options...
Premium imWelly 26 Posted December 20, 2015 Premium Share Posted December 20, 2015 i appreciate your hard working on making this useful release , its working just fine also nice and understandable tutorial good job and thank you Link to comment Share on other sites More sharing options...
Tacticus 73 Posted December 20, 2015 Share Posted December 20, 2015 (edited) i have problem when i poisoned or slow mob...this mob reset lvl to 0...look at pic How fixed it? Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
thalooka 3 Posted December 21, 2015 Share Posted December 21, 2015 Same Problem as @Tacticus Link to comment Share on other sites More sharing options...
Honorable Member xP3NG3Rx 19683 Posted December 21, 2015 Author Honorable Member Share Posted December 21, 2015 (edited) I tested with poison, slow and stun but I've never got that problem. Just the name of monster which is got poison effect is jumping up, and when the poison is gone jump down Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
thalooka 3 Posted December 21, 2015 Share Posted December 21, 2015 done all straight by tut Link to comment Share on other sites More sharing options...
wezt 95 Posted January 10, 2016 Share Posted January 10, 2016 (edited) Hi. @xP3NG3Rx, first of all I'd like to say thanks for this nice tutorial (added on server some time ago). Also I have little suggestion for IsPet(): Spoiler Probably it's not a best way.. In InstanceBase.h after "BOOL IsDoor();" add "BOOL IsPet();" In InstanceBase.cpp after whole "BOOL CInstanceBase::IsDoor()" add this: BOOL CInstanceBase::IsPet() { int vnum = GetVirtualNumber(); if (vnum >= 34001 && vnum <= 34100) //range with mob vnums from db return true; else return false; } Result: Regards. Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
Honorable Member xP3NG3Rx 19683 Posted January 12, 2016 Author Honorable Member Share Posted January 12, 2016 @wezt I know, there are lots of ways to make it work, I just wrote a sample from official like. Because there the pets have new type of instance. Link to comment Share on other sites More sharing options...
berk 1 Posted February 12, 2016 Share Posted February 12, 2016 great Link to comment Share on other sites More sharing options...
Recommended Posts