salve gente ho un dilemma atroce io ho questo script per la bonuspage
solo che se clicco una seconda volta sul bottone che mi apre la bonuspage me ne apre un altra non me la chiude come posso fare per far si che me la chiude quando clicco per la seconda volta ?
Codice:
import ui
import chat
import app
import player
import snd
import item
import net
import game
class BonusBoardDialog(ui.ScriptWindow):
MaxBoni = { "1": 16000, "2": 320, "3": 32, "4": 32, "5": 32, "6": 32, "7": 16, "9": 40, "10": 60, "11": 60, "12": 16, "13": 24, "14": 16, "15": 30, "16": 30, "17": 50, "18": 100, "19": 100, "20": 100, "21": 100, "22": 100, "23": 20, "24": 40, "27": 15, "28": 30, "29": 72, "30": 72, "31": 72, "32": 72, "33": 72, "34": 72, "35": 60, "36": 60, "37": 40, "38": 60, "39": 20, "41": 10, "43": 60, "44": 60, "45": 40, "48": 1, "53": 50 }
BonusDict = ["Bonus PvP", "Bonus PvM", "Bonus extra"]
BonusIDListe = [["", 0, 0],["HP Max:", 1, 0],["MP Max:", 2, 0],["Viteza farmecului:", 9, 0],["Rigenerazione HP:", 10, 32],["Rigenerazione MP:", 11, 33],["Possibilità avvelenamento:", 12, 37],["Possibilità Blocco:", 13, 38],["Colpi critici:", 15, 40],["Colpi Trafiggenti:", 16, 41],["Forte contro mezziuomini:", 17, 43],["Forte contro animali:", 18, 44],["Forte contro orchi:", 19, 45],["Forte contro esoterici:", 20, 46],["Forte contro zombie:", 21, 47],["Forte contro diavolo:", 22, 48],["Assorbiti HP:", 23, 63],["Assorbiti MP:", 24, 64],["Bloccare attacco corporale:", 27, 67],["Schivare freccia:", 28, 68],["Difesa spada:", 29, 69],["Difesa spadone:", 30, 70],["Difesa pugnale:", 31, 71],["Difesa campana:", 32, 72],["Difesa ventaglio:", 33, 73],["Resistenza freccia:", 34, 74],["Resistenza fuoco:", 35, 75],["Resistenza magia:", 37, 77],["Resistenza vento:", 38, 78],["Resistenza veleno:", 41, 81],["Bonus exp:", 43, 83],["Bonus yang:", 44, 84],["Bonus drop:", 45, 85],["APPLY_SKILL", 51, 0],["Valore attacco:", 53, 0],["Forte contro mostri:", 63, 53]]
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 = ["Forte contro mezziuomini:", "Colpi critici:", "Colpi Trafiggenti:", "Viteza farmecului:", "Valore attacco:", "Possibilità avvelenamento:", "Possibilità Blocco:", "Resistenza veleno:", "Resistenza fuoco:", "Rigenerazione MP:"]
PvPDefenseBoni = ["Difesa spada:", "Difesa spadone:", "Difesa pugnale:", "Difesa campana:", "Difesa ventaglio:", "Resistenza freccia:", "Schivare freccia:", "Resistenza magia:", "Bloccare attacco corporale:", "Rigenerazione HP:"]
PvMOffenseBoni = ["HP Max:", "Forte contro animali:", "Forte contro zombie:", "Forte contro orchi:", "Assorbiti MP:", "Resistenza veleno:"]
PvMDefenseBoni = ["MP Max:", "Forte contro mostri:", "Forte contro diavolo:", "Forte contro esoterici:", "Assorbiti HP:"]
LeftoversOffenseBoni = ["Bonus exp:", "Bonus yang:"]
LeftoversDefenseBoni = ["Bonus 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(343, 418)
self.Board.SetCenterPosition()
self.Board.AddFlag("movable")
self.Board.AddFlag("float")
self.Board.SetTitleName("Statistiche bonus")
self.Board.SetCloseEvent(self.__del__)
self.Board.Show()
Vertical = ui.Line()
Vertical.SetParent(self.Board)
Vertical.SetPosition(23, 60)
Vertical.SetSize(298, 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 += 97
self.UI.append(ChangeBonusDict)
x = 50
Type = ["Bonus PVP & PVM vengono aggiornati in tempo reale!"]
for i in xrange(1):
BonusDescription = ui.TextLine()
BonusDescription.SetParent(self.Board)
BonusDescription.SetPosition(x, 35)
BonusDescription.SetText(str(Type[i]))
BonusDescription.SetFontColor(4.0, 0.83, 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)
elif type == self.BonusDict[2]:
self.CheckBonus(bonus, self.LeftoversOffenseBoni, Offense)
self.CheckBonus(bonus, self.LeftoversDefenseBoni, 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(125, 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()