SolWayne 847 Posted January 12, 2023 Share Posted January 12, 2023 This is the hidden content, please Sign In or Sign Up Alternative download links → This is the hidden content, please Sign In or Sign Up (Without VDI) This is an german files creat from TMP4 edit by SolWayne ! ALL EDITS ONLY IN GERMAN Spoiler start cd /usr/metin2/server && sh start.sh close cd /usr/metin2/server && sh close.sh clean cd /usr/metin2/server && sh clean.sh backup cd /usr/metin2/server && sh backup.sh questcompile cd /usr/metin2/server/share/locale/english/quest && python2.7 make.py dbclean cd /usr/metin2/src/db/src && gmake clean dbdep cd /usr/metin2/src/db/src && gmake dep dbcompile cd /usr/metin2/src/db/src && gmake -j9 gameclean cd /usr/metin2/src/game/src && gmake clean gamedep cd /usr/metin2/src/game/src && gmake dep gamecompile cd /usr/metin2/src/game/src && gmake -j9 Spoiler Server: #ifndef __INC_SERVICE_H__ #define __INC_SERVICE_H__ #define ENABLE_DS_GRADE_MYTH #define ENABLE_AUTODETECT_INTERNAL_IP #define ENABLE_PROXY_IP #define ENABLE_PORT_SECURITY #define _IMPROVED_PACKET_ENCRYPTION_ // 패킷 암호화 개선 //#define __AUCTION__ #define __PET_SYSTEM__ #define __UDP_BLOCK__ #define ENABLE_IGNORE_LOWER_BUFFS #define ENABLE_GIVE_BASIC_ITEM_SOURCE #define __NEW_ARROW_SYSTEM__ #define __BL_PARTY_POSITION__ #define NEW_PET_SYSTEM #define __SEND_TARGET_INFO__ #define __SKILLS_LEVEL_OVER_P__ #define ENABLE_GLOBAL_CHAT #define __WEAPON_COSTUME_SYSTEM__ #define __COSTUME_ATTR_SYSTEM__ #define __SASH_SYSTEM__ #endif Client: #define LOCALE_SERVICE_SINGAPORE // ½Ì°¡Æú #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM #define ENABLE_DISCORD_RPC #define ENABLE_NEW_ARROW_SYSTEM #define __BL_PARTY_POSITION__ #define NEW_PET_SYSTEM #define ENABLE_DS_GRADE_MYTH #define ENABLE_SEND_TARGET_INFO #define ENABLE_SKILLS_LEVEL_OVER_P #ifdef ENABLE_COSTUME_SYSTEM #define ENABLE_COSTUME_WEAPON_SYSTEM #endif #define ENABLE_COSTUME_ATTR_SYSTEM #define ENABLE_SASH_SYSTEM Systems in german: v0.0.1 -4 Inventar Seiten -Discord Anzeige v0.0.2 -Gruppenbuff -Schnelles Item aufheben -Direktes Item aufheben aller Items -Mob Level anzeige -Move Speed auf 200 v0.0.3 -Man kann keine Schlechteren Buffs Bekommen -Starter EQ über SRC/ Einstellbar (cmd_generall.cpp #ifdef ENABLE_GIVE_BASIC_ITEM_SOURCE) -Aura und VZK nur noch mit Waffe -Metinstein Level anzeige v0.0.4 -Ninja Köcher -6ter Ninja Krieger Skill -Item Zerstörung via Weg werfen -Multi Status Punkte -Metinsteine auf der Minimap -Gruppen mitglieder auf der Minimap -Größere Shop fenster v0.0.5 -Level Pet System -Mytische Alchi -TargetInfo System -Alchi Aktiv (Fenster sicht) v0.0.6 -Waffenkostüm -Drop Information -Kostüm Switcher -Skills Über P -Schulterband -Max Yang (long long) Spoiler MySQL PW: 123456789 VDI PW: 123456789 InGame: ID= admin PW= 123 HAVE FUN 208 1 8 2 2 83 16 144 Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 14, 2023 Author Share Posted January 14, 2023 (edited) Bugs: Weapon Custom system. Mytish Dragon Soul. If I have a fix I will share it Edited January 14, 2023 by SolWayne Link to comment Share on other sites More sharing options...
MightyKraken 1 Posted January 15, 2023 Share Posted January 15, 2023 Hi, Could you put a m2dl, would be appreciated. 1 Link to comment Share on other sites More sharing options...
WhiteBambo 2 Posted January 15, 2023 Share Posted January 15, 2023 0115 23:50:12400 :: Traceback (most recent call last): 0115 23:50:12400 :: File "introSelect.py", line 323, in Refresh 0115 23:50:12400 :: File "introSelect.py", line 924, in SelectSlot 0115 23:50:12400 :: AttributeError 0115 23:50:12400 :: : 0115 23:50:12400 :: 'NoneType' object has no attribute 'Show' 0115 23:50:12400 :: 0115 23:50:12400 :: Unknown packet header: 148, last: 253 32 sysser ^, fix? 1 Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 16, 2023 Author Share Posted January 16, 2023 1 hour ago, WhiteBambo said: 0115 23:50:12400 :: Traceback (most recent call last): 0115 23:50:12400 :: File "introSelect.py", line 323, in Refresh 0115 23:50:12400 :: File "introSelect.py", line 924, in SelectSlot 0115 23:50:12400 :: AttributeError 0115 23:50:12400 :: : 0115 23:50:12400 :: 'NoneType' object has no attribute 'Show' 0115 23:50:12400 :: 0115 23:50:12400 :: Unknown packet header: 148, last: 253 32 sysser ^, fix? when does this problem occur? 1 Link to comment Share on other sites More sharing options...
WhiteBambo 2 Posted January 16, 2023 Share Posted January 16, 2023 Just now, SolWayne said: when does this problem occur? character select 1 Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 16, 2023 Author Share Posted January 16, 2023 Just now, WhiteBambo said: character select I'll take a look tomorrow and let you know here 1 Link to comment Share on other sites More sharing options...
Luffy 9 Posted January 16, 2023 Share Posted January 16, 2023 Client does not pass character selection 0116 13:55:57754 :: Phase Select does not handle this header (header: 1, last: 32, 1) Images in the client 2 1 “To be humble with superiors is duty, with equals is courtesy, with inferiors is nobility.” Benjamin Franklin Por favor, desative seu AdBlock quando usar meus links de download. Please, disable your AdBlock when use my download links. Me AdBlock On: Adblock Off: Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 16, 2023 Author Share Posted January 16, 2023 (edited) 5 minutes ago, Luffy said: Client does not pass character selection 0116 13:55:57754 :: Phase Select does not handle this header (header: 1, last: 32, 1) Images in the client https://uploaddeimagens.com.br/imagens/ircky5w https://uploaddeimagens.com.br/imagens/zYER1zk I know about the weapon costume system as soon as I fix it it will be posted here as is and will be included in the download ( ty for report! ) 18 hours ago, WhiteBambo said: 0115 23:50:12400 :: Traceback (most recent call last): 0115 23:50:12400 :: File "introSelect.py", line 323, in Refresh 0115 23:50:12400 :: File "introSelect.py", line 924, in SelectSlot 0115 23:50:12400 :: AttributeError 0115 23:50:12400 :: : 0115 23:50:12400 :: 'NoneType' object has no attribute 'Show' 0115 23:50:12400 :: 0115 23:50:12400 :: Unknown packet header: 148, last: 253 32 sysser ^, fix? So I've tested all the functions and there are no errors in the introselect. It's error-free for me https://metin2.download/picture/H0iW6h38gfUWekQ918Upz7E8b3bWUO8e/.png Edited January 17, 2023 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Luffy 9 Posted January 16, 2023 Share Posted January 16, 2023 For me, when the character selection part arrives, it does not appear and when it appears, it does not enter the game syserr 0116 13:55:57754 :: Phase Select does not handle this header (header: 1, last: 32, 1) 1 “To be humble with superiors is duty, with equals is courtesy, with inferiors is nobility.” Benjamin Franklin Por favor, desative seu AdBlock quando usar meus links de download. Please, disable your AdBlock when use my download links. Me AdBlock On: Adblock Off: Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 16, 2023 Author Share Posted January 16, 2023 (edited) since two people have already had problems with client source, here are a few gifs to explain Spoiler step 1: Unpack the SRC.rar in the Client S22 folder. overwrite all files step 2: Open the source in VS22. Go to the source folder and then go to Userinterface. https://metin2.download/picture/1pv1wVIKA3lAk9fxdfOKKT02G1pJ8tF8/.png step 3: Find the following files PythonSash (.cpp + .h) PythonSkillPet (.cpp + .h) step 4: import the files into the source https://metin2.download/picture/WL045rKHe5PaHDRQcyinm3OXwN4uuZPI/.gif I hope this helps you, especially the inexperienced Edited January 17, 2023 by Metin2 Dev Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
Luffy 9 Posted January 16, 2023 Share Posted January 16, 2023 Can you help me mine does not enter the game, it only goes to character selection and does not pass “To be humble with superiors is duty, with equals is courtesy, with inferiors is nobility.” Benjamin Franklin Por favor, desative seu AdBlock quando usar meus links de download. Please, disable your AdBlock when use my download links. Me AdBlock On: Adblock Off: Link to comment Share on other sites More sharing options...
Skitaru 6 Posted January 17, 2023 Share Posted January 17, 2023 @Luffy I made you an uncut video. Maybe it will help you. @SolWayne Thanks for your great work 2 2 2 Link to comment Share on other sites More sharing options...
MightyKraken 1 Posted January 17, 2023 Share Posted January 17, 2023 I've followed @Skitaru's video but i have the same problem as @Luffy. I log in but client closes itself when it's supposed to show the character select screen. syserr in client: 0118 00:05:10172 :: introSelect.py(line:288) __LoadBoardDialog ui.py(line:2704) GetChild SelectCharacterWindow.LoadBoardDialog.BindObject - <type 'exceptions.KeyError'>:'create_button' 0118 00:05:10172 :: ============================================================================================================ 0118 00:05:10172 :: Abort!!!! Link to comment Share on other sites More sharing options...
Luffy 9 Posted January 17, 2023 Share Posted January 17, 2023 3 hours ago, Skitaru said: @Luffy I made you an uncut video. Maybe it will help you. @SolWayne Thanks for your great work Thanks but @SolWayne already helped me to solve my problem was why I didn't extract the tar.gz files as soon as I did it solved the problem I had Thanks for the video tutorial it will help a lot 1 hour ago, MightyKraken said: I've followed @Skitaru's video but i have the same problem as @Luffy. I log in but client closes itself when it's supposed to show the character select screen. syserr in client: 0118 00:05:10172 :: introSelect.py(line:288) __LoadBoardDialog ui.py(line:2704) GetChild SelectCharacterWindow.LoadBoardDialog.BindObject - <type 'exceptions.KeyError'>:'create_button' 0118 00:05:10172 :: ============================================================================================================ 0118 00:05:10172 :: Abort!!!! I solved my problem as soon as I extracted the tar.gz files before doing so my game would only select the character 1 “To be humble with superiors is duty, with equals is courtesy, with inferiors is nobility.” Benjamin Franklin Por favor, desative seu AdBlock quando usar meus links de download. Please, disable your AdBlock when use my download links. Me AdBlock On: Adblock Off: Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 17, 2023 Author Share Posted January 17, 2023 4 hours ago, Skitaru said: @Luffy I made you an uncut video. Maybe it will help you. @SolWayne Thanks for your great work thank you for doing this. This will help many and the bugs are currently being fixed. If you find any unknown ones, please let me know and I'll fix them 1 Link to comment Share on other sites More sharing options...
Luffy 9 Posted January 18, 2023 Share Posted January 18, 2023 then go putty; cd /usr/metin2 rm -r server Give permission 777 in filezilla tar -xf volume3_server.tar.gz service mysql-server stop cd /var/db rm -r mysql Give permission 777 in filezilla tar -xf volume3_mysql.tar.gz service mysql-server start reboot start 1 Tutorial by @SolWayne “To be humble with superiors is duty, with equals is courtesy, with inferiors is nobility.” Benjamin Franklin Por favor, desative seu AdBlock quando usar meus links de download. Please, disable your AdBlock when use my download links. Me AdBlock On: Adblock Off: Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 18, 2023 Author Share Posted January 18, 2023 (edited) On 1/12/2023 at 8:17 PM, SolWayne said: This is an german files creat from TMP4 edit by SolWayne ! ALL EDITS ONLY IN GERMAN Reveal hidden contents start cd /usr/metin2/server && sh start.sh close cd /usr/metin2/server && sh close.sh clean cd /usr/metin2/server && sh clean.sh backup cd /usr/metin2/server && sh backup.sh questcompile cd /usr/metin2/server/share/locale/english/quest && python2.7 make.py dbclean cd /usr/metin2/src/db/src && gmake clean dbdep cd /usr/metin2/src/db/src && gmake dep dbcompile cd /usr/metin2/src/db/src && gmake -j9 gameclean cd /usr/metin2/src/game/src && gmake clean gamedep cd /usr/metin2/src/game/src && gmake dep gamecompile cd /usr/metin2/src/game/src && gmake -j9 Reveal hidden contents Server: #ifndef __INC_SERVICE_H__ #define __INC_SERVICE_H__ #define ENABLE_DS_GRADE_MYTH #define ENABLE_AUTODETECT_INTERNAL_IP #define ENABLE_PROXY_IP #define ENABLE_PORT_SECURITY #define _IMPROVED_PACKET_ENCRYPTION_ // 패킷 암호화 개선 //#define __AUCTION__ #define __PET_SYSTEM__ #define __UDP_BLOCK__ #define ENABLE_IGNORE_LOWER_BUFFS #define ENABLE_GIVE_BASIC_ITEM_SOURCE #define __NEW_ARROW_SYSTEM__ #define __BL_PARTY_POSITION__ #define NEW_PET_SYSTEM #define __SEND_TARGET_INFO__ #define __SKILLS_LEVEL_OVER_P__ #define ENABLE_GLOBAL_CHAT #define __WEAPON_COSTUME_SYSTEM__ #define __COSTUME_ATTR_SYSTEM__ #define __SASH_SYSTEM__ #endif Client: #define LOCALE_SERVICE_SINGAPORE // ½Ì°¡Æú #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM #define ENABLE_DISCORD_RPC #define ENABLE_NEW_ARROW_SYSTEM #define __BL_PARTY_POSITION__ #define NEW_PET_SYSTEM #define ENABLE_DS_GRADE_MYTH #define ENABLE_SEND_TARGET_INFO #define ENABLE_SKILLS_LEVEL_OVER_P #ifdef ENABLE_COSTUME_SYSTEM #define ENABLE_COSTUME_WEAPON_SYSTEM #endif #define ENABLE_COSTUME_ATTR_SYSTEM #define ENABLE_SASH_SYSTEM Systems in german: v0.0.1 -4 Inventar Seiten -Discord Anzeige v0.0.2 -Gruppenbuff -Schnelles Item aufheben -Direktes Item aufheben aller Items -Mob Level anzeige -Move Speed auf 200 v0.0.3 -Man kann keine Schlechteren Buffs Bekommen -Starter EQ über SRC/ Einstellbar (cmd_generall.cpp #ifdef ENABLE_GIVE_BASIC_ITEM_SOURCE) -Aura und VZK nur noch mit Waffe -Metinstein Level anzeige v0.0.4 -Ninja Köcher -6ter Ninja Krieger Skill -Item Zerstörung via Weg werfen -Multi Status Punkte -Metinsteine auf der Minimap -Gruppen mitglieder auf der Minimap -Größere Shop fenster v0.0.5 -Level Pet System -Mytische Alchi -TargetInfo System -Alchi Aktiv (Fenster sicht) v0.0.6 -Waffenkostüm -Drop Information -Kostüm Switcher -Skills Über P -Schulterband -Max Yang (long long) Reveal hidden contents MySQL PW: 123456789 VDI PW: 123456789 InGame: ID= admin PW= 123 DL: This is the hidden content, please Sign In or Sign Up HAVE FUN I add here again a tut purely what man has to do everything. ( Server Side VDI, and Client Source ) Game Server, Server Source, MySQL Spoiler step 1: Move volume3_mysql to /var/db. Move volume_3_server/src to /usr/metin2 step 2: Now come the commands for unpacking etc MySQL: service mysql-server stop cd /var/db && rm -r mysql chmod 777 volume3_mysql.tar.gz tar -xf volume3_mysql.tar.gz service mysql-server start Game / Server SRC cd /usr/metin2 && rm -r src server chmod 777 *.tar.gz tar -xf volume3_server.tar.gz tar -xf volume3_src.tar.gz And know is ready you don't need a reboot!! cd /usr/metin2/server && sh start.sh Client Source Spoiler step 1: Unpack the SRC.rar in the Client S22 folder. overwrite all files step 2: Open the source in VS22. Go to the source folder and then go to Userinterface. https://metin2.download/picture/1pv1wVIKA3lAk9fxdfOKKT02G1pJ8tF8/.png step 3: Find the following files PythonSash (.cpp + .h) PythonSkillPet (.cpp + .h) step 4: import the files into the source https://metin2.download/picture/WL045rKHe5PaHDRQcyinm3OXwN4uuZPI/.gif Edited January 18, 2023 by Metin2 Dev Core X - External 2 Internal 1 1 1 Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 19, 2023 Author Share Posted January 19, 2023 I found a bug that is easy to fix: Go Client SRC InstanceBase.cpp Find 2X Spoiler #ifdef ENABLE_NEW_ARROW_SYSTEM case CItemData::WEAPON_UNLIMITED_ARROW: #endif And Replace it whits Spoiler case CItemData::WEAPON_ARROW: #ifdef ENABLE_NEW_ARROW_SYSTEM case CItemData::WEAPON_UNLIMITED_ARROW: #endif Link to comment Share on other sites More sharing options...
Tuckii 10 Posted January 21, 2023 Share Posted January 21, 2023 Hey, will test it today. After somehow corrupting my files of 2 months work I had depression and still have.. hopefully I can enjoy evenings with metin once again.. was too hard for me to start over again.. How are you seeing yourself on these files in the future? I mean are you planning to add those fixes that u mentioned regardless? Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 22, 2023 Author Share Posted January 22, 2023 It is not yet clear whether the bug fixes will be uploaded individually or as a new version with new systems Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 22, 2023 Author Share Posted January 22, 2023 (edited) Here is a small fix from the sash system. Thanks to WhiteBambo for this fix! It is about the bonus takeover that you can see the new bonuses. Spoiler Open Client/root/uitooltip.py # Danke an WhiteBambo für den fix <3 #Suche Nach : class HyperlinkItemToolTip(ItemToolTip): #Davor das hinzufügen : if app.ENABLE_SASH_SYSTEM: def SetSashResultItem(self, slotIndex, window_type = player.INVENTORY): (itemVnum, MinAbs, MaxAbs) = sash.GetResultItem() if not itemVnum: return self.ClearToolTip() metinSlot = [player.GetItemMetinSocket(window_type, slotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] attrSlot = [player.GetItemAttribute(window_type, slotIndex, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] item.SelectItem(itemVnum) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_SASH: return absChance = MaxAbs itemDesc = item.GetItemDescription() self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnum, metinSlot, attrSlot) self.AppendDescription(itemDesc, 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) self.__AppendLimitInformation() ## ABSORPTION RATE if MinAbs == MaxAbs: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (MinAbs), self.CONDITION_COLOR) else: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE2 % (MinAbs, MaxAbs), self.CONDITION_COLOR) ## END ABSOPRTION RATE itemAbsorbedVnum = int(metinSlot[sash.ABSORBED_SOCKET]) if itemAbsorbedVnum: ## ATTACK / DEFENCE item.SelectItem(itemAbsorbedVnum) if item.GetItemType() == item.ITEM_TYPE_WEAPON: if item.GetItemSubType() == item.WEAPON_FAN: self.__AppendMagicAttackInfo(absChance) item.SelectItem(itemAbsorbedVnum) self.__AppendAttackPowerInfo(absChance) else: self.__AppendAttackPowerInfo(absChance) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicAttackInfo(absChance) elif item.GetItemType() == item.ITEM_TYPE_ARMOR: defGrade = item.GetValue(1) defBonus = item.GetValue(5) * 2 defGrade = self.CalcSashValue(defGrade, absChance) defBonus = self.CalcSashValue(defBonus, absChance) if defGrade > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade)) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicDefenceInfo(absChance) ## END ATTACK / DEFENCE ## EFFECT item.SelectItem(itemAbsorbedVnum) for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) affectValue = self.CalcSashValue(affectValue, absChance) affectString = self.__GetAffectString(affectType, affectValue) if affectString and affectValue > 0: self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) item.SelectItem(itemAbsorbedVnum) # END EFFECT item.SelectItem(itemVnum) ## ATTR self.__AppendAttributeInformation(attrSlot, MaxAbs) # END ATTR self.AppendWearableInformation() self.ShowToolTip() def SetSashResultAbsItem(self, slotIndex1, slotIndex2, window_type = player.INVENTORY): itemVnumSash = player.GetItemIndex(window_type, slotIndex1) itemVnumTarget = player.GetItemIndex(window_type, slotIndex2) if not itemVnumSash or not itemVnumTarget: return self.ClearToolTip() item.SelectItem(itemVnumSash) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_SASH: return metinSlot = [player.GetItemMetinSocket(window_type, slotIndex1, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] attrSlot = [player.GetItemAttribute(window_type, slotIndex2, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] itemDesc = item.GetItemDescription() self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnumSash, metinSlot, attrSlot) self.AppendDescription(itemDesc, 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) item.SelectItem(itemVnumSash) self.__AppendLimitInformation() ## ABSORPTION RATE self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (metinSlot[sash.ABSORPTION_SOCKET]), self.CONDITION_COLOR) ## END ABSOPRTION RATE ## ATTACK / DEFENCE itemAbsorbedVnum = itemVnumTarget item.SelectItem(itemAbsorbedVnum) if item.GetItemType() == item.ITEM_TYPE_WEAPON: if item.GetItemSubType() == item.WEAPON_FAN: self.__AppendMagicAttackInfo(metinSlot[sash.ABSORPTION_SOCKET]) item.SelectItem(itemAbsorbedVnum) self.__AppendAttackPowerInfo(metinSlot[sash.ABSORPTION_SOCKET]) else: self.__AppendAttackPowerInfo(metinSlot[sash.ABSORPTION_SOCKET]) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicAttackInfo(metinSlot[sash.ABSORPTION_SOCKET]) elif item.GetItemType() == item.ITEM_TYPE_ARMOR: defGrade = item.GetValue(1) defBonus = item.GetValue(5) * 2 defGrade = self.CalcSashValue(defGrade, metinSlot[sash.ABSORPTION_SOCKET]) defBonus = self.CalcSashValue(defBonus, metinSlot[sash.ABSORPTION_SOCKET]) if defGrade > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade)) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicDefenceInfo(metinSlot[sash.ABSORPTION_SOCKET]) ## END ATTACK / DEFENCE ## EFFECT item.SelectItem(itemAbsorbedVnum) for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) affectValue = self.CalcSashValue(affectValue, metinSlot[sash.ABSORPTION_SOCKET]) affectString = self.__GetAffectString(affectType, affectValue) if affectString and affectValue > 0: self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) item.SelectItem(itemAbsorbedVnum) ## END EFFECT ## ATTR item.SelectItem(itemAbsorbedVnum) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): type = attrSlot[i][0] value = attrSlot[i][1] if not value: continue value = self.CalcSashValue(value, metinSlot[sash.ABSORPTION_SOCKET]) affectString = self.__GetAffectString(type, value) if affectString and value > 0: affectColor = self.__GetAttributeColor(i, value) self.AppendTextLine(affectString, affectColor) item.SelectItem(itemAbsorbedVnum) ## END ATTR ## WEARABLE item.SelectItem(itemVnumSash) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_WEARABLE_JOB, self.NORMAL_COLOR) item.SelectItem(itemVnumSash) flagList = ( not item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR), not item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN) ) characterNames = "" for i in xrange(self.CHARACTER_COUNT): name = self.CHARACTER_NAMES[i] flag = flagList[i] if flag: characterNames += " " characterNames += name textLine = self.AppendTextLine(characterNames, self.NORMAL_COLOR, True) textLine.SetFeather() item.SelectItem(itemVnumSash) if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE): textLine = self.AppendTextLine(localeInfo.FOR_FEMALE, self.NORMAL_COLOR, True) textLine.SetFeather() if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE): textLine = self.AppendTextLine(localeInfo.FOR_MALE, self.NORMAL_COLOR, True) textLine.SetFeather() ## END WEARABLE self.ShowToolTip() Edited January 22, 2023 by SolWayne Link to comment Share on other sites More sharing options...
Tuckii 10 Posted January 22, 2023 Share Posted January 22, 2023 1 hour ago, SolWayne said: Here is a small fix from the sash system. Thanks to WhiteBambo for this fix! It is about the bonus takeover that you can see the new bonuses. Reveal hidden contents Open Client/root/uitooltip.py # Danke an WhiteBambo für den fix <3 #Suche Nach : class HyperlinkItemToolTip(ItemToolTip): #Davor das hinzufügen : if app.ENABLE_SASH_SYSTEM: def SetSashResultItem(self, slotIndex, window_type = player.INVENTORY): (itemVnum, MinAbs, MaxAbs) = sash.GetResultItem() if not itemVnum: return self.ClearToolTip() metinSlot = [player.GetItemMetinSocket(window_type, slotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] attrSlot = [player.GetItemAttribute(window_type, slotIndex, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] item.SelectItem(itemVnum) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_SASH: return absChance = MaxAbs itemDesc = item.GetItemDescription() self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnum, metinSlot, attrSlot) self.AppendDescription(itemDesc, 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) self.__AppendLimitInformation() ## ABSORPTION RATE if MinAbs == MaxAbs: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (MinAbs), self.CONDITION_COLOR) else: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE2 % (MinAbs, MaxAbs), self.CONDITION_COLOR) ## END ABSOPRTION RATE itemAbsorbedVnum = int(metinSlot[sash.ABSORBED_SOCKET]) if itemAbsorbedVnum: ## ATTACK / DEFENCE item.SelectItem(itemAbsorbedVnum) if item.GetItemType() == item.ITEM_TYPE_WEAPON: if item.GetItemSubType() == item.WEAPON_FAN: self.__AppendMagicAttackInfo(absChance) item.SelectItem(itemAbsorbedVnum) self.__AppendAttackPowerInfo(absChance) else: self.__AppendAttackPowerInfo(absChance) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicAttackInfo(absChance) elif item.GetItemType() == item.ITEM_TYPE_ARMOR: defGrade = item.GetValue(1) defBonus = item.GetValue(5) * 2 defGrade = self.CalcSashValue(defGrade, absChance) defBonus = self.CalcSashValue(defBonus, absChance) if defGrade > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade)) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicDefenceInfo(absChance) ## END ATTACK / DEFENCE ## EFFECT item.SelectItem(itemAbsorbedVnum) for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) affectValue = self.CalcSashValue(affectValue, absChance) affectString = self.__GetAffectString(affectType, affectValue) if affectString and affectValue > 0: self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) item.SelectItem(itemAbsorbedVnum) # END EFFECT item.SelectItem(itemVnum) ## ATTR self.__AppendAttributeInformation(attrSlot, MaxAbs) # END ATTR self.AppendWearableInformation() self.ShowToolTip() def SetSashResultAbsItem(self, slotIndex1, slotIndex2, window_type = player.INVENTORY): itemVnumSash = player.GetItemIndex(window_type, slotIndex1) itemVnumTarget = player.GetItemIndex(window_type, slotIndex2) if not itemVnumSash or not itemVnumTarget: return self.ClearToolTip() item.SelectItem(itemVnumSash) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_SASH: return metinSlot = [player.GetItemMetinSocket(window_type, slotIndex1, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] attrSlot = [player.GetItemAttribute(window_type, slotIndex2, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] itemDesc = item.GetItemDescription() self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnumSash, metinSlot, attrSlot) self.AppendDescription(itemDesc, 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) item.SelectItem(itemVnumSash) self.__AppendLimitInformation() ## ABSORPTION RATE self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (metinSlot[sash.ABSORPTION_SOCKET]), self.CONDITION_COLOR) ## END ABSOPRTION RATE ## ATTACK / DEFENCE itemAbsorbedVnum = itemVnumTarget item.SelectItem(itemAbsorbedVnum) if item.GetItemType() == item.ITEM_TYPE_WEAPON: if item.GetItemSubType() == item.WEAPON_FAN: self.__AppendMagicAttackInfo(metinSlot[sash.ABSORPTION_SOCKET]) item.SelectItem(itemAbsorbedVnum) self.__AppendAttackPowerInfo(metinSlot[sash.ABSORPTION_SOCKET]) else: self.__AppendAttackPowerInfo(metinSlot[sash.ABSORPTION_SOCKET]) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicAttackInfo(metinSlot[sash.ABSORPTION_SOCKET]) elif item.GetItemType() == item.ITEM_TYPE_ARMOR: defGrade = item.GetValue(1) defBonus = item.GetValue(5) * 2 defGrade = self.CalcSashValue(defGrade, metinSlot[sash.ABSORPTION_SOCKET]) defBonus = self.CalcSashValue(defBonus, metinSlot[sash.ABSORPTION_SOCKET]) if defGrade > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade)) item.SelectItem(itemAbsorbedVnum) self.__AppendMagicDefenceInfo(metinSlot[sash.ABSORPTION_SOCKET]) ## END ATTACK / DEFENCE ## EFFECT item.SelectItem(itemAbsorbedVnum) for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) affectValue = self.CalcSashValue(affectValue, metinSlot[sash.ABSORPTION_SOCKET]) affectString = self.__GetAffectString(affectType, affectValue) if affectString and affectValue > 0: self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) item.SelectItem(itemAbsorbedVnum) ## END EFFECT ## ATTR item.SelectItem(itemAbsorbedVnum) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): type = attrSlot[i][0] value = attrSlot[i][1] if not value: continue value = self.CalcSashValue(value, metinSlot[sash.ABSORPTION_SOCKET]) affectString = self.__GetAffectString(type, value) if affectString and value > 0: affectColor = self.__GetAttributeColor(i, value) self.AppendTextLine(affectString, affectColor) item.SelectItem(itemAbsorbedVnum) ## END ATTR ## WEARABLE item.SelectItem(itemVnumSash) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_WEARABLE_JOB, self.NORMAL_COLOR) item.SelectItem(itemVnumSash) flagList = ( not item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR), not item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN) ) characterNames = "" for i in xrange(self.CHARACTER_COUNT): name = self.CHARACTER_NAMES[i] flag = flagList[i] if flag: characterNames += " " characterNames += name textLine = self.AppendTextLine(characterNames, self.NORMAL_COLOR, True) textLine.SetFeather() item.SelectItem(itemVnumSash) if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE): textLine = self.AppendTextLine(localeInfo.FOR_FEMALE, self.NORMAL_COLOR, True) textLine.SetFeather() if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE): textLine = self.AppendTextLine(localeInfo.FOR_MALE, self.NORMAL_COLOR, True) textLine.SetFeather() ## END WEARABLE self.ShowToolTip() So the sashes are fixed now? What else have to be fixed? The mythic alchemy? What is the issue there? Link to comment Share on other sites More sharing options...
SolWayne 847 Posted January 22, 2023 Author Share Posted January 22, 2023 15 minutes ago, Tuckii said: So the sashes are fixed now? What else have to be fixed? The mythic alchemy? What is the issue there? Mytish Dragon Soul : There is no improvement at all Weapon Custom system : Can be donned without a weapon No other bugs are currently known Link to comment Share on other sites More sharing options...
Tuckii 10 Posted January 22, 2023 Share Posted January 22, 2023 (edited) I've launched the files and I have final question which is are there any common fixes like for example you cannot be stunned when you have anti-stun bonus in your shield etc? Thanks for the files it will save me a lot of time probably and sanity also why is the machine using german keyboard XD Edited January 22, 2023 by Tuckii Link to comment Share on other sites More sharing options...
Recommended Posts