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

Bonus statistique


maximom34
 Share

Question

[Message d'introduction]Bonjour

 

Version des files :2012

Domaine (Base de données, Core, etc.) : bonne question

Votre niveau (débutant, intermédiaire, avancé) : débutant

 

Description du problème : J'aimerait savoir si quelqu'un aurait la quète qui fait apparaitre la barre de statistique bonus ci dessous : 824029Sanstitre.jpg

Oui vous allez me dire elle est implanter met ces sur un autre client tout buger pour sa j'aimerait l'implanter sur le mien merci :)

Comment reproduire le problème :

Recherches et tests effectué : Recherchede tuto effectués sur funcky emu sans avoir trouver mon bonheur :/

Résultat des recherches et tests :

 

Message d'erreur, capture d'écran :

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.

Link to comment
Share on other sites

  • Answers 12
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

12 answers to this question

Recommended Posts

  • 0
  • Retraité

Inventorywindow.py ( locale/fr/ui )

 

import uiScriptLocale

MIDDLE_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_01.sub"
EQUIPMENT_START_INDEX = 90

window = {
"name" : "InventoryWindow",

## 600 - (width + ¿À¸¥ÂÊÀ¸·Î ºÎÅÍ ¶ç¿ì±â 24 px)
"x" : SCREEN_WIDTH - 124 - 176,
"y" : SCREEN_HEIGHT - 37 - 565,

"style" : ("movable", "float",),

"width" : 176+124,
"height" : 565,

"children" :
(
	{
		"name" : "board",
		"type" : "board",
		"style" : ("attach",),

		"x" : 0,
		"y" : 0,

		"width" : 176+124,
		"height" : 565,

		"children" :
		(
			## Title
			{
				"name" : "TitleBar",
				"type" : "titlebar",
				"style" : ("attach",),

				"x" : 8,
				"y" : 7,

				"width" : 161+124,
				"color" : "yellow",

				"children" :
				(
					{
						"name":"TitleName",
						"type":"text",
						"x":77+62,
						"y":3,
						"text":uiScriptLocale.INVENTORY_TITLE,
						"text_horizontal_align":"center"
					},
				),
			},

			## Equipment Slot
			{
				"name" : "Equipment_Base",
				"type" : "image",

				"x" : 10,
				"y" : 33,

				"image" : "d:/ymir work/ui/game/windows/equipment_base.sub",

				"children" :
				(

					{
						"name" : "EquipmentSlot",
						"type" : "slot",

						"x" : 3,
						"y" : 3,

						"width" : 150,
						"height" : 182,

						"slot" : (
									{"index":EQUIPMENT_START_INDEX+0, "x":39, "y":37, "width":32, "height":64},
									{"index":EQUIPMENT_START_INDEX+1, "x":39, "y":2, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+2, "x":39, "y":145, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+3, "x":75, "y":67, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+4, "x":3, "y":3, "width":32, "height":96},
									{"index":EQUIPMENT_START_INDEX+5, "x":114, "y":84, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+6, "x":114, "y":52, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+7, "x":2, "y":113, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+8, "x":75, "y":113, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+9, "x":114, "y":1, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
								),
					},
					## MallButton
					{
						"name" : "MallButton",
						"type" : "button",

						"x" : 120,
						"y" : 150,

						"tooltip_text" : uiScriptLocale.MALL_TITLE,

						"default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
						"over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
						"down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
					},
					{
						"name" : "Equipment_Tab_01",
						"type" : "radio_button",

						"x" : 86,
						"y" : 161,

						"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
						"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
						"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",

						"children" :
						(
							{
								"name" : "Equipment_Tab_01_Print",
								"type" : "text",

								"x" : 0,
								"y" : 0,

								"all_align" : "center",

								"text" : "I",
							},
						),
					},
					{
						"name" : "Equipment_Tab_02",
						"type" : "radio_button",

						"x" : 86 + 32,
						"y" : 161,

						"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
						"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
						"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",

						"children" :
						(
							{
								"name" : "Equipment_Tab_02_Print",
								"type" : "text",

								"x" : 0,
								"y" : 0,

								"all_align" : "center",

								"text" : "II",
							},
						),
					},

				),
			},
			##BonusPageDialog
			{
				"name" : "Bonus_Page",
				"type" : "window",
				"x" : 166,
				"y" : 34,
				"width" : 124,
				"height" : 565-24,
				"children" :
				(
					{
						"name" : "BonusBase1",
						"type" : "horizontalbar",
						"x" : 4,
						"y" : 0,
						"width" : 120,
						"children" :
						(
							{
								"name" : "bonus_text_1",
								"type" : "text",
								"x" : 0,
								"y" : 0,
								"all_align" : "center",
								"text" : "Defense", 
							},
						),
					},
					{
						"name" : "Sword_defence",
						"type" : "text",
						"x" : 5,
						"y" : 1*18,
						"text" : "Epée:"
					},
					{
						"name" : "Sword_def",
						"type" : "window",
						"x" : 72,
						"y" : 1*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Sword_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Sword_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Twohand_defence",
						"type" : "text",
						"x" : 5,
						"y" : 2*18,
						"text" : "Deux mains:"
					},
					{
						"name" : "Twohand_def",
						"type" : "window",
						"x" : 72,
						"y" : 2*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Twohand_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Twohand_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Knife_defence",
						"type" : "text",
						"x" : 5,
						"y" : 3*18,
						"text" : "Dague:"
					},
					{
						"name" : "Knife_def",
						"type" : "window",
						"x" : 72,
						"y" : 3*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Knife_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Knife_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Bow_defence",
						"type" : "text",
						"x" : 5,
						"y" : 4*18,
						"text" : "Arc:"
					},
					{
						"name" : "Bow_def",
						"type" : "window",
						"x" : 72,
						"y" : 4*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Bow_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Bow_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Bell_defence",
						"type" : "text",
						"x" : 5,
						"y" : 5*18,
						"text" : "Gong:"
					},
					{
						"name" : "Bell_def",
						"type" : "window",
						"x" : 72,
						"y" : 5*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Bell_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Bell_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Fan_defence",
						"type" : "text",
						"x" : 5,
						"y" : 6*18,
						"text" : "Eventail:"
					},
					{
						"name" : "Fan_def",
						"type" : "window",
						"x" : 72,
						"y" : 6*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Fan_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Fan_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Magic_defence",
						"type" : "text",
						"x" : 5,
						"y" : 7*18,
						"text" : "Magie:"
					},
					{
						"name" : "Magic_def",
						"type" : "window",
						"x" : 72,
						"y" : 7*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Magic_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Magic_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Poison_defence",
						"type" : "text",
						"x" : 5,
						"y" : 8*18,
						"text" : "Poison:"
					},
					{
						"name" : "Poison_def",
						"type" : "window",
						"x" : 72,
						"y" : 8*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Poison_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Poison_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Warrior_defence",
						"type" : "text",
						"x" : 5,
						"y" : 9*18,
						"text" : "Guerrier:"
					},
					{
						"name" : "Warrior_def",
						"type" : "window",
						"x" : 72,
						"y" : 9*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Warrior_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Warrior_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Assassin_defence",
						"type" : "text",
						"x" : 5,
						"y" : 10*18,
						"text" : "Ninja:"
					},
					{
						"name" : "Assassin_def",
						"type" : "window",
						"x" : 72,
						"y" : 10*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Assassin_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Assassin_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Sura_defence",
						"type" : "text",
						"x" : 5,
						"y" : 11*18,
						"text" : "Sura:"
					},
					{
						"name" : "Sura_def",
						"type" : "window",
						"x" : 72,
						"y" : 11*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Sura_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Sura_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Mage_defence",
						"type" : "text",
						"x" : 5,
						"y" : 12*18,
						"text" : "Shaman:"
					},
					{
						"name" : "Mage_def",
						"type" : "window",
						"x" : 72,
						"y" : 12*18,
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Mage_def_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Mage_def_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "BonusBase2",
						"type" : "horizontalbar",
						"x" : 4,
						"y" : 235,
						"width" : 120,
						"children" :
						(
							{
								"name" : "bonus_text_1",
								"type" : "text",
								"x" : 0,
								"y" : 0,
								"all_align" : "center",
								"text" : "Attaque",
							},
						),
					},
					{
						"name" : "Critical_chance",
						"type" : "text",
						"x" : 5,
						"y" : 235+(1*18),
						"text" : "Critique:"
					},
					{
						"name" : "Crit",
						"type" : "window",
						"x" : 72,
						"y" : 235+(1*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Crit_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Crit_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Pierce_chance",
						"type" : "text",
						"x" : 5,
						"y" : 235+(2*18),
						"text" : "Perçant:"
					},
					{
						"name" : "Pierce",
						"type" : "window",
						"x" : 72,
						"y" : 235+(2*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Pierce_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Pierce_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Hit_damage",
						"type" : "text",
						"x" : 5,
						"y" : 235+(3*18),
						"text" : "Valeur d'att.:"
					},
					{
						"name" : "Hitdmg",
						"type" : "window",
						"x" : 72,
						"y" : 235+(3*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Hitdmg_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Hitdmg_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Skill_damage",
						"type" : "text",
						"x" : 5,
						"y" : 235+(4*18),
						"text" : "Att. magique:"
					},
					{
						"name" : "Skilldmg",
						"type" : "window",
						"x" : 72,
						"y" : 235+(4*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Skilldmg_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Skilldmg_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Halfhumans",
						"type" : "text",
						"x" : 5,
						"y" : 235+(5*18),
						"text" : "Demi-humain:"
					},
					{
						"name" : "Halfhuman",
						"type" : "window",
						"x" : 72,
						"y" : 235+(5*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Halfhuman_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Halfhuman_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Undeads",
						"type" : "text",
						"x" : 5,
						"y" : 235+(6*18),
						"text" : "Mort vivant:"
					},
					{
						"name" : "Undead",
						"type" : "window",
						"x" : 72,
						"y" : 235+(6*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Undead_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Undead_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Devil_gegen",
						"type" : "text",
						"x" : 5,
						"y" : 235+(7*18),
						"text" : "Mail:"
					},
					{
						"name" : "Devil",
						"type" : "window",
						"x" : 72,
						"y" : 235+(7*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Devil_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Devil_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Warrior_gegen",
						"type" : "text",
						"x" : 5,
						"y" : 235+(8*18),
						"text" : "Guerrier:"
					},
					{
						"name" : "Warrior_str",
						"type" : "window",
						"x" : 72,
						"y" : 235+(8*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Warrior_str_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Warrior_str_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Assassin_gegen",
						"type" : "text",
						"x" : 5,
						"y" : 235+(9*18),
						"text" : "Ninja:"
					},
					{
						"name" : "Assassin_str",
						"type" : "window",
						"x" : 72,
						"y" : 235+(9*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Assassin_str_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Assassin_str_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Sura_gegen",
						"type" : "text",
						"x" : 5,
						"y" : 235+(10*18),
						"text" : "Sura:"
					},
					{
						"name" : "Assassin_str",
						"type" : "window",
						"x" : 72,
						"y" : 235+(10*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Sura_str_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Sura_str_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "Mage_gegen",
						"type" : "text",
						"x" : 5,
						"y" : 235+(11*18),
						"text" : "Shaman:"
					},
					{
						"name" : "Mage_str",
						"type" : "window",
						"x" : 72,
						"y" : 235+(11*18),
						"width" : 53,
						"height" : 19,
						"children" :
						(
							{
								"name" : "Mage_str_Slot",
								"type" : "image",
								"x" : 0,
								"y" : 0,
								"image" : MIDDLE_VALUE_FILE
							},
							{
								"name" : "Mage_str_Value",
								"type" : "text",
								"x" : 26,
								"y" : 3,
								"text" : "999",
								"r" : 1.0,
								"g" : 1.0,
								"b" : 1.0,
								"a" : 1.0,
								"text_horizontal_align":"center"
							},
						),
					},
					{
						"name" : "CopyRight",
						"type" : "horizontalbar",
						"x" : 4,
						"y" : 470,
						"width" : 120,
						"children" :
						(
							{
								"name" : "(C)",
								"type" : "text",
								"x" : 0,
								"y" : 0,
								"all_align" : "center",
								"text" : "© Mt2France",
								"r" : 0.0,
								"g" : 1.0,
								"b" : 0.0,
								"a" : 1.0,
							},
						),
					},
				),
			},

			##InventoryTabs
			{
				"name" : "Inventory_Tab_01",
				"type" : "radio_button",

				"x" : 10,
				"y" : 33 + 191,

				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,

				"children" :
				(
					{
						"name" : "Inventory_Tab_01_Print",
						"type" : "text",

						"x" : 0,
						"y" : 0,

						"all_align" : "center",

						"text" : "I",
					},
				),
			},
			{
				"name" : "Inventory_Tab_02",
				"type" : "radio_button",

				"x" : 10 + 78,
				"y" : 33 + 191,

				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,

				"children" :
				(
					{
						"name" : "Inventory_Tab_02_Print",
						"type" : "text",

						"x" : 0,
						"y" : 0,

						"all_align" : "center",

						"text" : "II",
					},
				),
			},

			## Item Slot
			{
				"name" : "ItemSlot",
				"type" : "grid_table",

				"x" : 8,
				"y" : 246,

				"start_index" : 0,
				"x_count" : 5,
				"y_count" : 9,
				"x_step" : 32,
				"y_step" : 32,

				"image" : "d:/ymir work/ui/public/Slot_Base.sub"
			},

			## Print
			{
				"name":"Money_Slot",
				"type":"button",

				"x":8+20,
				"y":28,

				# "horizontal_align":"center",
				"vertical_align":"bottom",

				"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
				"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
				"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",

				"children" :
				(
					{
						"name":"Money_Icon",
						"type":"image",

						"x":-18,
						"y":2,

						"image":"d:/ymir work/ui/game/windows/money_icon.sub",
					},

					{
						"name" : "Money",
						"type" : "text",

						"x" : 3,
						"y" : 3,

						"horizontal_align" : "right",
						"text_horizontal_align" : "right",

						"text" : "123456789",
					},
				),
			},

		),
	},
),
}

 

 

uiinventory.py ( root )

 

import ui
import player
import mouseModule
import net
import app
import snd
import item
import player
import chat
import grp
import uiScriptLocale
import uiRefine
import uiAttachMetin
import uiPickMoney
import uiCommon
import uiPrivateShopBuilder # ItemMove disabled when private shop opened
import locale
import constInfo
import ime
import background

ITEM_MALL_BUTTON_ENABLE = TRUE
WARP_SCROLLS = [22011, 22000, 22010]
ITEM_FLAG_APPLICABLE = 1 << 14

class InventoryWindow(ui.ScriptWindow):

USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET")

def __init__(self):
	ui.ScriptWindow.__init__(self)
	self.questionDialog = None
	self.tooltipItem = None
	self.itemVNum = 0
	self.sellingSlotNumber = -1
	self.isLoaded = 0

	self.__LoadWindow()

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

def Show(self):
	self.__LoadWindow()

	ui.ScriptWindow.Show(self)

def __LoadWindow(self):
	if self.isLoaded == 1:
		return

	self.isLoaded = 1

	try:
		pyScrLoader = ui.PythonScriptLoader()

		if ITEM_MALL_BUTTON_ENABLE:
			pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")
		else:
			pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
	except:
		import exception
		exception.Abort("InventoryWindow.LoadWindow.LoadObject")

	try:
		wndItem = self.GetChild("ItemSlot")
		wndEquip = self.GetChild("EquipmentSlot")
		self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
		self.wndMoney = self.GetChild("Money")
		self.wndMoneySlot = self.GetChild("Money_Slot")
		self.mallButton = self.GetChild2("MallButton")
##BonusPageDialog
		self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
		self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
		self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
		self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
		self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
		self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
		self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
		self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
		self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
		self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
		self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
		self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
		self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
		self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
		self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
		self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
		self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
		self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
		self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
		self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
		self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
		self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
		self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
##BonusPageDialog

		self.inventoryTab = []
		self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
		self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))

		self.equipmentTab = []
		self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
		self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))

	except:
		import exception
		exception.Abort("InventoryWindow.LoadWindow.BindObject")

	## Item
	wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
	wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
	wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
	wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
	wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
	wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))

	## Equipment
	wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
	wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
	wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
	wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
	wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
	wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))

	## PickMoneyDialog
	dlgPickMoney = uiPickMoney.PickMoneyDialog()
	dlgPickMoney.LoadDialog()
	dlgPickMoney.Hide()

	## RefineDialog
	self.refineDialog = uiRefine.RefineDialog()
	self.refineDialog.Hide()

	## AttachMetinDialog
	self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
	self.attachMetinDialog.Hide()

	## MoneySlot
	self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))

	self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
	self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
	self.inventoryTab[0].Down()

	self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))
	self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))
	self.equipmentTab[0].Down()
	self.equipmentTab[0].Hide()
	self.equipmentTab[1].Hide()

	self.wndItem = wndItem
	self.wndEquip = wndEquip
	self.dlgPickMoney = dlgPickMoney

	# MallButton
	if self.mallButton:
		self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))

		#####

	## Refresh
	self.SetInventoryPage(0)
	self.SetEquipmentPage(0)
	self.RefreshItemSlot()
	self.RefreshStatus()
	self.RefreshBonus()

def Destroy(self):
	self.ClearDictionary()

	self.dlgPickMoney.Destroy()
	self.dlgPickMoney = 0

	self.refineDialog.Destroy()
	self.refineDialog = 0

	self.attachMetinDialog.Destroy()
	self.attachMetinDialog = 0

	self.tooltipItem = None
	self.wndItem = 0
	self.wndEquip = 0
	self.dlgPickMoney = 0
	self.wndMoney = 0
	self.wndMoneySlot = 0
	self.questionDialog = None
	self.mallButton = None

	self.inventoryTab = []
	self.equipmentTab = []

def Close(self):
	if None != self.tooltipItem:
		self.tooltipItem.HideToolTip()

	self.OnCloseQuestionDialog()
	self.dlgPickMoney.Close()
	self.Hide()

def SetInventoryPage(self, page):
	self.inventoryPageIndex = page
	self.inventoryTab[1-page].SetUp()
	self.RefreshBagSlotWindow()

def SetEquipmentPage(self, page):
	self.equipmentPageIndex = page
	self.equipmentTab[1-page].SetUp()
	self.RefreshEquipSlotWindow()

def ClickMallButton(self):
	print "click_mall_button"
	net.SendChatPacket("/click_mall")

def OpenPickMoneyDialog(self):

	if mouseModule.mouseController.isAttached():

		attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
		if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():

			if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
				net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
				snd.PlaySound("sound/ui/money.wav")

		mouseModule.mouseController.DeattachObject()

	else:
		curMoney = player.GetElk()

		if curMoney <= 0:
			return

		self.dlgPickMoney.SetTitleName(locale.PICK_MONEY_TITLE)
		self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
		self.dlgPickMoney.Open(curMoney)
		self.dlgPickMoney.SetMax(7) # Àκ¥Å丮 990000 Á¦ÇÑ ¹ö±× ¼öÁ¤

def OnPickMoney(self, money):
	mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)

def OnPickItem(self, count):
	itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
	selectedItemVNum = player.GetItemIndex(itemSlotIndex)
	mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)

def __InventoryLocalSlotPosToGlobalSlotPos(self, local):

	if player.IsEquipmentSlot(local):
		return local

	return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local

##BonusPageDialog
def __LoadRefreshBonus(self):
	self.RefreshBonus()

def RefreshBonus(self):
	try:
		self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
		self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
		self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
		self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
		self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
		self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
		self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
		self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
		self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
		self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
		self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
		self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
		self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
		self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
		self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
		self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
		self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
		self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
		self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
		self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
		self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
		self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
		self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
	except:
		import exception
		exception.Abort("InventoryWindow.RefreshBonus.BindObject")
##BonusPageDialog

def RefreshBagSlotWindow(self):
	getItemVNum=player.GetItemIndex
	getItemCount=player.GetItemCount
	setItemVNum=self.wndItem.SetItemSlot
	for i in xrange(player.INVENTORY_PAGE_SIZE):
		slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
		itemCount = getItemCount(slotNumber)
		if itemCount <= 1:
			itemCount = 0
		setItemVNum(i, getItemVNum(slotNumber), itemCount)

	self.wndItem.RefreshSlot()

def RefreshEquipSlotWindow(self):
	getItemVNum=player.GetItemIndex
	getItemCount=player.GetItemCount
	setItemVNum=self.wndEquip.SetItemSlot
	for i in xrange(player.EQUIPMENT_PAGE_COUNT):
		slotNumber = player.EQUIPMENT_SLOT_START + i
		itemCount = getItemCount(slotNumber)
		if itemCount <= 1:
			itemCount = 0
		setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)

	self.wndEquip.RefreshSlot()

def RefreshItemSlot(self):
	self.RefreshBagSlotWindow()
	self.RefreshEquipSlotWindow()

def RefreshStatus(self):
	money = player.GetElk()
	self.wndMoney.SetText(locale.NumberToMoneyString(money))

def SetItemToolTip(self, tooltipItem):
	self.tooltipItem = tooltipItem

def SellItem(self):

	net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count)
	snd.PlaySound("sound/ui/money.wav")
	self.OnCloseQuestionDialog()

def OnDetachMetinFromItem(self):
	if None == self.questionDialog:
		return

	#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
	self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
	self.OnCloseQuestionDialog()

def OnCloseQuestionDialog(self):
	if self.questionDialog:
		self.questionDialog.Close()

	self.questionDialog = None

## Slot Event
def SelectEmptySlot(self, selectedSlotPos):
	if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
		return

	selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)

	if mouseModule.mouseController.isAttached():

		attachedSlotType = mouseModule.mouseController.GetAttachedType()
		attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
		attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
		attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()

		if player.SLOT_TYPE_INVENTORY == attachedSlotType:
			itemCount = player.GetItemCount(attachedSlotPos)
			attachedCount = mouseModule.mouseController.GetAttachedItemCount()
			self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)

			if item.IsRefineScroll(attachedItemIndex):
				self.wndItem.SetUseMode(FALSE)

		elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
			mouseModule.mouseController.RunCallBack("INVENTORY")

		elif player.SLOT_TYPE_SHOP == attachedSlotType:
			net.SendShopBuyPacket(attachedSlotPos)

		elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:

			if player.ITEM_MONEY == attachedItemIndex:
				net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
				snd.PlaySound("sound/ui/money.wav")

			else:
				net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)

		elif player.SLOT_TYPE_MALL == attachedSlotType:
			net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)

		mouseModule.mouseController.DeattachObject()

def SelectItemSlot(self, itemSlotIndex):
	if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
		return

	itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)

	if mouseModule.mouseController.isAttached():
		attachedSlotType = mouseModule.mouseController.GetAttachedType()
		attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
		attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()

		if player.SLOT_TYPE_INVENTORY == attachedSlotType:
			self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)

		mouseModule.mouseController.DeattachObject()

	else:

		curCursorNum = app.GetCursor()
		if app.SELL == curCursorNum:
			self.__SellItem(itemSlotIndex)

		elif app.BUY == curCursorNum:
			chat.AppendChat(chat.CHAT_TYPE_INFO, locale.SHOP_BUY_INFO)

		elif app.IsPressed(app.DIK_LALT):
			link = player.GetItemLink(itemSlotIndex)
			ime.PasteString(link)

		elif app.IsPressed(app.DIK_LSHIFT):
			itemCount = player.GetItemCount(itemSlotIndex)

			if itemCount > 1:
				self.dlgPickMoney.SetTitleName(locale.PICK_ITEM_TITLE)
				self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
				self.dlgPickMoney.Open(itemCount)
				self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
			#else:
				#selectedItemVNum = player.GetItemIndex(itemSlotIndex)
				#mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)

		elif app.IsPressed(app.DIK_LCONTROL):
			itemIndex = player.GetItemIndex(itemSlotIndex)

			if TRUE == item.CanAddToQuickSlotItem(itemIndex):
				player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
			else:
				chat.AppendChat(chat.CHAT_TYPE_INFO, locale.QUICKSLOT_REGISTER_DISABLE_ITEM)

		else:
			selectedItemVNum = player.GetItemIndex(itemSlotIndex)
			itemCount = player.GetItemCount(itemSlotIndex)
			mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)

			if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
				self.wndItem.SetUseMode(TRUE)
			else:
				self.wndItem.SetUseMode(FALSE)

			snd.PlaySound("sound/ui/pick.wav")

def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
	if srcItemSlotPos == dstItemSlotPos:
		return

	if item.IsRefineScroll(srcItemVID):
		self.RefineItem(srcItemSlotPos, dstItemSlotPos)
		self.wndItem.SetUseMode(FALSE)

	elif item.IsMetin(srcItemVID):
		self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)

	elif item.IsDetachScroll(srcItemVID):
		self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)

	elif item.IsKey(srcItemVID):
		self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)

	elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
		self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)

	elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
		self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)

	else:
		#snd.PlaySound("sound/ui/drop.wav")

		## À̵¿½ÃŲ °÷ÀÌ ÀåÂø ½½·ÔÀÏ °æ¿ì ¾ÆÀÌÅÛÀ» »ç¿ëÇؼ­ ÀåÂø ½ÃŲ´Ù - [levites]
		if player.IsEquipmentSlot(dstItemSlotPos):

			## µé°í ÀÖ´Â ¾ÆÀÌÅÛÀÌ ÀåºñÀ϶§¸¸
			if item.IsEquipmentVID(srcItemVID):
				self.__UseItem(srcItemSlotPos)

		else:
			self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
			#net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)

def __SellItem(self, itemSlotPos):
	if not player.IsEquipmentSlot(itemSlotPos):
		self.sellingSlotNumber = itemSlotPos
		itemIndex = player.GetItemIndex(itemSlotPos)
		itemCount = player.GetItemCount(itemSlotPos)

		item.SelectItem(itemIndex)
		itemPrice = item.GetISellItemPrice()

		if item.Is1GoldItem():
			itemPrice = itemCount / itemPrice / 5
		else:
			itemPrice = itemPrice * itemCount / 5

		item.GetItemName(itemIndex)
		itemName = item.GetItemName()

		self.questionDialog = uiCommon.QuestionDialog()
		self.questionDialog.SetText(locale.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
		self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
		self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
		self.questionDialog.Open()
		self.questionDialog.count = itemCount

def RefineItem(self, scrollSlotPos, targetSlotPos):

	scrollIndex = player.GetItemIndex(scrollSlotPos)
	targetIndex = player.GetItemIndex(targetSlotPos)

	if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
		return

	###########################################################
	self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
	#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
	return
	###########################################################

	###########################################################
	#net.SendRequestRefineInfoPacket(targetSlotPos)
	#return
	###########################################################

	result = player.CanRefine(scrollIndex, targetSlotPos)

	if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
		#snd.PlaySound("sound/ui/jaeryun_fail.wav")
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_MORE_SOCKET)

	elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
		#snd.PlaySound("sound/ui/jaeryun_fail.wav")
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NEED_BETTER_SCROLL)

	elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
		#snd.PlaySound("sound/ui/jaeryun_fail.wav")
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_SOCKET_DISABLE_ITEM)

	elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
		#snd.PlaySound("sound/ui/jaeryun_fail.wav")
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)

	elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM)

	if player.REFINE_OK != result:
		return

	self.refineDialog.Open(scrollSlotPos, targetSlotPos)

def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
	scrollIndex = player.GetItemIndex(scrollSlotPos)
	targetIndex = player.GetItemIndex(targetSlotPos)

	if not player.CanDetach(scrollIndex, targetSlotPos):
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
		return

	self.questionDialog = uiCommon.QuestionDialog()
	self.questionDialog.SetText(locale.REFINE_DO_YOU_SEPARATE_METIN)
	self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))
	self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
	self.questionDialog.Open()
	self.questionDialog.sourcePos = scrollSlotPos
	self.questionDialog.targetPos = targetSlotPos

def AttachMetinToItem(self, metinSlotPos, targetSlotPos):
	metinIndex = player.GetItemIndex(metinSlotPos)
	targetIndex = player.GetItemIndex(targetSlotPos)

	item.SelectItem(metinIndex)
	itemName = item.GetItemName()

	result = player.CanAttachMetin(metinIndex, targetSlotPos)

	if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))

	if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_SOCKET(itemName))

	elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))

	elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM)

	if player.ATTACH_METIN_OK != result:
		return

	self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)



def OverOutItem(self):
	self.wndItem.SetUsableItem(FALSE)
	if None != self.tooltipItem:
		self.tooltipItem.HideToolTip()

def OverInItem(self, overSlotPos):
	overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
	self.wndItem.SetUsableItem(FALSE)

	if mouseModule.mouseController.isAttached():
		attachedItemType = mouseModule.mouseController.GetAttachedType()
		if player.SLOT_TYPE_INVENTORY == attachedItemType:

			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()

			if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
				self.wndItem.SetUsableItem(TRUE)
				self.ShowToolTip(overSlotPos)
				return

	self.ShowToolTip(overSlotPos)


def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
	"´Ù¸¥ ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀΰ¡?"

	if item.IsRefineScroll(srcItemVNum):
		return TRUE
	elif item.IsMetin(srcItemVNum):
		return TRUE
	elif item.IsDetachScroll(srcItemVNum):
		return TRUE
	elif item.IsKey(srcItemVNum):
		return TRUE
	elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
		return TRUE
	else:
		if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
			return TRUE

	return FALSE

def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
	"´ë»ó ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ°¡?"

	if srcSlotPos == dstSlotPos:
		return FALSE

	if item.IsRefineScroll(srcItemVNum):
		if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
			return TRUE
	elif item.IsMetin(srcItemVNum):
		if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
			return TRUE
	elif item.IsDetachScroll(srcItemVNum):
		if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
			return TRUE
	elif item.IsKey(srcItemVNum):
		if player.CanUnlock(srcItemVNum, dstSlotPos):
			return TRUE

	elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
		return TRUE

	else:
		useType=item.GetUseType(srcItemVNum)

		if "USE_CLEAN_SOCKET" == useType:
			if self.__CanCleanBrokenMetinStone(dstSlotPos):
				return TRUE
		elif "USE_CHANGE_ATTRIBUTE" == useType:
			if self.__CanChangeItemAttrList(dstSlotPos):
				return TRUE
		elif "USE_ADD_ATTRIBUTE" == useType:
			if self.__CanAddItemAttr(dstSlotPos):
				return TRUE
		elif "USE_ADD_ATTRIBUTE2" == useType:
			if self.__CanAddItemAttr(dstSlotPos):
				return TRUE
		elif "USE_ADD_ACCESSORY_SOCKET" == useType:
			if self.__CanAddAccessorySocket(dstSlotPos):
				return TRUE
		elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:
			if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):
				return TRUE;

	return FALSE

def __CanCleanBrokenMetinStone(self, dstSlotPos):
	dstItemVNum = player.GetItemIndex(dstSlotPos)
	if dstItemVNum == 0:
		return FALSE

	item.SelectItem(dstItemVNum)

	if item.ITEM_TYPE_WEAPON != item.GetItemType():
		return FALSE

	for i in xrange(player.METIN_SOCKET_MAX_NUM):
		if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
			return TRUE

	return FALSE

def __CanChangeItemAttrList(self, dstSlotPos):
	dstItemVNum = player.GetItemIndex(dstSlotPos)
	if dstItemVNum == 0:
		return FALSE

	item.SelectItem(dstItemVNum)

	if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
		return FALSE

	for i in xrange(player.METIN_SOCKET_MAX_NUM):
		if player.GetItemAttribute(dstSlotPos, i) != 0:
			return TRUE

	return FALSE

def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
	dstItemVNum = player.GetItemIndex(dstSlotPos)
	if dstItemVNum == 0:
		return FALSE

	item.SelectItem(dstItemVNum)

	if item.GetItemType() != item.ITEM_TYPE_ARMOR:
		return FALSE

	if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
		return FALSE

	curCount = player.GetItemMetinSocket(dstSlotPos, 0)
	maxCount = player.GetItemMetinSocket(dstSlotPos, 1)

	if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
		return FALSE

	if curCount>=maxCount:
		return FALSE

	return TRUE

def __CanAddAccessorySocket(self, dstSlotPos):
	dstItemVNum = player.GetItemIndex(dstSlotPos)
	if dstItemVNum == 0:
		return FALSE

	item.SelectItem(dstItemVNum)

	if item.GetItemType() != item.ITEM_TYPE_ARMOR:
		return FALSE

	if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
		return FALSE

	curCount = player.GetItemMetinSocket(dstSlotPos, 0)
	maxCount = player.GetItemMetinSocket(dstSlotPos, 1)

	ACCESSORY_SOCKET_MAX_SIZE = 3
	if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
		return FALSE

	return TRUE

def __CanAddItemAttr(self, dstSlotPos):
	dstItemVNum = player.GetItemIndex(dstSlotPos)
	if dstItemVNum == 0:
		return FALSE

	item.SelectItem(dstItemVNum)

	if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
		return FALSE

	attrCount = 0
	for i in xrange(player.METIN_SOCKET_MAX_NUM):
		if player.GetItemAttribute(dstSlotPos, i) != 0:
			attrCount += 1

	if attrCount<4:
		return TRUE

	return FALSE

def ShowToolTip(self, slotIndex):
	if None != self.tooltipItem:
		self.tooltipItem.SetInventoryItem(slotIndex)

def OnTop(self):
	if None != self.tooltipItem:
		self.tooltipItem.SetTop()

def OnPressEscapeKey(self):
	self.Close()
	return TRUE

def UseItemSlot(self, slotIndex):
	if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
		return

	slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)

	self.__UseItem(slotIndex)
	mouseModule.mouseController.DeattachObject()
	self.OverOutItem()

def __UseItem(self, slotIndex):
	ItemVNum = player.GetItemIndex(slotIndex)
	item.SelectItem(ItemVNum)
	if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
		self.questionDialog = uiCommon.QuestionDialog()
		self.questionDialog.SetText(locale.INVENTORY_REALLY_USE_ITEM)
		self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
		self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
		self.questionDialog.Open()
		self.questionDialog.slotIndex = slotIndex
	else:
		self.__SendUseItemPacket(slotIndex)
		#net.SendItemUsePacket(slotIndex)

def __UseItemQuestionDialog_OnCancel(self):
	self.OnCloseQuestionDialog()

def __UseItemQuestionDialog_OnAccept(self):
	self.__SendUseItemPacket(self.questionDialog.slotIndex)

	if self.questionDialog:
		self.questionDialog.Close()
	self.questionDialog = None

def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
	# °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
	if uiPrivateShopBuilder.IsBuildingPrivateShop():
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
		return

	net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)

def __SendUseItemPacket(self, slotPos):
	# °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
	if uiPrivateShopBuilder.IsBuildingPrivateShop():
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
		return

	## WARP_SCROLL_BLOCK
	# Atlasinfo.txt szerint kell megadni a map neveket!
	itemVNum = player.GetItemIndex(slotPos)
	if itemVNum in WARP_SCROLLS:
		MapName = str(background.GetCurrentMapName())
		if MapName == "season1/metin2_map_oxevent" or MapName =="metin2_map_deviltower1"  or MapName == "metin2_map_t1" or MapName == "metin2_map_t2" or MapName == "metin2_map_t3":
			chat.AppendChat(chat.CHAT_TYPE_INFO, "Ezen a területen nem használatod a Visszaszállító tekercset!")
			return TRUE
	## END_OF_WARP_SCROLL_BLOCK

	net.SendItemUsePacket(slotPos)

def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
	# °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
	if uiPrivateShopBuilder.IsBuildingPrivateShop():
		chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
		return

	net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)

##BonusPageDialog
def OnUpdate(self):
	if self.isLoaded == 1:
		self.__LoadRefreshBonus()
##BonusPageDialog

Link to comment
Share on other sites

  • 0

Tu remplace tous tes fichiers par ceux que herostar ta donné.

Mettez 11 imbéciles d'un coté, 10 philosophes de l'autre...
Les imbéciles l'emporteront !
C'est ca, la démocratie...

Link to comment
Share on other sites

  • 0
  • Retraité

Bonjour,

 

Le sujet contient la balise [glow=#800000][Résolu][/glow] ou reste sans réponse depuis deux semaines ou plus, de ce fait il a été déplacé dans la section "Résolu ou sans réponse".

 

Cordialement.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



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.