Jump to content
×
×
  • Create New...
  • 0

Problème avec le tuto sur les Entité


Kronus

Question

Bonjour,

 

Voilà donc voici mon erreur client: http://prntscr.com/f40coe

 

J'ai voulu mettre en place le système des entités afin de voir ce qu'un mobs / boss / metin ont en drop sur eux. La partie CPP fonctionne parfaitement aucun warning ni error . Cependant la partie python chie dans la colle. Et l'erreur en l'occurence est du costinfo.py que vous pourrez voir ci dessous:

import app
# option
if app.ENABLE_SEND_TARGET_INFO:
MONSTER_INFO_DATA = {}

IN_GAME_SHOP_ENABLE = 1
CONSOLE_ENABLE = 0

PVPMODE_ENABLE = 1
PVPMODE_TEST_ENABLE = 0
PVPMODE_ACCELKEY_ENABLE = 1
PVPMODE_ACCELKEY_DELAY = 0.5
PVPMODE_PROTECTED_LEVEL = 15
ACCOUNT_NAME = "NoName"
ACCE_WINDOW = 0
ENERGY = 0
ENERGY_END_TIME = 0
ENERGY_TYPE = 0
ENABLE_ENERGY_SYSTEM = 1
WOLF_MAN = "DISABLED"	# ENABLED/DISABLED
WOLF_WOMEN = "DISABLED"	# ENABLED/DISABLED

FOG_LEVEL0 = 4800.0
FOG_LEVEL1 = 9600.0
FOG_LEVEL2 = 12800.0
FOG_LEVEL = FOG_LEVEL0
FOG_LEVEL_LIST=[FOG_LEVEL0, FOG_LEVEL1, FOG_LEVEL2]		

CAMERA_MAX_DISTANCE_SHORT = 2500.0
CAMERA_MAX_DISTANCE_LONG = 3500.0
CAMERA_MAX_DISTANCE_LIST=[CAMERA_MAX_DISTANCE_SHORT, CAMERA_MAX_DISTANCE_LONG]
CAMERA_MAX_DISTANCE = CAMERA_MAX_DISTANCE_SHORT

CHRNAME_COLOR_INDEX = 0

ENVIRONMENT_NIGHT="d:/ymir work/environment/moonlight04.msenv"

# constant
HIGH_PRICE = 500000
PET_EVOLUTION = 0
PET_LEVEL = 0
PET_MAIN = 0
FEEDWIND = 0
SKILL_PET3 = 0
SKILL_PET2 = 0
SKILL_PET1 = 0
LASTAFFECT_POINT = 0
LASTAFFECT_VALUE = 0
EVOLUTION = 0
MIDDLE_PRICE = 50000
ERROR_METIN_STONE = 28960
SUB2_LOADING_ENABLE = 1
EXPANDED_COMBO_ENABLE = 1
CONVERT_EMPIRE_LANGUAGE_ENABLE = 1
USE_ITEM_WEAPON_TABLE_ATTACK_BONUS = 0
ADD_DEF_BONUS_ENABLE = 1
LOGIN_COUNT_LIMIT_ENABLE = 0

USE_SKILL_EFFECT_UPGRADE_ENABLE = 1

VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD = 1
GUILD_MONEY_PER_GSP = 100
GUILD_WAR_TYPE_SELECT_ENABLE = 1
TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE = 0

HAIR_COLOR_ENABLE = 1
ARMOR_SPECULAR_ENABLE = 1
WEAPON_SPECULAR_ENABLE = 1
SEQUENCE_PACKET_ENABLE = 1
KEEP_ACCOUNT_CONNETION_ENABLE = 1
MINIMAP_POSITIONINFO_ENABLE = 0
CONVERT_EMPIRE_LANGUAGE_ENABLE = 0
USE_ITEM_WEAPON_TABLE_ATTACK_BONUS = 0
ADD_DEF_BONUS_ENABLE = 0
LOGIN_COUNT_LIMIT_ENABLE = 0
PVPMODE_PROTECTED_LEVEL = 15
TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE = 10

isItemQuestionDialog = 0

def GET_ITEM_QUESTION_DIALOG_STATUS():
global isItemQuestionDialog
return isItemQuestionDialog

def SET_ITEM_QUESTION_DIALOG_STATUS(flag):
global isItemQuestionDialog
isItemQuestionDialog = flag

import app
import net

########################

def SET_DEFAULT_FOG_LEVEL():
global FOG_LEVEL
app.SetMinFog(FOG_LEVEL)

def SET_FOG_LEVEL_INDEX(index):
global FOG_LEVEL
global FOG_LEVEL_LIST
try:
	FOG_LEVEL=FOG_LEVEL_LIST[index]
except IndexError:
	FOG_LEVEL=FOG_LEVEL_LIST[0]
app.SetMinFog(FOG_LEVEL)

def GET_FOG_LEVEL_INDEX():
global FOG_LEVEL
global FOG_LEVEL_LIST
return FOG_LEVEL_LIST.index(FOG_LEVEL)

########################

def SET_DEFAULT_CAMERA_MAX_DISTANCE():
global CAMERA_MAX_DISTANCE
app.SetCameraMaxDistance(CAMERA_MAX_DISTANCE)

def SET_CAMERA_MAX_DISTANCE_INDEX(index):
global CAMERA_MAX_DISTANCE
global CAMERA_MAX_DISTANCE_LIST
try:
	CAMERA_MAX_DISTANCE=CAMERA_MAX_DISTANCE_LIST[index]
except:
	CAMERA_MAX_DISTANCE=CAMERA_MAX_DISTANCE_LIST[0]

app.SetCameraMaxDistance(CAMERA_MAX_DISTANCE)

def GET_CAMERA_MAX_DISTANCE_INDEX():
global CAMERA_MAX_DISTANCE
global CAMERA_MAX_DISTANCE_LIST
return CAMERA_MAX_DISTANCE_LIST.index(CAMERA_MAX_DISTANCE)

########################

import chrmgr
import player
import app

def SET_DEFAULT_CHRNAME_COLOR():
global CHRNAME_COLOR_INDEX
chrmgr.SetEmpireNameMode(CHRNAME_COLOR_INDEX)

def SET_CHRNAME_COLOR_INDEX(index):
global CHRNAME_COLOR_INDEX
CHRNAME_COLOR_INDEX=index
chrmgr.SetEmpireNameMode(index)

def GET_CHRNAME_COLOR_INDEX():
global CHRNAME_COLOR_INDEX
return CHRNAME_COLOR_INDEX

def SET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD(index):
global VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD
VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD = index

def GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD():
global VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD
return VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD

def SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE():
global CONVERT_EMPIRE_LANGUAGE_ENABLE
net.SetEmpireLanguageMode(CONVERT_EMPIRE_LANGUAGE_ENABLE)

def SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS():
global USE_ITEM_WEAPON_TABLE_ATTACK_BONUS
player.SetWeaponAttackBonusFlag(USE_ITEM_WEAPON_TABLE_ATTACK_BONUS)

def SET_DEFAULT_USE_SKILL_EFFECT_ENABLE():
global USE_SKILL_EFFECT_UPGRADE_ENABLE
app.SetSkillEffectUpgradeEnable(USE_SKILL_EFFECT_UPGRADE_ENABLE)

def SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE():
global TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE
app.SetTwoHandedWeaponAttSpeedDecreaseValue(TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE)

########################
import item

ACCESSORY_MATERIAL_LIST = [50623, 50624, 50625, 50626, 50627, 50628, 50629, 50630, 50631, 50632, 50633, 50634, 50635, 50636, 50637, 50638]
#ACCESSORY_MATERIAL_LIST = [50623, 50623, 50624, 50624, 50625, 50625, 50626, 50627, 50628, 50629, 50630, 50631, 50632, 50633, 
#			    50623, 50623, 50624, 50624, ]
JewelAccessoryInfos = [
	# jewel		wrist	neck	ear
	[ 50634,	14420,	16220,	17220 ],	
	[ 50635,	14500,	16500,	17500 ],	
	[ 50636,	14520,	16520,	17520 ],	
	[ 50637,	14540,	16540,	17540 ],	
	[ 50638,	14560,	16560,	17560 ],	
]
def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType):
ret = vnum
item_base = (vnum / 10) * 10
for info in JewelAccessoryInfos:
	if item.ARMOR_WRIST == subType:	
		if info[1] == item_base:
			return info[0]
	elif item.ARMOR_NECK == subType:	
		if info[2] == item_base:
			return info[0]
	elif item.ARMOR_EAR == subType:	
		if info[3] == item_base:
			return info[0]

if vnum >= 16210 and vnum <= 16219:
	return 50625

if item.ARMOR_WRIST == subType:	
	WRIST_ITEM_VNUM_BASE = 14000
	ret -= WRIST_ITEM_VNUM_BASE
elif item.ARMOR_NECK == subType:
	NECK_ITEM_VNUM_BASE = 16000
	ret -= NECK_ITEM_VNUM_BASE
elif item.ARMOR_EAR == subType:
	EAR_ITEM_VNUM_BASE = 17000
	ret -= EAR_ITEM_VNUM_BASE

type = ret/20

if type<0 or type>=len(ACCESSORY_MATERIAL_LIST):
	type = (ret-170) / 20
	if type<0 or type>=len(ACCESSORY_MATERIAL_LIST):
		return 0

return ACCESSORY_MATERIAL_LIST[type]

##################################################################
## 새로 추가된 '벨트' 아이템 타입과, 벨트의 소켓에 꽂을 아이템 관련.. 
## 벨트의 소켓시스템은 악세서리와 동일하기 때문에, 위 악세서리 관련 하드코딩처럼 이런식으로 할 수밖에 없다..

def GET_BELT_MATERIAL_VNUM(vnum, subType = 0):
# 현재는 모든 벨트에는 하나의 아이템(#18900)만 삽입 가능
return 18900

##################################################################
## 자동물약 (HP: #72723 ~ #72726, SP: #72727 ~ #72730)

# 해당 vnum이 자동물약인가?
def IS_AUTO_POTION(itemVnum):
return IS_AUTO_POTION_HP(itemVnum) or IS_AUTO_POTION_SP(itemVnum)

# 해당 vnum이 HP 자동물약인가?
def IS_AUTO_POTION_HP(itemVnum):
if 72723 <= itemVnum and 72726 >= itemVnum:
	return 1
elif itemVnum >= 76021 and itemVnum <= 76022:		## 새로 들어간 선물용 화룡의 축복
	return 1
elif itemVnum == 79012:
	return 1

return 0

# 해당 vnum이 SP 자동물약인가?
def IS_AUTO_POTION_SP(itemVnum):
if 72727 <= itemVnum and 72730 >= itemVnum:
	return 1
elif itemVnum >= 76004 and itemVnum <= 76005:		## 새로 들어간 선물용 수룡의 축복
	return 1
elif itemVnum == 79013:
	return 1
elif itemVnum == 55701 or itemVnum == 55702 or itemVnum == 55703 or itemVnum == 55704 or itemVnum == 55705 or itemVnum == 55706:
	return 1

return 0


def IS_ACCE_ITEM(itemVnum, abs):
if itemVnum >= 85001 and itemVnum <= 85003:
	return TRUE
elif itemVnum >= 85005 and itemVnum <= 85007:
	return TRUE
elif itemVnum >= 85011 and itemVnum <= 85013:
	return TRUE
elif itemVnum >= 85015 and itemVnum <= 85017:
	return TRUE

if abs == 1 and itemVnum == 85004 or abs == 1 and itemVnum == 85008 or abs == 1 and itemVnum == 850014 or abs == 1 and itemVnum == 85018:
	return TRUE

return FALSE

def IS_ACCE_ITEM_DETACH(itemVnum):
if itemVnum >= 85009 and itemVnum <= 85009:
	return TRUE

return FALSE



 

Je vous remercie d'avance.

  • Oooh 1
Link to comment

10 answers to this question

Recommended Posts

  • 0

Merci Gin, mais je viens de vérifier mon locale_inc

 

#define LOCALE_SERVICE_SINGAPORE

#define ENABLE_7AND8TH_SKILLS

#define ENABLE_ANTI_RESIST_MAGIC_BONUS_SYSTEM

#define ENABLE_COSTUME_SYSTEM

#define ENABLE_SOULBIND_SYSTEM

#define ENABLE_HIGHLIGHT_SYSTEM

#define ENABLE_ENERGY_SYSTEM

#define ENABLE_DRAGON_SOUL_SYSTEM

#define ENABLE_NEW_EQUIPMENT_SYSTEM

#define NEW_PET_SYSTEM

#define ENABLE_SEND_TARGET_INFO

#ifdef ENABLE_COSTUME_SYSTEM

#define ENABLE_COSTUME_WEAPON_SYSTEM

#endif

 

que voici et il y est bien, par contre dans le tuto il demande pas de modifier un autre fichier client

Link to comment
  • 0

Il manquait bien quelque chose merci à toi, par contre, j'ai un soucis avec le uiTarget maintenat OMG

 

Voici l'erreur sysser:

0504 19:26:10157 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:11) 
system.py(line:130) __pack_import

networkModule.SetSelectCharacterPhase - :expected an indented block (uiTarget.py, line 524)

0504 19:26:10158 :: ============================================================================================================
0504 19:26:10158 :: Abort!!!!


 

Et maintenant voici mon uitarget:

import app
import ui
import player
import net
import wndMgr
import messenger
import guild
import chr
import nonplayer
import localeInfo
import constInfo
import item
import uiToolTip

if app.ENABLE_SEND_TARGET_INFO:
def HAS_FLAG(value, flag):
	return (value & flag) == flag

class TargetBoard(ui.ThinBoard):
if app.ENABLE_SEND_TARGET_INFO:
	class InfoBoard(ui.ThinBoard):
		class ItemListBoxItem(ui.ListBoxExNew.Item):
			def __init__(self, width):
				ui.ListBoxExNew.Item.__init__(self)

				image = ui.ExpandedImageBox()
				image.SetParent(self)
				image.Show()
				self.image = image

				nameLine = ui.TextLine()
				nameLine.SetParent(self)
				nameLine.SetPosition(32 + 5, 0)
				nameLine.Show()
				self.nameLine = nameLine

				self.SetSize(width, 32 + 5)

			def LoadImage(self, image, name = None):
				self.image.LoadImage(image)
				self.SetSize(self.GetWidth(), self.image.GetHeight() + 5 * (self.image.GetHeight() / 32))
				if name != None:
					self.SetText(name)

			def SetText(self, text):
				self.nameLine.SetText(text)

			def RefreshHeight(self):
				ui.ListBoxExNew.Item.RefreshHeight(self)
				self.image.SetRenderingRect(0.0, 0.0 - float(self.removeTop) / float(self.GetHeight()), 0.0, 0.0 - float(self.removeBottom) / float(self.GetHeight()))
				self.image.SetPosition(0, - self.removeTop)

		MAX_ITEM_COUNT = 5

		EXP_BASE_LVDELTA = [
			1,  #  -15 0
			5,  #  -14 1
			10, #  -13 2
			20, #  -12 3
			30, #  -11 4
			50, #  -10 5
			70, #  -9  6
			80, #  -8  7
			85, #  -7  8
			90, #  -6  9
			92, #  -5  10
			94, #  -4  11
			96, #  -3  12
			98, #  -2  13
			100,	#  -1  14
			100,	#  0   15
			105,	#  1   16
			110,	#  2   17
			115,	#  3   18
			120,	#  4   19
			125,	#  5   20
			130,	#  6   21
			135,	#  7   22
			140,	#  8   23
			145,	#  9   24
			150,	#  10  25
			155,	#  11  26
			160,	#  12  27
			165,	#  13  28
			170,	#  14  29
			180,	#  15  30
		]

		RACE_FLAG_TO_NAME = {
			1 << 0  : localeInfo.TARGET_INFO_RACE_ANIMAL,
			1 << 1 	: localeInfo.TARGET_INFO_RACE_UNDEAD,
			1 << 2  : localeInfo.TARGET_INFO_RACE_DEVIL,
			1 << 3  : localeInfo.TARGET_INFO_RACE_HUMAN,
			1 << 4  : localeInfo.TARGET_INFO_RACE_ORC,
			1 << 5  : localeInfo.TARGET_INFO_RACE_MILGYO,
		}

		SUB_RACE_FLAG_TO_NAME = {
			1 << 11 : localeInfo.TARGET_INFO_RACE_ELEC,
			1 << 12 : localeInfo.TARGET_INFO_RACE_FIRE,
			1 << 13 : localeInfo.TARGET_INFO_RACE_ICE,
			1 << 14 : localeInfo.TARGET_INFO_RACE_WIND,
			1 << 15 : localeInfo.TARGET_INFO_RACE_EARTH,
			1 << 16 : localeInfo.TARGET_INFO_RACE_DARK,
		}

		STONE_START_VNUM = 28030
		STONE_LAST_VNUM = 28042

		BOARD_WIDTH = 250

		def __init__(self):
			ui.ThinBoard.__init__(self)

			self.HideCorners(self.LT)
			self.HideCorners(self.RT)
			self.HideLine(self.T)

			self.race = 0
			self.hasItems = False

			self.itemTooltip = uiToolTip.ItemToolTip()
			self.itemTooltip.HideToolTip()

			self.stoneImg = None
			self.stoneVnum = None
			self.lastStoneVnum = 0
			self.nextStoneIconChange = 0

			self.SetSize(self.BOARD_WIDTH, 0)

		def __del__(self):
			ui.ThinBoard.__del__(self)

		def __UpdatePosition(self, targetBoard):
			self.SetPosition(targetBoard.GetLeft() + (targetBoard.GetWidth() - self.GetWidth()) / 2, targetBoard.GetBottom() - 17)

		def Open(self, targetBoard, race):
			self.__LoadInformation(race)

			self.SetSize(self.BOARD_WIDTH, self.yPos + 10)
			self.__UpdatePosition(targetBoard)

			self.Show()

		def Refresh(self):
			self.__LoadInformation(self.race)
			self.SetSize(self.BOARD_WIDTH, self.yPos + 10)

		def Close(self):
			self.itemTooltip.HideToolTip()
			self.Hide()

		def __LoadInformation(self, race):
			self.yPos = 7
			self.children = []
			self.race = race
			self.stoneImg = None
			self.stoneVnum = None
			self.nextStoneIconChange = 0

			self.__LoadInformation_Default(race)
			self.__LoadInformation_Race(race)
			self.__LoadInformation_Drops(race)

		def __LoadInformation_Default_GetHitRate(self, race):
			attacker_dx = nonplayer.GetMonsterDX(race)
			attacker_level = nonplayer.GetMonsterLevel(race)

			self_dx = player.GetStatus(player.DX)
			self_level = player.GetStatus(player.LEVEL)

			iARSrc = min(90, (attacker_dx * 4 + attacker_level * 2) / 6)
			iERSrc = min(90, (self_dx * 4 + self_level * 2) / 6)

			fAR = (float(iARSrc) + 210.0) / 300.0
			fER = (float(iERSrc) * 2 + 5) / (float(iERSrc) + 95) * 3.0 / 10.0

			return fAR - fER

		def __LoadInformation_Default(self, race):
			self.AppendSeperator()
			self.AppendTextLine(localeInfo.TARGET_INFO_MAX_HP % str(nonplayer.GetMonsterMaxHP(race)))

			# calc att damage
			monsterLevel = nonplayer.GetMonsterLevel(race)
			fHitRate = self.__LoadInformation_Default_GetHitRate(race)
			iDamMin, iDamMax = nonplayer.GetMonsterDamage(race)
			iDamMin = int((iDamMin + nonplayer.GetMonsterST(race)) * 2 * fHitRate) + monsterLevel * 2
			iDamMax = int((iDamMax + nonplayer.GetMonsterST(race)) * 2 * fHitRate) + monsterLevel * 2
			iDef = player.GetStatus(player.DEF_GRADE) * (100 + player.GetStatus(player.DEF_BONUS)) / 100
			fDamMulti = nonplayer.GetMonsterDamageMultiply(race)
			iDamMin = int(max(0, iDamMin - iDef) * fDamMulti)
			iDamMax = int(max(0, iDamMax - iDef) * fDamMulti)
			if iDamMin < 1:
				iDamMin = 1
			if iDamMax < 5:
				iDamMax = 5
			self.AppendTextLine(localeInfo.TARGET_INFO_DAMAGE % (str(iDamMin), str(iDamMax)))

			idx = min(len(self.EXP_BASE_LVDELTA) - 1, max(0, (monsterLevel + 15) - player.GetStatus(player.LEVEL)))
			iExp = nonplayer.GetMonsterExp(race) * self.EXP_BASE_LVDELTA[idx] / 100
			self.AppendTextLine(localeInfo.TARGET_INFO_EXP % str(iExp))

		def __LoadInformation_Race(self, race):
			dwRaceFlag = nonplayer.GetMonsterRaceFlag(race)
			self.AppendSeperator()

			mainrace = ""
			subrace = ""
			for i in xrange(17):
				curFlag = 1 << i
				if HAS_FLAG(dwRaceFlag, curFlag):
					if self.RACE_FLAG_TO_NAME.has_key(curFlag):
						mainrace += self.RACE_FLAG_TO_NAME[curFlag] + ", "
					elif self.SUB_RACE_FLAG_TO_NAME.has_key(curFlag):
						subrace += self.SUB_RACE_FLAG_TO_NAME[curFlag] + ", "
			if nonplayer.IsMonsterStone(race):
				mainrace += localeInfo.TARGET_INFO_RACE_METIN + ", "
			if mainrace == "":
				mainrace = localeInfo.TARGET_INFO_NO_RACE
			else:
				mainrace = mainrace[:-2]
			if subrace == "":
				subrace = localeInfo.TARGET_INFO_NO_RACE
			else:
				subrace = subrace[:-2]

			self.AppendTextLine(localeInfo.TARGET_INFO_MAINRACE % mainrace)
			self.AppendTextLine(localeInfo.TARGET_INFO_SUBRACE % subrace)

		def __LoadInformation_Drops(self, race):
			self.AppendSeperator()

			if race in constInfo.MONSTER_INFO_DATA:
				if len(constInfo.MONSTER_INFO_DATA[race]["items"]) == 0:
					self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
				else:
					itemListBox = ui.ListBoxExNew(32 + 5, self.MAX_ITEM_COUNT)
					itemListBox.SetSize(self.GetWidth() - 15 * 2 - ui.ScrollBar.SCROLLBAR_WIDTH, (32 + 5) * self.MAX_ITEM_COUNT)
					height = 0
					for curItem in constInfo.MONSTER_INFO_DATA[race]["items"]:
						if curItem.has_key("vnum_list"):
							height += self.AppendItem(itemListBox, curItem["vnum_list"], curItem["count"])
						else:
							height += self.AppendItem(itemListBox, curItem["vnum"], curItem["count"])
					if height < itemListBox.GetHeight():
						itemListBox.SetSize(itemListBox.GetWidth(), height)
					self.AppendWindow(itemListBox, 15)
					itemListBox.SetBasePos(0)

					if len(constInfo.MONSTER_INFO_DATA[race]["items"]) > itemListBox.GetViewItemCount():
						itemScrollBar = ui.ScrollBar()
						itemScrollBar.SetParent(self)
						itemScrollBar.SetPosition(itemListBox.GetRight(), itemListBox.GetTop())
						itemScrollBar.SetScrollBarSize(32 * self.MAX_ITEM_COUNT + 5 * (self.MAX_ITEM_COUNT - 1))
						itemScrollBar.SetMiddleBarSize(float(self.MAX_ITEM_COUNT) / float(height / (32 + 5)))
						itemScrollBar.Show()
						itemListBox.SetScrollBar(itemScrollBar)
			else:
				self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)

		def AppendTextLine(self, text):
			textLine = ui.TextLine()
			textLine.SetParent(self)
			textLine.SetWindowHorizontalAlignCenter()
			textLine.SetHorizontalAlignCenter()
			textLine.SetText(text)
			textLine.SetPosition(0, self.yPos)
			textLine.Show()

			self.children.append(textLine)
			self.yPos += 17

		def AppendSeperator(self):
			img = ui.ImageBox()
			img.LoadImage("d:/ymir work/ui/seperator.tga")
			self.AppendWindow(img)
			img.SetPosition(img.GetLeft(), img.GetTop() - 15)
			self.yPos -= 15

		def AppendItem(self, listBox, vnums, count):
			if type(vnums) == int:
				vnum = vnums
			else:
				vnum = vnums[0]

			item.SelectItem(vnum)
			itemName = item.GetItemName()
			if type(vnums) != int and len(vnums) > 1:
				vnums = sorted(vnums)
				realName = itemName[:itemName.find("+")]
				if item.GetItemType() == item.ITEM_TYPE_METIN:
					realName = localeInfo.TARGET_INFO_STONE_NAME
					itemName = realName + "+0 - +4"
				else:
					itemName = realName + "+" + str(vnums[0] % 10) + " - +" + str(vnums[len(vnums) - 1] % 10)
				vnum = vnums[len(vnums) - 1]

			myItem = self.ItemListBoxItem(listBox.GetWidth())
			myItem.LoadImage(item.GetIconImageFileName())
			if count <= 1:
				myItem.SetText(itemName)
			else:
				myItem.SetText("%dx %s" % (count, itemName))
			myItem.SAFE_SetOverInEvent(self.OnShowItemTooltip, vnum)
			myItem.SAFE_SetOverOutEvent(self.OnHideItemTooltip)
			listBox.AppendItem(myItem)

			if item.GetItemType() == item.ITEM_TYPE_METIN:
				self.stoneImg = myItem
				self.stoneVnum = vnums
				self.lastStoneVnum = self.STONE_LAST_VNUM + vnums[len(vnums) - 1] % 1000 / 100 * 100

			return myItem.GetHeight()

		def OnShowItemTooltip(self, vnum):
			item.SelectItem(vnum)
			if item.GetItemType() == item.ITEM_TYPE_METIN:
				self.itemTooltip.isStone = True
				self.itemTooltip.isBook = False
				self.itemTooltip.isBook2 = False
				self.itemTooltip.SetItemToolTip(self.lastStoneVnum)
			else:
				self.itemTooltip.isStone = False
				self.itemTooltip.isBook = True
				self.itemTooltip.isBook2 = True
				self.itemTooltip.SetItemToolTip(vnum)

		def OnHideItemTooltip(self):
			self.itemTooltip.HideToolTip()

		def AppendWindow(self, wnd, x = 0, width = 0, height = 0):
			if width == 0:
				width = wnd.GetWidth()
			if height == 0:
				height = wnd.GetHeight()

			wnd.SetParent(self)
			if x == 0:
				wnd.SetPosition((self.GetWidth() - width) / 2, self.yPos)
			else:
				wnd.SetPosition(x, self.yPos)
			wnd.Show()

			self.children.append(wnd)
			self.yPos += height + 5

		def OnUpdate(self):
			if self.stoneImg != None and self.stoneVnum != None and app.GetTime() >= self.nextStoneIconChange:
				nextImg = self.lastStoneVnum + 1
				if nextImg % 100 > self.STONE_LAST_VNUM % 100:
					nextImg -= (self.STONE_LAST_VNUM - self.STONE_START_VNUM) + 1
				self.lastStoneVnum = nextImg
				self.nextStoneIconChange = app.GetTime() + 2.5

				item.SelectItem(nextImg)
				itemName = item.GetItemName()
				realName = itemName[:itemName.find("+")]
				realName = realName + "+0 - +4"
				self.stoneImg.LoadImage(item.GetIconImageFileName(), realName)

				if self.itemTooltip.IsShow() and self.itemTooltip.isStone:
					self.itemTooltip.SetItemToolTip(nextImg)

BUTTON_NAME_LIST = ( 
	localeInfo.TARGET_BUTTON_WHISPER, 
	localeInfo.TARGET_BUTTON_EXCHANGE, 
	localeInfo.TARGET_BUTTON_FIGHT, 
	localeInfo.TARGET_BUTTON_ACCEPT_FIGHT, 
	localeInfo.TARGET_BUTTON_AVENGE, 
	localeInfo.TARGET_BUTTON_FRIEND, 
	localeInfo.TARGET_BUTTON_INVITE_PARTY, 
	localeInfo.TARGET_BUTTON_LEAVE_PARTY, 
	localeInfo.TARGET_BUTTON_EXCLUDE, 
	localeInfo.TARGET_BUTTON_INVITE_GUILD,
	localeInfo.TARGET_BUTTON_DISMOUNT,
	localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
	localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
	localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
	localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
	localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
	"VOTE_BLOCK_CHAT",
)

GRADE_NAME =	{
					nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
					nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
					nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
					nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
					nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
					nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
				}
EXCHANGE_LIMIT_RANGE = 3000

def __init__(self):
	ui.ThinBoard.__init__(self)

	name = ui.TextLine()
	name.SetParent(self)
	name.SetDefaultFontName()
	name.SetOutline()
	name.Show()

	hpGauge = ui.Gauge()
	hpGauge.SetParent(self)
	hpGauge.MakeGauge(130, "red")
	hpGauge.Hide()

	closeButton = ui.Button()
	closeButton.SetParent(self)
	closeButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
	closeButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
	closeButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
	closeButton.SetPosition(30, 13)

	if localeInfo.IsARABIC():
		hpGauge.SetPosition(55, 17)
		hpGauge.SetWindowHorizontalAlignLeft()
		closeButton.SetWindowHorizontalAlignLeft()
	else:
		hpGauge.SetPosition(175, 17)
		hpGauge.SetWindowHorizontalAlignRight()
		closeButton.SetWindowHorizontalAlignRight()

	if app.ENABLE_SEND_TARGET_INFO:
		infoButton = ui.Button()
		infoButton.SetParent(self)
		infoButton.SetUpVisual("d:/ymir work/ui/pattern/q_mark_01.tga")
		infoButton.SetOverVisual("d:/ymir work/ui/pattern/q_mark_02.tga")
		infoButton.SetDownVisual("d:/ymir work/ui/pattern/q_mark_01.tga")
		infoButton.SetEvent(ui.__mem_func__(self.OnPressedInfoButton))
		infoButton.Hide()

		infoBoard = self.InfoBoard()
		infoBoard.Hide()
		infoButton.showWnd = infoBoard

	closeButton.SetEvent(ui.__mem_func__(self.OnPressedCloseButton))
	closeButton.Show()

	self.buttonDict = {}
	self.showingButtonList = []
	for buttonName in self.BUTTON_NAME_LIST:
		button = ui.Button()
		button.SetParent(self)

		if localeInfo.IsARABIC():
			button.SetUpVisual("d:/ymir work/ui/public/Small_Button_01.sub")
			button.SetOverVisual("d:/ymir work/ui/public/Small_Button_02.sub")
			button.SetDownVisual("d:/ymir work/ui/public/Small_Button_03.sub")
		else:
			button.SetUpVisual("d:/ymir work/ui/public/small_thin_button_01.sub")
			button.SetOverVisual("d:/ymir work/ui/public/small_thin_button_02.sub")
			button.SetDownVisual("d:/ymir work/ui/public/small_thin_button_03.sub")

		button.SetWindowHorizontalAlignCenter()
		button.SetText(buttonName)
		button.Hide()
		self.buttonDict[buttonName] = button
		self.showingButtonList.append(button)

	self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
	self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE].SetEvent(ui.__mem_func__(self.OnExchange))
	self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
	self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
	self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP))
	self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
	self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
	self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyInvite))
	self.buttonDict[localeInfo.TARGET_BUTTON_LEAVE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyExit))
	self.buttonDict[localeInfo.TARGET_BUTTON_EXCLUDE].SetEvent(ui.__mem_func__(self.OnPartyRemove))

	self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember)
	self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount)
	self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
	self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
	self.buttonDict[localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY].SAFE_SetEvent(self.__OnRequestParty)
	self.buttonDict[localeInfo.TARGET_BUTTON_BUILDING_DESTROY].SAFE_SetEvent(self.__OnDestroyBuilding)
	self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW].SAFE_SetEvent(self.__OnEmotionAllow)

	self.buttonDict["VOTE_BLOCK_CHAT"].SetEvent(ui.__mem_func__(self.__OnVoteBlockChat))

	self.name = name
	self.hpGauge = hpGauge
	if app.ENABLE_SEND_TARGET_INFO:
		self.infoButton = infoButton
	if app.ENABLE_SEND_TARGET_INFO:
		self.vnum = 0
	self.closeButton = closeButton
	self.nameString = 0
	self.nameLength = 0
	self.vid = 0
	self.eventWhisper = None
	self.isShowButton = False

	self.__Initialize()
	self.ResetTargetBoard()

def __del__(self):
	ui.ThinBoard.__del__(self)

	print "===================================================== DESTROYED TARGET BOARD"

def __Initialize(self):
	self.nameString = ""
	self.nameLength = 0
	self.vid = 0
	if app.ENABLE_SEND_TARGET_INFO:
		self.vnum = 0
	self.isShowButton = False

def Destroy(self):
	self.eventWhisper = None
	if app.ENABLE_SEND_TARGET_INFO:
		self.infoButton = None
	self.closeButton = None
	self.showingButtonList = None
	self.buttonDict = None
	self.name = None
	self.hpGauge = None
	self.__Initialize()
	if app.ENABLE_SEND_TARGET_INFO:
def RefreshMonsterInfoBoard(self):
		if not self.infoButton.showWnd.IsShow():
			return

		self.infoButton.showWnd.Refresh()

def OnPressedInfoButton(self):
		net.SendTargetInfoLoad(player.GetTargetVID())
		if self.infoButton.showWnd.IsShow():
			self.infoButton.showWnd.Close()
		elif self.vnum != 0:
			self.infoButton.showWnd.Open(self, self.vnum)

def OnPressedCloseButton(self):
	player.ClearTarget()
	self.Close()

def Close(self):
	self.__Initialize()
	if app.ENABLE_SEND_TARGET_INFO:
		self.infoButton.showWnd.Close()
	self.Hide()

def Open(self, vid, name):
	if vid:
		if not constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD():
			if not player.IsSameEmpire(vid):
				self.Hide()
				return

		if vid != self.GetTargetVID():
			self.ResetTargetBoard()
			self.SetTargetVID(vid)
			self.SetTargetName(name)

		if player.IsMainCharacterIndex(vid):
			self.__ShowMainCharacterMenu()		
		elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
			self.Hide()
		else:
			self.RefreshButton()
			self.Show()
	else:
		self.HideAllButton()
		self.__ShowButton(localeInfo.TARGET_BUTTON_WHISPER)
		self.__ShowButton("VOTE_BLOCK_CHAT")
		self.__ArrangeButtonPosition()
		self.SetTargetName(name)
		self.Show()

def Refresh(self):
	if self.IsShow():
		if self.IsShowButton():			
			self.RefreshButton()		

def RefreshByVID(self, vid):
	if vid == self.GetTargetVID():			
		self.Refresh()

def RefreshByName(self, name):
	if name == self.GetTargetName():
		self.Refresh()

def __ShowMainCharacterMenu(self):
	canShow=0

	self.HideAllButton()

	if player.IsMountingHorse():
		self.__ShowButton(localeInfo.TARGET_BUTTON_DISMOUNT)
		canShow=1

	if player.IsObserverMode():
		self.__ShowButton(localeInfo.TARGET_BUTTON_EXIT_OBSERVER)
		canShow=1

	if canShow:
		self.__ArrangeButtonPosition()
		self.Show()
	else:
		self.Hide()

def __ShowNameOnlyMenu(self):
	self.HideAllButton()

def SetWhisperEvent(self, event):
	self.eventWhisper = event

def UpdatePosition(self):
	self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 10)

def ResetTargetBoard(self):

	for btn in self.buttonDict.values():
		btn.Hide()

	self.__Initialize()

	self.name.SetPosition(0, 13)
	self.name.SetHorizontalAlignCenter()
	self.name.SetWindowHorizontalAlignCenter()
	self.hpGauge.Hide()
	if app.ENABLE_SEND_TARGET_INFO:
		self.infoButton.Hide()
		self.infoButton.showWnd.Close()
	self.SetSize(250, 40)

def SetTargetVID(self, vid):
	self.vid = vid
	if app.ENABLE_SEND_TARGET_INFO:
		self.vnum = 0

def SetEnemyVID(self, vid):
	self.SetTargetVID(vid)

	name = chr.GetNameByVID(vid)
	if app.ENABLE_SEND_TARGET_INFO:
		vnum = nonplayer.GetRaceNumByVID(vid)
	level = nonplayer.GetLevelByVID(vid)
	grade = nonplayer.GetGradeByVID(vid)

	nameFront = ""
	if -1 != level:
		nameFront += "Lv." + str(level) + " "
	if self.GRADE_NAME.has_key(grade):
		nameFront += "(" + self.GRADE_NAME[grade] + ") "

	self.SetTargetName(nameFront + name)
	if app.ENABLE_SEND_TARGET_INFO:
		(textWidth, textHeight) = self.name.GetTextSize()

		self.infoButton.SetPosition(textWidth + 25, 12)
		self.infoButton.SetWindowHorizontalAlignLeft()

		self.vnum = vnum
		self.infoButton.Show()

def GetTargetVID(self):
	return self.vid

def GetTargetName(self):
	return self.nameString

def SetTargetName(self, name):
	self.nameString = name
	self.nameLength = len(name)
	self.name.SetText(name)

def SetHP(self, hpPercentage):
	if not self.hpGauge.IsShow():

		self.SetSize(200 + 7*self.nameLength, self.GetHeight())

		if localeInfo.IsARABIC():
			self.name.SetPosition( self.GetWidth()-23, 13)
		else:
			self.name.SetPosition(23, 13)

		self.name.SetWindowHorizontalAlignLeft()
		self.name.SetHorizontalAlignLeft()
		self.hpGauge.Show()
		self.UpdatePosition()

	self.hpGauge.SetPercentage(hpPercentage, 100)

def ShowDefaultButton(self):

	self.isShowButton = True
	self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
	self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
	self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
	self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW])
	for button in self.showingButtonList:
		button.Show()

def HideAllButton(self):
	self.isShowButton = False
	for button in self.showingButtonList:
		button.Hide()
	self.showingButtonList = []

def __ShowButton(self, name):

	if not self.buttonDict.has_key(name):
		return

	self.buttonDict[name].Show()
	self.showingButtonList.append(self.buttonDict[name])

def __HideButton(self, name):

	if not self.buttonDict.has_key(name):
		return

	button = self.buttonDict[name]
	button.Hide()

	for btnInList in self.showingButtonList:
		if btnInList == button:
			self.showingButtonList.remove(button)
			break

def OnWhisper(self):
	if None != self.eventWhisper:
		self.eventWhisper(self.nameString)

def OnExchange(self):
	net.SendExchangeStartPacket(self.vid)

def OnPVP(self):
	net.SendChatPacket("/pvp %d" % (self.vid))

def OnAppendToMessenger(self):
	net.SendMessengerAddByVIDPacket(self.vid)

def OnPartyInvite(self):
	net.SendPartyInvitePacket(self.vid)

def OnPartyExit(self):
	net.SendPartyExitPacket()

def OnPartyRemove(self):
	net.SendPartyRemovePacket(self.vid)

def __OnGuildAddMember(self):
	net.SendGuildAddMemberPacket(self.vid)

def __OnDismount(self):
	net.SendChatPacket("/unmount")

def __OnExitObserver(self):
	net.SendChatPacket("/observer_exit")

def __OnViewEquipment(self):
	net.SendChatPacket("/view_equip " + str(self.vid))

def __OnRequestParty(self):
	net.SendChatPacket("/party_request " + str(self.vid))

def __OnDestroyBuilding(self):
	net.SendChatPacket("/build d %d" % (self.vid))

def __OnEmotionAllow(self):
	net.SendChatPacket("/emotion_allow %d" % (self.vid))

def __OnVoteBlockChat(self):
	cmd = "/vote_block_chat %s" % (self.nameString)
	net.SendChatPacket(cmd)

def OnPressEscapeKey(self):
	self.OnPressedCloseButton()
	return True

def IsShowButton(self):
	return self.isShowButton

def RefreshButton(self):

	self.HideAllButton()

	if chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
		#self.__ShowButton(localeInfo.TARGET_BUTTON_BUILDING_DESTROY)
		#self.__ArrangeButtonPosition()
		return

	if player.IsPVPInstance(self.vid) or player.IsObserverMode():
		# PVP_INFO_SIZE_BUG_FIX
		self.SetSize(200 + 7*self.nameLength, 40)
		self.UpdatePosition()
		# END_OF_PVP_INFO_SIZE_BUG_FIX			
		return	

	self.ShowDefaultButton()

	if guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER):
		if not guild.IsMemberByName(self.nameString):
			if 0 == chr.GetGuildID(self.vid):
				self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_GUILD)

	if not messenger.IsFriendByName(self.nameString):
		self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)

	if player.IsPartyMember(self.vid):

		self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)

		if player.IsPartyLeader(self.vid):
			self.__ShowButton(localeInfo.TARGET_BUTTON_LEAVE_PARTY)
		elif player.IsPartyLeader(player.GetMainCharacterIndex()):
			self.__ShowButton(localeInfo.TARGET_BUTTON_EXCLUDE)

	else:
		if player.IsPartyMember(player.GetMainCharacterIndex()):
			if player.IsPartyLeader(player.GetMainCharacterIndex()):
				self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
		else:
			if chr.IsPartyMember(self.vid):
				self.__ShowButton(localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY)
			else:
				self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)

		if player.IsRevengeInstance(self.vid):
			self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
			self.__ShowButton(localeInfo.TARGET_BUTTON_AVENGE)
		elif player.IsChallengeInstance(self.vid):
			self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
			self.__ShowButton(localeInfo.TARGET_BUTTON_ACCEPT_FIGHT)
		elif player.IsCantFightInstance(self.vid):
			self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)

		if not player.IsSameEmpire(self.vid):
			self.__HideButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
			self.__HideButton(localeInfo.TARGET_BUTTON_FRIEND)
			self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)

	distance = player.GetCharacterDistance(self.vid)
	if distance > self.EXCHANGE_LIMIT_RANGE:
		self.__HideButton(localeInfo.TARGET_BUTTON_EXCHANGE)
		self.__ArrangeButtonPosition()

	self.__ArrangeButtonPosition()

def __ArrangeButtonPosition(self):
	showingButtonCount = len(self.showingButtonList)

	pos = -(showingButtonCount / 2) * 68
	if 0 == showingButtonCount % 2:
		pos += 34

	for button in self.showingButtonList:
		button.SetPosition(pos, 33)
		pos += 68

	self.SetSize(max(150, showingButtonCount * 75), 65)
	self.UpdatePosition()

def OnUpdate(self):
	if self.isShowButton:

		exchangeButton = self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE]
		distance = player.GetCharacterDistance(self.vid)

		if distance < 0:
			return

		if exchangeButton.IsShow():
			if distance > self.EXCHANGE_LIMIT_RANGE:
				self.RefreshButton()

		else:
			if distance < self.EXCHANGE_LIMIT_RANGE:
				self.RefreshButton()

 

Merci d'avance

Link to comment
  • 0

Voilà le target est corrigé, il y avait un soucis avec la ligne du dessus je l'avais mal ajouté.

 

Par contre j'ai un soucis avec le uitooltip.py maintenant.

 

L'erreur sysser:

0505 09:59:00726 :: CSoundManager::PlayMusic - Failed to load stream sound : BGM/login_window.mp3
0505 09:59:07663 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:11) 
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiTarget.py(line:13) 
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiToolTip.py(line:346) 
uiToolTip.py(line:623) ItemToolTip

networkModule.SetSelectCharacterPhase - :name 'self' is not defined

0505 09:59:07663 :: ============================================================================================================
0505 09:59:07663 :: Abort!!!!


 

Et le uitooltip: http://www.mediafire.com/file/6oc72979czbemej/uitooltip.py

 

Merci d'avance

Link to comment
  • 0

Super merci Gin

 

Mon nouveau sysser:

0507 17:33:58445 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:11) 
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiTarget.py(line:19) 
uiTarget.py(line:21) TargetBoard
uiTarget.py(line:90) InfoBoard

networkModule.SetSelectCharacterPhase - :'module' object has no attribute 'TARGET_INFO_RACE_ANIMAL'

0507 17:33:58446 :: ============================================================================================================
0507 17:33:58446 :: Abort!!!!


 

Je vais chercher si quelqu'un à une solution merci, en même temps si je trouve je le posterais ici:

 

https://pastebin.com/xjEAYepU -> voici le uitarget.py

Link to comment
Guest
This topic is now closed to further replies.


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.