Jump to content

SolWayneSF v6 2023 (Basis TMP4)


SolWayne

Recommended Posts

  • Bronze
This is the hidden content, please

Alternative download links → 

This is the hidden content, please
 (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

  • Metin2 Dev 192
  • kekw 1
  • Eyes 7
  • Think 2
  • Confused 2
  • Good 82
  • Love 16
  • Love 130
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

  • Bronze
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?

Link to comment
Share on other sites

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

.png
.png

“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:   


699691-icon-20-sad-face-eyebrows-48.png

 

Adblock Off:  



Streamline-65-48.png

 

 

Angry One Piece GIF by Toei Animation

Link to comment
Share on other sites

  • Bronze
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 by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

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)

 

“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:   


699691-icon-20-sad-face-eyebrows-48.png

 

Adblock Off:  



Streamline-65-48.png

 

 

Angry One Piece GIF by Toei Animation

Link to comment
Share on other sites

  • Bronze

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 by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

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:   


699691-icon-20-sad-face-eyebrows-48.png

 

Adblock Off:  



Streamline-65-48.png

 

 

Angry One Piece GIF by Toei Animation

Link to comment
Share on other sites

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

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

“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:   


699691-icon-20-sad-face-eyebrows-48.png

 

Adblock Off:  



Streamline-65-48.png

 

 

Angry One Piece GIF by Toei Animation

Link to comment
Share on other sites

  • Bronze
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

Link to comment
Share on other sites

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:   


699691-icon-20-sad-face-eyebrows-48.png

 

Adblock Off:  



Streamline-65-48.png

 

 

Angry One Piece GIF by Toei Animation

Link to comment
Share on other sites

  • Bronze
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


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 by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 1
  • Good 1
  • Love 1
Link to comment
Share on other sites

  • Bronze

 

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

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

  • Bronze

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 by SolWayne
Link to comment
Share on other sites

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

  • Bronze
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

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 by Tuckii
Link to comment
Share on other sites

Announcements



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