Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Zapowiedź][Easy/Medium]LaurentiaMT2


Legolas.

Czy zagrasz na serwerze LaurentiaMT2?  

43 użytkowników zagłosowało

  1. 1. Zagrasz na serwerze?

    • Tak
      22
    • Nie
      21

Rekomendowane odpowiedzi

Opublikowano

Legolas czemu nie przyznasz, nie przyznałeś że serwer jest gotowcem Theris.pl? :) Warto było dopisać że pliki dostałeś, albo odkupiłeś od Boxxy.

Kto chcę mogę udostępnić te pliki całe, wraz z grafiką, prezentacją, stroną. :) 

Powodzenia. Lecz wątpię że będziecie mieli dużo osób. Ponieważ nic nie zostało zmienione od Therisa.

Opublikowano
1 godzinę temu, .Avixon. napisał:

Legolas czemu nie przyznasz, nie przyznałeś że serwer jest gotowcem Theris.pl? :) Warto było dopisać że pliki dostałeś, albo odkupiłeś od Boxxy.

Kto chcę mogę udostępnić te pliki całe, wraz z grafiką, prezentacją, stroną. :) 

Powodzenia. Lecz wątpię że będziecie mieli dużo osób. Ponieważ nic nie zostało zmienione od Therisa.

Ty ,asz czelność się odzywać jeszcze ? 

5 godzin temu, Reyaver napisał:

To nie wrażenie.

Gościu skończ już komentować te serwery rzygam tobą ;)

Opublikowano

Widze, że kogoś dupa boli, standard w sumie.

Na FP jakiś tam ruch macie, zobaczymy co dalej. :P 

Powodzonka. 

wykończę cię jak podatki.

Pomocnik
Opublikowano
21 godzin temu, Reyaver napisał:

Eh, mogliście dać coś więcej od siebie, aniżeli kupione pliki od Boxxy'ego. I ta Ruda na AF-ie. xD

Widzę, że z chęcią byś mnie tam zastąpił. Zdążyłeś już napisać pw z ofertą współpracy?

nWHug0o.png

Opublikowano
6 godzin temu, .Avixon. napisał:

Legolas czemu nie przyznasz, nie przyznałeś że serwer jest gotowcem Theris.pl? :) Warto było dopisać że pliki dostałeś, albo odkupiłeś od Boxxy.

Kto chcę mogę udostępnić te pliki całe, wraz z grafiką, prezentacją, stroną. :) 

Powodzenia. Lecz wątpię że będziecie mieli dużo osób. Ponieważ nic nie zostało zmienione od Therisa.

Przecież nigdzie nie zaprzeczyłem, odkupiłem bo stać mnie, a nie jak Ciebie głuptasku ;(

Udostępniaj ;p Tylko pamiętaj, że w twojej wersji to 95% mpcforum nie odpali tych plików, a nawet strony. 

Przecież wiadomo, że jakbyś miał całe pliki to już dawno byś coś robił.

A tu się mylisz, zobaczymy w sobotę, nie muszę nic zmieniać, żeby serwer był dobry :) 

Różni się dużo od kotletów, które mają oklepane style, a od mojej perełki, którą będę szlifował,

żal Ci dupke ściska pewnie co xD 

4 godziny temu, Evil Smile napisał:

Widze, że kogoś dupa boli, standard w sumie.

Na FP jakiś tam ruch macie, zobaczymy co dalej. :P 

Powodzonka. 

Z samego fan page na becie przewinęło się 50 osób :)

 

4 godziny temu, Ash napisał:

Widzę, że z chęcią byś mnie tam zastąpił. Zdążyłeś już napisać pw z ofertą współpracy?

Może on by chciał zastąpić ale ja nie zamierzam zmieniać na jakiegoś no-name xD 

 

3 godziny temu, Deto. napisał:

Wpadam, zapowiada się supix :D

Nie tylko się zapowiada bo tak będzie ! :D

 

BTW. Odpaliliśmy serwer beta, jeżeli ktoś zechciałby pomóc nam, zapraszamy LaurentiaMT2.pl do rejestracji, oraz do pobierania klienta,

nie zapomnijcie spatchować !

 Isayia - Już wkrótce  :yay:B) 

Opublikowano
6 godzin temu, MTsunami napisał:

Gościu skończ już komentować te serwery rzygam tobą ;)

Trzymaj pyszczek, mam prawo, więc będę. Nie podoba się to nie czytaj, randomie. :s

 

6 godzin temu, Ash napisał:

Widzę, że z chęcią byś mnie tam zastąpił. Zdążyłeś już napisać pw z ofertą współpracy?

Do mnie trzeba napisać i złożyć ofertę współpracy. Raz na jakiś czas szczęśliwym wybrańcom sam mogę się zaoferować. ^^

 

1 godzinę temu, Legolas. napisał:

Może on by chciał zastąpić ale ja nie zamierzam zmieniać na jakiegoś no-name xD 

Ktoś powiedział, że chcę? To czego mordę cieszysz? Skoro ja dla Ciebie jestem no-name to kim ona musi być, olaboga, brak mi pomyślunku na to. :confused:

 

@nospam: Będą jakieś większe update, czy jak startujecie tak upadacie (za tydzień/dwa)?

Opublikowano

Jeżeli nic nie zmieniłeś to przygotuj się na szybki upadek tego serwera, bo wszystko na therisie było zrobione w taki sposób że nikt nie musiał z nikim handlować, bo każdy był samowystarczalny.

Dłuższej grafiki się nie dało?
 

Pomocnik
Opublikowano
5 godzin temu, Reyaver napisał:

Trzymaj pyszczek, mam prawo, więc będę. Nie podoba się to nie czytaj, randomie. :s

 

Do mnie trzeba napisać i złożyć ofertę współpracy. Raz na jakiś czas szczęśliwym wybrańcom sam mogę się zaoferować. ^^

 

Ktoś powiedział, że chcę? To czego mordę cieszysz? Skoro ja dla Ciebie jestem no-name to kim ona musi być, olaboga, brak mi pomyślunku na to. :confused:

 

@nospam: Będą jakieś większe update, czy jak startujecie tak upadacie (za tydzień/dwa)?

Skoro nie zalewa Cię fala pw dotyczących współpracy to widocznie nie jesteś taki dobry na jakiego się kreujesz.. Sądzę też, że większość osób, które stawiają serwery mają więcej rozumu, aby nie prosić Cię o robienie forum. 

Szczekasz głośniej niż jesteś w stanie sobie wyobrazić.

 

nWHug0o.png

Opublikowano
57 minut temu, Silver™ napisał:

Jeżeli nic nie zmieniłeś to przygotuj się na szybki upadek tego serwera, bo wszystko na therisie było zrobione w taki sposób że nikt nie musiał z nikim handlować, bo każdy był samowystarczalny.

Akurat drop jest caly moj ?

Siedzialem ponad 14h przy nim,

Napisalem go od zera wedlug swojej wizji.

 Isayia - Już wkrótce  :yay:B) 

Opublikowano
Spoiler

 


import dbg
import app
import net
import ui
import ime
import snd
import wndMgr
import musicInfo
import serverInfo
import systemSetting
import ServerStateChecker
import localeInfo
import constInfo
import uiCommon
import time
import ServerCommandParser
import ime
import uiScriptLocale
import chat
import sys
#import md5
import background
#import urllib
import string
import constInfo
import os
#from urllib import FancyURLopener

### CONFIG ###
if not os.path.exists('zapisane_konta'):
	os.makedirs('zapisane_konta')
if not os.path.exists('zapisane_konta/ekwipunek1.cfg'):	
	open('zapisane_konta/ekwipunek1.cfg', "w").write("@	@	@	@	@	@	@	@	@	@")	
if not os.path.exists('zapisane_konta/ekwipunek2.cfg'):	
	open('zapisane_konta/ekwipunek1.cfg', "w").write("@	@	@	@	@	@	@	@	@	@")	
if not os.path.exists('zapisane_konta/ekwipunek3.cfg'):	
	open('zapisane_konta/ekwipunek1.cfg', "w").write("@	@	@	@	@	@	@	@	@	@")	
if not os.path.exists('zapisane_konta/lista_zablokowanych.cfg'):	
	open('zapisane_konta/lista_zablokowanych.cfg', "w").write("")
if not os.path.exists('zapisane_konta/konto_1.cfg'):	
	open('zapisane_konta/konto_1.cfg', "w").write("")
if not os.path.exists('zapisane_konta/konto_2.cfg'):	
	open('zapisane_konta/konto_2.cfg', "w").write("")
if not os.path.exists('zapisane_konta/konto_3.cfg'):	
	open('zapisane_konta/konto_3.cfg', "w").write("")
if not os.path.exists('zapisane_konta/konto_4.cfg'):	
	open('zapisane_konta/konto_4.cfg', "w").write("")
if not os.path.exists('zapisane_konta/font.cfg'):	
	open('zapisane_konta/font.cfg', "w").write("0")
if not os.path.exists('zapisane_konta/dzikie_psy.cfg'):	
	open('zapisane_konta/dzikie_psy.cfg', "w").write("0")

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 = TRUE

PASSPOD_MSG_DICT = {}

VIRTUAL_KEYBOARD_NUM_KEYS = 46
VIRTUAL_KEYBOARD_RAND_KEY = FALSE

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(0, itemCount-1)
			items[newPos], items[oldPos] = items[oldPos], items[newPos]

		return "".join(items)
	else:
		return src

if localeInfo.IsNEWCIBN() or localeInfo.IsCIBN10():
	LOGIN_DELAY_SEC = 20.0
	FULL_BACK_IMAGE = TRUE
	NEWCIBN_PASSPOD_AUTH = TRUE
	PASSPOD_MSG_DICT = {
		"PASERR1"	: localeInfo.LOGIN_FAILURE_PASERR1,
		"PASERR2"	: localeInfo.LOGIN_FAILURE_PASERR2,
		"PASERR3"	: localeInfo.LOGIN_FAILURE_PASERR3,
		"PASERR4"	: localeInfo.LOGIN_FAILURE_PASERR4,
		"PASERR5"	: localeInfo.LOGIN_FAILURE_PASERR5,
	}

elif localeInfo.IsYMIR() or localeInfo.IsCHEONMA():
	FULL_BACK_IMAGE = TRUE

elif localeInfo.IsHONGKONG():
	FULL_BACK_IMAGE = TRUE
	RUNUP_MATRIX_AUTH = TRUE 
	PASSPOD_MSG_DICT = {
		"NOTELE"	: localeInfo.LOGIN_FAILURE_NOTELEBLOCK,
	}

elif localeInfo.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, localeInfo.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" : localeInfo.LOGIN_FAILURE_UNKNOWN,

			"ALREADY"	: localeInfo.LOGIN_FAILURE_ALREAY,
			"NOID"		: localeInfo.LOGIN_FAILURE_NOT_EXIST_ID,
			"WRONGPWD"	: localeInfo.LOGIN_FAILURE_WRONG_PASSWORD,
			"FULL"		: localeInfo.LOGIN_FAILURE_TOO_MANY_USER,
			"SHUTDOWN"	: localeInfo.LOGIN_FAILURE_SHUTDOWN,
			"REPAIR"	: localeInfo.LOGIN_FAILURE_REPAIR_ID,
			"BLOCK"		: localeInfo.LOGIN_FAILURE_BLOCK_ID,
			"WRONGMAT"	: localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
			"QUIT"		: localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
			"BESAMEKEY"	: localeInfo.LOGIN_FAILURE_BE_SAME_KEY,
			"NOTAVAIL"	: localeInfo.LOGIN_FAILURE_NOT_AVAIL,
			"NOBILL"	: localeInfo.LOGIN_FAILURE_NOBILL,
			"BLKLOGIN"	: localeInfo.LOGIN_FAILURE_BLOCK_LOGIN,
			"WEBBLK"	: localeInfo.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
		
		if not os.path.exists('logininfo.py') and not os.path.isfile('logininfo.py'):
			self.__LoadLoginInfo("loginInfo.py")
		else:
			app.Exit()
			dbg.LogBox("Wystąpił problem z uruchomieniem...")
			exception.Abort("Unsupported file - #ERROR 404") # Syserr.txt
			return
		
		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.PopupNotifyMessage(localeInfo.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").Show()
					self.GetChild("bg2").Hide()

			else:
				self.__RefreshServerList()
				self.__OpenServerBoard()

		app.ShowCursor()
		
	def Close(self):

		if self.connectingDialog:
			self.connectingDialog.Close()
		self.connectingDialog = None

		ServerStateChecker.Initialize(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.PassLoader = None
		self.ChangeFont = None
		self.connectBoard = 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 localeInfo.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(localeInfo.LOGIN_CONNECT_FAILURE, self.__ExitGame)
		else:
			self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus)

	def OnHandShake(self):
		if not IsLoginDelay():
			snd.PlaySound("sound/ui/loginok.wav")
			self.PopupDisplayMessage(localeInfo.LOGIN_CONNECT_SUCCESS)

	def OnLoginStart(self):
		if not IsLoginDelay():
			self.PopupDisplayMessage(localeInfo.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 = localeInfo.LOGIN_FAILURE_UNKNOWN + error
			else:
				loginFailureMsg = localeInfo.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 <= 0:
			self.__OnCloseInputDialog()

		elif self.inputDialog:
			self.inputDialog.Show()

	def __LoadScript(self, fileName):
		try:
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self, fileName)
		except:
			import exception
			exception.Abort("LoginWindow.__LoadScript.LoadObject")

		try:
			GetObject=self.GetChild
			self.serverBoard			= GetObject("ServerBoard")
			self.serverList				= GetObject("ServerList")
			self.channelList			= GetObject("ChannelList")
			self.serverSelectButton		= GetObject("ServerSelectButton")			
			self.serverExitButton		= GetObject("ServerExitButton")
			self.connectBoard			= GetObject("ConnectBoard")
			self.loginBoard				= GetObject("LoginBoard")
			self.idEditLine				= GetObject("ID_EditLine")
			self.pwdEditLine			= GetObject("Password_EditLine")
			self.serverInfo				= GetObject("ConnectName")

			self.Channel1Button	= GetObject("Channel1Button")
			self.Channel2Button	= GetObject("Channel2Button")
			self.Channel3Button	= GetObject("Channel3Button")
			self.Channel4Button	= GetObject("Channel4Button")
			self.Channel5Button	= GetObject("Channel5Button")
			self.loginButton			= GetObject("LoginButton")
			self.loginExitButton		= GetObject("LoginExitButton")
			self.bg1			= GetObject("bg1")
			self.bg2			= GetObject("bg2")
			
			# CFG
			self.DogButton				= GetObject("DogButton")
			self.FontButton				= GetObject("FontButton")
			
			## ACCMANAGER
			
			self.acc1loginButton		= GetObject("Acc1Login")
			self.acc2loginButton		= GetObject("Acc2Login")
			self.acc3loginButton		= GetObject("Acc3Login")
			self.acc4loginButton		= GetObject("Acc4Login")
			self.ACC1_LABEL		= GetObject("ACC1_LABEL")
			self.ACC2_LABEL		= GetObject("ACC2_LABEL")
			self.ACC3_LABEL		= GetObject("ACC3_LABEL")
			self.ACC4_LABEL		= GetObject("ACC4_LABEL")
			
			self.Acc1Save		= GetObject("Acc1Save")
			self.Acc2Save		= GetObject("Acc2Save")
			self.Acc3Save		= GetObject("Acc3Save")
			self.Acc4Save		= GetObject("Acc4Save")
				
			# RUNUP_MATRIX_AUTH
			if IsRunupMatrixAuth():
				self.matrixQuizBoard	= GetObject("RunupMatrixQuizBoard")
				self.matrixAnswerInput	= GetObject("RunupMatrixAnswerInput")
				self.matrixAnswerOK	= GetObject("RunupMatrixAnswerOK")
				self.matrixAnswerCancel	= GetObject("RunupMatrixAnswerCancel")
			# RUNUP_MATRIX_AUTH_END

			# NEWCIBN_PASSPOD_AUTH
			if IsNEWCIBNPassPodAuth():
				self.passpodBoard	= GetObject("NEWCIBN_PASSPOD_BOARD")
				self.passpodAnswerInput	= GetObject("NEWCIBN_PASSPOD_INPUT")
				self.passpodAnswerOK	= GetObject("NEWCIBN_PASSPOD_OK")
				self.passpodAnswerCancel= GetObject("NEWCIBN_PASSPOD_CANCEL")
			# NEWCIBN_PASSPOD_AUTH_END

			self.virtualKeyboard		= self.GetChild2("VirtualKeyboard")
			self.AccountBoard		= self.GetChild2("AccountBoard")
			
			if self.virtualKeyboard:
				self.VIRTUAL_KEY_ALPHABET_UPPERS = Suffle(localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS)
				self.VIRTUAL_KEY_ALPHABET_LOWERS = "".join([localeInfo.VIRTUAL_KEY_ALPHABET_LOWERS[localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS.index(e)] for e in self.VIRTUAL_KEY_ALPHABET_UPPERS])
				self.VIRTUAL_KEY_SYMBOLS = Suffle(localeInfo.VIRTUAL_KEY_SYMBOLS)
				self.VIRTUAL_KEY_NUMBERS = Suffle(localeInfo.VIRTUAL_KEY_NUMBERS)
				self.__VirtualKeyboard_SetAlphabetMode()
			
				self.GetChild("key_space").SetEvent(lambda : self.__VirtualKeyboard_PressKey(' '))
				self.GetChild("key_backspace").SetEvent(lambda : self.__VirtualKeyboard_PressBackspace())
				self.GetChild("key_enter").SetEvent(lambda : self.__VirtualKeyboard_PressReturn())
				self.GetChild("key_shift").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetUpperMode())
				self.GetChild("key_shift").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetLowerMode())
				self.GetChild("key_at").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetSymbolMode())
				self.GetChild("key_at").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetAlphabetMode())

		except:
			import exception
			exception.Abort("LoginWindow.__LoadScript.BindObject")

		if self.IS_TEST:
			self.Channel1Button.Hide()
		else:
			self.Channel1Button.SetEvent(ui.__mem_func__(self.__OnClickChannel1Button))

		self.serverBoard.OnKeyUp = ui.__mem_func__(self.__ServerBoard_OnKeyUp)
		self.xServerBoard, self.yServerBoard = self.serverBoard.GetLocalPosition()

		self.serverSelectButton.SetEvent(ui.__mem_func__(self.__OnClickSelectServerButton))
		self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))

		self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton))
		self.loginExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))
		
		# CFG
		self.DogButton.SetEvent(ui.__mem_func__(self.__DogButton))
		self.FontButton.SetEvent(ui.__mem_func__(self.__FontButton))
		
		## ACCMANAGER
		
		self.acc1loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC1LoginButton))
		self.acc2loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC2LoginButton))
		self.acc3loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC3LoginButton))
		self.acc4loginButton.SetEvent(ui.__mem_func__(self.__OnClickACC4LoginButton))
		
		self.Acc1Save.SetEvent(ui.__mem_func__(self.__OnClickAcc1SaveButton))
		self.Acc2Save.SetEvent(ui.__mem_func__(self.__OnClickAcc2SaveButton))
		self.Acc3Save.SetEvent(ui.__mem_func__(self.__OnClickAcc3SaveButton))
		self.Acc4Save.SetEvent(ui.__mem_func__(self.__OnClickAcc4SaveButton))

		## END ACCMANAGER
		
		self.serverList.SetEvent(ui.__mem_func__(self.__OnSelectServer))
		
		self.idEditLine.SetReturnEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
		self.idEditLine.SetTabEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))

		self.pwdEditLine.SetReturnEvent(ui.__mem_func__(self.__OnClickLoginButton))
		self.pwdEditLine.SetTabEvent(ui.__mem_func__(self.idEditLine.SetFocus))

		
		

		# RUNUP_MATRIX_AUTH
		if IsRunupMatrixAuth():			
			self.matrixAnswerOK.SAFE_SetEvent(self.__OnClickMatrixAnswerOK)
			self.matrixAnswerCancel.SAFE_SetEvent(self.__OnClickMatrixAnswerCancel)
			self.matrixAnswerInput.SAFE_SetReturnEvent(self.__OnClickMatrixAnswerOK)
		# RUNUP_MATRIX_AUTH_END

		# NEWCIBN_PASSPOD_AUTH
		if IsNEWCIBNPassPodAuth():
			self.passpodAnswerOK.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerOK)
			self.passpodAnswerCancel.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerCancel)
			self.passpodAnswerInput.SAFE_SetReturnEvent(self.__OnClickNEWCIBNPasspodAnswerOK)

		# NEWCIBN_PASSPOD_AUTH_END


		if IsFullBackImage():
			self.GetChild("bg1").Show()
		return 1

	def __VirtualKeyboard_SetKeys(self, keyCodes):
		uiDefFontBackup = localeInfo.UI_DEF_FONT
		localeInfo.UI_DEF_FONT = localeInfo.UI_DEF_FONT_LARGE

		keyIndex = 1
		for keyCode in keyCodes:					
			key = self.GetChild2("key_%d" % keyIndex)
			if key:
				key.SetEvent(lambda x=keyCode: self.__VirtualKeyboard_PressKey(x))
				key.SetText(keyCode)
				key.ButtonText.SetFontColor(1, 1, 1)
				keyIndex += 1
			
		for keyIndex in xrange(keyIndex, VIRTUAL_KEYBOARD_NUM_KEYS+1):
			key = self.GetChild2("key_%d" % keyIndex)
			if key:
				key.SetEvent(lambda x=' ': self.__VirtualKeyboard_PressKey(x))
				key.SetText(' ')
		
		localeInfo.UI_DEF_FONT = uiDefFontBackup

	def __VirtualKeyboard_PressKey(self, code):
		ime.PasteString(code)
		
		#if self.virtualKeyboardMode == "ALPHABET" and self.virtualKeyboardIsUpper:
		#	self.__VirtualKeyboard_SetLowerMode()
			
	def __VirtualKeyboard_PressBackspace(self):
		ime.PasteBackspace()
		
	def __VirtualKeyboard_PressReturn(self):
		ime.PasteReturn()		

	def __VirtualKeyboard_SetUpperMode(self):
		self.virtualKeyboardIsUpper = TRUE
		
		if self.virtualKeyboardMode == "ALPHABET":
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_UPPERS)
		elif self.virtualKeyboardMode == "NUMBER":
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
		else:
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
			
	def __VirtualKeyboard_SetLowerMode(self):
		self.virtualKeyboardIsUpper = FALSE
		
		if self.virtualKeyboardMode == "ALPHABET":
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)
		elif self.virtualKeyboardMode == "NUMBER":
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)			
		else:
			self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
			
	def __VirtualKeyboard_SetAlphabetMode(self):
		self.virtualKeyboardIsUpper = FALSE
		self.virtualKeyboardMode = "ALPHABET"		
		self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)	

	def __VirtualKeyboard_SetNumberMode(self):			
		self.virtualKeyboardIsUpper = FALSE
		self.virtualKeyboardMode = "NUMBER"
		self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
					
	def __VirtualKeyboard_SetSymbolMode(self):		
		self.virtualKeyboardIsUpper = FALSE
		self.virtualKeyboardMode = "SYMBOL"
		self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
				
	def Connect(self, id, pwd):
		
		constInfo.LOGIN = id
		constInfo.HASLO = pwd
		
		if constInfo.SEQUENCE_PACKET_ENABLE:
			net.SetPacketSequenceMode()

		if IsLoginDelay():
			loginDelay = GetLoginDelay()
			self.connectingDialog = ConnectingDialog()
			self.connectingDialog.Open(loginDelay)
			self.connectingDialog.SAFE_SetTimeOverEvent(self.OnEndCountDown)
			self.connectingDialog.SAFE_SetExitEvent(self.OnPressExitKey)
			self.isNowCountDown = TRUE

		else:
			self.stream.popupWindow.Close()
			self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, self.SetPasswordEditLineFocus, localeInfo.UI_CANCEL)

		self.stream.SetLoginInfo(id, pwd)
		self.stream.Connect()

	## ACCMANAGER
		
	def __LoadACCNames(self):

		fd = open( "zapisane_konta/konto_1.cfg" )
		login1 = fd.readline()
		login1.replace( "\n", "" )
		fd.close()

		fd = open( "zapisane_konta/konto_2.cfg" )
		login2 = fd.readline()
		login2.replace( "\n", "" )
		fd.close()

		fd = open( "zapisane_konta/konto_3.cfg" )
		login3 = fd.readline()
		login3.replace( "\n", "" )
		fd.close()

		fd = open( "zapisane_konta/konto_4.cfg" )
		login4 = fd.readline()
		login4.replace( "\n", "" )
		fd.close()
	
		if login1 != "":
			self.ACC1_LABEL.SetText(login1)
		if login2 != "":
			self.ACC2_LABEL.SetText(login2)
		if login3 != "":
			self.ACC3_LABEL.SetText(login3)
		if login4 != "":
			self.ACC4_LABEL.SetText(login4)
	
	def __FontButton(self):
		if open("zapisane_konta/font.cfg", "r").read() == "1":
			open("zapisane_konta/font.cfg", "w").write("0")
			self.PopupDisplayMessage("Ustawiono małą czcionkę, zrestartuj clienta.")
		else:
			open("zapisane_konta/font.cfg", "w").write("1")
			self.PopupDisplayMessage("Ustawiono dużą czcionkę, zrestartuj clienta.")
			
	def __DogButton(self):
		if os.path.exists("zapisane_konta/dzikie_psy.cfg"):
			f = open("zapisane_konta/dzikie_psy.cfg", "r").read()
			if f == "1":
				open("zapisane_konta/dzikie_psy.cfg", "w").write("0")
			else:
				open("zapisane_konta/dzikie_psy.cfg", "w").write("1")
		else:
			open("zapisane_konta/dzikie_psy.cfg", "w").write("0")
		if f == "1":
			self.PopupDisplayMessage("Wygląd potworów został zmieniony na normalny!")
		else:
			self.PopupDisplayMessage("Wygląd potworów został zmieniony na Dzikie Psy!")
	
	def __LoadACCInfos(self, accid):
		import linecache
		login = linecache.getline("zapisane_konta/konto_" + str(accid) + ".cfg", 1)
		password = linecache.getline("zapisane_konta/konto_" + str(accid) + ".cfg", 2)
		login = login.replace('\n', '')
		self.Connect(login, password)
	
	def __OnClickACC1LoginButton(self):
		self.__LoadACCInfos(1)
	
	def __OnClickACC2LoginButton(self):
		self.__LoadACCInfos(2)
	
	def __OnClickACC3LoginButton(self):
		self.__LoadACCInfos(3)
	
	def __OnClickACC4LoginButton(self):
		self.__LoadACCInfos(4)
	
	def __OnClickExitButton(self):
		self.stream.SetPhaseWindow(0)

	def __SetServerInfo(self, name):
		net.SetServerInfo(name.strip())
		self.serverInfo.SetText(name)

	def __LoadLoginInfo(self, loginInfoFileName):

		try:
			loginInfo={}
			execfile(loginInfoFileName, loginInfo)
		except IOError:
			print(\
				"?? ???? ????" + loginInfoFileName + "??? ??????\n"\
				"\n"\
				"??:\n"\
				"================================================================\n"\
				"addr=??\n"\
				"port=??\n"\
				"id=???\n"\
				"pwd=????\n"\
				"slot=??? ?? ??? (??? -1?? ?? ?? ??)\n"\
				"autoLogin=?? ?? ??\n"
				"autoSelect=?? ?? ??\n"
				"locale=(ymir) LC_Ymir ??? ymir? ??. ???? ??? korea? ??\n"
			);

		id=loginInfo.get("id", "")
		pwd=loginInfo.get("pwd", "")

		if self.IS_TEST:
			try:
				addr=loginInfo["addr"]
				port=loginInfo["port"]
				account_addr=addr
				account_port=port

				net.SetMarkServer(addr, port)
				self.__SetServerInfo(localeInfo.CHANNEL_TEST_SERVER_ADDR % (addr, port))
			except:
				try:
					addr=serverInfo.TESTADDR["ip"]
					port=serverInfo.TESTADDR["tcp_port"]

					net.SetMarkServer(addr, port)
					self.__SetServerInfo(localeInfo.CHANNEL_TEST_SERVER)
				except:
					import exception
					exception.Abort("LoginWindow.__LoadLoginInfo - ????? ??? ????")

		else:
			addr=loginInfo.get("addr", "")
			port=loginInfo.get("port", 0)
			account_addr=loginInfo.get("account_addr", addr)
			account_port=loginInfo.get("account_port", port)

			locale = loginInfo.get("locale", "")

			if addr and port:
				net.SetMarkServer(addr, port)

				if locale == "ymir" :
					net.SetServerInfo("?? ??")
					self.serverInfo.SetText("Y:"+addr+":"+str(port))
				else:
					net.SetServerInfo(addr+":"+str(port))
					self.serverInfo.SetText("K:"+addr+":"+str(port))

		slot=loginInfo.get("slot", 0)
		isAutoLogin=loginInfo.get("auto", 0)
		isAutoLogin=loginInfo.get("autoLogin", 0)
		isAutoSelect=loginInfo.get("autoSelect", 0)

		self.stream.SetCharacterSlot(slot)
		self.stream.SetConnectInfo(addr, port, account_addr, account_port)
		self.stream.isAutoLogin=isAutoLogin
		self.stream.isAutoSelect=isAutoSelect

		self.id = None
		self.pwd = None		
		self.loginnedServer = None
		self.loginnedChannel = None			
		app.loggined = FALSE

		self.loginInfo = loginInfo

		if self.id and self.pwd:
			app.loggined = TRUE

		if isAutoLogin:
			self.Connect(id, pwd)
			
			print "=================================================================================="
			print "?? ???: %s - %s:%d %s" % (loginInfoFileName, addr, port, id)
			print "=================================================================================="

		
	def PopupDisplayMessage(self, msg):
		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open(msg)

	def PopupNotifyMessage(self, msg, func=0):
		if not func:
			func=self.EmptyFunc

		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)

	# RUNUP_MATRIX_AUTH
	def BINARY_OnRunupMatrixQuiz(self, quiz):
		if not IsRunupMatrixAuth():
			return

		id		= self.GetChild("RunupMatrixID")
		id.SetText(self.idEditLine.GetText())
		
		code	= self.GetChild("RunupMatrixCode")
		
		code.SetText("".join(["[%c,%c]" % (quiz[i], quiz[i+1]) for i in xrange(0, len(quiz), 2)]))

		self.stream.popupWindow.Close()
		self.serverBoard.Hide()
		self.connectBoard.Hide()
		self.loginBoard.Hide()
		self.matrixQuizBoard.Show()
		self.matrixAnswerInput.SetFocus()

	def __OnClickMatrixAnswerOK(self):
		answer = self.matrixAnswerInput.GetText()

		print "matrix_quiz.ok"
		net.SendRunupMatrixCardPacket(answer)
		self.matrixQuizBoard.Hide()	

		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open("WAITING FOR MATRIX AUTHENTICATION", 
			self.__OnClickMatrixAnswerCancel, 
			localeInfo.UI_CANCEL)

	def __OnClickMatrixAnswerCancel(self):
		print "matrix_quiz.cancel"

		if self.matrixQuizBoard:
			self.matrixQuizBoard.Hide()	

		if self.connectBoard:
			self.connectBoard.Show()	

		if self.loginBoard:
			self.loginBoard.Show()
			self.GetChild("bg1").Show()

	# RUNUP_MATRIX_AUTH_END

	# NEWCIBN_PASSPOD_AUTH
	def BINARY_OnNEWCIBNPasspodRequest(self):
		if not IsNEWCIBNPassPodAuth():
			return

		if self.connectingDialog:
			self.connectingDialog.Close()
		self.connectingDialog = None

		self.stream.popupWindow.Close()
		self.serverBoard.Hide()
		self.connectBoard.Hide()
		self.loginBoard.Hide()
		self.passpodBoard.Show()
		self.passpodAnswerInput.SetFocus()

	def BINARY_OnNEWCIBNPasspodFailure(self):
		if not IsNEWCIBNPassPodAuth():
			return

	def __OnClickNEWCIBNPasspodAnswerOK(self):
		answer = self.passpodAnswerInput.GetText()

		print "passpod.ok"
		net.SendNEWCIBNPasspodAnswerPacket(answer)
		self.passpodAnswerInput.SetText("")
		self.passpodBoard.Hide()	

		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open(localeInfo.WAIT_FOR_PASSPOD, 
			self.__OnClickNEWCIBNPasspodAnswerCancel, 
			localeInfo.UI_CANCEL)

	def __OnClickNEWCIBNPasspodAnswerCancel(self):
		print "passpod.cancel"

		if self.passpodBoard:
			self.passpodBoard.Hide()	

		if self.connectBoard:
			self.connectBoard.Show()	

		if self.loginBoard:
			self.loginBoard.Show()

	# NEWCIBN_PASSPOD_AUTH_END


	def OnMatrixCard(self, row1, row2, row3, row4, col1, col2, col3, col4):

		if self.connectingDialog:
			self.connectingDialog.Close()
		self.connectingDialog = None

		self.matrixInputChanceCount = 3

		self.stream.popupWindow.Close()

		# CHINA_MATRIX_CARD_BUG_FIX
		## A~Z ?? 26 ??? ?? ?????? ??.
		## Python Exception Log ?? ? ??? ?? ????? ?? ??
		## ?? ? ??? ???? ?? ?????? ????
		row1 = min(30, row1)
		row2 = min(30, row2)
		row3 = min(30, row3)
		row4 = min(30, row4)
		# END_OF_CHINA_MATRIX_CARD_BUG_FIX

		row1 = chr(row1 + ord('A'))
		row2 = chr(row2 + ord('A'))
		row3 = chr(row3 + ord('A'))
		row4 = chr(row4 + ord('A'))
		col1 = col1 + 1
		col2 = col2 + 1
		col3 = col3 + 1
		col4 = col4 + 1

		inputDialog = uiCommon.InputDialogWithDescription2()
		inputDialog.SetMaxLength(8)
		inputDialog.SetAcceptEvent(ui.__mem_func__(self.__OnAcceptMatrixCardData))
		inputDialog.SetCancelEvent(ui.__mem_func__(self.__OnCancelMatrixCardData))
		inputDialog.SetTitle(localeInfo.INPUT_MATRIX_CARD_TITLE)
		inputDialog.SetDescription1(localeInfo.INPUT_MATRIX_CARD_NUMBER)
		inputDialog.SetDescription2("%c%d %c%d %c%d %c%d" % (row1, col1,
															row2, col2,
															row3, col3,
															row4, col4))

		inputDialog.Open()
		self.inputDialog = inputDialog

	def __OnAcceptMatrixCardData(self):
		text = self.inputDialog.GetText()
		net.SendChinaMatrixCardPacket(text)
		if self.inputDialog:
			self.inputDialog.Hide()
		self.PopupNotifyMessage(localeInfo.LOGIN_PROCESSING)
		return TRUE

	def __OnCancelMatrixCardData(self):
		self.SetPasswordEditLineFocus()
		self.__OnCloseInputDialog()
		self.__DisconnectAndInputPassword()
		return TRUE

	def __OnCloseInputDialog(self):
		if self.inputDialog:
			self.inputDialog.Close()
		self.inputDialog = None
		return TRUE

	def OnPressExitKey(self):
		self.stream.popupWindow.Close()
		self.stream.SetPhaseWindow(0)
		return TRUE

	def OnExit(self):
		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open(localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, app.Exit, localeInfo.UI_OK)

	def OnUpdate(self):
		ServerStateChecker.Update()

	def EmptyFunc(self):
		pass

	#####################################################################################

	def __ServerBoard_OnKeyUp(self, key):
		if self.serverBoard.IsShow():
			if app.DIK_RETURN==key:
				self.__OnClickSelectServerButton()
		return TRUE

	def __GetRegionID(self):
		return 0

	def __GetServerID(self):
		return self.serverList.GetSelectedItem()

	def __GetChannelID(self):
		return self.channelList.GetSelectedItem()

	# SEVER_LIST_BUG_FIX
	def __ServerIDToServerIndex(self, regionID, targetServerID):
		try:
			regionDict = serverInfo.REGION_DICT[regionID]
		except KeyError:
			return -1

		retServerIndex = 0
		for eachServerID, regionDataDict in regionDict.items():
			if eachServerID == targetServerID:
				return retServerIndex

			retServerIndex += 1		
		
		return -1

	def __ChannelIDToChannelIndex(self, channelID):
		return channelID - 1
	# END_OF_SEVER_LIST_BUG_FIX

	def __OpenServerBoard(self):
		self.Channel1Button.SetEvent(ui.__mem_func__(self.__OnClickChannel1Button))
		self.Channel2Button.SetEvent(ui.__mem_func__(self.__OnClickChannel2Button))
		self.Channel3Button.SetEvent(ui.__mem_func__(self.__OnClickChannel3Button))
		self.Channel4Button.SetEvent(ui.__mem_func__(self.__OnClickChannel4Button))
		self.Channel5Button.SetEvent(ui.__mem_func__(self.__OnClickChannel5Button))
		self.__OnClickChannel1Button()
		self.__LoadACCNames()
		print "XMAS_SNOW ON"
		background.EnableSnow(1)
			
		self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
		self.serverExitButton.SetText(localeInfo.UI_CLOSE)

		# RUNUP_MATRIX_AUTH
		if IsRunupMatrixAuth():
			self.matrixQuizBoard.Hide()
		# RUNUP_MATRIX_AUTH_END

		# NEWCIBN_PASSPOD_AUTH
		if IsNEWCIBNPassPodAuth():
			self.passpodBoard.Hide()
		# NEWCIBN_PASSPOD_AUTH_END

		self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight())
		self.serverBoard.Hide()

		if self.virtualKeyboard:
			self.virtualKeyboard.Show()
			self.AccountBoard.Show()
			
			self.__LoadACCNames()

		if app.loggined:
			self.Connect(self.id, self.pwd)
			self.connectBoard.Hide()
			self.loginBoard.Hide()
		elif not self.stream.isAutoLogin:
			self.connectBoard.Show()
			self.loginBoard.Show()

		## if users have the login infomation, then don't initialize.2005.9 haho
		if self.idEditLine == None:
			self.idEditLine.SetText("")
		if self.pwdEditLine == None:
			self.pwdEditLine.SetText("")

		self.idEditLine.SetFocus()

		global SKIP_LOGIN_PHASE
		if SKIP_LOGIN_PHASE:
			if not self.loginInfo:
				self.connectBoard.Hide()

	def __OpenLoginBoard(self):
		print "XMAS_SNOW ON"
		background.EnableSnow(1)
			
		self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
		self.serverExitButton.SetText(localeInfo.UI_CLOSE)

		# RUNUP_MATRIX_AUTH
		if IsRunupMatrixAuth():
			self.matrixQuizBoard.Hide()
		# RUNUP_MATRIX_AUTH_END

		# NEWCIBN_PASSPOD_AUTH
		if IsNEWCIBNPassPodAuth():
			self.passpodBoard.Hide()
		# NEWCIBN_PASSPOD_AUTH_END

		self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight())
		self.serverBoard.Hide()

		if self.virtualKeyboard:
			self.virtualKeyboard.Show()
			self.AccountBoard.Show()
			
			self.__LoadACCNames()

		if app.loggined:
			self.Connect(self.id, self.pwd)
			self.connectBoard.Hide()
			self.loginBoard.Hide()
		elif not self.stream.isAutoLogin:
			self.connectBoard.Show()
			self.loginBoard.Show()

		## if users have the login infomation, then don't initialize.2005.9 haho
		if self.idEditLine == None:
			self.idEditLine.SetText("")
		if self.pwdEditLine == None:
			self.pwdEditLine.SetText("")

		self.idEditLine.SetFocus()

		global SKIP_LOGIN_PHASE
		if SKIP_LOGIN_PHASE:
			if not self.loginInfo:
				self.connectBoard.Hide()

	def __OnSelectRegionGroup(self):
		self.__RefreshServerList()

	def __OnSelectSettlementArea(self):
		# SEVER_LIST_BUG_FIX
		regionID = self.__GetRegionID()
		serverID = self.serverListOnRegionBoard.GetSelectedItem()

		serverIndex = self.__ServerIDToServerIndex(regionID, serverID)
		self.serverList.SelectItem(serverIndex)
		# END_OF_SEVER_LIST_BUG_FIX
		
		self.__OnSelectServer()

	def __RefreshServerList(self):
		regionID = self.__GetRegionID()
		
		if not serverInfo.REGION_DICT.has_key(regionID):
			return

		self.serverList.ClearItem()

		regionDict = serverInfo.REGION_DICT[regionID]

		# SEVER_LIST_BUG_FIX
		visible_index = 1
		for id, regionDataDict in regionDict.items():
			name = regionDataDict.get("name", "noname")
			if localeInfo.IsBRAZIL() or localeInfo.IsCANADA():
				self.serverList.InsertItem(id, "%s" % (name))
			else:
				if localeInfo.IsCIBN10():			
					if name[0] == "#":
						self.serverList.InsertItem(-1, "  %s" % (name[1:]))
					else:
						self.serverList.InsertItem(id, "  %s" % (name))
						visible_index += 1
				else:
					self.serverList.InsertItem(id, "  %02d. %s" % (visible_index, name))
					
					visible_index += 1
		
		# END_OF_SEVER_LIST_BUG_FIX

	def __OnSelectServer(self):
		self.__OnCloseInputDialog()
		self.__RequestServerStateList()
		self.__RefreshServerStateList()

	def __RequestServerStateList(self):
		regionID = self.__GetRegionID()
		serverID = self.__GetServerID()

		try:
			channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
		except:
			print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
			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:
			print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
			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 __GetChannelName(self, regionID, selServerID, selChannelID):
		try:
			return serverInfo.REGION_DICT[regionID][selServerID]["channel"][selChannelID]["name"]
		except KeyError:
			if 9==selChannelID:
				return localeInfo.CHANNEL_PVP
			else:
				return localeInfo.CHANNEL_NORMAL % (selChannelID)

	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.__RefreshServerStateList()

		except:
			import exception
			exception.Abort(localeInfo.CHANNEL_NOT_FIND_INFO)

	def __OnClickExitServerButton(self):
		print "exit server"
		self.__OpenLoginBoard()			

		if IsFullBackImage():
			self.GetChild("bg1").Hide()
			self.GetChild("bg2").Show()
			

	def __OnClickSelectRegionButton(self):
		regionID = self.__GetRegionID()
		serverID = self.__GetServerID()

		if (not serverInfo.REGION_DICT.has_key(regionID)):
			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
			return

		if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
			return		

		self.__SaveChannelInfo()

		self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
		self.serverExitButton.SetText(localeInfo.UI_CLOSE)

		self.__RefreshServerList()
		self.__OpenServerBoard()

	def __OnClickSelectServerButton(self):
		if IsFullBackImage():
			self.GetChild("bg1").Show()
			self.GetChild("bg2").Hide()

		regionID = self.__GetRegionID()
		serverID = self.__GetServerID()
		channelID = self.__GetChannelID()

		if (not serverInfo.REGION_DICT.has_key(regionID)):
			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
			return

		if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
			return

		try:
			channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
		except KeyError:
			return

		try:
			state = channelDict[channelID]["state"]
		except KeyError:
			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL)
			return

		# ??? FULL ? ??? ?? ??
		if state == serverInfo.STATE_DICT[3]: 
			self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL)
			return

		self.__SaveChannelInfo()

		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"]
		except:
			print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID)
			serverName = localeInfo.CHANNEL_EMPTY_SERVER
			channelName = localeInfo.CHANNEL_NORMAL % channelID

		self.__SetServerInfo("%s, %s " % (serverName, channelName))

		try:
			ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"]
			tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"]
		except:
			import exception
			exception.Abort("LoginWindow.__OnClickSelectServerButton - ?? ?? ??")

		try:
			account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"]
			account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"]
		except:
			account_ip = 0
			account_port = 0

		try:
			markKey = regionID*1000 + serverID*10
			markAddrValue=serverInfo.MARKADDR_DICT[markKey]
			net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"])
			app.SetGuildMarkPath(markAddrValue["mark"])
			# GUILD_SYMBOL
			app.SetGuildSymbolPath(markAddrValue["symbol_path"])
			# END_OF_GUILD_SYMBOL

		except:
			import exception
			exception.Abort("LoginWindow.__OnClickSelectServerButton - ?? ?? ??")

		self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)

		self.__OpenLoginBoard() 
		
	def __OnClickChannel1Button(self):
		self.stream.SetConnectInfo("176.31.104.46", 16000, "176.31.104.46", 11005)
		net.SetServerInfo("Laurentia.pl - Kanał 1")
		net.SetMarkServer("176.31.104.46", 16000)
		self.serverInfo.SetText("Laurentia.pl - Kanał 1")
		app.SetGuildMarkPath("10.tga")
		app.SetGuildSymbolPath("10")  
		
	def __OnClickChannel2Button(self):
		self.stream.SetConnectInfo("176.31.104.46", 17000, "176.31.104.46", 11005)
		net.SetServerInfo("Laurentia.pl - Kanał 2")
		net.SetMarkServer("176.31.104.46", 17000)
		self.serverInfo.SetText("Laurentia.pl - Kanał 2")
		app.SetGuildMarkPath("10.tga")
		app.SetGuildSymbolPath("10") 
		
	def __OnClickChannel3Button(self):
		self.stream.SetConnectInfo("176.31.104.46", 18000, "176.31.104.46", 11005)
		net.SetServerInfo("Laurentia.pl - Kanał 3")
		net.SetMarkServer("176.31.104.46", 18000)
		self.serverInfo.SetText("Laurentia.pl - Kanał 3")
		app.SetGuildMarkPath("10.tga")
		app.SetGuildSymbolPath("10")
		
	def __OnClickChannel4Button(self):
		self.stream.SetConnectInfo("176.31.104.46", 19000, "176.31.104.46", 11005)
		net.SetServerInfo("Laurentia.pl - Kanał 4")
		net.SetMarkServer("176.31.104.46", 19000)
		self.serverInfo.SetText("Laurentia.pl - Kanał 4")
		app.SetGuildMarkPath("10.tga")
		app.SetGuildSymbolPath("10")
		
	def __OnClickChannel5Button(self):
		self.stream.SetConnectInfo("176.31.104.46", 20000, "176.31.104.46", 11005)
		net.SetServerInfo("Laurentia.pl - Kanał 5")
		net.SetMarkServer("176.31.104.46", 20000)
		self.serverInfo.SetText("Laurentia.pl - Kanał 5")
		app.SetGuildMarkPath("10.tga")
		app.SetGuildSymbolPath("10")
	
	def __OnClickAcc1SaveButton(self):
		id = self.idEditLine.GetText()
		pwd = self.pwdEditLine.GetText()
		
		if id == "" or pwd == "":
			self.PopupNotifyMessage("Pole login lub hasło jest puste...")
			return
		f = open("zapisane_konta/konto_1.cfg", "w")
		f.write (id +"\n")
		f.write (pwd)
		f.close()
		
		self.PopupNotifyMessage("Dane zostały zapisane!")
		self.__LoadACCNames()
		
	def __OnClickAcc2SaveButton(self):
		id = self.idEditLine.GetText()
		pwd = self.pwdEditLine.GetText()
		
		if id == "" or pwd == "":
			self.PopupNotifyMessage("Pole login lub hasło jest puste...")
			return
		f = open("zapisane_konta/konto_2.cfg", "w")
		f.write (id +"\n")
		f.write (pwd)
		f.close()
		
		self.PopupNotifyMessage("Dane zostały zapisane!")
		self.__LoadACCNames()
		
	def __OnClickAcc3SaveButton(self):
		id = self.idEditLine.GetText()
		pwd = self.pwdEditLine.GetText()
		
		if id == "" or pwd == "":
			self.PopupNotifyMessage("Pole login lub hasło jest puste...")
			return
		f = open("zapisane_konta/konto_3.cfg", "w")
		f.write (id +"\n")
		f.write (pwd)
		f.close()
		
		self.PopupNotifyMessage("Dane zostały zapisane!")
		self.__LoadACCNames()
		
	def __OnClickAcc4SaveButton(self):
		id = self.idEditLine.GetText()
		pwd = self.pwdEditLine.GetText()
		
		if id == "" or pwd == "":
			self.PopupNotifyMessage("Pole login lub hasło jest puste...")
			return
		f = open("zapisane_konta/konto_4.cfg", "w")
		f.write (id +"\n")
		f.write (pwd)
		f.close()
		
		self.PopupNotifyMessage("Dane zostały zapisane!")
		self.__LoadACCNames()

	def __OnClickLoginButton(self):
		id = self.idEditLine.GetText()
		pwd = self.pwdEditLine.GetText()		

		if len(id)==0:
			self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_ID, self.SetIDEditLineFocus)
			return

		if len(pwd)==0:
			self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_PASSWORD, self.SetPasswordEditLineFocus)
			return

		self.Connect(id, pwd)

 

 

 

Opublikowano
3 godziny temu, Ash napisał:

Skoro nie zalewa Cię fala pw dotyczących współpracy to widocznie nie jesteś taki dobry na jakiego się kreujesz.. Sądzę też, że większość osób, które stawiają serwery mają więcej rozumu, aby nie prosić Cię o robienie forum. 

Szczekasz głośniej niż jesteś w stanie sobie wyobrazić.

 

To niezły rozum, brać jakąś randomową loszkę, która jest uczniem Ryby. Nic dzieciaku nie potrafisz, jednym gryzem bym Cię 3 razy zjadł. Ale koniec tego tematu, bo zamieniasz ten temat w śmietnisko, orgazmu dostajesz jakby to kurwa był niewiadomo jak wielki projekt, a to tylko pliki kupione i wrzucone w prezentację. Zajebisty pomysł. Wolę gorszy jakościowo serwer, nad którym ktoś popracował, aniżeli gotowca. Gotowcami się rzyga i ty dobrze o tym wiesz. 

 

I zamiast szczekać do mnie to byś odpisała mi na pytanie, ponieważ mnie bardzo nurtuje, a widzę, że pan wielki właściciel serwera nie ma zamiaru mi odpisać, bo jestem tylko jakimś tam noname. xD

Opublikowano

@Reyaver @Ash i cała reszta, która ma zamiar kontynuować tę dyskusję - przypominam, że to jest zapowiedź serwera, a nie wątek na temat tego, kto jest jakim administratorem forum. Za kontynuowanie tej rozmowy tutaj będą stosowne "nagrody", więc proszę, zakończmy to w tym momencie.

Opublikowano
2 godziny temu, Reyaver napisał:

To niezły rozum, brać jakąś randomową loszkę, która jest uczniem Ryby. Nic dzieciaku nie potrafisz, jednym gryzem bym Cię 3 razy zjadł. Ale koniec tego tematu, bo zamieniasz ten temat w śmietnisko, orgazmu dostajesz jakby to kurwa był niewiadomo jak wielki projekt, a to tylko pliki kupione i wrzucone w prezentację. Zajebisty pomysł. Wolę gorszy jakościowo serwer, nad którym ktoś popracował, aniżeli gotowca. Gotowcami się rzyga i ty dobrze o tym wiesz. 

 

I zamiast szczekać do mnie to byś odpisała mi na pytanie, ponieważ mnie bardzo nurtuje, a widzę, że pan wielki właściciel serwera nie ma zamiaru mi odpisać, bo jestem tylko jakimś tam noname. xD

Zamilcz czlowieku bo twoj hejt splywa po mnie tak samo jak to co leci ci po brodzie.

Tak planujemy duze aktualizacje.

 Isayia - Już wkrótce  :yay:B) 

Opublikowano
2 godziny temu, Reyaver napisał:

To niezły rozum, brać jakąś randomową loszkę, która jest uczniem Ryby. Nic dzieciaku nie potrafisz, jednym gryzem bym Cię 3 razy zjadł. Ale koniec tego tematu, bo zamieniasz ten temat w śmietnisko, orgazmu dostajesz jakby to kurwa był niewiadomo jak wielki projekt, a to tylko pliki kupione i wrzucone w prezentację. Zajebisty pomysł. Wolę gorszy jakościowo serwer, nad którym ktoś popracował, aniżeli gotowca. Gotowcami się rzyga i ty dobrze o tym wiesz. 

 

I zamiast szczekać do mnie to byś odpisała mi na pytanie, ponieważ mnie bardzo nurtuje, a widzę, że pan wielki właściciel serwera nie ma zamiaru mi odpisać, bo jestem tylko jakimś tam noname. xD

Kolego, co do tego forum no to reklama tutaj daje ci 50 graczy maksymalnie ;) więc hejt i inne są tutaj praktycznie niepotrzebne bo kto zechce wejść na serwer to wejdzie.
____________________________________________________________________________________________________________________________________________
Co do serwera. Nie ważne czy gotowiec czy nie najważniejsze aby się utrzymał bo co ci z robionego od 0 serwera jak padnie po 2/3 Dniach.+
__
Na serwer może zawitam sobie zrobić postać 80Lv pod PvP
_
Pytanie do administracji Serwera:
Czy z full isem oraz maksymalnie ulepszonymi Kd i postacią damy rade pokonać na 100/120 Poziomie postać o poziomie 200/250 ?
****
Pozdrawiam.

Jeździć trzeba szybko i bezpiecznie.

Opublikowano
1 godzinę temu, radeon252 napisał:

Kolego, co do tego forum no to reklama tutaj daje ci 50 graczy maksymalnie ;) więc hejt i inne są tutaj praktycznie niepotrzebne bo kto zechce wejść na serwer to wejdzie.

Co do reklamy na MPC to fakt. Ale no jak ktoś leci na gotowcach i nic nie daje od siebie to prawdopodobnie znak, że nic nie potrafi i nie będzie umiał naprawić błędów. Takie jest przynajmniej moje zdanie, do którego mam pełne prawo. Dużo od tego serwera nie należy oczekiwać. Są przecież ludzie, którzy albo się nie znają na serwerach (więc wejdą), albo tacy, którzy się znają, ale mają to gdzieś i chcą się tylko dobrze pobawić.

Spoiler

Nigdzie nie napisałem, że życzę serwerowi jak najgorzej, ja po prostu jestem troszkę cięty na te serwery, ponieważ jest ich za dużo, powstają zbyt małym kosztem i zbyt szybko się końcą - takie świnie, które chcą się nachapać przy korytku, wydoić tą grę do końca. Ale to już inny temat. ^^

1 godzinę temu, Legolas. napisał:

Tak planujemy duze aktualizacje. Zamilcz czlowieku bo twoj hejt splywa po mnie tak samo jak to co leci ci po brodzie.

Jakieś przykłady/pomysły? Ale ty nie będziesz mnie uciszał. To nie hejt, to prawda. Nic od Siebie nie pokazałeś, ta załoga to jakiś żart, pierwsze lebsze sebixy z ulicy. Ludzie bez doświadczenia.

 

@radeon252 ja BM-em 80 lvl na Therisie robiłem ludzi 120 lvl, więc szanse jakieś są.

Opublikowano
4 godziny temu, Reyaver napisał:

Co do reklamy na MPC to fakt. Ale no jak ktoś leci na gotowcach i nic nie daje od siebie to prawdopodobnie znak, że nic nie potrafi i nie będzie umiał naprawić błędów. Takie jest przynajmniej moje zdanie, do którego mam pełne prawo. Dużo od tego serwera nie należy oczekiwać. Są przecież ludzie, którzy albo się nie znają na serwerach (więc wejdą), albo tacy, którzy się znają, ale mają to gdzieś i chcą się tylko dobrze pobawić.

  Odkryj ukrytą treść

Nigdzie nie napisałem, że życzę serwerowi jak najgorzej, ja po prostu jestem troszkę cięty na te serwery, ponieważ jest ich za dużo, powstają zbyt małym kosztem i zbyt szybko się końcą - takie świnie, które chcą się nachapać przy korytku, wydoić tą grę do końca. Ale to już inny temat. ^^

Jakieś przykłady/pomysły? Ale ty nie będziesz mnie uciszał. To nie hejt, to prawda. Nic od Siebie nie pokazałeś, ta załoga to jakiś żart, pierwsze lebsze sebixy z ulicy. Ludzie bez doświadczenia.

 

@radeon252 ja BM-em 80 lvl na Therisie robiłem ludzi 120 lvl, więc szanse jakieś są.

Random to do ojca możesz powiedzieć przybłędo ;) 

12 godzin temu, Legolas. napisał:

Akurat drop jest caly moj ?

Siedzialem ponad 14h przy nim,

Napisalem go od zera wedlug swojej wizji.

Nie pisz z tą przybłędą , jest znawcą serwerów metin i podaje się za technika a jego serwer szybciej upadł niż wystartował xD

Opublikowano
16 minut temu, MTsunami napisał:

podaje się za technika a jego serwer szybciej upadł niż wystartował xD

XDDDDD Weź wypierdalaj, co? XDD

  • Aive zablokował(a) ten temat

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...