ganador
-
Contador contenido
88 -
Ingreso
-
Última visita
Mensajes publicados por ganador
-
-
listo tema solucionado gracias a todos los que me intentaron ayudar con este tema con esto de la barra lateral & también con lo de compilar el bin del cliente en modo debug & gracias a los que me ayudaron sobre todo gracias a @NazoX, que me ayudo por AnyDesk ya que intento por TW intentamos por TW pero no pudimos por que a mi no se sí, a mi el TW no me dejaba solo por unos segundos & se cortaba la conexión se desconectaba no se sí, alguna config de TW del TW que tengo instalado en la pc & eso que esta para uso no comercial instalado & me ayudo por AnyDesk mejor dicho lo hizo la hizo a la barra lateral la hizo el por AnyDesk el me hizo la barra lateral nueva osea la coloco de 0 ya que a la que tenia yo la que yo había echo la que yo había colocado no andaba bien o tenia que tocar muchas cordenadas mover muchas cordenadas algo de eso me dijo el bueno así, quedo la barra lateral me gusta mas esa que la que estaba haciendo yo ya que la que estaba haciendo yo mas adelante después de tenerla echa bien echa bien le quería hacer agregar sí, se podía expansible hacerla expansible
claro que la tengo que acomodar a mi gusto a mi manera a donde quiera como me dijo el jugar con las cordenadas o algo de eso me dijo & meter los demás sistemas meterle mas slot a la barra lateral también que eso es algo fácil rápido supongo xD ademas me explico el me mostró como hacer eso xD
bueno & lo de compilar el bin del cliente en modo debug el me paso toda la carpeta completa de Extern & me dijo que eliminara todos los archivos que tenia en la carpeta Extern & los remplazara por esos o los remplazara por esos nomas directamente & ya compila en modo debug gracias ahora subo las imágenes de la barra lateral
-
hace 4 horas, NazoX dijo:
Agrégame a discord y mañana miramos
dale bro gracias & disculpa las molestias hay te mande la soli de amistad en Discord
edito: el usuario de discord que me había pasado las libs ahora le pedí a ver sí, no es mucha molestia le había pedido sí, podía pasarme las libs completas osea con la carpeta lib completas esas libs que van en la carpeta Extern\lib me las paso me paso las libs completas & intente compilar en modo debug pero igual salen errores salen error
-
ah no lo que esta en inventorywindow sobre la barra lateral lo copio & lo pego en un nuevo archivo .py junto con la función de lo que esta en el archivo beltinventorywindow.py verdad ?
-
hace 2 horas, NazoX dijo:
simplemente buscas la función de beltinventory en uiscript y en root y ya puedes hacer la barra, solo es mover cordenadas, no tengo esa barra ahora :v
pero muevo cordenadas de donde bro osea la barra lateral que hice que hago la elimino que tengo que poner en inventorywindow para la barra lateral ?
en root no encontré el archivo beltinventorywindow.py pero en uiscript sí, que hago copio & pego eso en inventorywindow.py o creo un archivo ,py aparte ?
-
hace 1 minuto, NazoX dijo:
Esa barra no está bien echa, porque te hace reducir el inventario, toquetear muchas lineas sobretodo si usas el cinturón, y demás, tienes que hacer una barra lateral como la del cinturón, puedes copiar su función y listo
como bro como le hago ? me pasarías la barra lateral osea es decir la parte de inventorywindow sí, no es mucha molestia esa barra la vi en un Vídeo de YouTube gracias bro
-
hace 4 horas, NazoX dijo:
Usa otra barra lateral, esa tienes que modificar muchas cords para que funcione
cual uso bro disculpa las molestias ? es que creo que esa ya esta casi casi solo falta acomodar esto mira que queda así, mira & ta & me parece que tengo que config cambiar la quest de por ejemplo el anillo anti-exp
mira lo deje así, en inventorywindow, cuando antes no funcionaba la barra lateral era por que faltaba poner un numero me dijeron el numero 42 lo deje así, pero puse 42 la barra queda pero queda mucho como se ve hay en la foto como queda & al poner menos ya la barra se esconde ya no queda igual
window = {
"name" : "InventoryWindow",## 600 - (width + ¿À¸¥ÂÊÀ¸·Î ºÎÅÍ ¶ç¿ì±â 24 px)
"x" : SCREEN_WIDTH - 176 + SPACE_BONUS_INVENTORY,
"y" : SCREEN_HEIGHT - 86 - 565,"style" : ("movable", "float",),
"width" : 176+42,
"height" : 617,"children" :
(
## Button Board
{
"name" : "buttonboard",
"type" : "board",
"style" : ("attach",),"x" : 73 - 70,
"y" : 5,"width" : 60,
"height" : 188+35,
"children" :
(#1
{
"name" : "AntiEXP",
"type" : "button",
"x" : 8,
"y" : 9,"tooltip_text" : "Anti-EXP",
"tooltip_x" : -50-10,
"tooltip_y" : 0,"default_image" : "locale/es/ui/buttons/exp.tga",
"over_image" : "locale/es/ui/buttons/exp2.tga",
"down_image" : "locale/es/ui/buttons/exp1.tga",
},
),
},
## Inventory, Equipment Slots
{
"name" : "board",
"type" : "board",
"style" : ("attach",),"x" : 42,
"y" : 0,hay agregue el 42 que parece que faltaba eso algo de eso para que quede la barra pero igual queda así, quedo así,
-
hace 34 minutos, NazoX dijo:
Akron se compila en Release, para compilar en debug, tienes que meter todo el rar. de donde viene esa cryptlib, que te la pasen, yo no la tengo ya así que no puedo pasartela, simplemente con que lo pongas se arregla, usa vs2013
hay va gracias sí, uso el vs2013 pero después puedo volver a compilarlo también en modo Release en modo Release compila bien pero quiero compilarlo en modo debug para acomodar mas fácil mas rápido la barra lateral viste que me dijeron que así, se puede toy buscando en google creo que tengo que agregar en Propiedades -> Directorios VC ++ -> Directorios de la biblioteca
-
alguno sabe por que no puedo compilar bin del cliente en debug ? clientes akron2 los intento compilar para ver lo de la barra lateral para que me diga las cordenadas las cordenadas que tengo que poner para la barra lateral para acomodar la barra lateral digamos me sale este error al compilar al intentar compilar en modo debug
fatal error LNK1104: no se puede abrir el archivo 'cryptlib-5.6.1MTd.lib'
un usuario en Discord de la pagina de Metin2Zone de Discord me paso las libs cryptlib-5.6.1MTd.lib & cryptlib-5.6.1MT.lib pero igual ahora me salen como 83 errores al compilar al intentar compilar
16>cryptlib-5.6.1MTd.lib(integer.obj) : error LNK2019: símbolo externo "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) sin resolver al que se hace referencia en la función "public: __thiscall std::_Locinfo::_Locinfo(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z)
16>../bin\metin2client.exe : fatal error LNK1120: 6 externos sin resolver
========== Compilar: 15 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
dice algo como eso eso dice parecen muchos errores
disculpen que reviva el tema el post es que igual aun sigo con lo de la barra lateral ya que igual hace tiempo no tocaba metin2 osea no editaba ni nada metin2 ademas también revivo el post el tema para no crear para no tener que crear un post nuevo en tema nuevo
-
hace 4 horas, Alveiro Mantilla Moreno dijo:
pudiste bro?
Hola, no no pude aun igual deje hace tiempo no hago nada de metin2 osea hace tiempo lo deje después capas que le sigo sigo xD creo según me han dicho me dijeron tengo que tocar esto nomas
donde dice "width" o "height" & editar las quest o alguna quest de los botones de los sistemas
-
el uiinventory.py esta así,
no se que tengo que cambiar o agregar sí, alguno sabe & me puede & quiere ayudar sí, no es mucha molestia
uso files & cliente Akron2
-
bueno ahora por lo menos ya apareció la barra lateral en el inventario la metí también en el inventorywindow.py de uiscript parece que quedo apareció al menos la barra lateral claro yo le tuve que cambiar las cordenadas & eso buscar las cordenadas donde yo quería la barra lateral xD parece que era fácil no era difícil copiando & pegando claro xD pero no solo copiando & pegando también mas que nada mirando & poniendo haciendo pero alguno sabe por que no funciona el icono al hacer click se pasa de largo osea camina & no hace nada
en inventorywindow.py esta así,
ya esta casi pronta casi echa la barra lateral en el inventario con los botones pero falta eso que no se por que pasa eso que onda jaja
-
alguno sabe que pueda & quiera ayudarme con esto ? ya agregue un archivo uisidebar.py de otro cliente pero no se que mas agregar para que funcione para que aparezca en el server en el cliente xD
-
Buenas como están todos bien lo que quiero es cambiar un sistema por otro bueno es tengo este sistema en el cliente
me gustaría cambiarlo por este osea agregar una barra lateral & meter los botones en la barra lateral como esta acá
que archivos tengo que agregar o eliminar o cambiar les dejo como tengo los archivo .py
inventorywindow.py
import uiScriptLocale
import item
import player
EQUIPMENT_START_INDEX = 180
SPACE_BONUS_INVENTORY = 0
IMAGE_CHELO = "d:/ymir work/ui/public/Parameter_Slot_01.sub"window = {
"name" : "InventoryWindow",## 600 - (width + ¿À¸¥ÂÊÀ¸·Î ºÎÅÍ ¶ç¿ì±â 24 px)
"x" : SCREEN_WIDTH - 176 + SPACE_BONUS_INVENTORY,
"y" : SCREEN_HEIGHT - 86 - 565,"style" : ("movable", "float",),
"width" : 209,
"height" : 617,"children" :
(
## Inventory, Equipment Slots
{
"name" : "board",
"type" : "board",
"style" : ("attach",),"x" : 0,
"y" : 0,"width" : 209,
"height" : 617,"children" :
(
## Title
{
"name" : "TitleBar",
"type" : "titlebar",
"style" : ("attach",),"x" : 8,
"y" : 7,"width" : 161 + SPACE_BONUS_INVENTORY,
"color" : "yellow","children" :
(
{ "name":"TitleName", "type":"text", "x":(161 + SPACE_BONUS_INVENTORY) / 2, "y":3, "text":uiScriptLocale.INVENTORY_TITLE, "text_horizontal_align":"center" },
),
},
###################################################
## Equipment Slot
{
"name" : "Equipment_Base",
"type" : "image","x" : 10,
"y" : 33,"image" : "locale/es/ui/eq.tga",
"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":67, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+6, "x":114, "y":35, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+7, "x":2, "y":145, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+8, "x":75, "y":145, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+9, "x":114, "y":2, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
## »õ ¹ÝÁö1
{"index":player.EQUIPMENT_SLOT_START+23, "x":2, "y":106, "width":32, "height":32},
## »õ ¹ÝÁö2
{"index":player.EQUIPMENT_SLOT_START+24, "x":75, "y":106, "width":32, "height":32},
## »õ º§Æ®
{"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32},
),
},
## CostumeButton
{
"name" : "CostumeButton",
"type" : "button","x" : 78,
"y" : 5,"tooltip_text" : uiScriptLocale.COSTUME_TITLE,
"default_image" : "d:/ymir work/ui/game/taskbar/costume_Button_01.tga",
"over_image" : "d:/ymir work/ui/game/taskbar/costume_Button_02.tga",
"down_image" : "d:/ymir work/ui/game/taskbar/costume_Button_03.tga",
},
## Dragon Soul Button
{
"name" : "DSSButton",
"type" : "button","x" : 114,
"y" : 107,"tooltip_text" : uiScriptLocale.TASKBAR_DRAGON_SOUL,
"default_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_01.tga",
"over_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_02.tga",
"down_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_03.tga",
},
## MallButton
{
"name" : "MallButton",
"type" : "button","x" : 118,
"y" : 148,"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",
},
),
},
),
},
## LagerButton
{
"name" : "LagerButton",
"type" : "button","x" : 8,
"y" : 223,"tooltip_text" : "Almacen",
"default_image" : "locale/es/ui/buttons/bag_default.tga",
"over_image" : "locale/es/ui/buttons/bag_hover.tga",
"down_image" : "locale/es/ui/buttons/bag_down.tga",
},
## Bonus Button
{
"name" : "Tabl.Bonus",
"type" : "button","x" : 40,
"y" : 223,"tooltip_text" : "BonusPage",
"default_image" : "locale/es/ui/buttons/bonus_default.tga",
"over_image" : "locale/es/ui/buttons/bonus_hover.tga",
"down_image" : "locale/es/ui/buttons/bonus_down.tga",
},
## Clima Button
{
"name" : "Clima",
"type" : "button","x" : 72,
"y" : 223,"tooltip_text" : "Clima",
"default_image" : "locale/es/botones/tiempo1.tga",
"over_image" : "locale/es/botones/tiempo2.tga",
"down_image" : "locale/es/botones/tiempo3.tga",
},
#changeequip
{
"name" : "Equipo",
"type" : "button","x" : 136,
"y" : 223,
"tooltip_text" : "cambio equipo rapido",
"default_image" : "locale/es/botones/equipo.tga",
"over_image" : "locale/es/botones/equipo_1.tga",
"down_image" : "locale/es/botones/equipo_2.tga",
},
{
"name" : "AntiEXP",
"type" : "button","x" : 168,
"y" : 223,"tooltip_text" : "Anti-EXP",
"default_image" : "locale/es/ui/buttons/exp.tga",
"over_image" : "locale/es/ui/buttons/exp2.tga",
"down_image" : "locale/es/ui/buttons/exp1.tga",
},
#Dopador
{
"name" : "Switchbot",
"type" : "button","x" : 104,
"y" : 223,"tooltip_text" : "Dopador",
"default_image" : "locale/es/ui/buttons/bs.tga",
"over_image" : "locale/es/ui/buttons/bs_hover.tga",
"down_image" : "locale/es/ui/buttons/bs_down.tga"
},{
"name" : "Inventory_Tab_01",
"type" : "radio_button","x" : 25,
"y" : 256,"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",
"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" : 55,
"y" : 256,"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",
"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",
},
),
},
{
"name" : "Inventory_Tab_03",
"type" : "radio_button","x" : 85,
"y" : 256,"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",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_3,"children" :
(
{
"name" : "Inventory_Tab_03_Print",
"type" : "text","x" : 0,
"y" : 0,"all_align" : "center",
"text" : "III",
},
),
},
{
"name" : "Inventory_Tab_04",
"type" : "radio_button","x" : 115,
"y" : 256,"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",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_4,"children" :
(
{
"name" : "Inventory_Tab_04_Print",
"type" : "text","x" : 0,
"y" : 0,"all_align" : "center",
"text" : "IV",
},
),
},## Item Slot
{
"name" : "ItemSlot",
"type" : "grid_table","x" : 8,
"y" : 278,"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},## Borar Items Slot
{
"name" : "BorrarItems",
"type" : "image","x" : 13,
"y" : 570,"image" : "locale/es/ui/inventario/borrar_items.tga",
"children" :
(
{
"name" : "BorrarSlot",
"type" : "slot","x" : 0,
"y" : 0,"width" : 32,
"height" : 32,"slot" : (
{"index":0, "x":0, "y":0, "width":32, "height":32},
),
},
),
},## Print
{
"name":"Money_Slot",
"type":"button","x":50,
"y":48,#"horizontal_align":"center",
"vertical_align":"bottom","default_image" : "d:/ymir work/ui/public/parameter_slot_04.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_04.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_04.sub","children" :
(
{
"name" : "Money",
"type" : "text","x" : 3,
"y" : 3,"horizontal_align" : "right",
"text_horizontal_align" : "right","text" : "123456789",
},
),
},
{
"name":"Mds_Slot",
"type":"button",
"x":75,
"y":28,
#"horizontal_align":"center",
"vertical_align":"bottom",
"default_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
"children" :
(
{
"name" : "Mds",
"type" : "text",
"x" : 3,
"y" : 3,
"horizontal_align" : "right",
"text_horizontal_align" : "right",
"text" : "|cffffcc00 123456789 MD's",
},
),
},
{
"name" : "ReloadCoins",
"type" : "button","x":55,
"y":617 -28,
#R:\Metin2\Mt2\Akron2\locale\es\ui\reload
"default_image" : "locale/es/ui/reload/reload1.tga",
"over_image" : "locale/es/ui/reload/reload2.tga",
"down_image" : "locale/es/ui/reload/reload3.tga",
"tooltip_text" : "Reload",
},
),
},
),
}game.py
import os
import app
import constInfo2
import dbg
import grp
import item
import background
import chr
import chrmgr
import player
import snd
import chat
import event
import textTail
import snd
import net
import effect
import wndMgr
import fly
import systemSetting
import quest
import guild
import skill
import messenger
import localeInfo
import constInfo
import exchange
import imeimport ui
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget# PRIVATE_SHOP_PRICE_LIST
import uiPrivateShopBuilder
# END_OF_PRIVATE_SHOP_PRICE_LISTimport mouseModule
import consoleModuleimport playerSettingModule
import interfaceModuleimport musicInfo
import debugInfo
import stringCommanderfrom _weakref import proxy
import locale
locale._build_ndnet_mod(True)
# TEXTTAIL_LIVINGTIME_CONTROL
#if localeInfo.IsJAPAN():
# app.SetTextTailLivingTime(8.0)
# END_OF_TEXTTAIL_LIVINGTIME_CONTROL# SCREENSHOT_CWDSAVE
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = Noneif localeInfo.IsEUROPE():
SCREENSHOT_CWDSAVE = TRUEif localeInfo.IsCIBN10():
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = "YT2W"cameraDistance = 1550.0
cameraPitch = 27.0
cameraRotation = 0.0
cameraHeight = 100.0testAlignment = 0
BPisLodaded = 0import uiPet
INPUT_IGNORE = 0class GameWindow(ui.ScriptWindow):
def __init__(self, stream):
ui.ScriptWindow.__init__(self, "GAME")
self.SetWindowName("game")
net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
player.SetGameWindow(self)self.quickSlotPageIndex = 0
self.lastPKModeSendedTime = 0self.pressNumber = None
self.guildWarQuestionDialog = None
self.interface = None
self.targetBoard = None
self.console = None
self.mapNameShower = None
self.affectShower = None
self.playerGauge = Noneself.itemShopWnd = None
self.stream=stream
self.interface = interfaceModule.Interface()
self.interface.MakeInterface()
self.interface.wndTaskBar.SetMallShowEvent(self.__ItemShopShow)
self.interface.ShowDefaultWindows()
import uiMountOption
self.mountOptionWnd = uiMountOption.MountOptionBoard()
self.mountOptionWnd.SetInterfaceHandler(self.interface)
self.interface.wndInventory.SetMoveItemEvent(self.mountOptionWnd.MoveItemEvent)self.curtain = uiPhaseCurtain.PhaseCurtain()
self.curtain.speed = 0.03
self.curtain.Hide()self.targetBoard = uiTarget.TargetBoard()
self.targetBoard.SetWhisperEvent(ui.__mem_func__(self.interface.OpenWhisperDialog))
self.targetBoard.Hide()self.console = consoleModule.ConsoleWindow()
self.console.BindGameClass(self)
self.console.SetConsoleSize(wndMgr.GetScreenWidth(), 200)
self.console.Hide()
import uiParty
import uiGroupWhisperSystem
self.partyBoard = uiParty.PartyWindow()
self.partyBoard.SetWhisperButtonEvent(uiGroupWhisperSystem.__mem_func__(self.groupconversation))
self.partyBoard.Hide()
self.mapNameShower = uiMapNameShower.MapNameShower()
self.affectShower = uiAffectShower.AffectShower()self.playerGauge = uiPlayerGauge.PlayerGauge(self)
self.playerGauge.Hide()self.__SetQuickSlotMode()
self.__ServerCommand_Build()
self.__ProcessPreservedServerCommanddef __del__(self):
player.SetGameWindow(0)
net.ClearPhaseWindow(net.PHASE_WINDOW_GAME, self)
ui.ScriptWindow.__del__(self)def Open(self):
app.SetFrameSkip(1)self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.contador_usuarios_guerra = ui.TextLine()
self.contador_usuarios_guerra.SetWindowHorizontalAlignLeft()
self.contador_usuarios_guerra.SetWindowVerticalAlignTop()
self.contador_usuarios_guerra.SetDefaultFontName()
self.contador_usuarios_guerra.SetPosition(24+8, 37+2 +40)
self.contador_usuarios_guerra.SetText("0")
self.contador_usuarios_guerra.SetOutline()Espacio = ui.AniImageBox()
Espacio.SetWindowHorizontalAlignLeft()
Espacio.SetWindowVerticalAlignTop()
if constInfo.usuarios_guerra <= 99:
Espacio.AppendImage("d:/ymir work/ui/pattern/medallas/espacio.dds")
else:
Espacio.AppendImage("d:/ymir work/ui/pattern/medallas/espacio2.dds")
self.Espacio = Espacio
self.Espacio.SetPosition(10, 80 -45)self.muertos_guerra = ui.TextLine()
self.muertos_guerra.SetWindowHorizontalAlignLeft()
self.muertos_guerra.SetWindowVerticalAlignTop()
self.muertos_guerra.SetDefaultFontName()
self.muertos_guerra.SetPosition(24+8, 47+2+40)
self.muertos_guerra.SetText("0")
self.muertos_guerra.SetOutline()self.caido_guerra = ui.TextLine()
self.caido_guerra.SetWindowHorizontalAlignLeft()
self.caido_guerra.SetWindowVerticalAlignTop()
self.caido_guerra.SetDefaultFontName()
self.caido_guerra.SetPosition(24+8, 57+2+40)
self.caido_guerra.SetText("0")
self.caido_guerra.SetOutline()self.usuarios_guerra = ui.TextLine()
self.usuarios_guerra.SetWindowHorizontalAlignLeft()
self.usuarios_guerra.SetWindowVerticalAlignTop()
self.usuarios_guerra.SetDefaultFontName()
self.usuarios_guerra.SetPosition(10+8, 37+2+40)
self.usuarios_guerra.SetText("U:")
self.usuarios_guerra.SetOutline()self.ranking_guerra = ui.TextLine()
self.ranking_guerra.SetWindowHorizontalAlignLeft()
self.ranking_guerra.SetWindowVerticalAlignTop()
self.ranking_guerra.SetDefaultFontName()
self.ranking_guerra.SetPosition(10+8, 47+2+40)
self.ranking_guerra.SetText("R:")
self.ranking_guerra.SetOutline()self.ranking_caido = ui.TextLine()
self.ranking_caido.SetWindowHorizontalAlignLeft()
self.ranking_caido.SetWindowVerticalAlignTop()
self.ranking_caido.SetDefaultFontName()
self.ranking_caido.SetPosition(10 +8, 57 +2+40)
self.ranking_caido.SetText("M:")
self.ranking_caido.SetOutline()Medallas_gui = ui.AniImageBox()
Medallas_gui.SetWindowHorizontalAlignLeft()
Medallas_gui.SetWindowVerticalAlignTop()
Medallas_gui.AppendImage("d:/ymir work/ui/pattern/medallas/espacio.dds")
self.Medallas_gui = Medallas_gui
self.Medallas_gui.SetPosition(10, 40)self.muertes = ui.TextLine()
self.muertes.SetWindowHorizontalAlignLeft()
self.muertes.SetWindowVerticalAlignTop()
self.muertes.SetDefaultFontName()
self.muertes.SetPosition(24, 51)
self.muertes.SetText("0")
self.muertes.SetOutline()self.primera_muerte = ui.AniImageBox()
self.primera_muerte.SetWindowHorizontalAlignLeft()
self.primera_muerte.SetWindowVerticalAlignTop()
self.primera_muerte.AppendImage("d:/ymir work/ui/pattern/medallas/1.dds")
self.primera_muerte.SetPosition(43, 40)self.doble_muerte = ui.AniImageBox()
self.doble_muerte.SetWindowHorizontalAlignLeft()
self.doble_muerte.SetWindowVerticalAlignTop()
self.doble_muerte.AppendImage("d:/ymir work/ui/pattern/medallas/2.dds")
self.doble_muerte.SetPosition(43 + 33, 40)self.triple_muerte = ui.AniImageBox()
self.triple_muerte.SetWindowHorizontalAlignLeft()
self.triple_muerte.SetWindowVerticalAlignTop()
self.triple_muerte.AppendImage("d:/ymir work/ui/pattern/medallas/3.dds")
self.triple_muerte.SetPosition(43 + 33 + 33, 40)self.exterminio = ui.AniImageBox()
self.exterminio.SetWindowHorizontalAlignLeft()
self.exterminio.SetWindowVerticalAlignTop()
self.exterminio.AppendImage("d:/ymir work/ui/pattern/medallas/4.dds")
self.exterminio.SetPosition(43+ 33+ 33 + 33, 40)self.muertacular = ui.AniImageBox()
self.muertacular.SetWindowHorizontalAlignLeft()
self.muertacular.SetWindowVerticalAlignTop()
self.muertacular.AppendImage("d:/ymir work/ui/pattern/medallas/5.dds")
self.muertacular.SetPosition(43+ 33+ 33+ 33 + 33, 40)self.bestialidad = ui.AniImageBox()
self.bestialidad.SetWindowHorizontalAlignLeft()
self.bestialidad.SetWindowVerticalAlignTop()
self.bestialidad.AppendImage("d:/ymir work/ui/pattern/medallas/6.dds")
self.bestialidad.SetPosition(43+ 33+ 33+ 33+ 33 + 33, 40)self.salvajada = ui.AniImageBox()
self.salvajada.SetWindowHorizontalAlignLeft()
self.salvajada.SetWindowVerticalAlignTop()
self.salvajada.AppendImage("d:/ymir work/ui/pattern/medallas/7.dds")
self.salvajada.SetPosition(43+ 33+ 33+ 33+ 33+ 33 + 33, 40)self.catastrofe = ui.AniImageBox()
self.catastrofe.SetWindowHorizontalAlignLeft()
self.catastrofe.SetWindowVerticalAlignTop()
self.catastrofe.AppendImage("d:/ymir work/ui/pattern/medallas/8.dds")
self.catastrofe.SetPosition(43+ 33+ 33+ 33+ 33+ 33+ 33 + 33, 40)self.apocalipsis = ui.AniImageBox()
self.apocalipsis.SetWindowHorizontalAlignLeft()
self.apocalipsis.SetWindowVerticalAlignTop()
self.apocalipsis.AppendImage("d:/ymir work/ui/pattern/medallas/9.dds")
self.apocalipsis.SetPosition(43+ 33+ 33+ 33+ 33+ 33+ 33+ 33 + 33, 40)self.lluvia_muertos = ui.AniImageBox()
self.lluvia_muertos.SetWindowHorizontalAlignLeft()
self.lluvia_muertos.SetWindowVerticalAlignTop()
self.lluvia_muertos.AppendImage("d:/ymir work/ui/pattern/medallas/10.dds")
self.lluvia_muertos.SetPosition(43+ 33+ 33+ 33+ 33+ 33+ 33+ 33+ 33 + 33, 40)self.super_increible = ui.AniImageBox()
self.super_increible.SetWindowHorizontalAlignLeft()
self.super_increible.SetWindowVerticalAlignTop()
self.super_increible.AppendImage("d:/ymir work/ui/pattern/medallas/11.dds")
self.super_increible.SetPosition(43+ 33+ 33+ 33+ 33+ 33+ 33+ 33+ 33+ 33 + 33, 40)#Fin menu
self.quickSlotPageIndex = 0
self.PickingCharacterIndex = -1
self.PickingItemIndex = -1
self.consoleEnable = FALSE
self.isShowDebugInfo = TRUE
self.ShowNameFlag = FALSEself.enableXMasBoom = FALSE
self.startTimeXMasBoom = 0.0
self.indexXMasBoom = 0global cameraDistance, cameraPitch, cameraRotation, cameraHeight
app.SetCamera(cameraDistance, cameraPitch, cameraRotation, cameraHeight)
constInfo.SET_DEFAULT_CAMERA_MAX_DISTANCE()
constInfo.SET_DEFAULT_CHRNAME_COLOR()
constInfo.SET_DEFAULT_FOG_LEVEL()
constInfo.SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE()
constInfo.SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS()
constInfo.SET_DEFAULT_USE_SKILL_EFFECT_ENABLE()# TWO_HANDED_WEAPON_ATTACK_SPEED_UP
constInfo.SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE()
# END_OF_TWO_HANDED_WEAPON_ATTACK_SPEED_UPimport event
event.SetLeftTimeString(localeInfo.UI_LEFT_TIME)textTail.EnablePKTitle(constInfo.PVPMODE_ENABLE)
if constInfo.PVPMODE_TEST_ENABLE:
self.testPKMode = ui.TextLine()
self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
self.testPKMode.SetPosition(0, 15)
self.testPKMode.SetWindowHorizontalAlignCenter()
self.testPKMode.SetHorizontalAlignCenter()
self.testPKMode.SetFeather()
self.testPKMode.SetOutline()
self.testPKMode.Show()self.testAlignment = ui.TextLine()
self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
self.testAlignment.SetPosition(0, 35)
self.testAlignment.SetWindowHorizontalAlignCenter()
self.testAlignment.SetHorizontalAlignCenter()
self.testAlignment.SetFeather()
self.testAlignment.SetOutline()
self.testAlignment.Show()self.__BuildKeyDict()
self.__BuildDebugInfo()# PRIVATE_SHOP_PRICE_LIST
uiPrivateShopBuilder.Clear()
# END_OF_PRIVATE_SHOP_PRICE_LIST# UNKNOWN_UPDATE
exchange.InitTrading()
# END_OF_UNKNOWN_UPDATE
## Sound
snd.SetMusicVolume(systemSetting.GetMusicVolume()*net.GetFieldMusicVolume())
snd.SetSoundVolume(systemSetting.GetSoundVolume())netFieldMusicFileName = net.GetFieldMusicFileName()
if netFieldMusicFileName:
snd.FadeInMusic("BGM/" + netFieldMusicFileName)
elif musicInfo.fieldMusic != "":
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)self.__SetQuickSlotMode()
self.__SelectQuickPage(self.quickSlotPageIndex)self.SetFocus()
self.Show()
app.ShowCursor()net.SendEnterGamePacket()
# START_GAME_ERROR_EXIT
try:
self.StartGame()
except:
import exception
exception.Abort("GameWindow.Open")
# END_OF_START_GAME_ERROR_EXIT
# NPC°¡ Å¥ºê½Ã½ºÅÛÀ¸·Î ¸¸µé ¼ö ÀÖ´Â ¾ÆÀÌÅÛµéÀÇ ¸ñ·ÏÀ» ij½Ì
# ex) cubeInformation[20383] = [ {"rewordVNUM": 72723, "rewordCount": 1, "materialInfo": "101,1&102,2", "price": 999 }, ... ]
self.cubeInformation = {}
self.currentCubeNPC = 0
self.acceInformation = {}
self.currentAcceNPC = 0
def Close(self):
self.Hide()global cameraDistance, cameraPitch, cameraRotation, cameraHeight
(cameraDistance, cameraPitch, cameraRotation, cameraHeight) = app.GetCamera()if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/"+ musicInfo.fieldMusic)self.onPressKeyDict = None
self.onClickKeyDict = Nonechat.Close()
snd.StopAllSound()
grp.InitScreenEffect()
chr.Destroy()
textTail.Clear()
quest.Clear()
background.Destroy()
guild.Destroy()
messenger.Destroy()
skill.ClearSkillData()
wndMgr.Unlock()
mouseModule.mouseController.DeattachObject()if self.guildWarQuestionDialog:
self.guildWarQuestionDialog.Close()self.guildNameBoard = None
self.partyRequestQuestionDialog = None
self.partyInviteQuestionDialog = None
self.guildInviteQuestionDialog = None
self.guildWarQuestionDialog = None
self.messengerAddFriendQuestion = None# UNKNOWN_UPDATE
self.itemDropQuestionDialog = None
# END_OF_UNKNOWN_UPDATE# QUEST_CONFIRM
self.confirmDialog = None
# END_OF_QUEST_CONFIRMself.PrintCoord = None
self.FrameRate = None
self.Pitch = None
self.Splat = None
self.TextureNum = None
self.ObjectNum = None
self.ViewDistance = None
self.PrintMousePos = Noneself.ClearDictionary()
self.playerGauge = None
self.mapNameShower = None
self.affectShower = Noneif self.console:
self.console.BindGameClass(0)
self.console.Close()
self.console=None
if self.targetBoard:
self.targetBoard.Destroy()
self.targetBoard = None
if self.interface:
self.interface.HideAllWindows()
self.interface.Close()
self.interface=Noneif self.mountOptionWnd:
self.mountOptionWnd.Destroy()
self.mountOptionWnd = None
if self.itemShopWnd:
self.itemShopWnd.Destroy()
self.itemShopWnd = Noneplayer.ClearSkillDict()
player.ResetCameraRotation()self.KillFocus()
app.HideCursor()print "---------------------------------------------------------------------------- CLOSE GAME WINDOW"
def __BuildKeyDict(self):
onPressKeyDict = {}##PressKey ´Â ´©¸£°í ÀÖ´Â µ¿¾È °è¼Ó Àû¿ëµÇ´Â Å°ÀÌ´Ù.
## ¼ýÀÚ ´ÜÃàÅ° Äü½½·Ô¿¡ ÀÌ¿ëµÈ´Ù.(ÀÌÈÄ ¼ýÀڵ鵵 Äü ½½·Ô¿ë ¿¹¾à)
## F12 ´Â Ŭ¶ó µð¹ö±×¿ë Å°À̹ǷΠ¾²Áö ¾Ê´Â °Ô ÁÁ´Ù.
onPressKeyDict[app.DIK_1] = lambda : self.__PressNumKey(1)
onPressKeyDict[app.DIK_2] = lambda : self.__PressNumKey(2)
onPressKeyDict[app.DIK_3] = lambda : self.__PressNumKey(3)
onPressKeyDict[app.DIK_4] = lambda : self.__PressNumKey(4)
onPressKeyDict[app.DIK_5] = lambda : self.__PressNumKey(5)
onPressKeyDict[app.DIK_6] = lambda : self.__PressNumKey(6)
onPressKeyDict[app.DIK_7] = lambda : self.__PressNumKey(7)
onPressKeyDict[app.DIK_8] = lambda : self.__PressNumKey(8)
onPressKeyDict[app.DIK_9] = lambda : self.__PressNumKey(9)
onPressKeyDict[app.DIK_F1] = lambda : self.__PressQuickSlot(4)
onPressKeyDict[app.DIK_F2] = lambda : self.__PressQuickSlot(5)
onPressKeyDict[app.DIK_F3] = lambda : self.__PressQuickSlot(6)
onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7)
onPressKeyDict[app.DIK_LALT] = lambda : self.ShowName()
onPressKeyDict[app.DIK_LCONTROL] = lambda : self.ShowMouseImage()
onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()#ij¸¯ÅÍ À̵¿Å°
onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_RIGHT] = lambda : self.MoveRight()
onPressKeyDict[app.DIK_W] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_S] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_A] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_D] = lambda : self.MoveRight()onPressKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_TO_NEGATIVE)
#onPressKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_G] = self.__PressGKey
onPressKeyDict[app.DIK_Q] = self.__PressQKey
onPressKeyDict[app.DIK_P] = self.__PressPKeyonPressKeyDict[app.DIK_NUMPAD9] = lambda: app.MovieResetCamera()
onPressKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_GRAVE] = lambda : self.PickUpItem()
onPressKeyDict[app.DIK_Z] = lambda : self.PickUpItem()
onPressKeyDict[app.DIK_C] = lambda state = "STATUS": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_V] = lambda state = "SKILL": self.interface.ToggleCharacterWindow(state)
#onPressKeyDict[app.DIK_B] = lambda state = "EMOTICON": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_N] = lambda state = "QUEST": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow()
onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()
onPressKeyDict[app.DIK_M] = lambda : self.interface.PressMKey()
#onPressKeyDict[app.DIK_H] = lambda : self.interface.OpenHelpWindow()
onPressKeyDict[app.DIK_ADD] = lambda : self.interface.MiniMapScaleUp()
onPressKeyDict[app.DIK_SUBTRACT] = lambda : self.interface.MiniMapScaleDown()
onPressKeyDict[app.DIK_L] = lambda : self.interface.ToggleChatLogWindow()
onPressKeyDict[app.DIK_COMMA] = lambda : self.ShowConsole() # "`" key
onPressKeyDict[app.DIK_LSHIFT] = lambda : self.__SetQuickPageMode()onPressKeyDict[app.DIK_J] = lambda : self.__PressJKey()
onPressKeyDict[app.DIK_H] = lambda : self.__PressHKey()
onPressKeyDict[app.DIK_B] = lambda : self.__PressBKey()
onPressKeyDict[app.DIK_F] = lambda : self.__PressFKey()
onPressKeyDict[app.DIK_X] = lambda : self.__PressXKey()# onPressKeyDict[app.DIK_F5] = lambda : self.interface.TogglePetWindow()
# CUBE_TEST
#onPressKeyDict[app.DIK_K] = lambda : self.interface.OpenCubeWindow()
# CUBE_TEST_ENDself.onPressKeyDict = onPressKeyDict
onClickKeyDict = {}
onClickKeyDict[app.DIK_UP] = lambda : self.StopUp()
onClickKeyDict[app.DIK_DOWN] = lambda : self.StopDown()
onClickKeyDict[app.DIK_LEFT] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_RIGHT] = lambda : self.StopRight()
onClickKeyDict[app.DIK_SPACE] = lambda : self.EndAttack()onClickKeyDict[app.DIK_W] = lambda : self.StopUp()
onClickKeyDict[app.DIK_S] = lambda : self.StopDown()
onClickKeyDict[app.DIK_A] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_D] = lambda : self.StopRight()
onClickKeyDict[app.DIK_Q] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_G] = lambda: self.__ReleaseGKey()
onClickKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_LALT] = lambda: self.HideName()
onClickKeyDict[app.DIK_LCONTROL] = lambda: self.HideMouseImage()
onClickKeyDict[app.DIK_LSHIFT] = lambda: self.__SetQuickSlotMode()#if constInfo.PVPMODE_ACCELKEY_ENABLE:
# onClickKeyDict[app.DIK_B] = lambda: self.ChangePKMode()self.onClickKeyDict=onClickKeyDict
def __PressNumKey(self,num):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if num >= 1 and num <= 9:
if(chrmgr.IsPossibleEmoticon(-1)):
chrmgr.SetEmoticon(-1,int(num)-1)
net.SendEmoticon(int(num)-1)
else:
if num >= 1 and num <= 4:
self.pressNumber(num-1)def __ClickBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
return
else:
if constInfo.PVPMODE_ACCELKEY_ENABLE:
self.ChangePKMode()
def __PressJKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsMountingHorse():
net.SendChatPacket("/unmount")
else:
#net.SendChatPacket("/user_horse_ride")
if not uiPrivateShopBuilder.IsBuildingPrivateShop():
for i in xrange(player.INVENTORY_PAGE_SIZE):
if player.GetItemIndex(i) in (71114, 71116, 71118, 71120):
net.SendItemUsePacket(i)
break
def __PressHKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_ride")
else:
self.interface.OpenHelpWindow()def __PressBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_back")
else:
state = "EMOTICON"
self.interface.ToggleCharacterWindow(state)def __PressFKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_feed")
else:
app.ZoomCamera(app.CAMERA_TO_POSITIVE)def __PressGKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/ride")
else:
if self.ShowNameFlag:
self.interface.ToggleGuildWindow()
else:
app.PitchCamera(app.CAMERA_TO_POSITIVE)def __ReleaseGKey(self):
app.PitchCamera(app.CAMERA_STOP)def __PressQKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0==interfaceModule.IsQBHide:
interfaceModule.IsQBHide = 1
self.interface.HideAllQuestButton()
else:
interfaceModule.IsQBHide = 0
self.interface.ShowAllQuestButton()
else:
app.RotateCamera(app.CAMERA_TO_NEGATIVE)def __PressPKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0==interfaceModule.IsWisperHide:
interfaceModule.IsWisperHide = 1
self.interface.HideAllWhisperButton()
else:
interfaceModule.IsWisperHide= 0
self.interface.ShowAllWhisperButton()def __SetQuickSlotMode(self):
self.pressNumber=ui.__mem_func__(self.__PressQuickSlot)def __SetQuickPageMode(self):
self.pressNumber=ui.__mem_func__(self.__SelectQuickPage)def __PressQuickSlot(self, localSlotIndex):
if localeInfo.IsARABIC():
if 0 <= localSlotIndex and localSlotIndex < 4:
player.RequestUseLocalQuickSlot(3-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(11-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(localSlotIndex)def __SelectQuickPage(self, pageIndex):
self.quickSlotPageIndex = pageIndex
player.SetQuickPage(pageIndex)def ToggleDebugInfo(self):
self.isShowDebugInfo = not self.isShowDebugInfoif self.isShowDebugInfo:
self.PrintCoord.Show()
self.FrameRate.Show()
self.Pitch.Show()
self.Splat.Show()
self.TextureNum.Show()
self.ObjectNum.Show()
self.ViewDistance.Show()
self.PrintMousePos.Show()
else:
self.PrintCoord.Hide()
self.FrameRate.Hide()
self.Pitch.Hide()
self.Splat.Hide()
self.TextureNum.Hide()
self.ObjectNum.Hide()
self.ViewDistance.Hide()
self.PrintMousePos.Hide()def __BuildDebugInfo(self):
## Character Position Coordinate
self.PrintCoord = ui.TextLine()
self.PrintCoord.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintCoord.SetPosition(wndMgr.GetScreenWidth() - 270, 0)
## Frame Rate
self.FrameRate = ui.TextLine()
self.FrameRate.SetFontName(localeInfo.UI_DEF_FONT)
self.FrameRate.SetPosition(wndMgr.GetScreenWidth() - 270, 20)## Camera Pitch
self.Pitch = ui.TextLine()
self.Pitch.SetFontName(localeInfo.UI_DEF_FONT)
self.Pitch.SetPosition(wndMgr.GetScreenWidth() - 270, 40)## Splat
self.Splat = ui.TextLine()
self.Splat.SetFontName(localeInfo.UI_DEF_FONT)
self.Splat.SetPosition(wndMgr.GetScreenWidth() - 270, 60)
##
self.PrintMousePos = ui.TextLine()
self.PrintMousePos.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintMousePos.SetPosition(wndMgr.GetScreenWidth() - 270, 80)# TextureNum
self.TextureNum = ui.TextLine()
self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)# ¿ÀºêÁ§Æ® ±×¸®´Â °³¼ö
self.ObjectNum = ui.TextLine()
self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)# ½Ã¾ß°Å¸®
self.ViewDistance = ui.TextLine()
self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
self.ViewDistance.SetPosition(0, 0)def __NotifyError(self, msg):
chat.AppendChat(chat.CHAT_TYPE_INFO, msg)def ChangePKMode(self):
if not app.IsPressed(app.DIK_LCONTROL):
returnif player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
self.__NotifyError(localeInfo.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
returncurTime = app.GetTime()
if curTime - self.lastPKModeSendedTime < constInfo.PVPMODE_ACCELKEY_DELAY:
returnself.lastPKModeSendedTime = curTime
curPKMode = player.GetPKMode()
nextPKMode = curPKMode + 1
if nextPKMode == player.PK_MODE_PROTECT:
if 0 == player.GetGuildID():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
nextPKMode = 0
else:
nextPKMode = player.PK_MODE_GUILDelif nextPKMode == player.PK_MODE_MAX_NUM:
nextPKMode = 0net.SendChatPacket("/PKMode " + str(nextPKMode))
print "/PKMode " + str(nextPKMode)def OnChangePKMode(self):
self.interface.OnChangePKMode()
try:
self.__NotifyError(localeInfo.OPTION_PVPMODE_MESSAGE_DICT[player.GetPKMode()])
except KeyError:
print "UNKNOWN PVPMode[%d]" % (player.GetPKMode())if constInfo.PVPMODE_TEST_ENABLE:
curPKMode = player.GetPKMode()
alignment, grade = chr.testGetPKData()
self.pkModeNameDict = { 0 : "PEACE", 1 : "REVENGE", 2 : "FREE", 3 : "PROTECT", }
self.testPKMode.SetText("Current PK Mode : " + self.pkModeNameDict.get(curPKMode, "UNKNOWN"))
self.testAlignment.SetText("Current Alignment : " + str(alignment) + " (" + localeInfo.TITLE_NAME_LIST[grade] + ")")###############################################################################################
###############################################################################################
## Game Callback Functions# Start
def StartGame(self):
self.RefreshInventory()
self.RefreshEquipment()
self.RefreshCharacter()
self.RefreshSkill()# Refresh
def CheckGameButton(self):
if self.interface:
self.interface.CheckGameButton()def RefreshAlignment(self):
self.interface.RefreshAlignment()def RefreshStatus(self):
self.CheckGameButton()if self.interface:
self.interface.RefreshStatus()if self.playerGauge:
self.playerGauge.RefreshGauge()def RefreshStamina(self):
self.interface.RefreshStamina()def RefreshSkill(self):
self.CheckGameButton()
if self.interface:
self.interface.RefreshSkill()def RefreshQuest(self):
self.interface.RefreshQuest()def RefreshMessenger(self):
self.interface.RefreshMessenger()def RefreshGuildInfoPage(self):
self.interface.RefreshGuildInfoPage()def RefreshGuildBoardPage(self):
self.interface.RefreshGuildBoardPage()def RefreshGuildMemberPage(self):
self.interface.RefreshGuildMemberPage()def RefreshGuildMemberPageGradeComboBox(self):
self.interface.RefreshGuildMemberPageGradeComboBox()def RefreshGuildSkillPage(self):
self.interface.RefreshGuildSkillPage()def RefreshGuildGradePage(self):
self.interface.RefreshGuildGradePage()def RefreshMobile(self):
if self.interface:
self.interface.RefreshMobile()def OnMobileAuthority(self):
self.interface.OnMobileAuthority()def OnBlockMode(self, mode):
self.interface.OnBlockMode(mode)def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1 or INPUT_IGNORE == 1:
return
self.interface.OpenQuestWindow(skin, idx)def AskGuildName(self):
guildNameBoard = uiCommon.InputDialog()
guildNameBoard.SetTitle(localeInfo.GUILD_NAME)
guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.ConfirmGuildName))
guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
guildNameBoard.Open()self.guildNameBoard = guildNameBoard
def ConfirmGuildName(self):
guildName = self.guildNameBoard.GetText()
if not guildName:
returnif net.IsInsultIn(guildName):
self.PopupMessage(localeInfo.GUILD_CREATE_ERROR_INSULT_NAME)
returnnet.SendAnswerMakeGuildPacket(guildName)
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUEdef CancelGuildName(self):
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUE## Refine
def PopupMessage(self, msg):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(msg, 0, localeInfo.UI_OK)def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, type=0):
self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, type)def AppendMaterialToRefineDialog(self, vnum, count):
self.interface.AppendMaterialToRefineDialog(vnum, count)def RunUseSkillEvent(self, slotIndex, coolTime):
self.interface.OnUseSkill(slotIndex, coolTime)def ClearAffects(self):
self.affectShower.ClearAffects()def SetAffect(self, affect):
self.affectShower.SetAffect(affect)def ResetAffect(self, affect):
self.affectShower.ResetAffect(affect)# UNKNOWN_UPDATE
def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
self.BINARY_DragonSoulGiveQuilification()def BINARY_NEW_RemoveAffect(self, type, pointIdx):
self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulDeactivate()
# END_OF_UNKNOWN_UPDATEdef ActivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnActivateSkill(slotIndex)def DeactivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnDeactivateSkill(slotIndex)def RefreshEquipment(self):
if self.interface:
self.interface.RefreshInventory()def RefreshInventory(self):
if self.interface:
self.interface.RefreshInventory()def RefreshCharacter(self):
if self.interface:
self.interface.RefreshCharacter()def OnGameOver(self):
if uiPet.PACKET["HEADER"] != 0:
self.interface.wndPet.Unsummon()
self.CloseTargetBoard()
self.OpenRestartDialog()def OpenRestartDialog(self):
self.interface.OpenRestartDialog()def ChangeCurrentSkill(self, skillSlotNumber):
self.interface.OnChangeCurrentSkill(skillSlotNumber)## TargetBoard
def SetPCTargetBoard(self, vid, name):
self.targetBoard.Open(vid, name)
if app.IsPressed(app.DIK_LCONTROL):
if not player.IsSameEmpire(vid):
returnif player.IsMainCharacterIndex(vid):
return
elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(vid):
returnself.interface.OpenWhisperDialog(name)
def RefreshTargetBoardByVID(self, vid):
self.targetBoard.RefreshByVID(vid)def RefreshTargetBoardByName(self, name):
self.targetBoard.RefreshByName(name)
def __RefreshTargetBoard(self):
self.targetBoard.Refresh()
def SetHPTargetBoard(self, vid, hpPercentage, curHP, maxHP):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)
self.targetBoard.SetHP(hpPercentage, curHP, maxHP)
self.targetBoard.Show()def SetHPTargetBoard_PC(self, vid, hpPercentage, curHP, maxHP):
if hpPercentage == 0:
return
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)
self.targetBoard.SetHP_PC(hpPercentage, curHP, maxHP)
self.targetBoard.Show()def CloseTargetBoardIfDifferent(self, vid):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.Close()def CloseTargetBoard(self):
self.targetBoard.Close()## View Equipment
def OpenEquipmentDialog(self, vid):
self.interface.OpenEquipmentDialog(vid)def SetEquipmentDialogItem(self, vid, slotIndex, vnum, count):
self.interface.SetEquipmentDialogItem(vid, slotIndex, vnum, count)def SetEquipmentDialogSocket(self, vid, slotIndex, socketIndex, value):
self.interface.SetEquipmentDialogSocket(vid, slotIndex, socketIndex, value)def SetEquipmentDialogAttr(self, vid, slotIndex, attrIndex, type, value):
self.interface.SetEquipmentDialogAttr(vid, slotIndex, attrIndex, type, value)# SHOW_LOCAL_MAP_NAME
def ShowMapName(self, mapName, x, y):if self.mapNameShower:
self.mapNameShower.ShowMapName(mapName, x, y)if self.interface:
self.interface.SetMapName(mapName)
# END_OF_SHOW_LOCAL_MAP_NAMEdef BINARY_OpenAtlasWindow(self):
self.interface.BINARY_OpenAtlasWindow()## Chat
def OnRecvWhisper(self, mode, name, line):
if line.find("[%test%]") != -1:
line = line.replace("[%test%]", "")
chat.AppendWhisper(mode, "[GRUPO]", line)
chat.AppendChat(chat.CHAT_TYPE_NOTICE, "%s ha escrito un mensaje en el grupo." % (name))
self.interface.RecvGroupWhisper(name)
else:
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)def OnRecvWhisperSystemMessage(self, mode, name, line):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
self.interface.RecvWhisper(name)def OnRecvWhisperError(self, mode, name, line):
if localeInfo.WHISPER_ERROR.has_key(mode):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, localeInfo.WHISPER_ERROR[mode](name))
#mp offline
if mode == 1:
constInfo.MessageMPName = name
self.Offline_MP_Button()
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
self.interface.RecvWhisper(name)def RecvWhisper(self, name):
self.interface.RecvWhisper(name)def OnPickMoney(self, money):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_MONEY % (money))def OnShopError(self, type):
try:
self.PopupMessage(localeInfo.SHOP_ERROR_DICT[type])
except KeyError:
self.PopupMessage(localeInfo.SHOP_ERROR_UNKNOWN % (type))def OnSafeBoxError(self):
self.PopupMessage(localeInfo.SAFEBOX_ERROR)def OnFishingSuccess(self, isFish, fishName):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_SUCCESS(isFish, fishName), 2000)# ADD_FISHING_MESSAGE
def OnFishingNotifyUnknown(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_UNKNOWN)def OnFishingWrongPlace(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_WRONG_PLACE)
# END_OF_ADD_FISHING_MESSAGEdef OnFishingNotify(self, isFish, fishName):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_NOTIFY(isFish, fishName))def OnFishingFailure(self):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_FAILURE, 2000)def OnCannotPickItem(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_PICK_ITEM)# MINING
def OnCannotMining(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_MINING)
# END_OF_MININGdef OnCannotUseSkill(self, vid, type):
if localeInfo.USE_SKILL_ERROR_TAIL_DICT.has_key(type):
textTail.RegisterInfoTail(vid, localeInfo.USE_SKILL_ERROR_TAIL_DICT[type])if localeInfo.USE_SKILL_ERROR_CHAT_DICT.has_key(type):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_SKILL_ERROR_CHAT_DICT[type])def OnCannotShotError(self, vid, type):
textTail.RegisterInfoTail(vid, localeInfo.SHOT_ERROR_TAIL_DICT.get(type, localeInfo.SHOT_ERROR_UNKNOWN % (type)))## PointReset
def StartPointReset(self):
self.interface.OpenPointResetDialog()## Shop
def StartShop(self, vid):
self.interface.OpenShopDialog(vid)def EndShop(self):
self.interface.CloseShopDialog()def RefreshShop(self):
self.interface.RefreshShopDialog()def SetShopSellingPrice(self, Price):
pass## Exchange
def StartExchange(self):
if uiPet.PACKET["HEADER"] > 0:
self.interface.wndPet.Unsummon()
self.interface.StartExchange()def EndExchange(self):
self.interface.EndExchange()def RefreshExchange(self):
self.interface.RefreshExchange()## Party
def RecvPartyInviteQuestion(self, leaderVID, leaderName):
partyInviteQuestionDialog = uiCommon.QuestionDialog()
partyInviteQuestionDialog.SetText(leaderName + localeInfo.PARTY_DO_YOU_JOIN)
partyInviteQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.Open()
partyInviteQuestionDialog.partyLeaderVID = leaderVID
self.partyInviteQuestionDialog = partyInviteQuestionDialogdef AnswerPartyInvite(self, answer):
if not self.partyInviteQuestionDialog:
returnpartyLeaderVID = self.partyInviteQuestionDialog.partyLeaderVID
distance = player.GetCharacterDistance(partyLeaderVID)
if distance < 0.0 or distance > 5000:
answer = FALSEnet.SendPartyInviteAnswerPacket(partyLeaderVID, answer)
self.partyInviteQuestionDialog.Close()
self.partyInviteQuestionDialog = Nonedef AddPartyMember(self, pid, name):
self.interface.AddPartyMember(pid, name)def UpdatePartyMemberInfo(self, pid):
self.interface.UpdatePartyMemberInfo(pid)def RemovePartyMember(self, pid):
self.interface.RemovePartyMember(pid)
self.__RefreshTargetBoard()def LinkPartyMember(self, pid, vid):
self.interface.LinkPartyMember(pid, vid)def UnlinkPartyMember(self, pid):
self.interface.UnlinkPartyMember(pid)def UnlinkAllPartyMember(self):
self.interface.UnlinkAllPartyMember()def ExitParty(self):
self.interface.ExitParty()
self.RefreshTargetBoardByVID(self.targetBoard.GetTargetVID())def ChangePartyParameter(self, distributionMode):
self.interface.ChangePartyParameter(distributionMode)## Messenger
def OnMessengerAddFriendQuestion(self, name):
messengerAddFriendQuestion = uiCommon.QuestionDialog2()
messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_1 % (name))
messengerAddFriendQuestion.SetText2(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_2)
messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
messengerAddFriendQuestion.Open()
messengerAddFriendQuestion.name = name
self.messengerAddFriendQuestion = messengerAddFriendQuestiondef OnAcceptAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth y " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUEdef OnDenyAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth n " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUEdef OnCloseAddFriendQuestionDialog(self):
self.messengerAddFriendQuestion.Close()
self.messengerAddFriendQuestion = None
return TRUE## SafeBox
def OpenSafeboxWindow(self, size):
if uiPet.PACKET["HEADER"] != 0:
self.interface.wndPet.Unsummon()
self.interface.OpenSafeboxWindow(size)def RefreshSafebox(self):
self.interface.RefreshSafebox()def RefreshSafeboxMoney(self):
self.interface.RefreshSafeboxMoney()# ITEM_MALL
def OpenMallWindow(self, size):
self.interface.OpenMallWindow(size)def RefreshMall(self):
self.interface.RefreshMall()
# END_OF_ITEM_MALL## Guild
def RecvGuildInviteQuestion(self, guildID, guildName):
guildInviteQuestionDialog = uiCommon.QuestionDialog()
guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN)
guildInviteQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.Open()
guildInviteQuestionDialog.guildID = guildID
self.guildInviteQuestionDialog = guildInviteQuestionDialogdef AnswerGuildInvite(self, answer):
if not self.guildInviteQuestionDialog:
returnguildLeaderVID = self.guildInviteQuestionDialog.guildID
net.SendGuildInviteAnswerPacket(guildLeaderVID, answer)self.guildInviteQuestionDialog.Close()
self.guildInviteQuestionDialog = None
def DeleteGuild(self):
self.interface.DeleteGuild()## Clock
def ShowClock(self, second):
self.interface.ShowClock(second)def HideClock(self):
self.interface.HideClock()## Emotion
def BINARY_ActEmotion(self, emotionIndex):
if self.interface.wndCharacter:
self.interface.wndCharacter.ActEmotion(emotionIndex)###############################################################################################
###############################################################################################
## Keyboard Functionsdef CheckFocus(self):
if FALSE == self.IsFocus():
if TRUE == self.interface.IsOpenChat():
self.interface.ToggleChat()self.SetFocus()
def SaveScreen(self):
print "save screen"# SCREENSHOT_CWDSAVE
if SCREENSHOT_CWDSAVE:
if not os.path.exists(os.getcwd()+os.sep+"screenshot"):
os.mkdir(os.getcwd()+os.sep+"screenshot")(succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep)
elif SCREENSHOT_DIR:
(succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR)
else:
(succeeded, name) = grp.SaveScreenShot()
# END_OF_SCREENSHOT_CWDSAVEif succeeded:
pass
"""
chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1)
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2)
"""
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE)def ShowConsole(self):
passdef ShowName(self):
self.ShowNameFlag = TRUE
self.playerGauge.EnableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex+1)# ADD_ALWAYS_SHOW_NAME
def __IsShowName(self):if systemSetting.IsAlwaysShowName():
return TRUEif self.ShowNameFlag:
return TRUEreturn FALSE
# END_OF_ADD_ALWAYS_SHOW_NAME
def HideName(self):
self.ShowNameFlag = FALSE
self.playerGauge.DisableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex)def ShowMouseImage(self):
self.interface.ShowMouseImage()def HideMouseImage(self):
self.interface.HideMouseImage()def StartAttack(self):
MapName = str(background.GetCurrentMapName())
if MapName == "mapa_guerra" and constInfo.ataque_guerra == 1:
return
player.SetAttackKeyState(TRUE)def EndAttack(self):
player.SetAttackKeyState(FALSE)def MoveUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, TRUE)def MoveDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, TRUE)def MoveLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, TRUE)def MoveRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, TRUE)def StopUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, FALSE)def StopDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, FALSE)def StopLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, FALSE)def StopRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, FALSE)def PickUpItem(self):
player.PickCloseItem()###############################################################################################
###############################################################################################
## Event Handlerdef OnKeyDown(self, key):
if self.interface.wndWeb and self.interface.wndWeb.IsShow():
returnconstInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
if self.mountOptionWnd.OnKeyDown(key):
return TRUE
try:
self.onPressKeyDict[key]()
except KeyError:
pass
except:
raisereturn TRUE
def OnKeyUp(self, key):
try:
self.onClickKeyDict[key]()
except KeyError:
pass
except:
raisereturn TRUE
def OnMouseLeftButtonDown(self):
if self.interface.BUILD_OnMouseLeftButtonDown():
returnif mouseModule.mouseController.isAttached():
self.CheckFocus()
else:
hyperlink = ui.GetHyperlink()
if hyperlink:
return
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);return TRUE
def OnMouseLeftButtonUp(self):
if self.interface.BUILD_OnMouseLeftButtonUp():
returnif mouseModule.mouseController.isAttached():
attachedType = mouseModule.mouseController.GetAttachedType()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
attachedItemSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()## QuickSlot
if player.SLOT_TYPE_QUICK_SLOT == attachedType:
player.RequestDeleteGlobalQuickSlot(attachedItemSlotPos)## Inventory
elif player.SLOT_TYPE_INVENTORY == attachedType:if player.ITEM_MONEY == attachedItemIndex:
self.__PutMoney(attachedType, attachedItemCount, self.PickingCharacterIndex)
else:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)## DragonSoul
elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)
mouseModule.mouseController.DeattachObject()else:
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
else:
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)#player.EndMouseWalking()
return TRUEdef __PutItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, dstChrID):
if player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
attachedInvenType = player.SlotTypeToInvenType(attachedType)
if TRUE == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
if player.IsEquipmentSlot(attachedItemSlotPos):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
else:
if chr.IsNPC(dstChrID):
net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
else:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
else:
self.__DropItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount)def __PutMoney(self, attachedType, attachedMoney, dstChrID):
if TRUE == chr.HasInstance(dstChrID) and player.GetMainCharacterIndex() != dstChrID:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeElkAddPacket(attachedMoney)
else:
self.__DropMoney(attachedType, attachedMoney)def __DropMoney(self, attachedType, attachedMoney):
# PRIVATESHOP_DISABLE_ITEM_DROP - °³ÀλóÁ¡ ¿°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ ¹ö¸² ¹æÁö
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
return
# END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
if attachedMoney>=1000:
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(localeInfo.DROP_MONEY_FAILURE_1000_OVER, 0, localeInfo.UI_OK)
returnitemDropQuestionDialog = uiCommon.QuestionDialog()
itemDropQuestionDialog.SetText(localeInfo.DO_YOU_DROP_MONEY % (attachedMoney))
itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
itemDropQuestionDialog.Open()
itemDropQuestionDialog.dropType = attachedType
itemDropQuestionDialog.dropCount = attachedMoney
itemDropQuestionDialog.dropNumber = player.ITEM_MONEY
self.itemDropQuestionDialog = itemDropQuestionDialogdef __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount):
# PRIVATESHOP_DISABLE_ITEM_DROP - °³ÀλóÁ¡ ¿°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ ¹ö¸² ¹æÁö
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
return
# END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
if player.SLOT_TYPE_INVENTORY == attachedType and player.IsEquipmentSlot(attachedItemSlotPos):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(localeInfo.DROP_ITEM_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)else:
if player.SLOT_TYPE_INVENTORY == attachedType:
dropItemIndex = player.GetItemIndex(attachedItemSlotPos)item.SelectItem(dropItemIndex)
dropItemName = item.GetItemName()## Question Text
questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)## Dialog
itemDropQuestionDialog = uiCommon.QuestionDialog()
itemDropQuestionDialog.SetText(questionText)
itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
itemDropQuestionDialog.Open()
itemDropQuestionDialog.dropType = attachedType
itemDropQuestionDialog.dropNumber = attachedItemSlotPos
itemDropQuestionDialog.dropCount = attachedItemCount
self.itemDropQuestionDialog = itemDropQuestionDialogconstInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(1)
elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
dropItemIndex = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, attachedItemSlotPos)item.SelectItem(dropItemIndex)
dropItemName = item.GetItemName()## Question Text
questionText = localeInfo.HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, attachedItemCount)## Dialog
itemDropQuestionDialog = uiCommon.QuestionDialog()
itemDropQuestionDialog.SetText(questionText)
itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
itemDropQuestionDialog.Open()
itemDropQuestionDialog.dropType = attachedType
itemDropQuestionDialog.dropNumber = attachedItemSlotPos
itemDropQuestionDialog.dropCount = attachedItemCount
self.itemDropQuestionDialog = itemDropQuestionDialogconstInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(1)
def RequestDropItem(self, answer):
if not self.itemDropQuestionDialog:
returnif answer:
dropType = self.itemDropQuestionDialog.dropType
dropCount = self.itemDropQuestionDialog.dropCount
dropNumber = self.itemDropQuestionDialog.dropNumberif player.SLOT_TYPE_INVENTORY == dropType:
if dropNumber == player.ITEM_MONEY:
net.SendGoldDropPacketNew(dropCount)
snd.PlaySound("sound/ui/money.wav")
else:
# PRIVATESHOP_DISABLE_ITEM_DROP
self.__SendDropItemPacket(dropNumber, dropCount)
# END_OF_PRIVATESHOP_DISABLE_ITEM_DROP
elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == dropType:
# PRIVATESHOP_DISABLE_ITEM_DROP
self.__SendDropItemPacket(dropNumber, dropCount, player.DRAGON_SOUL_INVENTORY)
# END_OF_PRIVATESHOP_DISABLE_ITEM_DROPself.itemDropQuestionDialog.Close()
self.itemDropQuestionDialog = NoneconstInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
# PRIVATESHOP_DISABLE_ITEM_DROP
def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY):
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
returnnet.SendItemDropPacketNew(itemInvenType, itemVNum, itemCount)
# END_OF_PRIVATESHOP_DISABLE_ITEM_DROPdef OnMouseRightButtonDown(self):
self.CheckFocus()
if TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()else:
player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS)return TRUE
def OnMouseRightButtonUp(self):
if TRUE == mouseModule.mouseController.isAttached():
return TRUEplayer.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK)
return TRUEdef OnMouseMiddleButtonDown(self):
player.SetMouseMiddleButtonState(player.MBS_PRESS)def OnMouseMiddleButtonUp(self):
player.SetMouseMiddleButtonState(player.MBS_CLICK)def OnUpdate(self):
app.UpdateGame()if self.mapNameShower.IsShow():
self.mapNameShower.Update()if self.isShowDebugInfo:
self.UpdateDebugInfo()if self.enableXMasBoom:
self.__XMasBoom_Update()self.interface.BUILD_OnUpdate()
if constInfo.check_trasform_system == 1:
constInfo.check_trasform_system = 0
event.QuestButtonClick(int(constInfo.trasf_index))
#for i in xrange(4+1):
#if self.boniSwitcherWnd:
#if not self.boniSwitcherWnd.IsShow():
#self.boniSwitcherWnd.OnUpdate()def UpdateDebugInfo(self):
#
# ij¸¯ÅÍ ÁÂÇ¥ ¹× FPS Ãâ·Â
(x, y, z) = player.GetMainCharacterPosition()
nUpdateTime = app.GetUpdateTime()
nUpdateFPS = app.GetUpdateFPS()
nRenderFPS = app.GetRenderFPS()
nFaceCount = app.GetFaceCount()
fFaceSpeed = app.GetFaceSpeed()
nST=background.GetRenderShadowTime()
(fAveRT, nCurRT) = app.GetRenderTime()
(iNum, fFogStart, fFogEnd, fFarCilp) = background.GetDistanceSetInfo()
(iPatch, iSplat, fSplatRatio, sTextureNum) = background.GetRenderedSplatNum()
if iPatch == 0:
iPatch = 1#(dwRenderedThing, dwRenderedCRC) = background.GetRenderedGraphicThingInstanceNum()
self.PrintCoord.SetText("Coordinate: %.2f %.2f %.2f ATM: %d" % (x, y, z, app.GetAvailableTextureMemory()/(1024*1024)))
xMouse, yMouse = wndMgr.GetMousePosition()
self.PrintMousePos.SetText("MousePosition: %d %d" % (xMouse, yMouse))self.FrameRate.SetText("UFPS: %3d UT: %3d FS %.2f" % (nUpdateFPS, nUpdateTime, fFaceSpeed))
if fAveRT>1.0:
self.Pitch.SetText("RFPS: %3d RT:%.2f(%3d) FC: %d(%.2f) " % (nRenderFPS, fAveRT, nCurRT, nFaceCount, nFaceCount/fAveRT))self.Splat.SetText("PATCH: %d SPLAT: %d BAD(%.2f)" % (iPatch, iSplat, fSplatRatio))
#self.Pitch.SetText("Pitch: %.2f" % (app.GetCameraPitch())
#self.TextureNum.SetText("TN : %s" % (sTextureNum))
#self.ObjectNum.SetText("GTI : %d, CRC : %d" % (dwRenderedThing, dwRenderedCRC))
self.ViewDistance.SetText("Num : %d, FS : %f, FE : %f, FC : %f" % (iNum, fFogStart, fFogEnd, fFarCilp))def OnRender(self):
app.RenderGame()
if self.console.Console.collision:
background.RenderCollision()
chr.RenderCollision()(x, y) = app.GetCursorPosition()
########################
# Picking
########################
textTail.UpdateAllTextTail()if TRUE == wndMgr.IsPickedWindow(self.hWnd):
self.PickingCharacterIndex = chr.Pick()
if -1 != self.PickingCharacterIndex:
textTail.ShowCharacterTextTail(self.PickingCharacterIndex)
if 0 != self.targetBoard.GetTargetVID():
textTail.ShowCharacterTextTail(self.targetBoard.GetTargetVID())# ADD_ALWAYS_SHOW_NAME
if not self.__IsShowName():
self.PickingItemIndex = item.Pick()
if -1 != self.PickingItemIndex:
textTail.ShowItemTextTail(self.PickingItemIndex)
# END_OF_ADD_ALWAYS_SHOW_NAME
## Show all name in the range
# ADD_ALWAYS_SHOW_NAME
if self.__IsShowName():
textTail.ShowAllTextTail()
self.PickingItemIndex = textTail.Pick(x, y)
# END_OF_ADD_ALWAYS_SHOW_NAMEtextTail.UpdateShowingTextTail()
textTail.ArrangeTextTail()
if -1 != self.PickingItemIndex:
textTail.SelectItemName(self.PickingItemIndex)grp.PopState()
grp.SetInterfaceRenderState()textTail.Render()
textTail.HideAllTextTail()def OnPressEscapeKey(self):
if app.TARGET == app.GetCursor():
app.SetCursor(app.NORMAL)elif TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()else:
self.interface.OpenSystemDialog()return TRUE
def OnIMEReturn(self):
if app.IsPressed(app.DIK_LSHIFT):
self.interface.OpenWhisperDialogWithoutTarget()
else:
self.interface.ToggleChat()
return TRUEdef OnPressExitKey(self):
self.interface.ToggleSystemDialog()
return TRUE## BINARY CALLBACK
######################################################################################
# WEDDING
def BINARY_LoverInfo(self, name, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnAddLover(name, lovePoint)
if self.affectShower:
self.affectShower.SetLoverInfo(name, lovePoint)def BINARY_UpdateLovePoint(self, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnUpdateLovePoint(lovePoint)
if self.affectShower:
self.affectShower.OnUpdateLovePoint(lovePoint)
# END_OF_WEDDING
# QUEST_CONFIRM
def BINARY_OnQuestConfirm(self, msg, timeout, pid):
confirmDialog = uiCommon.QuestionDialogWithTimeLimit()
confirmDialog.Open(msg, timeout)
confirmDialog.SetAcceptEvent(lambda answer=TRUE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
confirmDialog.SetCancelEvent(lambda answer=FALSE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
self.confirmDialog = confirmDialog
# END_OF_QUEST_CONFIRM# GIFT command
def Gift_Show(self):
self.interface.ShowGift()# CUBE
def BINARY_Cube_Open(self, npcVNUM):
self.currentCubeNPC = npcVNUM
self.interface.OpenCubeWindow()
if npcVNUM not in self.cubeInformation:
net.SendChatPacket("/cube r_info")
else:
cubeInfoList = self.cubeInformation[npcVNUM]
i = 0
for cubeInfo in cubeInfoList:
self.interface.wndCube.AddCubeResultItem(cubeInfo["vnum"], cubeInfo["count"])
j = 0
for materialList in cubeInfo["materialList"]:
for materialInfo in materialList:
itemVnum, itemCount = materialInfo
self.interface.wndCube.AddMaterialInfo(i, j, itemVnum, itemCount)
j = j + 1
i = i + 1
self.interface.wndCube.Refresh()def BINARY_Cube_Close(self):
self.interface.CloseCubeWindow()# Á¦ÀÛ¿¡ ÇÊ¿äÇÑ °ñµå, ¿¹»óµÇ´Â ¿Ï¼ºÇ°ÀÇ VNUM°ú °³¼ö Á¤º¸ update
def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
self.interface.UpdateCubeInfo(gold, itemVnum, count)
def BINARY_Cube_Succeed(self, itemVnum, count):
print "Å¥ºê Á¦ÀÛ ¼º°ø"
self.interface.SucceedCubeWork(itemVnum, count)
passdef BINARY_Cube_Failed(self):
print "Å¥ºê Á¦ÀÛ ½ÇÆÐ"
self.interface.FailedCubeWork()
passdef BINARY_Cube_ResultList(self, npcVNUM, listText):
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 ÀÌ·±½ÄÀ¸·Î "/" ¹®ÀÚ·Î ±¸ºÐµÈ ¸®½ºÆ®¸¦ ÁÜ
#print listText
if npcVNUM == 0:
npcVNUM = self.currentCubeNPC
self.cubeInformation[npcVNUM] = []
try:
for eachInfoText in listText.split("/"):
eachInfo = eachInfoText.split(",")
itemVnum = int(eachInfo[0])
itemCount = int(eachInfo[1])self.cubeInformation[npcVNUM].append({"vnum": itemVnum, "count": itemCount})
self.interface.wndCube.AddCubeResultItem(itemVnum, itemCount)
resultCount = len(self.cubeInformation[npcVNUM])
requestCount = 7
modCount = resultCount % requestCount
splitCount = resultCount / requestCount
for i in xrange(splitCount):
#print("/cube r_info %d %d" % (i * requestCount, requestCount))
net.SendChatPacket("/cube r_info %d %d" % (i * requestCount, requestCount))
if 0 < modCount:
#print("/cube r_info %d %d" % (splitCount * requestCount, modCount))
net.SendChatPacket("/cube r_info %d %d" % (splitCount * requestCount, modCount))except RuntimeError, msg:
dbg.TraceError(msg)
return 0
pass
def BINARY_Cube_MaterialInfo(self, startIndex, listCount, listText):
# Material Text Format : 125,1|126,2|127,2|123,5&555,5&555,4/120000
try:
#print listText
if 3 > len(listText):
dbg.TraceError("Wrong Cube Material Infomation")
return 0
eachResultList = listText.split("@")cubeInfo = self.cubeInformation[self.currentCubeNPC]
itemIndex = 0
for eachResultText in eachResultList:
cubeInfo[startIndex + itemIndex]["materialList"] = [[], [], [], [], []]
materialList = cubeInfo[startIndex + itemIndex]["materialList"]
gold = 0
splitResult = eachResultText.split("/")
if 1 < len(splitResult):
gold = int(splitResult[1])
#print "splitResult : ", splitResult
eachMaterialList = splitResult[0].split("&")
i = 0
for eachMaterialText in eachMaterialList:
complicatedList = eachMaterialText.split("|")
if 0 < len(complicatedList):
for complicatedText in complicatedList:
(itemVnum, itemCount) = complicatedText.split(",")
itemVnum = int(itemVnum)
itemCount = int(itemCount)
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
materialList.append((itemVnum, itemCount))
else:
itemVnum, itemCount = eachMaterialText.split(",")
itemVnum = int(itemVnum)
itemCount = int(itemCount)
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount)
materialList.append((itemVnum, itemCount))
i = i + 1
itemIndex = itemIndex + 1
self.interface.wndCube.Refresh()
except RuntimeError, msg:
dbg.TraceError(msg)
return 0
pass
# END_OF_CUBE
def BINARY_Acce_Open(self, npcVNUM):
self.interface.OpenAcceWindow()def BINARY_Acce_Close(self):
self.interface.CloseAcceWindow()def BINARY_Acce_UpdateInfo(self, gold, itemVnum, count, rItemVnum, rCount):
self.interface.UpdateAcceInfo(gold, itemVnum, count, rItemVnum, rCount)def BINARY_Acce_Succeed(self, itemVnum, count):
print "Making acce has succesfully!"
self.interface.SucceedAcceWork(itemVnum, count)
passdef BINARY_Acce_Failed(self):
print "Making acce has failed!"
self.interface.FailedAcceWork()
passdef BINARY_Acce_Abs_Open(self, npcVNUM):
self.interface.OpenAcceAbsWindow()def BINARY_Acce_Abs_Succeed(self):
print "Acce absorption has succesfully!"
self.interface.SucceedAcceAbsWork()
pass
# ¿ëÈ¥¼®
def BINARY_Highlight_Item(self, inven_type, inven_pos):
self.interface.Highligt_Item(inven_type, inven_pos)
def BINARY_DragonSoulGiveQuilification(self):
self.interface.DragonSoulGiveQuilification()
def BINARY_DragonSoulRefineWindow_Open(self):
self.interface.OpenDragonSoulRefineWindow()def BINARY_DragonSoulRefineWindow_RefineFail(self, reason, inven_type, inven_pos):
self.interface.FailDragonSoulRefine(reason, inven_type, inven_pos)def BINARY_DragonSoulRefineWindow_RefineSucceed(self, inven_type, inven_pos):
self.interface.SucceedDragonSoulRefine(inven_type, inven_pos)
# END of DRAGON SOUL REFINE WINDOW
def BINARY_SetBigMessage(self, message):
self.interface.bigBoard.SetTip(message)def BINARY_SetTipMessage(self, message):
self.interface.tipBoard.SetTip(message)def BINARY_AppendNotifyMessage(self, type):
if not type in localeInfo.NOTIFY_MESSAGE:
return
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.NOTIFY_MESSAGE[type])def BINARY_Guild_EnterGuildArea(self, areaID):
self.interface.BULID_EnterGuildArea(areaID)def BINARY_Guild_ExitGuildArea(self, areaID):
self.interface.BULID_ExitGuildArea(areaID)def BINARY_GuildWar_OnSendDeclare(self, guildID):
passdef BINARY_GuildWar_OnRecvDeclare(self, guildID, warType):
mainCharacterName = player.GetMainCharacterName()
masterName = guild.GetGuildMasterName()
if mainCharacterName == masterName:
self.__GuildWar_OpenAskDialog(guildID, warType)def BINARY_GuildWar_OnRecvPoint(self, gainGuildID, opponentGuildID, point):
self.interface.OnRecvGuildWarPoint(gainGuildID, opponentGuildID, point)def BINARY_GuildWar_OnStart(self, guildSelf, guildOpp):
self.interface.OnStartGuildWar(guildSelf, guildOpp)def BINARY_GuildWar_OnEnd(self, guildSelf, guildOpp):
self.interface.OnEndGuildWar(guildSelf, guildOpp)def BINARY_BettingGuildWar_SetObserverMode(self, isEnable):
self.interface.BINARY_SetObserverMode(isEnable)def BINARY_BettingGuildWar_UpdateObserverCount(self, observerCount):
self.interface.wndMiniMap.UpdateObserverCount(observerCount)def __GuildWar_UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2, observerCount):
guildID1 = int(guildID1)
guildID2 = int(guildID2)
memberCount1 = int(memberCount1)
memberCount2 = int(memberCount2)
observerCount = int(observerCount)self.interface.UpdateMemberCount(guildID1, memberCount1, guildID2, memberCount2)
self.interface.wndMiniMap.UpdateObserverCount(observerCount)def __GuildWar_OpenAskDialog(self, guildID, warType):
guildName = guild.GetGuildName(guildID)
# REMOVED_GUILD_BUG_FIX
if "Noname" == guildName:
return
# END_OF_REMOVED_GUILD_BUG_FIXimport uiGuild
questionDialog = uiGuild.AcceptGuildWarDialog()
questionDialog.SAFE_SetAcceptEvent(self.__GuildWar_OnAccept)
questionDialog.SAFE_SetCancelEvent(self.__GuildWar_OnDecline)
questionDialog.Open(guildName, warType)self.guildWarQuestionDialog = questionDialog
def __GuildWar_CloseAskDialog(self):
self.guildWarQuestionDialog.Close()
self.guildWarQuestionDialog = Nonedef __GuildWar_OnAccept(self):
guildName = self.guildWarQuestionDialog.GetGuildName()
net.SendChatPacket("/war " + guildName)
self.__GuildWar_CloseAskDialog()return 1
def __GuildWar_OnDecline(self):
guildName = self.guildWarQuestionDialog.GetGuildName()
net.SendChatPacket("/nowar " + guildName)
self.__GuildWar_CloseAskDialog()return 1
## BINARY CALLBACK
######################################################################################def __ServerCommand_Build(self):
serverCommandList={
"BORRAR" : self.ManagerBorrar,
"ConsoleEnable" : self.__Console_Enable,
"DayMode" : self.__DayMode_Update,
"PRESERVE_DayMode" : self.__PRESERVE_DayMode_Update,
"CloseRestartWindow" : self.__RestartDialog_Close,
"OpenPrivateShop" : self.__PrivateShop_Open,
"PartyHealReady" : self.PartyHealReady,
"ShowMeSafeboxPassword" : self.AskSafeboxPassword,
"CloseSafebox" : self.CommandCloseSafebox,
"mining" : self.__mining,
"antiexp_index" :self.__antiexp_questindex,
"normal_mall" : self.__Opennormalmall,
# Achievement System START
"achievement" : self.__AchievementTest,
"achievementpoints" : self.__ShowAchievementPoints,
# Achievement System END
"GUILDSTORAGE" : self._GuildStorageCMD,
"GUILDSTORAGE_ADDITEM" : self._GuildStorageAddItem,
"GUILDSTORAGE_ADDITEMSLOT" : self._GuildStorageAddItemSlot,
"GUILDSTORAGE_ADDMEMBER" : self._GuildStorageAddMemberToList,
"GUILDSTORAGE_ADDTEMPSLOT" : self._GuildStorageTempSlotsAdd,
"GUILDSTORAGE_ADDLOG" : self._GuildStorageAddLog,
"getinputbegin" : self.__Inputget1,
"getinputend" : self.__Inputget2,
# Craftingsystem by xGr33n & Apo
"cube_npc_id" : self.CraftingCube1,
"cs_result" : self.CraftingResult,
"cs_need" : self.CraftingNeed,
# Craftingsystem Ende
##TEAM_LOGIN_WITH_LIST
"SetTeamOnline" : self.__TeamLogin,
"SetTeamOffline" : self.__TeamLogout,
##END_OF_TEAM_LOGIN_WITH_LIST
# ITEM_SHOP
"usuario_id" : self.__Usuario_ID,
"SetISLoadButtonIndex" : self.__ISSetLoadButtonIndex,
"SetISBuyButtonIndex" : self.__ISSetBuyButtonIndex,
"GetISBuyID" : self.__ISGetBuyID,
"GetISBuyID2" : self.__ISGetBuyID2,
"AddISCategory" : self.__ISAddCategory,
"SelectISCategory" : self.__ISSelectCategory,
"ClearISItems" : self.__ISClearItems,
"AddISItem" : self.__ISAddItem,
"AddISItemDesc" : self.__ISAddItemDesc,
"SetISLoadSuccess" : self.__ISSetLoadSuccess,
"SetISLoadFail" : self.__ISSetLoadFail,
"SetISBuySuccess" : self.__ISSetBuySuccess,
"SetISBuyFail" : self.__ISSetBuyFail,
"SetISCoins" : self.__ISSetCoins,
"SetISMarks" : self.__ISSetMarks,
"input0" : self.__Input0,
"input1" : self.__Input1,
# END_OF_ITEM_SHOP"Exit" : self.__Exit,
# ITEM_MALL
"CloseMall" : self.CommandCloseMall,
"ShowMeMallPassword" : self.AskMallPassword,
"item_mall" : self.__ItemMall_Open,
# END_OF_ITEM_MALL
# client-server
"block_input" : self.block_input,
"unblock_input" : self.unblock_input,
# end client-server
"RefineSuceeded" : self.RefineSuceededMessage,
"RefineFailed" : self.RefineFailedMessage,
"xmas_snow" : self.__XMasSnow_Enable,
"xmas_boom" : self.__XMasBoom_Enable,
"xmas_song" : self.__XMasSong_Enable,
"xmas_tree" : self.__XMasTree_Enable,
"newyear_boom" : self.__XMasBoom_Enable,
"PartyRequest" : self.__PartyRequestQuestion,
"PartyRequestDenied" : self.__PartyRequestDenied,
"horse_state" : self.__Horse_UpdateState,
"hide_horse_state" : self.__Horse_HideState,
"WarUC" : self.__GuildWar_UpdateMemberCount,
"test_server" : self.__EnableTestServerFlag,
"mall" : self.__InGameShop_Show,
"open_notice_info" : self.__open_notice_info,
"write_notice_info" : self.__write_notice_info,"Showmedallas_gui" : self.__showmedallas_gui,
"Hidemedallas_gui" : self.__hidemedallas_gui,
"muertes" : self.__muertes,
"primera_muerte" : self.__primera_muerte,
"doble_muerte" : self.__doble_muerte,
"triple_muerte" : self.__triple_muerte,
"exterminio" : self.__exterminio,
"muertacular" : self.__muertacular,
"bestialidad" : self.__bestialidad,
"salvajada" : self.__salvajada,
"catastrofe" : self.__catastrofe,
"apocalipsis" : self.__apocalipsis,
"lluvia_muertos" : self.__lluvia_muertos,
"super_increible" : self.__super_increible,# WEDDING
"lover_login" : self.__LoginLover,
"lover_logout" : self.__LogoutLover,
"lover_near" : self.__LoverNear,
"lover_far" : self.__LoverFar,
"lover_divorce" : self.__LoverDivorce,
"PlayMusic" : self.__PlayMusic,
# END_OF_WEDDING
"mostrar_usuarios" : self.__mostrar_usuarios,
"ocultar_usuarios" : self.__ocultar_usuarios,
"muerto_guerras" : self.__muerto_guerras,
"alubias" : self.__alubias,
"proteccion_guerra" : self.__proteccion_guerra,
"contador_usuarios_guerra" : self.__contador_usuarios_guerra,
"muertos_guerra" : self.__muertos_guerra,
"caido_guerra" : self.__caido_guerra,
"ataque_guerra" : self.__ataque_guerra,
"ataque_guerra1" : self.__ataque_guerra1,
"activar_libre" : self.__activar_libre,
"cerrar_grupo" : self.__grupobug,
"spirit2" : self.__spirit2,
#Client comunication#
"init_getInfo" : self.InitTutorialGetInfo,
"getInfo" : self.GetInfoTutByZetsu,
"ignore_getInfo" : self.IgnoreTutorialGetInfo,
#Offline MP Button
"Offline_MP_Index" : self.Offline_MP_Index,
"GetNameMessageMP" : self.GetNameMessageMP,
"GetTextMessageMP" : self.GetTextMessageMP,
"ReadOfflineMP" : self.__ReadOfflineMP,
# trasform system
"set_trasform" : self.set_trasform,
"trasforma" : self.trasform_system,
"set_mana_trasf" : self.set_mana_trasf,
"reset_mana_trasform" : self.reset_mana_trasform,
"block_costume" : self.block_costume,
"unblock_costume" : self.unblock_costume,
"test_collegamento" : self.test_collegamento,
# end trasform
# PRIVATE_SHOP_PRICE_LIST
"MyShopPriceList" : self.__PrivateShop_PriceList,
# END_OF_PRIVATE_SHOP_PRICE_LIST"GetInputString":self.GetInputString,
"PetGuiUpdate" : self.__UpdatePetGUI,"itemshop_sm" : self.setItemShop,
"set_value" : self.SetValue,
"OnPrepare" : self.__PrepareTombola,
"OnRun" : self.__RunTombola,
"TombolaSetEnable" : self.TombolaSetEnable,
'set_input' : self.SetInput,
'get_input' : self.GetInput,
#Carga Mds Start
"Akron_coins_update" : self.__Mds,
#Carga Mds End
"AcceMessage" : self.AcceMessage,
"AcceAbsMessage" : self.AcceAbsMessage,}
self.serverCommander=stringCommander.Analyzer()
for serverCommandItem in serverCommandList.items():
self.serverCommander.SAFE_RegisterCallBack(
serverCommandItem[0], serverCommandItem[1]
)def BINARY_ServerCommand_Run(self, line):
#dbg.TraceError(line)
try:
#print " BINARY_ServerCommand_Run", line
return self.serverCommander.Run(line)
except RuntimeError, msg:
dbg.TraceError(msg)
return 0def __ProcessPreservedServerCommand(self):
try:
command = net.GetPreservedServerCommand()
while command:
print " __ProcessPreservedServerCommand", command
self.serverCommander.Run(command)
command = net.GetPreservedServerCommand()
except RuntimeError, msg:
dbg.TraceError(msg)
return 0
def SetInput(self, i):
constInfo.BLOCK_INPUT = int(i)
def GetInput(self):
net.SendQuestInputStringPacket(str(constInfo.INPUT_TEXT))
def SetValue(self, sm, sz):
constInfo.COIN_IS = [sm, sz]
def setItemShop(self, type, lol=0):
if type == "qid":
constInfo.QID['IS'] = int(lol)
if type == 'item':
for wiadomo in lol.split("|"):
jaramy = wiadomo.split("#")
constInfo.przedmioty[int(jaramy[0])].append([jaramy[1], jaramy[2], jaramy[3], jaramy[4], jaramy[5]])
def __PrepareTombola(self, data):
if constInfo.itemShowWnd:
constInfo.itemShowWnd.OnPrepare(data)
def __RunTombola(self, number):
if constInfo.itemShowWnd:
constInfo.itemShowWnd.OnRun(number)def TombolaSetEnable(self):
if constInfo.itemShowWnd:
constInfo.itemShowWnd.button_unlock()def __UpdatePetGUI(self, token):
token = token.split("|")
if token[0] == "Info":
uiPet.PACKET["HEADER"] = int(token[1])
uiPet.CONFIG["MAX_STATUS_POINT"] = int(token[2])
uiPet.CONFIG["ENABLE_EXP_BLOCK"] = False if token[3] == "false" else True
uiPet.CONFIG["ENABLE_RESET_STATUS"] = False if token[4] == "false" else True
uiPet.CONFIG["SLOT_COUNT"] = int(token[8])
uiPet.CONFIG["ENABLE_USE_INVENTORY"] = False if token[9] == "false" else True
for i in xrange(3):
uiPet.CONFIG["AFFECTS"] = int(token[i+5])
elif token[0] == "SetInterface":
self.interface.wndPet.SetInterface(token[1], token[2].replace("[_]", " "), token[3], token[4], token[5], token[6], token[7], token[8], token[9], token[10])
elif token[0] == "RecvPacket":
net.SendQuestInputStringPacket(uiPet.PACKET["KEY"])
elif token[0] == "Equip":
uiPet.CONFIG["ITEM"][int(token[1])] = int(token[2])
elif token[0] == "GetAffect":
(affectType, affectValue) = player.GetItemAttribute(int(token[1]), int(token[2]))
net.SendQuestInputStringPacket("%s,%s" % (affectType, affectValue))def GetInputString(self, token):
global INPUT_IGNORE
INPUT_IGNORE = int(token)def PartyHealReady(self):
self.interface.PartyHealReady()def AskSafeboxPassword(self):
self.interface.AskSafeboxPassword()# ITEM_MALL
def AskMallPassword(self):
self.interface.AskMallPassword()def __ItemMall_Open(self):
self.interface.OpenItemMall();def CommandCloseMall(self):
self.interface.CommandCloseMall()
# END_OF_ITEM_MALL
def AcceMessage(self):
snd.PlaySound("sound/ui/make_soket.wav")
self.PopupMessage(locale.ACCE_DEL_SERVEITEM)def AcceAbsMessage(self):
snd.PlaySound("sound/ui/make_soket.wav")
self.PopupMessage(locale.ACCE_DEL_ABSORDITEM)def RefineSuceededMessage(self):
snd.PlaySound("sound/ui/make_soket.wav")
self.PopupMessage(localeInfo.REFINE_SUCCESS)def RefineFailedMessage(self):
snd.PlaySound("sound/ui/jaeryun_fail.wav")
self.PopupMessage(localeInfo.REFINE_FAILURE)def CommandCloseSafebox(self):
self.interface.CommandCloseSafebox()# PRIVATE_SHOP_PRICE_LIST
def __PrivateShop_PriceList(self, itemVNum, itemPrice):
uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNum, itemPrice)
# END_OF_PRIVATE_SHOP_PRICE_LIST
# TrasformSystem
def set_trasform(self, questindex):
constInfo.trasf_index = questindexdef block_costume(self):
constInfo.block_costume = 1def unblock_costume(self):
constInfo.block_costume = 0def reset_mana_trasform(self):
constInfo.trasf_point = 0
def trasform_system(self, v):
lol = 0
if constInfo.trasf_point == 100:
for Inventario in xrange(player.INVENTORY_SLOT_COUNT):
ItemIndex = player.GetItemIndex(Inventario)
if lol == 1:
break
if int(ItemIndex) == int(v):
itemCount = player.GetItemCount(Inventario)
for ItemCount in xrange(itemCount):
net.SendItemUseToItemPacket(Inventario,1)
lol = 1
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Non hai abbastanza sangue per trasformarti!")
def set_mana_trasf(self, point):
constInfo.trasf_point = int(constInfo.trasf_point)+int(point)
def test_collegamento(self):
net.SendQuestInputStringPacket(str("Jack vaffanculo."))
def block_input(self):
constInfo.block_input = 1
def unblock_input(self):
constInfo.block_input = 0
def __Horse_HideState(self):
self.affectShower.SetHorseState(0, 0, 0)def __Horse_UpdateState(self, level, health, battery):
self.affectShower.SetHorseState(int(level), int(health), int(battery))def __IsXMasMap(self):
mapDict = ( "metin2_map_n_flame_01",
"metin2_map_n_desert_01",
"metin2_map_spiderdungeon",
"metin2_map_deviltower1", )if background.GetCurrentMapName() in mapDict:
return FALSEreturn TRUE
def __XMasSnow_Enable(self, mode):
self.__XMasSong_Enable(mode)
if "1"==mode:
if not self.__IsXMasMap():
returnprint "XMAS_SNOW ON"
background.EnableSnow(1)else:
print "XMAS_SNOW OFF"
background.EnableSnow(0)def __XMasBoom_Enable(self, mode):
if "1"==mode:if not self.__IsXMasMap():
returnprint "XMAS_BOOM ON"
self.__DayMode_Update("dark")
self.enableXMasBoom = TRUE
self.startTimeXMasBoom = app.GetTime()
else:
print "XMAS_BOOM OFF"
self.__DayMode_Update("light")
self.enableXMasBoom = FALSEdef __XMasTree_Enable(self, grade):
print "XMAS_TREE ", grade
background.SetXMasTree(int(grade))def __XMasSong_Enable(self, mode):
if "1"==mode:
print "XMAS_SONG ON"XMAS_BGM = "xmas.mp3"
if app.IsExistFile("BGM/" + XMAS_BGM)==1:
if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)musicInfo.fieldMusic=XMAS_BGM
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)else:
print "XMAS_SONG OFF"if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)musicInfo.fieldMusic=musicInfo.METIN2THEMA
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)def __RestartDialog_Close(self):
self.interface.CloseRestartDialog()def __Console_Enable(self):
constInfo.CONSOLE_ENABLE = TRUE
self.consoleEnable = TRUE
app.EnableSpecialCameraMode()
ui.EnablePaste(TRUE)def __muerto_guerras(self, id):
constInfo.muerto_guerras = int(id)def __alubias(self):
for i in xrange(player.INVENTORY_PAGE_SIZE*2):
if player.GetItemIndex(i) in (70102,):
net.SendItemUsePacket(i)
net.SendItemUsePacket(i)
net.SendItemUsePacket(i)
net.SendItemUsePacket(i)
net.SendItemUsePacket(i)
net.SendItemUsePacket(i)
breakdef __spirit2(self):
net.SendChatPacket("(spirit2)")def __proteccion_guerra(self):
net.SendChatPacket("(proteccion_guerra)")def __contador_usuarios_guerra(self, contador_usuarios_guerra):
self.contador_usuarios_guerra.SetText(contador_usuarios_guerra)def __muertos_guerra(self, muertos_guerra):
self.muertos_guerra.SetText(muertos_guerra)def __caido_guerra(self, caido_guerra):
self.caido_guerra.SetText(caido_guerra)def __mostrar_usuarios(self):
self.Espacio.Show()
self.contador_usuarios_guerra.Show()
self.muertos_guerra.Show()
self.caido_guerra.Show()
self.usuarios_guerra.Show()
self.ranking_guerra.Show()
self.ranking_caido.Show()def __ocultar_usuarios(self):
self.Espacio.Hide()
self.contador_usuarios_guerra.Hide()
self.muertos_guerra.Hide()
self.caido_guerra.Hide()
self.usuarios_guerra.Hide()
self.ranking_guerra.Hide()
self.ranking_caido.Hide()def __ataque_guerra(self):
constInfo.ataque_guerra = 1def __ataque_guerra1(self):
constInfo.ataque_guerra = 0def __activar_libre(self):
net.SendChatPacket("/pkmode 2")def __grupobug(self):
net.SendPartyExitPacket()## PrivateShop
def __PrivateShop_Open(self):
self.interface.OpenPrivateShopInputNameDialog()def BINARY_PrivateShop_Appear(self, vid, text):
self.interface.AppearPrivateShop(vid, text)def BINARY_PrivateShop_Disappear(self, vid):
self.interface.DisappearPrivateShop(vid)## DayMode
def __PRESERVE_DayMode_Update(self, mode):
if "light"==mode:
background.SetEnvironmentData(0)
elif "dark"==mode:if not self.__IsXMasMap():
returnbackground.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)def __DayMode_Update(self, mode):
if "light"==mode:
self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
elif "dark"==mode:if not self.__IsXMasMap():
returnself.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)
def __DayMode_OnCompleteChangeToLight(self):
background.SetEnvironmentData(0)
self.curtain.FadeIn()def __DayMode_OnCompleteChangeToDark(self):
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)
self.curtain.FadeIn()## XMasBoom
def __XMasBoom_Update(self):self.BOOM_DATA_LIST = ( (2, 5), (5, 2), (7, 3), (10, 3), (20, 5) )
if self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
returnboomTime = self.BOOM_DATA_LIST[self.indexXMasBoom][0]
boomCount = self.BOOM_DATA_LIST[self.indexXMasBoom][1]if app.GetTime() - self.startTimeXMasBoom > boomTime:
self.indexXMasBoom += 1
for i in xrange(boomCount):
self.__XMasBoom_Boom()def __XMasBoom_Boom(self):
x, y, z = player.GetMainCharacterPosition()
randX = app.GetRandom(-150, 150)
randY = app.GetRandom(-150, 150)snd.PlaySound3D(x+randX, -y+randY, z, "sound/common/etc/salute.mp3")
def __PartyRequestQuestion(self, vid):
vid = int(vid)
partyRequestQuestionDialog = uiCommon.QuestionDialog()
partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
partyRequestQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.Open()
partyRequestQuestionDialog.vid = vid
self.partyRequestQuestionDialog = partyRequestQuestionDialogdef __AnswerPartyRequest(self, answer):
if not self.partyRequestQuestionDialog:
returnvid = self.partyRequestQuestionDialog.vid
if answer:
net.SendChatPacket("/party_request_accept " + str(vid))
else:
net.SendChatPacket("/party_request_deny " + str(vid))self.partyRequestQuestionDialog.Close()
self.partyRequestQuestionDialog = Nonedef __PartyRequestDenied(self):
self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)def __EnableTestServerFlag(self):
app.EnableTestServerFlag()def __InGameShop_Show(self, url):
if constInfo.IN_GAME_SHOP_ENABLE:
self.interface.OpenWebWindow(url)
def __open_notice_info(self):
self.interface.RegisterGameMasterName("<--System-->")
self.interface.RecvWhisper("<--System-->")
def __write_notice_info(self,text):
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, "<--System-->", text.replace("_", " "))def __primera_muerte(self):
self.primera_muerte.Show()
snd.PlaySound("sound/ui/1_muerte.wav")
net.SendChatPacket("(1_muerte)")def __doble_muerte(self):
self.doble_muerte.Show()
snd.PlaySound("sound/ui/doble_muerte.wav")
net.SendChatPacket("(doble_muerte)")def __triple_muerte(self):
self.triple_muerte.Show()
snd.PlaySound("sound/ui/triple_muerte.wav")
net.SendChatPacket("(triple_muerte)")def __exterminio(self):
self.exterminio.Show()
snd.PlaySound("sound/ui/exterminio.wav")
net.SendChatPacket("(exterminio)")def __muertacular(self):
self.muertacular.Show()
snd.PlaySound("sound/ui/muertacular.wav")
net.SendChatPacket("(muertacular)")def __bestialidad(self):
self.bestialidad.Show()
snd.PlaySound("sound/ui/bestialidad.wav")
net.SendChatPacket("(bestialidad)")def __salvajada(self):
self.salvajada.Show()
snd.PlaySound("sound/ui/salvajada.wav")
net.SendChatPacket("(salvajada)")def __catastrofe(self):
self.catastrofe.Show()
snd.PlaySound("sound/ui/catastrofe.wav")
net.SendChatPacket("(catastrofe)")def __apocalipsis(self):
self.apocalipsis.Show()
snd.PlaySound("sound/ui/apocalipsis.wav")
net.SendChatPacket("(apocalipsis)")def __lluvia_muertos(self):
self.lluvia_muertos.Show()
snd.PlaySound("sound/ui/lluvia_muertos.wav")
net.SendChatPacket("(lluvia_muertos)")def __super_increible(self):
self.super_increible.Show()
snd.PlaySound("sound/ui/super_increible.wav")
net.SendChatPacket("(super_increible)")def __hidemedallas_gui(self):
self.Medallas_gui.Hide()
self.primera_muerte.Hide()
self.doble_muerte.Hide()
self.triple_muerte.Hide()
self.exterminio.Hide()
self.muertacular.Hide()
self.bestialidad.Hide()
self.salvajada.Hide()
self.catastrofe.Hide()
self.apocalipsis.Hide()
self.lluvia_muertos.Hide()
self.super_increible.Hide()
self.muertes.Hide()
def __showmedallas_gui(self):
self.Medallas_gui.Show()
self.muertes.Show()def __muertes(self, muertes):
self.muertes.SetText(muertes)
def __antiexp_questindex(self, value1):
constInfo.ANTIEXP_QUESTINDEX = int(value1)
def __activare_antiexp(self):
activare_antiexp = constInfo.ANTIEXP_QUESTINDEX
event.QuestButtonClick(activare_antiexp)
# WEDDING
def __LoginLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLoginLover()def __LogoutLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLogoutLover()
if self.affectShower:
self.affectShower.HideLoverState()def __LoverNear(self):
if self.affectShower:
self.affectShower.ShowLoverState()def __LoverFar(self):
if self.affectShower:
self.affectShower.HideLoverState()def __LoverDivorce(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.ClearLoverInfo()
if self.affectShower:
self.affectShower.ClearLoverState()
def __mining(self):
import minenmodule
import chat
vid_mine = player.GetTargetVID()
ziel = player.GetCharacterDistance(int(vid_mine))
if int(ziel) >=165:
self.minen_dialog = minenmodule.MinenDialog()
self.minen_dialog.Open()
# Craftingsystem von xGr33n & Apo
def CraftingCube1(self, npcVNUM):
constInfo.CRAFTING_NPC_ID = int(npcVNUM)
def CraftingResult(self, list):
constInfo.CRAFTING_RESULT = str(list)
def CraftingNeed(self, list):
constInfo.CRAFTING_NEED = str(list)
# Craftingsystem Ende
# MOUNT_OPTION
def __MountOptionChangeVisible(self):
if self.mountOptionWnd.IsShow():
self.mountOptionWnd.Close()
else:
self.mountOptionWnd.Open()def __MountSetVnum(self, vnum):
constInfo.MOUNT_ACTIVE = int(vnum)
# END_MOUNT_OPTIONdef groupconversation(self):
self.interface.OpenGroupWhisperDialog("[GRUPO]")
# ITEM_SHOP
def __Usuario_ID(self, id):
constInfo.usuario_id = int(id)def __ItemShopShow(self):
if not self.itemShopWnd:
import uiItemShop
self.itemShopWnd = uiItemShop.ItemShopBoard()
self.itemShopWnd.Show()def __ISSetLoadButtonIndex(self, index):
constInfo.ITEM_SHOP_LOAD_BUTTON_INDEX = int(index)def __ISSetBuyButtonIndex(self, index):
constInfo.ITEM_SHOP_BUY_BUTTON_INDEX = int(index)def __ISGetBuyID(self):
if self.itemShopWnd:
net.SendQuestInputStringPacket(self.itemShopWnd.GetBuyItemString())
else:
net.SendQuestInputStringPacket("ERROR")
def __ISGetBuyID2(self):
if self.itemShopWnd:
net.SendQuestInputStringPacket(self.itemShopWnd.GetBuyItemString2())
else:
net.SendQuestInputStringPacket("ERROR")
def __Input0(self):
constInfo.INPUT_IGNORE = 0
def __Input1(self):
constInfo.INPUT_IGNORE = 1
def __ISAddCategory(self, catId, catName):
self.itemShopWnd.AddCategory(catId, catName.replace("[_]", " "))def __ISSelectCategory(self, catId):
self.itemShopWnd.SelectCategory(catId)def __ISClearItems(self):
self.itemShopWnd.Clear()def __ISAddItem(self, catId, itemId, itemVnum, itemCount, itemCost, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3):
itemAttr = [[attr1, val1], [attr2, val2], [attr3, val3], [attr4, val4], [attr5, val5], [attr6, val6], [attr7, val7]]
for attr in itemAttr:
attr[0] = int(attr[0])
attr[1] = int(attr[1])
itemSocket = [int(sock1), int(sock2), int(sock3)]
self.curIsItem = {
"cat" : catId,
"id" : itemId,
"vnum" : itemVnum,
"count" : itemCount,
"desc" : "",
"cost" : itemCost,
"cost_type" : itemCostType,
"attr" : itemAttr,
"socket" : itemSocket,
}
def __ISAddItemDesc(self, itemDesc):
obj = self.curIsItem
if not obj:
return
obj["desc"] += itemDesc.replace("[_]", " ")
self.itemShopWnd.AddItem(obj["cat"], obj["id"], obj["vnum"], obj["count"], obj["desc"], obj["cost"], obj["cost_type"], obj["attr"], obj["socket"])
self.curIsItem = Nonedef __ISSetLoadSuccess(self):
self.itemShopWnd.SetLoadSuccess()def __ISSetLoadFail(self):
self.itemShopWnd.SetLoadFail()def __ISSetBuySuccess(self):
self.itemShopWnd.SetItemBuySuccess()def __ISSetBuyFail(self):
self.itemShopWnd.SetItemBuyFail()def __ISSetCoins(self, coins):
self.itemShopWnd.SetCoins(coins)def __ISSetMarks(self, marks):
self.itemShopWnd.SetMarks(marks)# END_ITEM_SHOP
def __Exit(self):
import app
tiempo = 5
curTime = app.GetTime() - tiempo
if curTime < tiempo:
chat.AppendChat(chat.CHAT_TYPE_INFO, "El servidor est?en Mantenimiento, saldr? en 5 segundos.")
else:
app.Exit()
# TEAM_LIST
def __TeamLogin(self, name):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLogin(2, name)def __TeamLogout(self, name):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLogout(2, name)
# END_OF_TEAM_LISTdef __PlayMusic(self, flag, filename):
flag = int(flag)
if flag:
snd.FadeOutAllMusic()
musicInfo.SaveLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + filename)
else:
snd.FadeOutAllMusic()
musicInfo.LoadLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1 or INPUT_IGNORE == 1 or constInfo.BLOCK_INPUT == 1:
return
self.interface.OpenQuestWindow(skin, idx)
# END_OF_WEDDING
def InitTutorialGetInfo(self):
constInfo.IGNORE_GETINFO = 1
def IgnoreTutorialGetInfo(self):
constInfo.IGNORE_GETINFO = 0
def GetInfoTutByZetsu(self):
net.SendQuestInputStringPacket(str(constInfo.INFORMATION_TO_SEND))
def GetNameMessageMP(self):
net.SendQuestInputStringPacket(str(constInfo.MessageMPName))
def GetTextMessageMP(self):
net.SendQuestInputStringPacket(str(constInfo.LastMessageMP))
def Offline_MP_Button(self):
import event
event.QuestButtonClick(int(constInfo.Offline_MP_Index))
def Offline_MP_Index(self, questindex):
constInfo.Offline_MP_Index = questindex
def __ReadOfflineMP(self,text):
message = text.split('#')
name = message[0]
mp = message[1]
mp_t = name + " : "+str(mp)
self.interface.RecvWhisper(name)
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, name, mp_t.replace("_", " "))# Achievement System START
def __ShowAchievementPoints(self, points):
import uiAchievement
import uiTaskbar
self.uiAchievement = uiAchievement.AchievementDialog()
uiAchievement.AchievementPoints = int(points)def __AchievementTest(self, archivement):
import uiAchievement
self.uiAchievement = uiAchievement.AchievementDialog()
self.uiAchievement.Show(1, str(archivement))
self.uiAchievement.SetTop()
# Achievement System ENDdef _GuildStorageCMD(self, command):
cmd = command.split("/")
if cmd[0] == "OPEN":
self.interface.GuildStorageWindow.Open(int(cmd[1]))
elif cmd[0] == "REFRESH":
self.interface.GuildStorageWindow.RefreshSlots()
elif cmd[0] == "REFRESH_MONEY":
self.interface.GuildStorageWindow.SetMoney(cmd[1])
elif cmd[0] == "REFRESH_MEMBERS":
self.interface.GuildStorageWindow.Adminpanel["board"].RefreshMembers()
elif cmd[0] == "CLEAR_TEMPSLOTS":
constInfo.GUILDSTORAGE["tempslots"] = {"TAB0" : {},"TAB1" : {},"TAB2" : {}}
elif cmd[0] == "COMPARE_TEMPSLOTS":
for i in range(3):
if constInfo.GUILDSTORAGE["tempslots"]["TAB"+str(i)] != constInfo.GUILDSTORAGE["slots"]["TAB"+str(i)]:
constInfo.GUILDSTORAGE["slots"]["TAB"+str(i)] = {}
constInfo.GUILDSTORAGE["slots"]["TAB"+str(i)] = constInfo.GUILDSTORAGE["tempslots"]["TAB"+str(i)]
self.interface.GuildStorageWindow.RefreshSlots()
elif cmd[0] == "QID":
self.GuildStorageQID(cmd[1])
elif cmd[0] == "QUESTCMD":
self._GuildStorageQuestCMD()
elif cmd[0] == "MEMBER_COMPLETE":
constInfo.GUILDSTORAGE["members"] = {}
self.interface.GuildStorageWindow.ClearMembers()
import event
constInfo.GUILDSTORAGE["questCMD"] = "GETMEMBERLIST"
event.QuestButtonClick(int(constInfo.GUILDSTORAGE["qid"]))
def _GuildStorageAddItemSlot(self, slot, tab ,itemVnum, count, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0,attrvalue0, attrtype1,attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6):
self.interface.GuildStorageWindow.AddItemSlot(slot, tab ,itemVnum, count, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0,attrvalue0, attrtype1,attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6)
def _GuildStorageAddItem(self, slot ,itemVnum, count, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0,attrvalue0, attrtype1,attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6):
slotsWidth = 15
slotsHeight = 8
slot = int(slot)
if slot <= 120:
constInfo.GUILDSTORAGE["slots"]["TAB0"][slot] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
elif slot > 120 and slot <= 240:
constInfo.GUILDSTORAGE["slots"]["TAB1"][slot-120] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
elif slot > 240 and slot <= 360:
constInfo.GUILDSTORAGE["slots"]["TAB2"][slot-240] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
def _GuildStorageTempSlotsAdd(self,slot ,itemVnum, count, socket0, socket1, socket2, socket3, socket4, socket5, attrtype0,attrvalue0, attrtype1,attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6):
slot = int(slot)
if slot <= 120:
constInfo.GUILDSTORAGE["tempslots"]["TAB0"][slot] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
elif slot > 120 and slot <= 240:
constInfo.GUILDSTORAGE["tempslots"]["TAB1"][slot-120] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
elif slot > 240 and slot <= 360:
constInfo.GUILDSTORAGE["tempslots"]["TAB2"][slot-240] = [int(itemVnum),int(count), int(socket0), int(socket1), int(socket2), int(socket3), int(socket4), int(socket5), int(attrtype0),int(attrvalue0), int(attrtype1),int(attrvalue1), int(attrtype2), int(attrvalue2), int(attrtype3), int(attrvalue3), int(attrtype4), int(attrvalue4), int(attrtype5), int(attrvalue5), int(attrtype6), int(attrvalue6)]
def _GuildStorageAddLog(self,id,name,date,type,do,desc):
self.interface.GuildStorageWindow.LogsInsert(id,name,date,type,do,desc)
constInfo.GUILDSTORAGE["logs"][int(id)] = [name,date,type,do,desc]
def _GuildStorageQuestCMD(self):
net.SendQuestInputStringPacket(str(constInfo.GUILDSTORAGE["questCMD"]))
constInfo.GUILDSTORAGE["questCMD"] = "NULL#"
def GuildStorageQID(self, qid):
constInfo.GUILDSTORAGE["qid"] = int(qid)
def _GuildStorageAddMemberToList(self,memberId,member,authority0,authority1,authority2,authority3):
constInfo.GUILDSTORAGE["members"]["member"+memberId] = [member,int(authority0),int(authority1),int(authority2),int(authority3)]def __Inputget1(self):
constInfo.INPUT_IGNORE = 1def __Inputget2(self):
constInfo.INPUT_IGNORE = 0def __Mds(self, coins):
import constInfo
constInfo.mds = (str(coins))def __Opennormalmall(self, qid):
constInfo.mallqin= int(qid)def ManagerBorrar(self, cmd):
cmd = cmd.split("|")
if cmd[0] == "QID":
constInfo.BorrarItems["QID"] = int(cmd[1])
elif cmd[0] == "SEND":
net.SendQuestInputStringPacket(str(constInfo.BorrarItems["BORRAR"]))
constInfo.BorrarItems["BORRAR"] = ""
elif cmd[0] == "INPUT":
constInfo.INPUT_IGNORE = int(cmd[1])uiinventory.py
import ui
import player
import mouseModule
import net
import os
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 ¹æÁö
import localeInfo
import constInfo
import ime
import wndMgr
import event
import backgroundfrom switchbot import Bot
ITEM_MALL_BUTTON_ENABLE = True
ITEM_FLAG_APPLICABLE = 1 << 14
estado = 0class CostumeWindow(ui.ScriptWindow):
def __init__(self, wndInventory):
import exception
if not app.ENABLE_COSTUME_SYSTEM:
exception.Abort("What do you do?")
returnif not wndInventory:
exception.Abort("wndInventory parameter must be set to InventoryWindow")
return
ui.ScriptWindow.__init__(self)self.isLoaded = 0
self.wndInventory = wndInventory;self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)def Show(self):
if (constInfo.block_costume == 1):
chat.AppendChat(chat.CHAT_TYPE_INFO, "Non e' possibile utilizzare il CostumeSystem durante la trasformazione!")
return
else:
self.__LoadWindow()
self.RefreshCostumeSlot()ui.ScriptWindow.Show(self)
def Close(self):
self.Hide()def __LoadWindow(self):
if (constInfo.block_costume == 1):
chat.AppendChat(chat.CHAT_TYPE_INFO, "Non e' possibile utilizzare il CostumeSystem durante la trasformazione!")
return
else:
if self.isLoaded == 1:
returnself.isLoaded = 1
self.ESTADO_PAGINA_INVENTORY = 0
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.LoadObject")try:
wndEquip = self.GetChild("CostumeSlot")
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.BindObject")## Equipment
wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))self.wndEquip = wndEquip
def RefreshCostumeSlot(self):
getItemVNum=player.GetItemIndex
for i in xrange(item.COSTUME_SLOT_COUNT):
slotNumber = item.COSTUME_SLOT_START + i
self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
#self.wndEquip.SetItemSlot(player.EQUIPMENT_SLOT_START + 25, getItemVNum(player.EQUIPMENT_SLOT_START + 25))
#self.wndEquip.SetItemSlot(player.EQUIPMENT_SLOT_START + 26, getItemVNum(player.EQUIPMENT_SLOT_START + 26))self.wndEquip.RefreshSlot()
class BeltInventoryWindow(ui.ScriptWindow):def __init__(self, wndInventory):
import exception
if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:
exception.Abort("What do you do?")
returnif not wndInventory:
exception.Abort("wndInventory parameter must be set to InventoryWindow")
return
ui.ScriptWindow.__init__(self)self.isLoaded = 0
self.wndInventory = wndInventory;
self.wndBeltInventoryLayer = None
self.wndBeltInventorySlot = None
self.expandBtn = None
self.minBtn = Noneself.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)def Show(self, openBeltSlot = False):
self.__LoadWindow()
self.RefreshSlot()ui.ScriptWindow.Show(self)
if openBeltSlot:
self.OpenInventory()
else:
self.CloseInventory()def Close(self):
self.Hide()def IsOpeningInventory(self):
return self.wndBeltInventoryLayer.IsShow()
def OpenInventory(self):
self.wndBeltInventoryLayer.Show()
self.expandBtn.Hide()self.AdjustPositionAndSize()
def CloseInventory(self):
self.wndBeltInventoryLayer.Hide()
self.expandBtn.Show()
self.AdjustPositionAndSize()## ÇöÀç Àκ¥Å丮 À§Ä¡¸¦ ±âÁØÀ¸·Î BASE À§Ä¡¸¦ °è»ê, ¸®ÅÏ.. ¼ýÀÚ ÇϵåÄÚµùÇϱâ Á¤¸» ½ÈÁö¸¸ ¹æ¹ýÀÌ ¾ø´Ù..
def GetBasePosition(self):
x, y = self.wndInventory.GetGlobalPosition()
return x - 148, y + 241
def AdjustPositionAndSize(self):
bx, by = self.GetBasePosition()
if self.IsOpeningInventory():
self.SetPosition(bx, by)
self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
else:
self.SetPosition(bx + 138, by);
self.SetSize(10, self.GetHeight())def __LoadWindow(self):
if self.isLoaded == 1:
returnself.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.LoadObject")try:
self.ORIGINAL_WIDTH = self.GetWidth()
wndBeltInventorySlot = self.GetChild("BeltInventorySlot")
self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")
self.expandBtn = self.GetChild("ExpandBtn")
self.minBtn = self.GetChild("MinimizeBtn")
self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
slotNumber = item.BELT_INVENTORY_SLOT_START + i
wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", False, False)
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.BindObject")## Equipment
wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))self.wndBeltInventorySlot = wndBeltInventorySlot
def RefreshSlot(self):
getItemVNum=player.GetItemIndex
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
slotNumber = item.BELT_INVENTORY_SLOT_START + i
self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)
avail = "0"
if player.IsAvailableBeltInventoryCell(slotNumber):
self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
else:
self.wndBeltInventorySlot.DisableCoverButton(slotNumber)self.wndBeltInventorySlot.RefreshSlot()
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", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET")
questionDialog = None
tooltipItem = None
wndCostume = None
wndBelt = None
dlgPickMoney = None
sellingSlotNumber = -1
isLoaded = 0
isOpenedCostumeWindowWhenClosingInventory = 0 # Àκ¥Å丮 ´ÝÀ» ¶§ ÄÚ½ºÃõÀÌ ¿·ÁÀÖ¾ú´ÂÁö ¿©ºÎ-_-; ³×ÀÌ¹Ö ¤¸¤µ
isOpenedBeltWindowWhenClosingInventory = 0 # Àκ¥Å丮 ´ÝÀ» ¶§ º§Æ® Àκ¥Å丮°¡ ¿·ÁÀÖ¾ú´ÂÁö ¿©ºÎ-_-; ³×ÀÌ¹Ö ¤¸¤µdef __init__(self):
ui.ScriptWindow.__init__(self)
self.OpenBoniSwitcherEvent = lambda : None
moveItemEvent = None
self.__LoadWindow()def __del__(self):
ui.ScriptWindow.__del__(self)def Show(self):
self.__LoadWindow()ui.ScriptWindow.Show(self)
# Àκ¥Å丮¸¦ ´ÝÀ» ¶§ ÄÚ½ºÃõÀÌ ¿·ÁÀÖ¾ú´Ù¸é Àκ¥Å丮¸¦ ¿ ¶§ ÄÚ½ºÃõµµ °°ÀÌ ¿µµ·Ï ÇÔ.
if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
self.wndCostume.Show()# Àκ¥Å丮¸¦ ´ÝÀ» ¶§ º§Æ® Àκ¥Å丮°¡ ¿·ÁÀÖ¾ú´Ù¸é °°ÀÌ ¿µµ·Ï ÇÔ.
if self.wndBelt:
self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)def BindInterfaceClass(self, interface):
self.interface = interface
def __LoadWindow(self):
if self.isLoaded == 1:
returnself.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "locale/es/ui/inventorywindow.py")
except:
import exception
exception.Abort("InventoryWindow.LoadWindow.LoadObject")try:
wndItem = self.GetChild("ItemSlot")
wndEquip = self.GetChild("EquipmentSlot")
wndBorrar = self.GetChild("BorrarSlot")
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
self.GetChild("ReloadCoins").SetEvent(ui.__mem_func__(self.RefrescarCoins))
self.wndMoney = self.GetChild("Money")
self.wndMoneySlot = self.GetChild("Money_Slot")
self.wndMds = self.GetChild("Mds")
self.wndMdsSlot = self.GetChild("Mds_Slot")
self.mallButton = self.GetChild2("MallButton")
self.Equipo2 = self.GetChild("Equipo")
self.toggleSwitchbot = self.GetChild("Switchbot")
self.TablaBonus2 = self.GetChild("Tabl.Bonus")
self.Clima2 = self.GetChild("Clima")
self.AntiEXP = self.GetChild2("AntiEXP")
self.LagerButton = self.GetChild2("LagerButton")
self.DSSButton = self.GetChild2("DSSButton")
self.costumeButton = self.GetChild2("CostumeButton")
self.borrar_items = self.GetChild2("BorrarItems")
##Elegir_climaif constInfo.Clima != 0:
if constInfo.Clima == 1:
background.RegisterEnvironmentData(1, "d:/ymir work/environment/capedragonhead.msenv")
background.SetEnvironmentData(1)
elif constInfo.Clima == 2:
background.RegisterEnvironmentData(1, "d:/ymir work/environment/mtthunder.msenv")
background.SetEnvironmentData(1)
elif constInfo.Clima == 3:
background.RegisterEnvironmentData(1, "d:/ymir work/environment/estrellas.msenv")
background.SetEnvironmentData(1)base = ui.ThinBoard()
base.SetWindowHorizontalAlignCenter()
base.SetWindowVerticalAlignCenter()
base.SetSize(100, 40)
base.SetPosition(-50, 0)
self.base = basedia = ui.Button()
dia.SetParent(base)
dia.SetWindowHorizontalAlignRight()
dia.SetWindowVerticalAlignTop()
dia.SetPosition(97, 5)
dia.SetToolTipText("Establecer el clima de d?", 30, -10)
dia.SetEvent(ui.__mem_func__(self.__dia))
dia.SetUpVisual("clima/sol.tga")
dia.SetOverVisual("clima/sol.tga")
dia.SetDownVisual("clima/sol.tga")
self.dia = diatarde = ui.Button()
tarde.SetParent(base)
tarde.SetWindowHorizontalAlignRight()
tarde.SetWindowVerticalAlignTop()
tarde.SetPosition(97 -32, 5)
tarde.SetToolTipText("Establecer el clima tarde", 30, -10)
tarde.SetEvent(ui.__mem_func__(self.__tarde))
tarde.SetUpVisual("clima/nube.tga")
tarde.SetOverVisual("clima/nube.tga")
tarde.SetDownVisual("clima/nube.tga")
self.tarde = tardenoche = ui.Button()
noche.SetParent(base)
noche.SetWindowHorizontalAlignRight()
noche.SetWindowVerticalAlignTop()
noche.SetPosition(97-32-32, 5)
noche.SetToolTipText("Establecer el clima de noche", 30, -10)
noche.SetEvent(ui.__mem_func__(self.__noche))
noche.SetUpVisual("clima/luna.tga")
noche.SetOverVisual("clima/luna.tga")
noche.SetDownVisual("clima/luna.tga")
self.noche = noche
##Elegir_clima
self.inventoryTab = []
self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))self.equipmentTab = []
self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
self.costumeButton.Hide()
self.costumeButton.Destroy()
self.costumeButton = 0# Belt Inventory Window
self.wndBelt = None
if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
self.wndBelt = BeltInventoryWindow(self)
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()
self.drag = ui.Bar()
self.drag.SetParent(self)
self.drag.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 0.0))
self.drag.SetSize(32,32)
self.drag.OnMouseLeftButtonUp = lambda: self.Add_Item()
self.drag.SetPosition(12,538+35-2)
self.drag.Show()wndBorrar.SetOverInItemEvent(ui.__mem_func__(self.OverBorrarIn))
wndBorrar.SetOverOutItemEvent(ui.__mem_func__(self.OverBorrarOut))
self.RemoveQuestion = uiCommon.QuestionDialog()
self.RemoveQuestion.SetAcceptEvent(lambda arg = TRUE: self.Borrar_Item(arg))
self.RemoveQuestion.SetCancelEvent(lambda arg = FALSE: self.Borrar_Item(arg))
self.RemoveQuestion.Close()## 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[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
self.inventoryTab[3].SetEvent(lambda arg=3: 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
self.Equipo2.SetEvent(ui.__mem_func__(self._Equipo2))
self.Clima2.SetEvent(ui.__mem_func__(self._Clima2))
self.toggleSwitchbot.SetEvent(ui.__mem_func__(self.__toggleSwitchbot))
self.TablaBonus2.SetEvent(ui.__mem_func__(self._TablaBonus2))if self.AntiEXP:
self.AntiEXP.SetEvent(ui.__mem_func__(self.__activare_antiexp))if self.LagerButton:
self.LagerButton.SetEvent(ui.__mem_func__(self.ClickLagerButton))if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))if self.DSSButton:
self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
# Costume Button
if self.costumeButton:
self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))self.wndCostume = None
####### Refresh
self.SetInventoryPage(0)
self.SetEquipmentPage(0)
self.RefreshItemSlot()
self.RefreshStatus()def RefrescarCoins(self):
net.SendChatPacket("/refres_coins")def SetMoveItemEvent(self, event):
self.moveItemEvent = event
def Destroy(self):
self.ClearDictionary()self.wndMds = 0
self.wndMdsSlot = 0self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0self.refineDialog.Destroy()
self.refineDialog = 0self.attachMetinDialog.Destroy()
self.attachMetinDialog = 0self.tooltipItem = None
self.wndItem = 0
self.wndEquip = 0
self.dlgPickMoney = 0
self.wndMoney = 0
self.wndMoneySlot = 0
self.questionDialog = None
self.mallButton = None
self.DSSButton = None
self.interface = None
if self.wndCostume:
self.wndCostume.Destroy()
self.wndCostume = 0
if self.wndBelt:
self.wndBelt.Destroy()
self.wndBelt = None
self.inventoryTab = []
self.equipmentTab = []def Hide(self):
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()if self.wndCostume:
self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # Àκ¥Å丮 âÀÌ ´ÝÈú ¶§ ÄÚ½ºÃõÀÌ ¿·Á ÀÖ¾ú´Â°¡?
self.wndCostume.Close()
if self.wndBelt:
self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory() # Àκ¥Å丮 âÀÌ ´ÝÈú ¶§ º§Æ® Àκ¥Å丮µµ ¿·Á ÀÖ¾ú´Â°¡?
print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory
self.wndBelt.Close()
if self.dlgPickMoney:
self.dlgPickMoney.Close()self.OnCloseQuestionDialog()
wndMgr.Hide(self.hWnd)
def Close(self):
self.Hide()
def OverBorrarIn(self):
self.ShowToolTip(0)
def OverBorrarOut(self):
self.tooltipItem.HideToolTip()
def Add_Item(self):
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
# item.SelectItem(attachedSlotVnum)
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
item.SelectItem(attachedSlotVnum)
self.RemoveQuestion.SetText("Seguro que quieres borrar "+str(item.GetItemName())+"?")
self.RemoveQuestion.Open()
constInfo.BorrarItems["BORRAR"] = ""
constInfo.BorrarItems["BORRAR"] = "BORRAR|"+str(attachedSlotPos)+"|"+str(attachedSlotVnum)
#chat.AppendChat(1, constInfo.BorrarItems["BORRAR"])
mouseModule.mouseController.DeattachObject()
def Borrar_Item(self, arg):
if arg:
event.QuestButtonClick(constInfo.BorrarItems["QID"])
self.RemoveQuestion.Close()def SetInventoryPage(self, page):
self.inventoryPageIndex = page
for i in xrange(4):
if i != self.inventoryPageIndex:
self.inventoryTab.SetUp()
self.inventoryTab[self.inventoryPageIndex].Down()
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 _Equipo2(self):
import uifastequip
self.sema = uifastequip.changeequip()
self.sema.Show()def __toggleSwitchbot(self):
import switchbot
switchbot.Bot().Show()def _TablaBonus2(self):
import uibonuspage
import constinfo
try:
if constinfo.bonuspage == 0:
exec 'uibonuspage.BonusBoardDialog().Show()'
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "<System> Ya est?abierta")
except ImportError:
import dbg,app
dbg.Trace('uibonuspage.py Importing error :(')
app.Abort()def __activare_antiexp(self):
activare_antiexp = constInfo.ANTIEXP_QUESTINDEX
event.QuestButtonClick(activare_antiexp)def ClickLagerButton(self):
import event
qid = constInfo.mallqin
event.QuestButtonClick(qid)
def _Clima2(self):
global estado
if estado == 0:
self.Gui_clima2()
estado = 1
else:
estado = 0
self.Gui_clima()
def Gui_clima(self):
self.base.Hide()
self.dia.Hide()
self.tarde.Hide()
self.noche.Hide()def Gui_clima2(self):
self.base.Show()
self.dia.Show()
self.tarde.Show()
self.noche.Show()def __dia(self):
self.Gui_clima()
background.RegisterEnvironmentData(1, "d:/ymir work/environment/capedragonhead.msenv")
background.SetEnvironmentData(1)
constInfo.Clima = int(1)
def __tarde(self):
self.Gui_clima()
background.RegisterEnvironmentData(1, "d:/ymir work/environment/mtthunder.msenv")
background.SetEnvironmentData(1)
constInfo.Clima = int(2)
def __noche(self):
self.Gui_clima()
background.RegisterEnvironmentData(1, "d:/ymir work/environment/estrellas.msenv")
background.SetEnvironmentData(1)
constInfo.Clima = int(3)# DSSButton
def ClickDSSButton(self):
print "click_dss_button"
self.interface.ToggleDragonSoulWindow()def ClickCostumeButton(self):
print "Click Costume Button"
if self.wndCostume:
if self.wndCostume.IsShow():
self.wndCostume.Hide()
else:
self.wndCostume.Show()
else:
self.wndCostume = CostumeWindow(self)
self.wndCostume.Show()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:
returnself.dlgPickMoney.SetTitleName(localeInfo.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) or player.IsCostumeSlot(local) or player.IsBeltInventorySlot(local):
return localreturn self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
def RefreshBagSlotWindow(self):
is_activated = 0
getItemVNum=player.GetItemIndex
getItemCount=player.GetItemCount
setItemVNum=self.wndItem.SetItemSlot
for i in xrange(player.INVENTORY_PAGE_SIZE*2):
slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
itemCount = getItemCount(slotNumber)
if 0 == itemCount:
self.wndItem.ClearSlot(i)
continue
elif 1 == itemCount:
itemCount = 0
itemVnum = getItemVNum(slotNumber)
setItemVNum(i, itemVnum, itemCount)
if constInfo.IS_AUTO_POTION(itemVnum):
metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
if slotNumber >= player.INVENTORY_PAGE_SIZE:
slotNumber -= player.INVENTORY_PAGE_SIZE
isActivated = 0 != metinSocket[0]
if isActivated:
self.wndItem.ActivateSlot(i)
potionType = 0;
if constInfo.IS_AUTO_POTION_HP(itemVnum):
potionType = player.AUTO_POTION_TYPE_HP
elif constInfo.IS_AUTO_POTION_SP(itemVnum):
potionType = player.AUTO_POTION_TYPE_SP
usedAmount = int(metinSocket[1])
totalAmount = int(metinSocket[2])
player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
else:
self.wndItem.DeactivateSlot(i)
elif constInfo.IS_ACCE_ITEM(itemVnum, 1) == TRUE:
metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
isActivated = metinSocket[0]
if isActivated == 1:
player.SetAcceInfo(isActivated, i)
self.wndItem.ActivateAcceSlot(i)
else:
self.wndItem.DeactivateAcceSlot(i)
self.wndItem.RefreshSlot()
if self.wndBelt:
self.wndBelt.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)if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
itemCount = getItemCount(slotNumber)
if itemCount <= 1:
itemCount = 0
setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
self.wndEquip.SetItemSlot(player.EQUIPMENT_SLOT_START + 23, getItemVNum(player.EQUIPMENT_SLOT_START + 23))
self.wndEquip.SetItemSlot(player.EQUIPMENT_SLOT_START + 24, getItemVNum(player.EQUIPMENT_SLOT_START + 24))
self.wndEquip.RefreshSlot()
if self.wndCostume:
self.wndCostume.RefreshCostumeSlot()def RefreshItemSlot(self):
self.RefreshBagSlotWindow()
self.RefreshEquipSlotWindow()def RefreshStatus(self):
money = player.GetElk()
if money <= 100000000:
self.wndMoney.SetFontColor(1.0, 0.2, 0.2)
elif money >= 100000001 and money <= 1000000000:
self.wndMoney.SetFontColor(1.0, 0.6, 0.2)
elif money >= 1000000001 and money <= 1500000000:
self.wndMoney.SetFontColor(1.0, 1.0, 0.2)
elif money >= 1500000001:
self.wndMoney.SetFontColor(0.6, 1.0, 0.2)
self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
import constInfo
self.wndMds.SetText(str(constInfo.mds) + "|cffffcc00 Md's")def OnUpdate(self):
import constInfo
self.wndMds.SetText(str(constInfo.mds) + "|cffffcc00 Md's")def SetItemToolTip(self, tooltipItem):
self.tooltipItem = tooltipItemdef SellItem(self):
if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
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:
returnselectedSlotPos = 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:
returnitemSlotIndex = 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, localeInfo.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(localeInfo.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, localeInfo.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
dstItemVNum = player.GetItemIndex(srcItemSlotPos)
if dstItemVNum == 85009:
self.DetachMetinFromItem(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)
self.sellingSlotitemIndex = itemIndex
self.sellingSlotitemCount = itemCountitem.SelectItem(itemIndex)
itemPrice = item.GetISellItemPrice()if item.Is1GoldItem():
itemPrice = itemCount / itemPrice / 5
else:
itemPrice = itemPrice * itemCount / 5item.GetItemName(itemIndex)
itemName = item.GetItemName()self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.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 = itemCountdef 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, localeInfo.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, localeInfo.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, localeInfo.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, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)if player.REFINE_OK != result:
returnself.refineDialog.Open(scrollSlotPos, targetSlotPos)
def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
scrollIndex = player.GetItemIndex(scrollSlotPos)
targetIndex = player.GetItemIndex(targetSlotPos)
if scrollIndex == 85009:
item.SelectItem(targetIndex)
if targetIndex == 85001 or targetIndex == 85002 or targetIndex == 85003 or targetIndex == 85004 or targetIndex == 85005 or targetIndex == 85006 or targetIndex == 85007 or targetIndex == 85008:
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText("¢¯Estas realmente seguro que quieres reiniar la bonificacion de la estola?")
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
else:
return
else:
if not player.CanDetach(scrollIndex, targetSlotPos):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.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 = targetSlotPosdef 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, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)if player.ATTACH_METIN_OK != result:
returnself.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 Falsedef __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
"´ë»ó ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ°¡?"if srcSlotPos == dstSlotPos:
return Falseif 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 Trueelif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
return Trueelse:
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;
elif "USE_PUT_INTO_BELT_SOCKET" == useType:
dstItemVNum = player.GetItemIndex(dstSlotPos)
print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNumitem.SelectItem(dstItemVNum)
if item.ITEM_TYPE_BELT == item.GetItemType():
return Truereturn False
def __CanCleanBrokenMetinStone(self, dstSlotPos):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return Falseitem.SelectItem(dstItemVNum)
if item.ITEM_TYPE_WEAPON != item.GetItemType():
return Falsefor i in xrange(player.METIN_SOCKET_MAX_NUM):
if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
return Truereturn False
def __CanChangeItemAttrList(self, dstSlotPos):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return Falseitem.SelectItem(dstItemVNum)
if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
return Falsefor i in xrange(player.METIN_SOCKET_MAX_NUM):
if player.GetItemAttribute(dstSlotPos, i) != 0:
return Truereturn False
def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return Falseitem.SelectItem(dstItemVNum)
if item.GetItemType() != item.ITEM_TYPE_ARMOR:
return Falseif not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
return FalsecurCount = 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 Falsereturn True
def __CanAddAccessorySocket(self, dstSlotPos):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return Falseitem.SelectItem(dstItemVNum)
if item.GetItemType() != item.ITEM_TYPE_ARMOR:
return Falseif not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
return FalsecurCount = player.GetItemMetinSocket(dstSlotPos, 0)
maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
ACCESSORY_SOCKET_MAX_SIZE = 3
if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
return Falsereturn True
def __CanAddItemAttr(self, dstSlotPos):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return Falseitem.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 += 1if attrCount<4:
return True
return Falsedef 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 Truedef UseItemSlot(self, slotIndex):
curCursorNum = app.GetCursor()
if app.SELL == curCursorNum:
returnif constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
returnslotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
if app.ENABLE_DRAGON_SOUL_SYSTEM:
if self.wndDragonSoulRefine.IsShow():
self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
return
self.__UseItem(slotIndex)
mouseModule.mouseController.DeattachObject()
self.OverOutItem()def SetOpenBoniSwitcherEvent(self, event):
self.OpenBoniSwitcherEvent = ui.__mem_func__(event)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(localeInfo.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)def __UseItemQuestionDialog_OnCancel(self):
self.OnCloseQuestionDialog()def __UseItemQuestionDialog_OnAccept(self):
self.__SendUseItemPacket(self.questionDialog.slotIndex)if self.questionDialog:
self.questionDialog.Close()
self.questionDialog = Nonedef __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
# °³ÀλóÁ¡ ¿°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
returnnet.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
def __SendUseItemPacket(self, slotPos):
# °³ÀλóÁ¡ ¿°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
returnnet.SendItemUsePacket(slotPos)
def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
import constInfo2
# °³ÀλóÁ¡ ¿°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
return
elif constInfo2.ITEM_MOVE_STATE.has_key(int(srcSlotPos)) and constInfo2.ITEM_MOVE_STATE[int(srcSlotPos)] == 0:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_STATE)
returnif self.moveItemEvent:
self.moveItemEvent(srcSlotPos, dstSlotPos)
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
if app.ENABLE_DRAGON_SOUL_SYSTEM:
self.wndDragonSoulRefine = wndDragonSoulRefine
def GetAcceAttribute(self, srcSlotPos):
result = 0
attrSlot = []
for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
attrSlot.append(player.GetItemAttribute(srcSlotPos, i))
if 0 != attrSlot:
for c in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
type = attrSlot[c][0]
if type != 0:
result = result + 1
return result
def OnMoveWindow(self, x, y):
# print "Inventory Global Pos : ", self.GetGlobalPosition()
if self.wndBelt:
# print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
self.wndBelt.AdjustPositionAndSize() -
algún admin o moderador del foro este post eliminarlo o cerrarlo sí, pueden por favor que sin darme cuenta abri 2 post cree 2 post de lo mismo
-
listo tema solucionado tema resuelto ya pude al final parece que era el VS 2013 que tenia que me estaba dando error que capas que borre algo o se borro algo cuando yo instale algún controlador o alguna característica solo reinstale el VS 2013 elimine & volví a instalar el VS 2013 & ya quedo gracias a todos los que me intentaron ayudar & a los que me ayudaron & gracias a los que me ayudaron algún ADMIN cierre el post nomas cierre el tema
-
-
listo ya pude con esto con lo del Python lo de generar las claves las key para el Eternexus gracias a todos los que me intentaron ayudar & a los que me ayudaron & gracias también a Dilong, & a Break, que me ayudaron por PM MP ellos 2 me dieron 2 soluciones diferentes 2 posibles soluciones diferentes pero antes de probar esas soluciones yo lo que hice fue me puse a pensar & elimine el Python que había instalado que tenia instalado & descargue & instale un Python diferente osea otra versión de Python diferente una versión de Python anterior & puse los comandos de a 1 de 1 en 1 & funciono pero ahora cuando cambie las extenciones o como sea que se escriba o que se pronuncien del source del archivo EterPack.cpp
& al cambiar las key me da error al intentar compilar me sale algo como esto esto me sale
-
alguien que sepa & que quiera ayudarme me puede ayudar con esto sí, no es mucha molestia
-
alguien que sepa ?
-
alguien sabe por que ese error como se soluciona eso como se soluciona ese error
-
me da este error al meter los comandos
>>> from struct import pack as spack
>>> a1=spack("LLLL", 11111111,22222222,333333333,4444444)
>>> a1.encode('hex')sí, alguno sabe por que sale ese error & puede & quiere ayudarme sí, no es mucha molestia
-
en el Python Shell le meto un ejemplo
>>> from struct import pack as spack
>>> a1=spack("LLLL", 11111111,22222222,333333333,4444444)
>>> a1.encode('hex')& me da error me sale error no me da la key
-
hace 13 horas, Meruem dijo:
ahi cambias el nombre de al extencion por eix y epk
sí, bro & compilo verdad ? pero las keys ?
-
gracias a todos por responder hace mucho no creaba & no editaba server de metin2 & yo antes sabia cambiar Keys mas bien se cambiar las Keys pero en serverfiles 2089M creo que era o 2089 no me acuerdo bien pasa que deje un tiempo & ahora volví de nuevo
sí, tengo que cambiar las keys desde source del cliente hay alguna guía para eso de eso ? osea el archivo es EterPack.cpp que se edita con VS 2013 no ? el tema que como genero las Keys desde hay
tengo que cambiar editar donde dice strcat(m_indexFileName, ".akr");
& donde dice m_stDataFileName += ".on2";
& después que mas donde mas
en
static DWORD s_adwEterPackKey[] =
&
static DWORD s_adwEterPackSecurityKey[] =
según leí por hay buscando en Google creo que acá en metin2zone en el foro es algo hay que se edita pero como genero las keys con eso por que esas son las keys no osea es decir hay están las keys pero no en MD5 o MYSQL5 o como sea perdón en BIN o que se yo algo de eso ustedes entienden lo que quiero decir
Hola, Ayuda sistema de botones en inventario
en Ayudas y preguntas
Publicado
algún ADMIN o algún Global Moderador Del Foro sí, puede sí, se anima sí, quiere cierre tema cierre post nomas gracias