Domanda [aiuto] aprire e chiudere una finestra

Stato
Discussione chiusa ad ulteriori risposte.

TheVastator

Utente Electrum
9 Dicembre 2010
181
74
27
175
salve gente ho un dilemma atroce io ho questo script per la bonuspage

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()
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 ?
 
Stato
Discussione chiusa ad ulteriori risposte.