Cerere functie blocare CH

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

*Problemă/Întrebare: Salut, am nevoie si eu de o functie care sa-mi blochezi CH-urile care nu sunt online, de exemplu cum e in poza CH1, sa fie blocat daca e offline.
Tipologie server: PVM
*Resursă folosită: Metin2Global
*ServerFiles utilizat: Metin2Global
*Syserr: ---
Poză:Imagine
*Detalii suplimentare: As aprecia foarte mult daca m-ar putea ajuta cineva. :D
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

up
Avatar utilizator
Okami
Deţinător Server

Deţinător Server
Mesaje: 1856
Membru din: 01 Ian 2015, 05:40
Server: Old Metin2
Regat: Jinno
Aprecieri: 614  
Mulţumiri: 107  
Discord: Copiază ID
 Contact:
Medalii

Fii mai explicit, CH-urile le pornești cate ai nevoie și dacă sunt offline sistemul va respinge mutarea pe un CH offline.

[ Postat de pe Android ] Imagine
Afișează semnătura
Avatar utilizator
sepheri0n
Nivel 1

Nivel 1
Mesaje: 135
Membru din: 20 Apr 2019, 22:55
Regat: Jinno
Aprecieri: 143  
Mulţumiri: 19  
 Contact:
Medalii

De ce nu scoti direct din sistem ch-urile care nu merg? Si in caz de ai nevoie de ele le adaugi
Imagine
Imagine
Afișează semnătura
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

Pai de exemplu eu vreau sa tin doar 2 CH online, dar sunt si celelalte functionale, si daca cineva apasa pe celelalte 2 cand ele sunt offline, ii se blocheaza jocul..
Si daca e sa le scot, de unde ar trebui sa fac asta mai exact ? :o
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

up
Avatar utilizator
r_tw1x1
Membru Club

Membru Club
Mesaje: 2278
Membru din: 06 Mar 2015, 18:33
Server: Nirvana3
Regat: Jinno
Aprecieri: 228  
Mulţumiri: 3790  
  Rezolvări prob.: 1
Discord: Copiază ID
Medalii

1. Schimba sistemul de ch cu cel al lui ZeNu.
2. Faci in client o "jmecherie" cu constInfo.CHANNEL_OFFLINE = 0/1
Imagine
Imagine
Afișează semnătura
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

[A]ivory scrie: ↑01 Apr 2020, 23:07 1. Schimba sistemul de ch cu cel al lui ZeNu.
2. Faci in client o "jmecherie" cu constInfo.CHANNEL_OFFLINE = 0/1
Uite... poti sa-mi scoti tu ultimele 2 CH-uri ? sa ramana doar primele ? sau macar sa-mi spui de unde ?
Defapt sa le comentezi, poate vreau sa le adaug inapoi mai incolo...

Cod: Selectaţi tot

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, 140, 140, "Schimba CH", self.Close)
		
		for i in xrange(len(self.channels)):
			btn = _ui().Button(self.Board, self.channels[i + 1]["name"], "", 0, 50 + 50*i, lambda arg = i + 1: self.__ChangeChannel(arg), "d:/ymir work/ui/public/large_button_01.sub", "d:/ymir work/ui/public/large_button_02.sub", "d:/ymir work/ui/public/large_button_03.sub")
			btn.SetDisableVisual("d:/ymir work/ui/public/large_button_03.sub")
			btn.SetWindowHorizontalAlignCenter()
			
			if str(net.GetServerInfo()[-1:]) == str(i + 1):
				btn.Disable()
			self.btnChildren.append(btn)
		
		self.Board.SetSize(140, len(self.channels) * 70)
		self.Board.SetPosition(wndMgr.GetScreenWidth()/2 - 70, wndMgr.GetScreenHeight() / 2 - (len(self.channels) * 35))
		
	def __ChangeChannel(self, ch):
		if str(ch) == str(net.GetServerInfo()[-1:]):
			self.Popup = _ui().Popup('Nu poti selecta acelasi CH!', 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_DICT[3]:
			self.Popup = _ui().Popup('Acest CH este plin!', None, None)
			return
			
		if self.IsInSpecialMap():
			self.Popup = _ui().Popup('Nu poti schimba CH in aceasta harta!', 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
		
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

up
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

up
Închis
Răspunsuri
1
Vizualizări
279
Răspunsuri
1
Vizualizări
289
Răspunsuri
8
Vizualizări
902

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 25 vizitatori