Sevdamsın 1
Sevdamsın
Mt2Hizmet 1
Mt2Hizmet
Fethi Polat 1
Fethi Polat
farkmt2official 1
farkmt2official
Hikaye Ekle

Cevaplanmadı Close .ui via X button, does not open again

  • Konuyu başlatan Konuyu başlatan xAmnezia3143
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 210

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

I have installed a multifarmblock which works fine.
However, I noticed that if you click away the UI via X in the title bar, you can no longer open it.
If I close it via Escape or Taskbar button, it can be reopened normally. If I close it via X, it no longer opens.

Here is a gif about it:
https://metin2.download/picture/REhZPj2v4PPTdZX0ljJ6KzVLJ7m1bn9v/.gif
The syserr is empty.

Can someone help me with this?
Here is the file of the ui.
Python:
import anti_multiple_farm
import chat
import ui
import localeInfo

MAX_RESULT_IN_PAGE = 5 #the design was developed for this number of result, do not change if you keep this design
MULTIPLE_FARM_STATE_IMAGES = ["d:/ymir work/ui/pattern/visible_mark_01.tga", "d:/ymir work/ui/pattern/visible_mark_03.tga"]

VIEW_MODE = 0
EDIT_MODE = 1

class player_data(ui.ScriptWindow):
    def __init__(self, wndParent, wndMainClass):
        def __MakePage():
            self.SetParent(wndParent)
            self.SetSize(210, 20)
            self.Show()
        
        if not wndMainClass:
            return
        
        ui.ScriptWindow.__init__(self)
        __MakePage()
        self.wndMainClass = wndMainClass
        
        self.__SetUpData()
        self.__SetUpObjects()
    
    def __del__(self):
        ui.ScriptWindow.__del__(self)
    
    def Destroy(self):
        self.__DestroyObjects()
        self.__SetUpData()
    
    def __SetUpData(self):
        self.player_name = ""
        self.player_pid = -1
        self.player_status = 0
    
    def __SetUpObjects(self):
        self.objPlayerName = None
        self.objPlayerStatus = None
        self.objCheckBox = None
    
    def __DestroyObjects(self):
        if self.objPlayerName:
            self.objPlayerName.Hide()
        if self.objPlayerStatus:
            self.objPlayerStatus.Hide()
        if self.objCheckBox:
            self.objCheckBox.Hide()
        
        self.__SetUpObjects()
    
    def NewDataBuild(self, player_name, player_pid, player_status):
        self.__LoadData(player_name, player_pid, player_status)
        
        self.objPlayerName = ui.MakeTextLineWithoutAlign(self, "", 10, 7)
        self.objPlayerName.SetText(self.player_name)
        
        try: statusImage = MULTIPLE_FARM_STATE_IMAGES[self.player_status]
        except: statusImage = MULTIPLE_FARM_STATE_IMAGES[0]
        self.objPlayerStatus = ui.MakeImageBox(self, statusImage, 182, 7)

        self.objCheckBox = ui.MakeOptionsCheckBox(self, "", 184, 8)
        self.objCheckBox.SetCheckStatus(bool(not player_status))
        self.objCheckBox.SetEvent(ui.__mem_func__(self.wndMainClass.OnClickEditStatus), "ON_CHECK", True, self.GetPID())
        self.objCheckBox.SetEvent(ui.__mem_func__(self.wndMainClass.OnClickEditStatus), "ON_UNCKECK", False, self.GetPID())
        
        return (self)
    
    def __LoadData(self, player_name, player_pid, player_status):
        self.player_name = player_name
        self.player_pid = player_pid
        self.player_status = player_status
    
    def SetDataState(self, flag):
        if flag == EDIT_MODE:
            self.SetStatus(self.player_status)
            self.objPlayerStatus.Hide()
            self.objCheckBox.Show()
        else:
            self.objPlayerStatus.Show()
            self.objCheckBox.Hide()
    
    def SetStatus(self, player_status):
        self.player_status = player_status
        self.objCheckBox.SetCheckStatus(bool(not self.player_status))
        try: statusImage = MULTIPLE_FARM_STATE_IMAGES[self.player_status]
        except: statusImage = MULTIPLE_FARM_STATE_IMAGES[0]
        self.objPlayerStatus.LoadImage(statusImage)
    
    def GetStatus(self):
        return self.player_status
    
    def SetPreStatus(self, player_status):
        self.objCheckBox.SetCheckStatus(bool(not player_status))
    
    def GetPreStatus(self):
        return self.objCheckBox.GetCheckStatus()
    
    def GetPID(self):
        return self.player_pid
    
    def GetName(self):
        return self.player_name

class AntiMultipleFarmWnd(ui.ScriptWindow):
    VIEW_MODE = 0
    EDIT_MODE = 1
    def __init__(self):
        ui.ScriptWindow.__init__(self)
        
        self.__SetUpData()
        self.__SetUpObjects()
        
        self.__LoadWindow()

    def __del__(self):
        ui.ScriptWindow.__del__(self)
    
    def __SetUpData(self):
        self.player_data = []
        self.data_count = 0
        self.page_manage_mode = VIEW_MODE
    
    def __ClearOldData(self):
        if len(self.player_data) != 0:
            for player_data in self.player_data:
                player_data.Destroy()
        
        self.__SetUpData()
    
    def __SetUpObjects(self):
        self.main_layer_parent = None
        self.scrollbar = None
        
        self.edit_button = None
        self.close_button = None
        self.refresh_button = None

        self.save_edit_button = None
        self.close_edit_button = None
    
    def __LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, "UIScript/antimultiplefarmwindow.py")
            
            GetObject = self.GetChild
            
            self.main_layer_parent = GetObject("anti_farm_bg_layer")
            
            self.scrollbar = GetObject("scrollbar")
            self.scrollbar.SetScrollEvent(ui.__mem_func__(self.__OnScroll))
            
            self.edit_button = GetObject("edit_button")
            self.edit_button.SetEvent(ui.__mem_func__(self.OnClickEditButton))
            
            self.close_button = GetObject("close_button")
            self.close_button.SetEvent(ui.__mem_func__(self.OnClickCloseButton))
            
            self.refresh_button = GetObject("refresh_button")
            self.refresh_button.SetEvent(ui.__mem_func__(self.OnRefreshData))
            
            self.save_edit_button = GetObject("save_edit_button")
            self.save_edit_button.SetEvent(ui.__mem_func__(self.OnSaveEditStatus))
            
            self.close_edit_button = GetObject("close_edit_button")
            self.close_edit_button.SetEvent(ui.__mem_func__(self.OnClickEditButton), VIEW_MODE)
        
        except:
            import exception
            exception.Abort("AntiMultipleFarmWnd.__LoadScript.LoadObject")
    
    def __RefreshData(self):
        for idx in xrange(anti_multiple_farm.GetAntiFarmPlayerCount()):
            name, pid, status = anti_multiple_farm.GetAntiFarmPlayerData(idx)
            self.player_data.append(player_data(self.main_layer_parent, self).NewDataBuild(name, pid, status))
            self.player_data[idx].SetPosition(0, 15 + (idx*19))
            self.player_data[idx].SetDataState(self.page_manage_mode)
            self.player_data[idx].Show() if idx < MAX_RESULT_IN_PAGE else self.player_data[idx].Hide()
        
        self.__RefreshDataResult()
        self.__RefreshScrollBar()
    
    def OnSaveEditStatus(self):
        if self.page_manage_mode != EDIT_MODE:
            return
        
        allowed_pids = self.__GetPreAllowedPIDS()
        if self.__GetAllowedPIDS() == allowed_pids:
            chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_2)
            return
        
        if len(allowed_pids) < anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT:
            chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_3.format(anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT))
            return
        
        chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ATTEND_CHANGE_STATUS)
        self.OnClickEditButton(VIEW_MODE)
        anti_multiple_farm.SendAntiFarmStatus(*tuple(allowed_pids))
    
    def OnClickEditButton(self, mode = None):
        self.page_manage_mode = not self.page_manage_mode if not mode else mode
        self.__RefreshEditMode()
    
    def OnClickCloseButton(self):
        self.Close()
        return True
    
    def __GetPreAllowedPIDS(self):
        pids = []
        for player_data in self.player_data:
            if player_data.GetPreStatus():
                pids.append(player_data.GetPID())
        
        return pids[:anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT]
    
    def __CountPreFreeDropPlayers(self):
        count = 0
        for player_data in self.player_data:
            count += int(player_data.GetPreStatus())
        
        return count

    def __GetAllowedPIDS(self):
        pids = []
        for player_data in self.player_data:
            if bool(not player_data.GetStatus()):
                pids.append(player_data.GetPID())
        
        return pids[:anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT]
    
    def OnClickEditStatus(self, checkArg, status, PID):
        if self.page_manage_mode != EDIT_MODE:
            self.OnClickEditButton(EDIT_MODE)
        
        player_data = self.__GetPlayerDataByPID(PID)
        if not player_data:
            return
        
        if self.__CountPreFreeDropPlayers() > anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT:
            player_data.SetPreStatus(status)
            chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_1.format(anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT))
    
    def __RefreshEditMode(self):
        for player_data in self.player_data:
            player_data.SetDataState(self.page_manage_mode)
        
        wndTable = [self.GetChild("view_window"), self.GetChild("edit_window")]
        wndTable[self.page_manage_mode].Show()
        wndTable[not self.page_manage_mode].Hide()
    
    def __GetPlayerDataByPID(self, PID):
        for player_data in self.player_data:
            if player_data.GetPID() == PID:
                return player_data
        return None
    
    def OnRefreshData(self):
        self.__ClearOldData()
        self.__RefreshEditMode()
        self.__RefreshData()

    def OnRunMouseWheel(self, nLen):
        self.scrollbar.OnUp() if nLen > 0 else self.scrollbar.OnDown()
        return True
    
    def __OnScroll(self):
        if self.data_count <= MAX_RESULT_IN_PAGE:
            return
        
        old_scroll_pos = self.scrollbar.GetPos()
        pos = int(old_scroll_pos * (self.data_count - MAX_RESULT_IN_PAGE))
        
        new_idx = 0
        for idx in xrange(self.data_count):
            player_data = self.player_data[idx]
            if (idx < pos or idx >= (pos + MAX_RESULT_IN_PAGE)):
                player_data.Hide()
            else:
                player_data.SetPosition(0, 15 + (new_idx*19))
                player_data.Show()
                new_idx+=1
    
    def __RefreshScrollBar(self):
        if not self.scrollbar:
            return
        
        if self.data_count:
            new_mid_bar_size = min(0.94, (float(MAX_RESULT_IN_PAGE) / float(self.data_count)))
            self.scrollbar.SetMiddleBarSize(new_mid_bar_size)
        self.scrollbar.SetPos(0.0)
    
    def __RefreshDataResult(self):
        self.data_count = len(self.player_data)
    
    def Open(self):
        self.OnRefreshData()
        
        self.SetCenterPosition()
        self.Show()
        self.SetTop()
    
    def Close(self):
        self.__ClearOldData()
        self.Hide()
    
    def OnPressEscapeKey(self):
        self.Close() if self.page_manage_mode != EDIT_MODE else self.OnClickEditButton(VIEW_MODE)
        return True
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst