marvin 94 Posted May 25, 2015 Share Posted May 25, 2015 Hi, i'm searching Channel Switcher :v Anybody have ? Link to comment Share on other sites More sharing options...
Premium MrLibya 558 Posted May 25, 2015 Premium Share Posted May 25, 2015 (edited) # ChannelChanger Tool 1.1a # # The boredom is a big lord. # Idea was came from [email protected] && [email protected] # # Version info: # v1.0 : GUI # Connection with variables # v1.1 : Connection with serverInfo # Serverstatus checker and show the states # Disabled connection if the server is FULL or Offline # Added special map interrupter(dt,dc etc..) # v1.1a : Added refresh button # # Used sources: # - DaRealFreak's ChannelChangerBot # - YMIR's client >,< introLogin.py # - My brain C: # # Bugs: # Sometimes the "SetLoginInfo" function is late and try to connect the client to the server # with wrong ID/PW. In this case the "OnLoginFailure" function will run with "WRONGPWD" and # "NOID" arguments(1x-1x) from the introLogin.py. This fault peculiar to the slower PC-s or lagg. # And not recommended the fast channel switching. # # Do not forget to add this in your introLogin.LoginWindow.Connect # net.ACCOUNT_ID = id # net.ACCOUNT_PW = pwd # # Haters gonna hate. Please keep your comment in yourself & Press Alt + F13! # Enjoy, and sorry for my bad English, P3NG3R import ui import net import app import chat import math import wndMgr import serverInfo import background import ServerStateChecker class ChannelChanger(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__Init_ChannelChanger() self.__Load_Gui() self.__Fill_Up_ChannelList() def __del__(self): ui.ScriptWindow.__del__(self) def Destroy(self): self.Hide() return TRUE def __Init_ChannelChanger(self): ServerStateChecker.Create(self) self.SetSize(150, 175) self.SetPosition( (wndMgr.GetScreenWidth() / 2) - int(math.floor(self.GetWidth() / 2.)), (wndMgr.GetScreenHeight() / 2) - int(math.floor(self.GetHeight() / 2.)) ) #self.AddFlag("movable") self.AddFlag("float") self.Show() def __Load_Gui(self): self.Board = ui.Board() self.Board.SetParent(self) self.Board.SetSize(self.GetWidth(), self.GetHeight()) self.Board.SetPosition(0, 0) #self.Board.AddFlag("movable") self.Board.AddFlag("float") self.Board.Show() self.TitleBar = ui.TitleBar() self.TitleBar.SetParent(self.Board) self.TitleBar.SetPosition(7, 7) self.TitleBar.MakeTitleBar(self.GetWidth() - 2 * 7, 'bloodyblue') self.TitleBar.SetCloseEvent(self.Close) self.TitleBar.Show() self.RefreshButton = ui.Button() self.RefreshButton.SetParent(self.TitleBar) self.RefreshButton.SetPosition(3, 3) self.RefreshButton.SetUpVisual("d:/ymir work/ui/game/guild/refresh_button_01.sub") self.RefreshButton.SetOverVisual("d:/ymir work/ui/game/guild/refresh_button_02.sub") self.RefreshButton.SetDownVisual("d:/ymir work/ui/game/guild/refresh_button_03.sub") self.RefreshButton.SetToolTipText("Frissítés", 0, - 23) # "Refresh" self.RefreshButton.SetEvent(lambda : self.__Fill_Up_ChannelList()) self.RefreshButton.Show() self.TitleText = ui.TextLine() self.TitleText.SetParent(self.TitleBar) self.TitleText.SetPosition(0, 4) self.TitleText.SetText("CH - Választó") # "CH - Switcher" self.TitleText.SetWindowHorizontalAlignCenter() self.TitleText.SetHorizontalAlignCenter() self.TitleText.Show() self.ServerName = ui.TextLine() self.ServerName.SetParent(self.TitleBar) self.ServerName.SetPosition(0, self.TitleBar.GetHeight()) self.ServerName.SetText(str(net.GetServerInfo()).split(",")[0]) self.ServerName.SetWindowHorizontalAlignCenter() self.ServerName.SetHorizontalAlignCenter() self.ServerName.Show() self.ChannelListBase = ui.SlotBar() self.ChannelListBase.SetParent(self.Board) self.ChannelListBase.SetSize(self.Board.GetWidth() - 2 * 16, 5 * 18 - 4) self.ChannelListBase.SetPosition(16 , 7 + self.TitleBar.GetHeight() + 6 + 10) self.ChannelListBase.Show() self.ChannelList = ui.ListBox() self.ChannelList.SetParent(self.ChannelListBase) self.ChannelList.SetSize(self.ChannelListBase.GetWidth()- 20, self.ChannelListBase.GetHeight()) self.ChannelList.SetPosition(0, 0) self.ChannelList.SetEvent(ui.__mem_func__(self.__OnSelectChannel)) self.ChannelList.Show() self.ChangeButton = ui.Button() self.ChangeButton.SetParent(self.Board) self.ChangeButton.SetPosition(self.Board.GetWidth() / 2 - 44, self.Board.GetHeight() - 35) self.ChangeButton.SetUpVisual('d:/ymir work/ui/public/Large_button_01.sub') self.ChangeButton.SetOverVisual('d:/ymir work/ui/public/Large_button_02.sub') self.ChangeButton.SetDownVisual('d:/ymir work/ui/public/Large_button_03.sub') self.ChangeButton.SetEvent(lambda : self.__OnClickConnectButton()) self.ChangeButton.SetText("Mehet") # "Go" self.ChangeButton.Show() self.DisableChangeButton() self.ChannelListScrollBar = ui.ScrollBar() self.ChannelListScrollBar.SetParent(self.ChannelListBase) self.ChannelListScrollBar.SetPosition(18, 3) self.ChannelListScrollBar.SetScrollBarSize(83) self.ChannelListScrollBar.SetWindowHorizontalAlignRight() self.ChannelListScrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScrollChannelList)) self.ChannelListScrollBar.Show() def DisableChangeButton(self): self.ChangeButton.Disable() self.ChangeButton.Down() self.ChangeButton.ButtonText.SetFontColor(0.4, 0.4, 0.4) def EnableChangeButton(self): self.ChangeButton.Enable() self.ChangeButton.SetUp() self.ChangeButton.ButtonText.SetFontColor(1, 1, 1) def __GetRegionID(self): return 0 def __GetServerID(self): regionID = self.__GetRegionID() for i in serverInfo.REGION_DICT[regionID].keys(): if serverInfo.REGION_DICT[regionID][i]["name"] == net.GetServerInfo().split(",")[0]: serverID = int(i) break return serverID def __Fill_Up_ChannelList(self): self.__RequestServerStateList() self.__RefreshServerStateList() #self.ChannelList.SelectItem(0) def __RequestServerStateList(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() try: channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"] except: return for id, channelDataDict in channelDict.items(): key=channelDataDict["key"] ip=channelDataDict["ip"] udp_port=channelDataDict["udp_port"] ServerStateChecker.Request(key, ip, udp_port) def __RefreshServerStateList(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() bakChannelID = self.ChannelList.GetSelectedItem() self.ChannelList.ClearItem() try: channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"] except: return for channelID, channelDataDict in channelDict.items(): channelName = channelDataDict["name"] channelState = channelDataDict["state"] self.ChannelList.InsertItem(channelID, "%s %s" % (channelName, channelState)) self.ChannelList.SelectItem(bakChannelID-1) def NotifyChannelState(self, addrKey, state): try: stateName = serverInfo.STATE_DICT[state] except: stateName = serverInfo.STATE_NONE regionID = int(addrKey / 1000) serverID = int(addrKey / 10) % 100 channelID = addrKey % 10 try: serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName self.__RefreshChannelStateList() except: pass def __IsSpecialMap(self): dis_maps = [ "season1/metin2_map_oxevent", "season2/metin2_map_guild_inside01", "season2/metin2_map_empirewar01", "season2/metin2_map_empirewar02", "season2/metin2_map_empirewar03", "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 dis_maps: return TRUE return FALSE def __OnSelectChannel(self): if self.ChangeButton.IsDown(): self.EnableChangeButton() ##< Works but not need >## #regionID = self.__GetRegionID() #serverID = self.__GetServerID() #channelID = self.ChannelList.GetSelectedItem() #if self.__IsSpecialMap(): # self.DisableChangeButton() # return #elif serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] == serverInfo.STATE_NONE: # self.DisableChangeButton() # return def __OnScrollChannelList(self): viewItemCount = self.ChannelList.GetViewItemCount() itemCount = self.ChannelList.GetItemCount() pos = self.ChannelListScrollBar.GetPos() * (itemCount - viewItemCount) self.ChannelList.SetBasePos(int(pos)) def __OnClickConnectButton(self): regionID = self.__GetRegionID() serverID = self.__GetServerID() channelID = self.ChannelList.GetSelectedItem() if not channelID: chat.AppendChat(1, "Nem választotál ki csatornát!") # "You did not select a channel!" return try: serverName = serverInfo.REGION_DICT[regionID][serverID]["name"] channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"] addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"] ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"] tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"] state = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"] account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"] markKey = regionID * 1000 + serverID * 10 markAddrValue=serverInfo.MARKADDR_DICT[markKey] net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"]) app.SetGuildMarkPath(markAddrValue["mark"]) app.SetGuildSymbolPath(markAddrValue["symbol_path"]) except: chat.AppendChat(1, "Hiba történt a csatlakozás közben!") # "An error occurred while connect!" return if state == serverInfo.STATE_NONE: chat.AppendChat(1, "Sajnálom a kiválasztott csatorna nem elérhető!") # "Sorry the selected channel is offline!" return elif state == serverInfo.STATE_DICT[3]: chat.AppendChat(1, "Sajnálom a kiválasztott csatorna telítve van!") # "Sorry the selected channel is full!" return elif net.GetServerInfo().strip().split(", ")[1] == self.ChannelList.textDict[self.ChannelList.selectedLine].strip().split(" ")[0]: chat.AppendChat(1, "Te jelenleg is a kiválasztott csatornán tartózkodsz!") # "You are already on the selected channel!" return elif self.__IsSpecialMap(): chat.AppendChat(1, "Sajnálom ezen a területen nem válthatsz csatornát kilépés nélkül!") # "Sorry in this area you cannot change channel without logout!" return self.Close() net.SetServerInfo("%s, %s" % (serverName, channelName)) self.DirectConnect(ip, tcp_port, account_ip, account_port) def DirectConnect(self, ChannelIP, ChannelPort, AuthServerIP, AuthServerPort): #net.SetLoginInfo("xPengii", "kiU2_w1A_q2olDle9") net.SetLoginInfo(decode_string(net.ACCOUNT_ID), decode_string(net.ACCOUNT_PW)) net.ConnectToAccountServer(ChannelIP, ChannelPort, AuthServerIP, AuthServerPort) net.DirectEnter(0) net.SendSelectCharacterPacket(0) net.SendEnterGamePacket() def Show(self): ui.ScriptWindow.Show(self) def Close(self): ServerStateChecker.Destroy(self) self.Hide() return TRUE def OnPressEscapeKey(self): self.Close() return TRUE def OnUpdate(self): ServerStateChecker.Update() iom = ChannelChanger() iom.Show() chat.AppendChat(1, "#DEV#{Succesfully loaded}") Edited May 25, 2015 by Denis 2 If you're going to do something, then do it right. Link to comment Share on other sites More sharing options...
avertuss 48 Posted May 30, 2015 Share Posted May 30, 2015 @MrLibya global name 'decode_string' is not defined. Can you help with this error? Link to comment Share on other sites More sharing options...
Premium MrLibya 558 Posted May 30, 2015 Premium Share Posted May 30, 2015 i didnt test it , i just take it from the internet If you're going to do something, then do it right. Link to comment Share on other sites More sharing options...
Micha aka xCPx 339 Posted May 31, 2015 Share Posted May 31, 2015 Link to comment Share on other sites More sharing options...
Active Member Koray 2014 Posted May 31, 2015 Active Member Share Posted May 31, 2015 @MrLibya global name 'decode_string' is not defined. Can you help with this error? Change this line net.SetLoginInfo(decode_string(net.ACCOUNT_ID), decode_string(net.ACCOUNT_PW)) with net.SetLoginInfo(net.ACCOUNT_ID, net.ACCOUNT_PW) Link to comment Share on other sites More sharing options...
avertuss 48 Posted May 31, 2015 Share Posted May 31, 2015 @koray 0531 18:13:07040 :: Traceback (most recent call last): 0531 18:13:07040 :: File "switcher.py", line 305, in OnPressEscapeKey 0531 18:13:07040 :: File "switcher.py", line 300, in Close 0531 18:13:07040 :: AttributeError 0531 18:13:07040 :: : 0531 18:13:07040 :: 'module' object has no attribute 'Destroy' 0531 18:13:07040 :: Link to comment Share on other sites More sharing options...
Active Member Koray 2014 Posted May 31, 2015 Active Member Share Posted May 31, 2015 @koray 0531 18:13:07040 :: Traceback (most recent call last): 0531 18:13:07040 :: File "switcher.py", line 305, in OnPressEscapeKey 0531 18:13:07040 :: File "switcher.py", line 300, in Close 0531 18:13:07040 :: AttributeError 0531 18:13:07040 :: : 0531 18:13:07040 :: 'module' object has no attribute 'Destroy' 0531 18:13:07040 :: ServerStateChecker.Destroy(self) change this line with ServerStateChecker.Initialize(self) Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now