Guardar Login

Topic created · 6 Mensajes · 2327 Visitas
  • Holaa a todos, me dicen como añadir a un cliente la opcion en la ventana de logjn la opcion de guardar id y pass?

    Pliz ayudenme... :in-love:

  • esto va en ayudas y preguntas no en guias

  • @DestroyerMt2 said:

    esto va en ayudas y preguntas no en guias

    Por un momento me alegre pensando que alguien me habia ayudado, pero me llevo la ingrata sorpresa, que es para hacer un comentario malo, aunque sea postea diciendo esto va en otro sitio y ayudandome en algo no?

    Lamento haber puesto aqui, ojala q algun mod lo mueva donde se debe pero ojala tmb que alguien me ayude

    ...

  • Oe mujer pero no te enojes que en verdad para eso esta esa sección :bah: ahora al tema hay una manera pero nose si te sirva muy bien dime que cliente usas y te dire que savelogin te sirve _xD_
    Por mientras toma este de Exsta lo actualizo no dejo link porque se me borraron mis favoritos:

    Reemplaza tu intrologin.py y ponle el mio a tu cliente dejo codigo completo!! 😄 ahora bien a lo que vine lo primero que debes hacer es lo siguiente:

    Descompila el locale que tenga tu cliente y ve a :

    locale/%/ui
    

    donde el % es el locale que tu utilizas ahora edita el archivo(preferiblemente con NotePad++):

    loginwindown.py
    

    y ve a donde dice:

    ## LoginBoard
    

    Hasta:

    ## ServerBoard
    

    y pega esto eso reemplazara lo seleccionado:

    ## LoginBoard
    		{
    			"name" : "LoginBoard",
    			"type" : "image",
    
    			"x" : (SCREEN_WIDTH - 208) / 2,
    			"y" : (SCREEN_HEIGHT - 410),
    
    			"image" : LOCALE_PATH + "loginwindow.sub",
    
    			"children" :
    			(
    				{
    					"name" : "ID_EditLine",
    					"type" : "editline",
    
    					"x" : 77,
    					"y" : 16,
    
    					"width" : 120,
    					"height" : 18,
    
    					"input_limit" : 25,
    					"enable_codepage" : 0,
    
    					"r" : 1.0,
    					"g" : 1.0,
    					"b" : 1.0,
    					"a" : 1.0,
    				},
    				{
    					"name" : "Password_EditLine",
    					"type" : "editline",
    
    					"x" : 77,
    					"y" : 43,
    
    					"width" : 120,
    					"height" : 18,
    
    					"input_limit" : 25,
    					"secret_flag" : 1,
    					"enable_codepage" : 0,
    
    					"r" : 1.0,
    					"g" : 1.0,
    					"b" : 1.0,
    					"a" : 1.0,
    				},
    				{
    					"name" : "LoginButton",
    					"type" : "button",
    
    					"x" : 15,
    					"y" : 65,
    
    					"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
    					"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
    					"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
    
    					"text" : uiScriptLocale.LOGIN_CONNECT,
    				},
    				{
    					"name" : "LoginConfigName",
    					"type" : "thinboard",
    
    					"x" : 15,
    					"y" : 0,
    					"vertical_align" : "center",
    					"text_vertical_align" : "center",
    				},
    				{
    					"name" : "LoginSaveButton",
    					"type" : "button",
    
    					"x" : 75,
    					"y" : 65,
    
    					"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
    					"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
    					"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
    
    					"text" : "Save",
    					},
    				{
    					"name" : "LoginExitButton",
    					"type" : "button",
    
    					"x" : 135,
    					"y" : 65,
    
    					"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
    					"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
    					"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
    
    					"text" : uiScriptLocale.LOGIN_EXIT,
    				},
    			),
    		},
    		
    
    		
    		## ServerBoard
    

    Ahora compila el locale luego descompila el root.epk y edita con el NotePad++ el intrologin.py
    y selecciona todo con

    Ctrl + A
    

    y pega esto:

    import dbg
    import app
    import net
    import ui
    import ime
    import snd
    import wndMgr
    import musicInfo
    import serverInfo
    import systemSetting
    import ServerStateChecker
    import locale
    import constInfo
    import uiCommon
    import time
    import ServerCommandParser
    import ime
    import uiScriptLocale
    
    JAPAN_LOGIN = None
    RUNUP_MATRIX_AUTH = FALSE
    NEWCIBN_PASSPOD_AUTH = FALSE
    
    LOGIN_DELAY_SEC = 0.0
    SKIP_LOGIN_PHASE = FALSE
    SKIP_LOGIN_PHASE_SUPPORT_CHANNEL = FALSE
    FULL_BACK_IMAGE = FALSE
    
    PASSPOD_MSG_DICT = {}
    
    VIRTUAL_KEYBOARD_NUM_KEYS = 46
    VIRTUAL_KEYBOARD_RAND_KEY = TRUE
    
    def Suffle(src):
    	if VIRTUAL_KEYBOARD_RAND_KEY:
    		items = [item for item in src]
    
    		itemCount = len(items)
    		for oldPos in xrange(itemCount):
    			newPos = app.GetRandom(1, itemCount-1)
    			items[newPos], items[oldPos] = items[oldPos], items[newPos]
    
    		return "".join(items)
    	else:
    		return src
    
    if locale.IsJAPAN():
    	SKIP_LOGIN_PHASE = TRUE
    	SKIP_LOGIN_PHASE_SUPPORT_CHANNEL = TRUE
    
    elif  locale.IsNEWCIBN():
    	LOGIN_DELAY_SEC = 20.0
    	FULL_BACK_IMAGE = TRUE
    	NEWCIBN_PASSPOD_AUTH = TRUE
    	PASSPOD_MSG_DICT = {
    		"PASERR1"	: locale.LOGIN_FAILURE_PASERR1,
    		"PASERR2"	: locale.LOGIN_FAILURE_PASERR2,
    		"PASERR3"	: locale.LOGIN_FAILURE_PASERR3,
    		"PASERR4"	: locale.LOGIN_FAILURE_PASERR4,
    		"PASERR5"	: locale.LOGIN_FAILURE_PASERR5,
    	}
    
    elif locale.IsYMIR() or locale.IsCHEONMA():
    	FULL_BACK_IMAGE = TRUE
    
    elif locale.IsHONGKONG():
    	FULL_BACK_IMAGE = TRUE
    	RUNUP_MATRIX_AUTH = TRUE 
    	PASSPOD_MSG_DICT = {
    		"NOTELE"	: locale.LOGIN_FAILURE_NOTELEBLOCK,
    	}
    
    elif locale.IsJAPAN():
    	FULL_BACK_IMAGE = TRUE
    
    def IsFullBackImage():
    	global FULL_BACK_IMAGE
    	return FULL_BACK_IMAGE
    
    def IsLoginDelay():
    	global LOGIN_DELAY_SEC
    	if LOGIN_DELAY_SEC > 0.0:
    		return TRUE
    	else:
    		return FALSE
    
    def IsRunupMatrixAuth():
    	global RUNUP_MATRIX_AUTH
    	return RUNUP_MATRIX_AUTH	
    
    def IsNEWCIBNPassPodAuth():
    	global NEWCIBN_PASSPOD_AUTH
    	return NEWCIBN_PASSPOD_AUTH
    
    def GetLoginDelay():
    	global LOGIN_DELAY_SEC
    	return LOGIN_DELAY_SEC
    
    app.SetGuildMarkPath("test")
    
    class ConnectingDialog(ui.ScriptWindow):
    
    	def __init__(self):
    		ui.ScriptWindow.__init__(self)
    		self.__LoadDialog()
    		self.eventTimeOver = lambda *arg: None
    		self.eventExit = lambda *arg: None
    
    	def __del__(self):
    		ui.ScriptWindow.__del__(self)
    
    	def __LoadDialog(self):
    		try:
    			PythonScriptLoader = ui.PythonScriptLoader()
    			PythonScriptLoader.LoadScriptFile(self, "UIScript/ConnectingDialog.py")
    
    			self.board = self.GetChild("board")
    			self.message = self.GetChild("message")
    			self.countdownMessage = self.GetChild("countdown_message")
    
    		except:
    			import exception
    			exception.Abort("ConnectingDialog.LoadDialog.BindObject")
    
    	def Open(self, waitTime):
    		curTime = time.clock()
    		self.endTime = curTime + waitTime
    
    		self.Lock()
    		self.SetCenterPosition()
    		self.SetTop()
    		self.Show()		
    
    	def Close(self):
    		self.Unlock()
    		self.Hide()
    
    	def Destroy(self):
    		self.Hide()
    		self.ClearDictionary()
    
    	def SetText(self, text):
    		self.message.SetText(text)
    
    	def SetCountDownMessage(self, waitTime):
    		self.countdownMessage.SetText("%.0f%s" % (waitTime, locale.SECOND))
    
    	def SAFE_SetTimeOverEvent(self, event):
    		self.eventTimeOver = ui.__mem_func__(event)
    
    	def SAFE_SetExitEvent(self, event):
    		self.eventExit = ui.__mem_func__(event)
    
    	def OnUpdate(self):
    		lastTime = max(0, self.endTime - time.clock())
    		if 0 == lastTime:
    			self.Close()
    			self.eventTimeOver()
    		else:
    			self.SetCountDownMessage(self.endTime - time.clock())
    
    	def OnPressExitKey(self):
    		#self.eventExit()
    		return TRUE
    
    class LoginWindow(ui.ScriptWindow):
    
    	IS_TEST = net.IsTest()
    
    	def __init__(self, stream):
    		print "NEW LOGIN WINDOW  ----------------------------------------------------------------------------"
    		ui.ScriptWindow.__init__(self)
    		net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
    		net.SetAccountConnectorHandler(self)
    
    		self.matrixInputChanceCount = 0
    		self.lastLoginTime = 0
    		self.inputDialog = None
    		self.connectingDialog = None
    		self.stream=stream
    		self.isNowCountDown=FALSE
    		self.isStartError=FALSE
    
    		self.xServerBoard = 0
    		self.yServerBoard = 0
    		
    		self.loadingImage = None
    
    		self.virtualKeyboard = None
    		self.virtualKeyboardMode = "ALPHABET"
    		self.virtualKeyboardIsUpper = FALSE
    		
    	def __del__(self):
    		net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
    		net.SetAccountConnectorHandler(0)
    		ui.ScriptWindow.__del__(self)
    		print "---------------------------------------------------------------------------- DELETE LOGIN WINDOW"
    
    	def Open(self):
    		ServerStateChecker.Create(self)
    
    		print "LOGIN WINDOW OPEN ----------------------------------------------------------------------------"
    
    		self.loginFailureMsgDict={
    			#"DEFAULT" : locale.LOGIN_FAILURE_UNKNOWN,
    
    			"ALREADY"	: locale.LOGIN_FAILURE_ALREAY,
    			"NOID"		: locale.LOGIN_FAILURE_NOT_EXIST_ID,
    			"WRONGPWD"	: locale.LOGIN_FAILURE_WRONG_PASSWORD,
    			"FULL"		: locale.LOGIN_FAILURE_TOO_MANY_USER,
    			"SHUTDOWN"	: locale.LOGIN_FAILURE_SHUTDOWN,
    			"REPAIR"	: locale.LOGIN_FAILURE_REPAIR_ID,
    			"BLOCK"		: locale.LOGIN_FAILURE_BLOCK_ID,
    			"WRONGMAT"	: locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
    			"QUIT"		: locale.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
    			"BESAMEKEY"	: locale.LOGIN_FAILURE_BE_SAME_KEY,
    			"NOTAVAIL"	: locale.LOGIN_FAILURE_NOT_AVAIL,
    			"NOBILL"	: locale.LOGIN_FAILURE_NOBILL,
    			"BLKLOGIN"	: locale.LOGIN_FAILURE_BLOCK_LOGIN,
    			"WEBBLK"	: locale.LOGIN_FAILURE_WEB_BLOCK,
    		}
    
    		self.loginFailureFuncDict = {
    			"WRONGPWD"	: self.__DisconnectAndInputPassword,
    			"WRONGMAT"	: self.__DisconnectAndInputMatrix,
    			"QUIT"		: app.Exit,
    		}
    
    		self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
    		self.SetWindowName("LoginWindow")
    
    		if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoginWindow.py"):
    			dbg.TraceError("LoginWindow.Open - __LoadScript Error")
    			return
    		
    		self.__LoadLoginInfo("loginInfo.py")
    		
    		if app.loggined:
    			self.loginFailureFuncDict = {
    			"WRONGPWD"	: app.Exit,
    			"WRONGMAT"	: app.Exit,
    			"QUIT"		: app.Exit,
    			}
    
    		if musicInfo.loginMusic != "":
    			snd.SetMusicVolume(systemSetting.GetMusicVolume())
    			snd.FadeInMusic("BGM/"+musicInfo.loginMusic)
    
    		snd.SetSoundVolume(systemSetting.GetSoundVolume())
    
    		# pevent key "[" "]"
    		ime.AddExceptKey(91)
    		ime.AddExceptKey(93)
    			
    		self.Show()
    
    		global SKIP_LOGIN_PHASE
    		if SKIP_LOGIN_PHASE:
    			if self.isStartError:
    				self.connectBoard.Hide()
    				self.loginBoard.Hide()
    				self.serverBoard.Hide()
    				self.LoginConfigBoard.Hide()
    				self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame)
    				return
    
    			if self.loginInfo:
    				self.serverBoard.Hide()
    			else:
    				self.__RefreshServerList()
    				self.__OpenServerBoard()
    		else:
    			connectingIP = self.stream.GetConnectAddr()
    			if connectingIP:
    				self.__OpenLoginBoard()
    				if IsFullBackImage():
    					self.GetChild("bg1").Hide()
    					self.GetChild("bg2").Show()
    
    			else:
    				self.__RefreshServerList()
    				self.__OpenServerBoard()
    
    		app.ShowCursor()
    
    	def Close(self):
    
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		ServerStateChecker.Destroy(self)
    
    		print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW "
    		#
    		# selectMusicÀÌ ¾øÀ¸¸é BGMÀÌ ²÷±â¹Ç·Î µÎ°³ ´Ù üũÇÑ´Ù. 
    		#
    		if musicInfo.loginMusic != "" and musicInfo.selectMusic != "":
    			snd.FadeOutMusic("BGM/"+musicInfo.loginMusic)
    
    		## NOTE : idEditLine¿Í pwdEditLineÀº À̺¥Æ®°¡ ¼­·Î ¿¬°á µÇ¾îÀ־
    		##        Event¸¦ °­Á¦·Î ÃʱâÈ­ ÇØÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù - [levites]
    		self.idEditLine.SetTabEvent(0)
    		self.idEditLine.SetReturnEvent(0)
    		self.pwdEditLine.SetReturnEvent(0)
    		self.pwdEditLine.SetTabEvent(0)
    
    		self.connectBoard = None
    		self.loginConfigBoard = None
    		self.loginBoard = None
    		self.idEditLine = None
    		self.pwdEditLine = None
    		self.inputDialog = None
    		self.connectingDialog = None
    		self.loadingImage = None
    
    		self.serverBoard				= None
    		self.serverList					= None
    		self.channelList				= None
    
    		# RUNUP_MATRIX_AUTH
    		self.matrixQuizBoard	= None
    		self.matrixAnswerInput	= None
    		self.matrixAnswerOK	= None
    		self.matrixAnswerCancel	= None
    		# RUNUP_MATRIX_AUTH_END
    
    		# NEWCIBN_PASSPOD_AUTH
    		self.passpodBoard	= None
    		self.passpodAnswerInput	= None
    		self.passpodAnswerOK	= None
    		self.passpodAnswerCancel = None
    		# NEWCIBN_PASSPOD_AUTH_END
    
    		self.VIRTUAL_KEY_ALPHABET_LOWERS = None
    		self.VIRTUAL_KEY_ALPHABET_UPPERS = None
    		self.VIRTUAL_KEY_SYMBOLS = None
    		self.VIRTUAL_KEY_NUMBERS = None
    
    		# VIRTUAL_KEYBOARD_BUG_FIX
    		if self.virtualKeyboard:
    			for keyIndex in xrange(0, VIRTUAL_KEYBOARD_NUM_KEYS+1):
    				key = self.GetChild2("key_%d" % keyIndex)
    				if key:
    					key.SetEvent(None)
    
    			self.GetChild("key_space").SetEvent(None)
    			self.GetChild("key_backspace").SetEvent(None)
    			self.GetChild("key_enter").SetEvent(None)
    			self.GetChild("key_shift").SetToggleDownEvent(None)
    			self.GetChild("key_shift").SetToggleUpEvent(None)
    			self.GetChild("key_at").SetToggleDownEvent(None)
    			self.GetChild("key_at").SetToggleUpEvent(None)
    
    			self.virtualKeyboard = None
    
    		self.KillFocus()
    		self.Hide()
    
    		self.stream.popupWindow.Close()
    		self.loginFailureFuncDict=None
    
    		ime.ClearExceptKey()
    
    		app.HideCursor()
    
    	def __SaveChannelInfo(self):
    		try:
    			file=open("channel.inf", "w")
    			file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID()))
    		except:
    			print "LoginWindow.__SaveChannelInfo - SaveError"
    
    	def __LoadChannelInfo(self):
    		try:
    			file=open("channel.inf")
    			lines=file.readlines()
    			
    			if len(lines)>0:
    				tokens=lines[0].split()
    
    				selServerID=int(tokens[0])
    				selChannelID=int(tokens[1])
    				
    				if len(tokens) == 3:
    					regionID = int(tokens[2])
    
    				return regionID, selServerID, selChannelID
    
    		except:
    			print "LoginWindow.__LoadChannelInfo - OpenError"
    			return -1, -1, -1
    
    	def __ExitGame(self):
    		app.Exit()
    
    	def SetIDEditLineFocus(self):
    		if self.idEditLine != None:
    			self.idEditLine.SetFocus()
    
    	def SetPasswordEditLineFocus(self):
    		if locale.IsEUROPE():
    			if self.idEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ
    				self.idEditLine.SetText("")
    				self.idEditLine.SetFocus() #0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç ¾ÆÀ̵ð·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù
    
    			if self.pwdEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ
    				self.pwdEditLine.SetText("")
    		else:
    			if self.pwdEditLine != None:
    				self.pwdEditLine.SetFocus()								
    
    	def OnEndCountDown(self):
    		self.isNowCountDown = FALSE
    		self.OnConnectFailure()
    
    	def OnConnectFailure(self):
    
    		if self.isNowCountDown:
    			return
    
    		snd.PlaySound("sound/ui/loginfail.wav")
    
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		if app.loggined:
    			self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.__ExitGame)
    		else:
    			self.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus)
    
    	def OnHandShake(self):
    		if not IsLoginDelay():
    			snd.PlaySound("sound/ui/loginok.wav")
    			self.PopupDisplayMessage(locale.LOGIN_CONNECT_SUCCESS)
    
    	def OnLoginStart(self):
    		if not IsLoginDelay():
    			self.PopupDisplayMessage(locale.LOGIN_PROCESSING)
    
    	def OnLoginFailure(self, error):
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		try:
    			loginFailureMsg = self.loginFailureMsgDict[error]
    		except KeyError:
    			if PASSPOD_MSG_DICT:
    				try:
    					loginFailureMsg = PASSPOD_MSG_DICT[error]
    				except KeyError:
    					loginFailureMsg = locale.LOGIN_FAILURE_UNKNOWN + error
    			else:
    				loginFailureMsg = locale.LOGIN_FAILURE_UNKNOWN  + error
    
    
    		#0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç Æнº¿öµå·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù
    		loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus)
    
    		if app.loggined:
    			self.PopupNotifyMessage(loginFailureMsg, self.__ExitGame)
    		else:
    			self.PopupNotifyMessage(loginFailureMsg, loginFailureFunc)
    
    		snd.PlaySound("sound/ui/loginfail.wav")
    
    	def __DisconnectAndInputID(self):
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		self.SetIDEditLineFocus()
    		net.Disconnect()
    
    	def __DisconnectAndInputPassword(self):
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		self.SetPasswordEditLineFocus()
    		net.Disconnect()
    
    	def __DisconnectAndInputMatrix(self):
    		if self.connectingDialog:
    			self.connectingDialog.Close()
    		self.connectingDialog = None
    
    		self.stream.popupWindow.Close()
    		self.matrixInputChanceCount -= 1
    
    		if self.matrixInputChanceCount
  • STREL
    una pregunta se puede poner eso mismo ke as pusto pero ke solo guarde el ID sin guardar la pass?
    me seria de gran ayuda
    gracias!

  • Grraciasssss STREL
    Eres el mejor de todo el foro :in-love: