Fethi Polat 1
Fethi Polat
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Scarlet 1
Scarlet
xranzei 1
xranzei
Hikaye Ekle

Python Konusunda bilgili/tecrübeli biri

  • Konuyu başlatan Konuyu başlatan BeqKraL
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 366

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Merhaba iyi forumlar dilerim

Pasha(Koray) adlı arkadaşımızın kanal değiştirme sistemini ekledim sorunsuz bir şekilde çalışıyor fakat bi kaç görsel ile şenlendirmek istedim buton ekledim
fakat bir türlü client'in tam ortasına getiremedim kanal değiştirmeyi bknz : http://prntscr.com/mceu69
Pencere açıldıkdan sonra hiç bir şekilde hareket ettirelemiyor . Bunu tam client'in ortasında nasıl başlatabilirim ..

Pencerenin bulunduğu py dosyası (uichangechannel) ;

Kod:
from ui_wrapper import _ui
import app,net,wndMgr,background
import ui,uiCommon,serverInfo

class uiChangeChannel(ui.Window):
    def __init__(self, stream):
        ui.Window.__init__(self)
        self.stream = stream
        
        self.Board = None
        self.btnChildren = []
        self.serverID = None
        self.channels = None
        self.regionID = None
        
        self.__LoadWindow()
        self.CreateGUI()
    
    def __del__(self):
        ui.Window.__del__(self)
        
    def __LoadWindow(self):
        file = open("channel.inf", "r")
        lines = file.readlines()
        file.close()
        
        if len(lines):
            tokens = lines[0].split()
            self.serverID = int(tokens[0])
            selChannelID = int(tokens[1])
            if len(tokens) == 3:
                self.regionID = int(tokens[2])
            else:
                self.regionID = 0
        
        self.channels = serverInfo.REGION_DICT[self.regionID][self.serverID]["channel"]
    
    def CreateGUI(self):
        self.Board = _ui().BoardWithTitleBar(None, 0, 0, 0, 225, 225, "Kanal Değiş", self.Close)
        
        for i in xrange(len(self.channels)):
            btn = _ui().Button(self.Board, self.channels[i + 1]["name"], "", 0, 35 + 35*i, lambda arg = i + 1: self.__ChangeChannel(arg), "news/1.tga", "news/2.tga", "news/2.tga")
            # btn.SetDisableVisual("d:/ymir work/ui/public/large_button_03.sub")
            # btn.SetDisableVisual("news/1.sub")
            btn.SetWindowHorizontalAlignCenter()
            
            if str(net.GetServerInfo()[-1:]) == str(i + 1):
                btn.Disable()
            self.btnChildren.append(btn)
        
        self.Board.SetSize(180, len(self.channels) * 50)
        self.Board.SetPosition(wndMgr.GetScreenWidth()/2 - 50, wndMgr.GetScreenHeight() / 2 - (len(self.channels) * 35))
        
    def __ChangeChannel(self, ch):
        if str(ch) == str(net.GetServerInfo()[-1:]):
            self.Popup = _ui().Popup('Aynı Kanala tekrar giriş yapamazsın.', None, None)
            return
        
        self.stream.channel = ch
        ip = serverInfo.REGION_DICT[self.regionID][self.serverID]["channel"][ch]["ip"]
        tcp_port = serverInfo.REGION_DICT[self.regionID][self.serverID]["channel"][ch]["tcp_port"]
        account_ip = serverInfo.REGION_AUTH_SERVER_DICT[self.regionID][self.serverID]["ip"]
        account_port = serverInfo.REGION_AUTH_SERVER_DICT[self.regionID][self.serverID]["port"]
        state = serverInfo.REGION_DICT[self.regionID][self.serverID]["channel"][ch]["state"]
        slot = self.stream.GetCharacterSlot()
        
        if state == serverInfo.STATE_NONE:
            self.Popup = _ui().Popup('Kanala giriş yapılamıyor..Tekrar dene.', None, None)
            return
        elif state == serverInfo.STATE_DICT[3]:
            self.Popup = _ui().Popup('Kanal Dolu!', None, None)
            return
            
        if self.IsInSpecialMap():
            self.Popup = _ui().Popup('Bulunduğun haritada kanal değiştiremezsin. ', None, None)
            return

        self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
        markKey = self.regionID * 1000 + self.serverID * 10
        markAddrValue=serverInfo.MARKADDR_DICT[markKey]
        net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"])
        app.SetGuildMarkPath(markAddrValue["mark"])
        app.SetGuildSymbolPath(markAddrValue["symbol_path"])
        self.Close()
        
        file=open("channel.inf", "w")
        file.write("%d %d %d" % (self.serverID, ch, self.regionID))
        file.close()
        net.SetServerInfo(str(net.GetServerInfo()[:-1]) + str(ch))
        net.LogOutGame()
        self.stream.SetLoginInfo(net.ACC_ID, net.ACC_PWD)
        self.stream.Connect()
        
        self.stream.SetCharacterSlot(slot)
        self.stream.isAutoSelect=1
    
    def IsInSpecialMap(self):
        bad_maps = [
            "season1/metin2_map_oxevent", "season2/metin2_map_guild_inside01", "season2/metin2_map_empirewar01",
            "season2/metin2_map_empirewar02", "season2/metin2_map_empirewar03", "metin2_map_empirewar02",
            "metin2_map_dragon_timeattack_01", "metin2_map_dragon_timeattack_02", "metin2_map_dragon_timeattack_03",
            "metin2_map_skipia_dungeon_boss", "metin2_map_skipia_dungeon_boss2", "metin2_map_devilsCatacomb",
            "metin2_map_deviltower1", "metin2_map_t1", "metin2_map_t2", "metin2_map_t3", "metin2_map_t4",
            "metin2_map_t5", "metin2_map_wedding_01", "metin2_map_duel"
        ]
        if str(background.GetCurrentMapName()) in bad_maps:
            return TRUE
        return FALSE

    def Show(self):
        self.Board.Show()
    
    def Close(self):
        self.Board.Hide()
        
    def OnPressEscapeKey(self):
        self.Close()
        return True



Ayıca bunu satırların arasına bug engellemek için kod ekliyebilirmiyiz örnek veriyorum pazar kurarken açıkken ch değiştirilmemeli depo açıkken ch değiştirilmeli karakter değiştirilmemeli ticaret açıkken gibi..

Şimdiden yardımcı olan arkadaşlara teşekkürler.
 

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

Geri
Üst