Dynamische Serverinfo.py

03/21/2015 15:42 Sogma#1
Hallo,

ich wollte meine Serverinfo.py dynamisch machen, heißt, dass der Status des Channels immer angepasst werden soll. Was muss ich dafür in den State-Parameter eintragen?

Viele Grüße, Sogma
03/21/2015 17:52 rollback#2
Was meinst du mit angepasst werden soll? Dass sich das alle paar Sekunden aktualisiert also den Status neu abfragt?
03/21/2015 23:45 Sogma#3
Naja, im Moment wird im String der Status "STATE_NONE" mit gegeben, das ist ja aber ein fixer Parameter. Heißt im Umkehrschluss, dass der Status auch auf online steht, wenn der Server eigentlich offline ist.

Da soll halt online stehen wenn der Server online ist und offline wenn er offline ist.

[Only registered and activated users can see links. Click Here To Register...]
03/22/2015 01:50 Fydes#4
Bei mir ist es so:
Code:
STATE_NONE = '...'
		
STATE_DICT = {
	0 : '....',
	1 : 'NORM',
	2 : 'BUSY',
	3 : 'FULL'	}
Mach es so, dass dort Offline steht:
Code:
STATE_NONE = 'Offline'
		
STATE_DICT = {
	0 : '....',
	1 : 'NORM',
	2 : 'BUSY',
	3 : 'FULL'	}
03/22/2015 03:44 SolWayne#5
PHP Code:
STATE_NONE 'das was bei offline stehen soll'
        
STATE_DICT = {
    
'...',
    
'NORM',
    
'BUSY',
    
'FULL' 
03/22/2015 12:45 Sogma#6
Das ist ja alles schön und gut, wenn ihr euch aber mal den String anguckt
Code:
1:{"key":11,"name":"Channel 1","ip":"XXXXXXXXX","tcp_port":XXXXX,"udp_port":XXXXX,"state":STATE_NONE,},
Dann wird als State doch der, in eurem Falle, offline-Status mitgegeben.
03/22/2015 16:46 Poccix#7
Quote:
Originally Posted by Sogma View Post
Das ist ja alles schön und gut, wenn ihr euch aber mal den String anguckt
Code:
1:{"key":11,"name":"Channel 1","ip":"XXXXXXXXX","tcp_port":XXXXX,"udp_port":XXXXX,"state":STATE_NONE,},
Dann wird als State doch der, in eurem Falle, offline-Status mitgegeben.
In der IntroLogin.py ändert diese Funktion den Serverstatus.

Code:
	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(locale.CHANNEL_NOT_FIND_INFO)
03/22/2015 19:16 Sogma#8
Quote:
Originally Posted by definitely not Poccix View Post
In der IntroLogin.py ändert diese Funktion den Serverstatus.

Code:
	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(locale.CHANNEL_NOT_FIND_INFO)
Mh, bei meinem Client steht nach wie vor "Offline", kann mich dennoch einloggen.
03/22/2015 19:38 Minato#9
Schau dir mal den "Multiclient von Marco_a v2" an.
Ich meine dort war es richtig eingestellt.
Code:
STATE_NONE = 'Wartung'
        
STATE_DICT = {
    0 : '...',
    1 : 'NORM',
    2 : 'BUSY',
    3 : 'FULL'
Wenn ich es so eingetragen habe stand wenn der Server offline war: Wartung
Musst du mal in dem Clienten nachschauen ;)
Wie gesagt bin mir aber nicht zu 100% sicher.
Best regards.
Minato_* Namikaze
03/27/2015 19:53 Sogma#10
Problem ist leider noch nicht behoben! Mag jemand da mal mit TV rüber schauen?

Hier meine ganze Serverinfo.py .. IP's und Ports sind natürlich random ;)

PHP Code:
import os
import app
import locale
import debugInfo

CHINA_PORT 
50000

if locale.IsEUROPE():
    
STATE_NONE 'Offline'
                    
    
STATE_DICT = {
        
'....',
        
'NORM',
        
'BUSY',
        
'FULL'
    
}

    
Zeros_serverinfo = {
        
1:{'key':11,'name':'Channel 1','ip':'212.114.51.212','tcp_port':13070,'udp_port':13070,'state':STATE_NONE,},
    
        
2:{'key':12,'name':'Channel 2','ip':'212.114.51.212','tcp_port':14070,'udp_port':14070,'state':STATE_NONE,},
    
        
3:{'key':13,'name':'Channel 3','ip':'212.114.51.212','tcp_port':15070,'udp_port':15070,'state':STATE_NONE,},
    
        
4:{'key':14,'name':'Channel 4','ip':'212.114.51.212','tcp_port':16070,'udp_port':16070,'state':STATE_NONE,},
    }
    
    
REGION_NAME_DICT = {
        
'GERMANY',        
    }

    
REGION_AUTH_SERVER_DICT = {
        
: {
            
: { 'ip':'212.114.51.212''port':11002, },
    
        }        
    }

    
REGION_DICT = {
        
: {
            
: { 'name' :'Northern Lights''channel' Zeros_serverinfo, },                        
        },
    }

    
MARKADDR_DICT = {
        
10 : { 'ip' '212.114.51.212''tcp_port' 13070'mark' '10.tga''symbol_path' '10', },
    }

    
TESTADDR = { 'ip' '212.114.51.212''tcp_port' 50000'udp_port' 50000, } 
03/27/2015 21:08 SolWayne#11
Quote:
Originally Posted by Sogma View Post
Problem ist leider noch nicht behoben! Mag jemand da mal mit TV rüber schauen?

Hier meine ganze Serverinfo.py .. IP's und Ports sind natürlich random ;)

PHP Code:
import os
import app
import locale
import debugInfo

CHINA_PORT 
50000

if locale.IsEUROPE():
    
STATE_NONE 'Offline'
                    
    
STATE_DICT = {
        
'....',
        
'NORM',
        
'BUSY',
        
'FULL'
    
}

    
Zeros_serverinfo = {
        
1:{'key':11,'name':'Channel 1','ip':'212.114.51.212','tcp_port':13070,'udp_port':13070,'state':STATE_NONE,},
    
        
2:{'key':12,'name':'Channel 2','ip':'212.114.51.212','tcp_port':14070,'udp_port':14070,'state':STATE_NONE,},
    
        
3:{'key':13,'name':'Channel 3','ip':'212.114.51.212','tcp_port':15070,'udp_port':15070,'state':STATE_NONE,},
    
        
4:{'key':14,'name':'Channel 4','ip':'212.114.51.212','tcp_port':16070,'udp_port':16070,'state':STATE_NONE,},
    }
    
    
REGION_NAME_DICT = {
        
'GERMANY',        
    }

    
REGION_AUTH_SERVER_DICT = {
        
: {
            
: { 'ip':'212.114.51.212''port':11002, },
    
        }        
    }

    
REGION_DICT = {
        
: {
            
: { 'name' :'Northern Lights''channel' Zeros_serverinfo, },                        
        },
    }

    
MARKADDR_DICT = {
        
10 : { 'ip' '212.114.51.212''tcp_port' 13070'mark' '10.tga''symbol_path' '10', },
    }

    
TESTADDR = { 'ip' '212.114.51.212''tcp_port' 50000'udp_port' 50000, } 

add mich skype ich schau eben^^

Da die ist doch perfect nutze ich bei meinem server auch und klappt wunderbar!

PHP Code:
import os
import app
import locale
import debugInfo

CHINA_PORT 
50000

if locale.IsEUROPE():
    
STATE_NONE "Offline"
                    
    
STATE_DICT = {
        
"....",
        
"Normal",
        
"Belebt",
        
"Voll"
    
}

    
Zeros_serverinfo = {
        
1:{"key":11,"name":"Channel 1","ip":"ServerIP","tcp_port":13070,"udp_port":13070,"state":STATE_NONE,},
    
        
2:{"key":12,"name":"Channel 2","ip":"ServerIP","tcp_port":14070,"udp_port":14070,"state":STATE_NONE,},
    
        
3:{"key":13,"name":"Channel 3","ip":"ServerIP","tcp_port":15070,"udp_port":15070,"state":STATE_NONE,},
    
        
4:{"key":14,"name":"Channel 4","ip":"ServerIP","tcp_port":16070,"udp_port":16070,"state":STATE_NONE,},
    }
    

    
Zeros_serverinfo2 = {
        
1:{"key":21,"name":"Channel 1","ip":"ServerIP2","tcp_port":13070,"udp_port":13070,"state":STATE_NONE,},
    
        
2:{"key":22,"name":"Channel 2","ip":"ServerIP2","tcp_port":14070,"udp_port":14070,"state":STATE_NONE,},
    
        
3:{"key":23,"name":"Channel 3","ip":"ServerIP2","tcp_port":15070,"udp_port":15070,"state":STATE_NONE,},
    
        
4:{"key":24,"name":"Channel 4","ip":"ServerIP2","tcp_port":16070,"udp_port":16070,"state":STATE_NONE,},
    }
    
    
REGION_NAME_DICT = {
        
"GERMANY",        
    }

    
REGION_AUTH_SERVER_DICT = {
        
: {
            
: { "ip":"ServerIP""port":11002, },
            
: { "ip":"ServerIP2""port":11002, },
    
        }        
    }

    
REGION_DICT = {
        
: {
            
: { "name" :"SERVERNAME""channel" Zeros_serverinfo, },                        
            
: { "name" :"S3RVERNAME""channel" Zeros_serverinfo2, },                        
        },
    }

    
MARKADDR_DICT = {
        
10 : { "ip" "ServerIP""tcp_port" 13070"mark" "10.tga""symbol_path" "10", },
        
20 : { "ip" "ServerIP2""tcp_port" 13070"mark" "10.tga""symbol_path" "20"}
    }

    
TESTADDR = { "ip" "ServerIP""tcp_port" 50000"udp_port" 50000, } 
03/27/2015 23:52 Lefloyd#12
Das Problem liegt auch nicht in der serverinfo.py...
In der intrologin.py (root) muss in der Open-Funktion stehen:
Code:
		ServerStateChecker.Create(self)
		ServerStateChecker.Initialize()
-> Dadurch wird der "ServerStateChecker" initialisiert.
Jetzt müssen weiter unten in der Open-Funktion die Channel übergeben werden (oder in der OnUpdate mit nem Timer, der das alle X Sekunden tut):
Code:
ServerStateChecker.AddChannel(<channel_index>, <hostname/ip>, <port>)
-> Dadurch werden die Channel, die überprüft werden sollen, an den ServerStateChecker übergeben.
Unter allen "AddChannel" muss nun geadded werden:
Code:
ServerStateChecker.Request()
-> Startet den Request auf die Channel.
Finally, in der OnUpdate-Funktion:
Code:
ServerStateChecker.Update()
Sow, nun natürlich noch den NotifyChannelState(self, channel, state)-Part und dann sollte alles funzen..

Kind Regards
03/28/2015 19:49 Sogma#13
Magst du mir helfen das zu komplettieren? Den .Initialize habe ich gesetzt, bin mir aber unschlüssig wo der Rest hin soll.
Hier mal die komplette Function
PHP Code:
def Open(self):
        
ServerStateChecker.Create(self)
        
ServerStateChecker.Initialize()
        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.PopupNotifyMessage(locale.LOGIN_CONNECT_FAILUREself.__ExitGame)
                return

            if 
self.loginInfo:
                
self.serverBoard.Hide()
            else:
                
self.__RefreshServerList()
                
self.__OpenServerBoard()
        else:
            
connectingIP self.stream.GetConnectAddr()
            if 
connectingIP:
                if 
app.USE_OPENID and not app.OPENID_TEST :
                    
self.__RefreshServerList()
                    
self.__OpenServerBoard()
                else:
                    
self.__OpenLoginBoard()
                    if 
IsFullBackImage():
                        
self.GetChild("bg1").Hide()
                        
self.GetChild("bg2").Show()

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

        
app.ShowCursor()