I have installed this belt button on my client:
And Came up with this bonus window:
But every time I click open a new window:
Can someone help with this? I want to open a only window, and close it when I click again.
The code of game.py
self.Bonusuri = ui.Button()
self.Bonusuri.SetParent(self.menu_bg)
self.Bonusuri.SetPosition(9, 10)
self.Bonusuri.SetUpVisual("zeta/1.tga")
self.Bonusuri.SetOverVisual("zeta/2.tga")
self.Bonusuri.SetDownVisual("zeta/1.tga")
self.Bonusuri.SetEvent(ui.__mem_func__(self.__Bonu sPage))
self.Bonusuri.Show()
AND
def __BonusPage(self):
import PaginaBonusuri
global BPisLoaded
try:
if BPisLoaded == 0:
BPisLoaded = 1
exec 'PaginaBonusuri.BonusBoardDialog().Show()'
else:
exec 'PaginaBonusuri.BonusBoardDialog().Hide()'
except ImportError:
import dbg,app
dbg.Trace('PaginaBonusuri.py Importing error')
app.Abort
self.Bonusuri.SetParent(self.menu_bg)
self.Bonusuri.SetPosition(9, 10)
self.Bonusuri.SetUpVisual("zeta/1.tga")
self.Bonusuri.SetOverVisual("zeta/2.tga")
self.Bonusuri.SetDownVisual("zeta/1.tga")
self.Bonusuri.SetEvent(ui.__mem_func__(self.__Bonu sPage))
self.Bonusuri.Show()
AND
def __BonusPage(self):
import PaginaBonusuri
global BPisLoaded
try:
if BPisLoaded == 0:
BPisLoaded = 1
exec 'PaginaBonusuri.BonusBoardDialog().Show()'
else:
exec 'PaginaBonusuri.BonusBoardDialog().Hide()'
except ImportError:
import dbg,app
dbg.Trace('PaginaBonusuri.py Importing error')
app.Abort
And the code of PaginaBonusuri.py
#!/usr/bin/python
# -*- coding: latin-1 -*-
import ui
import chat
import app
import player
import snd
import item
import net
import game
class BonusBoardDialog(ui.ScriptWindow):
MaxBoni = { "1": 1000000, "2": 999, "3": 999, "4": 999, "5": 999, "6": 999, "7": 999, "9": 999, "10": 999, "11": 999, "12": 999, "13": 999, "14": 999, "15": 999, "16": 999, "17": 999, "18": 999, "19": 999, "20": 999, "21": 999, "22": 999, "23": 999, "24": 999, "27": 999, "28": 999, "29": 999, "30": 999, "31": 999, "32": 999, "33": 999, "34": 999, "35": 999, "36": 999, "37": 999, "38": 999, "39": 999, "41": 999, "43": 999, "44": 999, "45": 999, "48": 1, "53": 999 }
BonusDict = ["1", "2"]
BonusIDListe = [["", 0, 0],["Max HP", 1, 0],["Max MP", 2, 0],["VIT", 3, 0],["INT", 4, 0],["FOR", 5, 0],["DEX", 6, 0],["Velocidade de ataque", 7, 0],["Velocidade de Movimento", 8, 0],["Velocidade skill", 9, 0],["Regeneração de HP", 10, 32],["Regeneração de MP", 11, 33],["Chance de envenenamento", 12, 37],["Chance de Atordoar", 13, 38],["Szansa na Spowolnienie", 14, 39],["Chance de critico", 15, 40],["Chance de Perfurar", 16, 41],["Bônus Humanoides", 17, 43],["Bônus Animais", 18, 44],["Bônus Orcs", 19, 45],["Bônus Fanaticos ", 20, 46],["Bônus Mortos-Vivos", 21, 47],["Bônus Demonios", 22, 48],["Dano Abosrvido por HP", 23, 63],["Dano Abosrvido por MP", 24, 64],["Chance de Roubar MP", 25, 65],["Szansa na Kradzie¿ P¯", 26, 66],["Szansa na Refletir Ataque Físico", 27, 67],["Esquivar flechas", 28, 68],["Resistência Espada", 29, 69],["Resistência Espadão", 30, 70],["Resistência Adagas", 31, 71],["Resistência Sinos", 32, 72],["Resistência Leque/Staff", 33, 73],["Resistência Flecha", 34, 74],["Resistência a Fogo", 35, 75],["Resistência a Relâmpagos", 36, 76],["Resistência Mágica", 37, 77],["Resistência ao Vento", 38, 78],["Refletir Ataque Físico", 39, 79],["Desativado", 40, 80],["Resistência a Veneno", 41, 81],["SP Yükselmesi Deðiþimi", 42, 82],["Bônus de XP", 43, 83],["Bônus drop de Gold", 44, 84],["Aumenta chance de drop", 45, 85],["Desativado", 46, 86],["Szansa na odzyskanie P¯", 47, 87],["Imune a Atordoamento", 48, 88],["Imune a Lentidão", 49, 89],["Imune a Quedas", 50, 90],["APPLY_SKILL", 51, 0],["Yay Menzili", 52, 95],["Bônus de Ataque", 53, 0],["Defesa", 54, 96],["Bônus de Ataque Magico", 55, 97],["Bônus de Defesa Magica", 56, 98],["", 57, 0],["Bônus de Stamina", 58, 0],["Bônus Guerreiros", 59, 54],["Bônus Ninjas", 60, 55],["Bônus Shuras", 61, 56],["Bônus Shamans", 62, 57],["Bônus Monstros", 63, 53],["Bônus Monstros", 64, 114],["Defesa", 65, 115],["Bônus de EXP", 66, 116],["Bônus de Drop", 67, 117],["Bônus de Drop Gold", 68, 118],["APPLY_MAX_HP_PCT", 69, 119],["APPLY_MAX_SP_PCT", 70, 120],["Dano de Skill", 71, 121],["Dano Medio", 72, 122],["Resistência a Skills", 73, 123],["Resistência a Dano", 74, 124],["", 75, 0],["Desativado", 76, 125],["Desativado", 77, 126],["Resistência a Guerreiros", 78, 59],["Resistência a Ninjas", 79, 60],["Resistência a Shuras", 80, 61],["Resistência a Shamans", 81, 62]]
SpecialBoni = { 1: "Norm.State", 2: "Norm.State", 3: "Norm.State", 4: "Norm.State", 5: "Norm.State", 6: "Norm.State", 55: "Norm.State", 56: "Norm.State", 58: "Norm.State" }
PvPOffenseBoni = ["Resistência Espada", "Resistência Espadão", "Resistência Adagas", "Resistência Sinos", "Resistência Leque/Staff", "Resistência Flecha", "Resistência Mágica", "Esquivar flechas", "Resistência a Guerreiros", "Resistência a Ninjas"]
PvPDefenseBoni = ["Bônus Guerreiros", "Bônus Ninjas", "Bônus Shuras", "Bônus Shamans", "Bônus Humanoides", "Resistência a Shuras", "Resistência a Shamans", "Dano Medio", "Dano de Skill", "Refletir Ataque Físico"]
PvMOffenseBoni = ["Refletir Ataque Físico", "Regeneração de HP", "Regeneração de MP", "Dano Abosrvido por HP", "Dano Abosrvido por MP", "Bônus de XP"]
PvMDefenseBoni = ["Chance de Atordoar", "Chance de envenenamento", "Chance de critico", "Chance de Perfurar", "Bônus Monstros", "Bônus drop de Gold", "Aumenta chance de drop"]
BonusList = []
UI = []
TestSystem = 0
ProcessTimeStamp = 0
def __init__(self):
ui.ScriptWindow.__init__(self)
self.LoadUI()
game.BPisLoaded = 1
def __del__(self):
ui.ScriptWindow.__del__(self)
self.Board.Hide()
game.BPisLoaded = 0
def LoadUI(self):
self.Board = ui.BoardWithTitleBar()
self.Board.SetSize(313, 420)
self.Board.SetCenterPosition()
self.Board.AddFlag("movable")
self.Board.AddFlag("float")
self.Board.SetTitleName("Página de Bônus")
self.Board.SetCloseEvent(self.__del__)
self.Board.Show()
Type = ["WWW.X5GAMES.ORG"]
Vertical = ui.Line()
Vertical.SetParent(self.Board)
Vertical.SetPosition(8, 60)
Vertical.SetSize(297, 0)
Vertical.SetColor(0xff777777)
Vertical.Show()
self.UI.append(Vertical)
x = 25
for i in xrange(3):
ChangeBonusDict = ui.Button()
ChangeBonusDict.SetParent(self.Board)
ChangeBonusDict.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
ChangeBonusDict.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
ChangeBonusDict.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
ChangeBonusDict.SetText(self.BonusDict[i])
ChangeBonusDict.SetPosition(x, 380)
ChangeBonusDict.SetEvent(lambda arg = ChangeBonusDict.GetText(): self.ChangeBonusDict(arg))
ChangeBonusDict.Show()
x += 88
self.UI.append(ChangeBonusDict)
x = 55
Type = ["WWW.X5GAMES.ORG"]
for i in xrange(2):
BonusDescription = ui.TextLine()
BonusDescription.SetParent(self.Board)
BonusDescription.SetPosition(x, 35)
BonusDescription.SetText(str(Type[i]))
BonusDescription.SetFontColor(1.0, 0.63, 0)
BonusDescription.Show()
x += 150
self.UI.append(BonusDescription)
self.SetBoni(self.BonusDict[0])
self.dict = self.BonusDict[0]
def SetBoni(self, type):
Offense = [[25, 70], [25, 100], [25, 130], [25, 160], [25, 190], [25, 220], [25, 250], [25, 280], [25, 310], [25, 340]]
Defense = [[170, 70], [170, 100], [170, 130], [170, 160], [170, 190], [170, 220], [170, 250], [170, 280], [170, 310], [170, 340]]
for bonus in self.BonusIDListe:
if type == self.BonusDict[0]:
self.CheckBonus(bonus, self.PvPOffenseBoni, Offense)
self.CheckBonus(bonus, self.PvPDefenseBoni, Defense)
elif type == self.BonusDict[1]:
self.CheckBonus(bonus, self.PvMOffenseBoni, Offense)
self.CheckBonus(bonus, self.PvMDefenseBoni, Defense)
else:
return
def CheckBonus(self, bonus, bonuslist, offset):
for boni in bonuslist:
if bonus[0] == boni:
try:
Index = bonuslist.index(boni)
BonusDescription = ui.TextLine()
BonusDescription.SetParent(self.Board)
BonusDescription.SetPosition(offset[Index][0], offset[Index][1])
BonusDescription.SetText(str(bonus[0]))
BonusDescription.Show()
BonusSlotBar = ui.SlotBar()
BonusSlotBar.SetParent(self.Board)
BonusSlotBar.SetSize(115, 15)
BonusSlotBar.SetPosition(offset[Index][0], offset[Index][1] + 15)
BonusSlotBar.Show()
BonusAttrLine = ui.TextLine()
BonusAttrLine.SetParent(self.Board)
BonusAttrLine.SetPosition(offset[Index][0] + 5, offset[Index][1] + 15)
try:
Type = self.SpecialBoni[bonus[1]]
Attribute = self.EquipAttribute(bonus)
except:
Attribute = player.GetStatus(int(bonus[2]))
if self.TestSystem != 1:
BonusAttrLine.SetText(str(Attribute))
try:
if int(Attribute) >= int(self.MaxBoni[str(bonus[1])]):
BonusAttrLine.SetFontColor(1.0, 0.63, 0)
else:
BonusAttrLine.SetFontColor(1, 1, 1)
except:
BonusAttrLine.SetFontColor(1, 1, 1)
else:
BonusAttrLine.SetText("Test system is active")
BonusAttrLine.SetFontColor(0.1, 0.7, 1.0)
BonusAttrLine.Show()
self.BonusList.append([BonusDescription, BonusAttrLine, BonusSlotBar])
except:
pass
def EquipAttribute(self, bonus):
value = 0
for slot in xrange(90, 101):
for attr in xrange(0, 7):
attr, val = player.GetItemAttribute(slot, attr)
if int(attr) == bonus[1]:
value += int(val)
return int(value)
def ChangeBonusDict(self, dict):
self.dict = dict
for bonus in self.BonusList:
try:
for array in bonus:
array.Hide()
except:
pass
self.SetBoni(dict)
def OnUpdate(self):
import item
if int(app.GetTime()) > int(self.ProcessTimeStamp) + 6:
self.SetBoni(self.dict)
self.ProcessTimeStamp = app.GetTime()
#BonusBoardDialog().Show()
# -*- coding: latin-1 -*-
import ui
import chat
import app
import player
import snd
import item
import net
import game
class BonusBoardDialog(ui.ScriptWindow):
MaxBoni = { "1": 1000000, "2": 999, "3": 999, "4": 999, "5": 999, "6": 999, "7": 999, "9": 999, "10": 999, "11": 999, "12": 999, "13": 999, "14": 999, "15": 999, "16": 999, "17": 999, "18": 999, "19": 999, "20": 999, "21": 999, "22": 999, "23": 999, "24": 999, "27": 999, "28": 999, "29": 999, "30": 999, "31": 999, "32": 999, "33": 999, "34": 999, "35": 999, "36": 999, "37": 999, "38": 999, "39": 999, "41": 999, "43": 999, "44": 999, "45": 999, "48": 1, "53": 999 }
BonusDict = ["1", "2"]
BonusIDListe = [["", 0, 0],["Max HP", 1, 0],["Max MP", 2, 0],["VIT", 3, 0],["INT", 4, 0],["FOR", 5, 0],["DEX", 6, 0],["Velocidade de ataque", 7, 0],["Velocidade de Movimento", 8, 0],["Velocidade skill", 9, 0],["Regeneração de HP", 10, 32],["Regeneração de MP", 11, 33],["Chance de envenenamento", 12, 37],["Chance de Atordoar", 13, 38],["Szansa na Spowolnienie", 14, 39],["Chance de critico", 15, 40],["Chance de Perfurar", 16, 41],["Bônus Humanoides", 17, 43],["Bônus Animais", 18, 44],["Bônus Orcs", 19, 45],["Bônus Fanaticos ", 20, 46],["Bônus Mortos-Vivos", 21, 47],["Bônus Demonios", 22, 48],["Dano Abosrvido por HP", 23, 63],["Dano Abosrvido por MP", 24, 64],["Chance de Roubar MP", 25, 65],["Szansa na Kradzie¿ P¯", 26, 66],["Szansa na Refletir Ataque Físico", 27, 67],["Esquivar flechas", 28, 68],["Resistência Espada", 29, 69],["Resistência Espadão", 30, 70],["Resistência Adagas", 31, 71],["Resistência Sinos", 32, 72],["Resistência Leque/Staff", 33, 73],["Resistência Flecha", 34, 74],["Resistência a Fogo", 35, 75],["Resistência a Relâmpagos", 36, 76],["Resistência Mágica", 37, 77],["Resistência ao Vento", 38, 78],["Refletir Ataque Físico", 39, 79],["Desativado", 40, 80],["Resistência a Veneno", 41, 81],["SP Yükselmesi Deðiþimi", 42, 82],["Bônus de XP", 43, 83],["Bônus drop de Gold", 44, 84],["Aumenta chance de drop", 45, 85],["Desativado", 46, 86],["Szansa na odzyskanie P¯", 47, 87],["Imune a Atordoamento", 48, 88],["Imune a Lentidão", 49, 89],["Imune a Quedas", 50, 90],["APPLY_SKILL", 51, 0],["Yay Menzili", 52, 95],["Bônus de Ataque", 53, 0],["Defesa", 54, 96],["Bônus de Ataque Magico", 55, 97],["Bônus de Defesa Magica", 56, 98],["", 57, 0],["Bônus de Stamina", 58, 0],["Bônus Guerreiros", 59, 54],["Bônus Ninjas", 60, 55],["Bônus Shuras", 61, 56],["Bônus Shamans", 62, 57],["Bônus Monstros", 63, 53],["Bônus Monstros", 64, 114],["Defesa", 65, 115],["Bônus de EXP", 66, 116],["Bônus de Drop", 67, 117],["Bônus de Drop Gold", 68, 118],["APPLY_MAX_HP_PCT", 69, 119],["APPLY_MAX_SP_PCT", 70, 120],["Dano de Skill", 71, 121],["Dano Medio", 72, 122],["Resistência a Skills", 73, 123],["Resistência a Dano", 74, 124],["", 75, 0],["Desativado", 76, 125],["Desativado", 77, 126],["Resistência a Guerreiros", 78, 59],["Resistência a Ninjas", 79, 60],["Resistência a Shuras", 80, 61],["Resistência a Shamans", 81, 62]]
SpecialBoni = { 1: "Norm.State", 2: "Norm.State", 3: "Norm.State", 4: "Norm.State", 5: "Norm.State", 6: "Norm.State", 55: "Norm.State", 56: "Norm.State", 58: "Norm.State" }
PvPOffenseBoni = ["Resistência Espada", "Resistência Espadão", "Resistência Adagas", "Resistência Sinos", "Resistência Leque/Staff", "Resistência Flecha", "Resistência Mágica", "Esquivar flechas", "Resistência a Guerreiros", "Resistência a Ninjas"]
PvPDefenseBoni = ["Bônus Guerreiros", "Bônus Ninjas", "Bônus Shuras", "Bônus Shamans", "Bônus Humanoides", "Resistência a Shuras", "Resistência a Shamans", "Dano Medio", "Dano de Skill", "Refletir Ataque Físico"]
PvMOffenseBoni = ["Refletir Ataque Físico", "Regeneração de HP", "Regeneração de MP", "Dano Abosrvido por HP", "Dano Abosrvido por MP", "Bônus de XP"]
PvMDefenseBoni = ["Chance de Atordoar", "Chance de envenenamento", "Chance de critico", "Chance de Perfurar", "Bônus Monstros", "Bônus drop de Gold", "Aumenta chance de drop"]
BonusList = []
UI = []
TestSystem = 0
ProcessTimeStamp = 0
def __init__(self):
ui.ScriptWindow.__init__(self)
self.LoadUI()
game.BPisLoaded = 1
def __del__(self):
ui.ScriptWindow.__del__(self)
self.Board.Hide()
game.BPisLoaded = 0
def LoadUI(self):
self.Board = ui.BoardWithTitleBar()
self.Board.SetSize(313, 420)
self.Board.SetCenterPosition()
self.Board.AddFlag("movable")
self.Board.AddFlag("float")
self.Board.SetTitleName("Página de Bônus")
self.Board.SetCloseEvent(self.__del__)
self.Board.Show()
Type = ["WWW.X5GAMES.ORG"]
Vertical = ui.Line()
Vertical.SetParent(self.Board)
Vertical.SetPosition(8, 60)
Vertical.SetSize(297, 0)
Vertical.SetColor(0xff777777)
Vertical.Show()
self.UI.append(Vertical)
x = 25
for i in xrange(3):
ChangeBonusDict = ui.Button()
ChangeBonusDict.SetParent(self.Board)
ChangeBonusDict.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
ChangeBonusDict.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
ChangeBonusDict.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
ChangeBonusDict.SetText(self.BonusDict[i])
ChangeBonusDict.SetPosition(x, 380)
ChangeBonusDict.SetEvent(lambda arg = ChangeBonusDict.GetText(): self.ChangeBonusDict(arg))
ChangeBonusDict.Show()
x += 88
self.UI.append(ChangeBonusDict)
x = 55
Type = ["WWW.X5GAMES.ORG"]
for i in xrange(2):
BonusDescription = ui.TextLine()
BonusDescription.SetParent(self.Board)
BonusDescription.SetPosition(x, 35)
BonusDescription.SetText(str(Type[i]))
BonusDescription.SetFontColor(1.0, 0.63, 0)
BonusDescription.Show()
x += 150
self.UI.append(BonusDescription)
self.SetBoni(self.BonusDict[0])
self.dict = self.BonusDict[0]
def SetBoni(self, type):
Offense = [[25, 70], [25, 100], [25, 130], [25, 160], [25, 190], [25, 220], [25, 250], [25, 280], [25, 310], [25, 340]]
Defense = [[170, 70], [170, 100], [170, 130], [170, 160], [170, 190], [170, 220], [170, 250], [170, 280], [170, 310], [170, 340]]
for bonus in self.BonusIDListe:
if type == self.BonusDict[0]:
self.CheckBonus(bonus, self.PvPOffenseBoni, Offense)
self.CheckBonus(bonus, self.PvPDefenseBoni, Defense)
elif type == self.BonusDict[1]:
self.CheckBonus(bonus, self.PvMOffenseBoni, Offense)
self.CheckBonus(bonus, self.PvMDefenseBoni, Defense)
else:
return
def CheckBonus(self, bonus, bonuslist, offset):
for boni in bonuslist:
if bonus[0] == boni:
try:
Index = bonuslist.index(boni)
BonusDescription = ui.TextLine()
BonusDescription.SetParent(self.Board)
BonusDescription.SetPosition(offset[Index][0], offset[Index][1])
BonusDescription.SetText(str(bonus[0]))
BonusDescription.Show()
BonusSlotBar = ui.SlotBar()
BonusSlotBar.SetParent(self.Board)
BonusSlotBar.SetSize(115, 15)
BonusSlotBar.SetPosition(offset[Index][0], offset[Index][1] + 15)
BonusSlotBar.Show()
BonusAttrLine = ui.TextLine()
BonusAttrLine.SetParent(self.Board)
BonusAttrLine.SetPosition(offset[Index][0] + 5, offset[Index][1] + 15)
try:
Type = self.SpecialBoni[bonus[1]]
Attribute = self.EquipAttribute(bonus)
except:
Attribute = player.GetStatus(int(bonus[2]))
if self.TestSystem != 1:
BonusAttrLine.SetText(str(Attribute))
try:
if int(Attribute) >= int(self.MaxBoni[str(bonus[1])]):
BonusAttrLine.SetFontColor(1.0, 0.63, 0)
else:
BonusAttrLine.SetFontColor(1, 1, 1)
except:
BonusAttrLine.SetFontColor(1, 1, 1)
else:
BonusAttrLine.SetText("Test system is active")
BonusAttrLine.SetFontColor(0.1, 0.7, 1.0)
BonusAttrLine.Show()
self.BonusList.append([BonusDescription, BonusAttrLine, BonusSlotBar])
except:
pass
def EquipAttribute(self, bonus):
value = 0
for slot in xrange(90, 101):
for attr in xrange(0, 7):
attr, val = player.GetItemAttribute(slot, attr)
if int(attr) == bonus[1]:
value += int(val)
return int(value)
def ChangeBonusDict(self, dict):
self.dict = dict
for bonus in self.BonusList:
try:
for array in bonus:
array.Hide()
except:
pass
self.SetBoni(dict)
def OnUpdate(self):
import item
if int(app.GetTime()) > int(self.ProcessTimeStamp) + 6:
self.SetBoni(self.dict)
self.ProcessTimeStamp = app.GetTime()
#BonusBoardDialog().Show()
Thank U, and sorry if posted in a wrong place.