[Python] LoginWindow random Background's

09/26/2022 06:04 Endless.#1
Guten Morgen zusammen :)


Ich habe mir mal aus Langeweile die Zeit genommen und bisschen was mehr Leben ins Login Screen zu bringen. Ich habe bislang auch kein Tutorial oder Thread gesehen, wo es das gibt ausser, das Tutorial mit dem BG Changer.. doch niemand wird sich vorm ein Einloggen jedesmal sein Hintergrund anpassen wollen und vorallem bleibt dieser auch nicht wirklich gespeichert. Jedenfalls ist
diese Methode etwas dynamischer und einfacher einzubauen, daher möchte ich dieses Tut mal für die Jenigen lassen, die auch grad dabei sind, ihr Client bisschen zu verschönern. Nun gut, genug erzählt :D

Was wir nun machen werden:


Entpacken unsere root.eix/epk und öffnen unsere intrologin.py.

Dort suchen wir nach der Funktion:
Code:
def __OpenServerBoard(self):
und fügen dann dort in diese Funktion dann folgenden Code ein:
Code:
		import random
		bgIMG = random.randint(1,4)
		if bgIMG == 1:
			self.GetChild("bg1").Show()
			self.GetChild("bg2").Hide()
			self.GetChild("bg3").Hide()
			self.GetChild("bg4").Hide()
		elif bgIMG == 2:
			self.GetChild("bg1").Hide()
			self.GetChild("bg2").Show()
			self.GetChild("bg3").Hide()
			self.GetChild("bg4").Hide()
		elif bgIMG == 3:
			self.GetChild("bg1").Hide()
			self.GetChild("bg2").Hide()
			self.GetChild("bg3").Show()
			self.GetChild("bg4").Hide()
		elif bgIMG == 4:
			self.GetChild("bg1").Hide()
			self.GetChild("bg2").Hide()
			self.GetChild("bg3").Hide()
			self.GetChild("bg4").Show()
Auf TABS Achten ganz wichtig! Damit wäre der Teil an der root abgeschlossen und jetzt müssen wir natürlich noch in der locale_de/ui/loginwindow.py eine Änderung durchführen.

Dazu suchen wir dort nach: ## Board und suchen diesen Teil:
Code:
		{
			"name" : "bg1", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login.sub",
		},
und ersetzen ihn durch diesen:
Code:
		{
			"name" : "bg1", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login.sub",
		},
		{
			"name" : "bg2", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login1.sub",
		},
		{
			"name" : "bg3", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login2.sub",
		},
		{
			"name" : "bg4", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login3.sub",
		},
		{
			"name" : "bg5", "type" : "expanded_image", "x" : 0, "y" : 0,
			"x_scale" : float(SCREEN_WIDTH) / 1024.0, "y_scale" : float(SCREEN_HEIGHT) / 768.0,
			"image" : "locale/de/ui/background/login4.sub",
		},
Anschließend erstellt ihr im Ordner: ui einen weiteren Ordner mit dem Namen: background und legt dort ein Bild mit dem Namen login1.jpg usw an und auch die .sub Dateien sollen richtig abgeändert sein. Wenn alles passt, könnt ihr die locale_de wieder packen und das Spiel starten.

Nun wird bei jedem Start des Loginfensters zufällig eins von 4 verschiedenen Bildern ausgewählt. Ihr könnt natürlich auch mehr dazu machen aber mir reichen selbst erstmal 4.

Und bitte konstruktive Kritik, keine desktruktive :D
Und bevor ihr schimpft, dass des kein Hexenwerk ist oder sowas ähnliches gibt, ist dies nur eine Option den Background zu changen unabhängig davon ob man spezielle Client Interfaces und Design verwendet welche des von sich aus geben. Falls es sowas doch geben sollte, darf der Thread als erledigt betrachtet werden. Das wars auch schon ^-^

Ich hoffe jemand kann etwas damit anfangen :)
Bei Bedarf werde ich solche Scripte erweitern oder nach mal schauen, diese nach Uhrzeit schalten.

Mit freundlichen Grüßen, Endless :)