[Python]Sicherheitsabfrage beim Handeln

10/16/2016 16:03 q.@quaresma741#1
Da es Spieler gibt die beim Handeln verpennen und später sich bei den Teamlern melden. Poste ich dies hier eine Sicherheitsabfrage wenn man Handelt


[Only registered and activated users can see links. Click Here To Register...]

root > uiexchange.py öffnen

Suchen
Code:
def AcceptExchange(self):
und ersetzten den Codeblock mit dem hier
Code:
	def AcceptExchange(self):
		import uiCommon
		questionDialog = uiCommon.QuestionDialog3()
		questionDialog.SetText1(localeInfo.HANDELN_FRAGE1)
		questionDialog.SetText2(localeInfo.HANDELN_FRAGE2)
		questionDialog.SetText3(localeInfo.HANDELN_FRAGE3)
		questionDialog.SetText4(localeInfo.HANDELN_FRAGE4)
		questionDialog.SetText5(localeInfo.HANDELN_FRAGE5)
		questionDialog.SetAcceptEvent(ui.__mem_func__(self.Handeln))
		questionDialog.SetCancelEvent(ui.__mem_func__(self.Abbrechen))
		questionDialog.Open()
		self.questionDialog = questionDialog
	
	def Handeln(self):
		self.questionDialog.Close()
		net.SendExchangeAcceptPacket()
		self.AcceptButton.Disable()
		snd.PlaySound("sound/effect/etc/levelup_2/levelup1_2.wav")
        
	def Abbrechen(self):
		self.questionDialog.Close()

root > uicommon.py öffnen und am ende das hier einfügen
Code:
class QuestionDialog3(QuestionDialog):

	def __init__(self):
		QuestionDialog.__init__(self)
		self.__CreateDialog()

	def __del__(self):
		QuestionDialog.__del__(self)

	def __CreateDialog(self):
		pyScrLoader = ui.PythonScriptLoader()
		pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog3.py")

		self.board = self.GetChild("board")
		self.textLine1 = self.GetChild("message1")
		self.textLine2 = self.GetChild("message2")
		self.textLine3 = self.GetChild("message3")
		self.textLine4 = self.GetChild("message4")
		self.textLine5 = self.GetChild("message5")
		self.acceptButton = self.GetChild("accept")
		self.cancelButton = self.GetChild("cancel")

	def SetText1(self, text):
		self.textLine1.SetText(text)

	def SetText2(self, text):
		self.textLine2.SetText(text)
	
	def SetText3(self, text):
		self.textLine3.SetText(text)

	def SetText4(self, text):
		self.textLine4.SetText(text)

	def SetText5(self, text):
		self.textLine5.SetText(text)
locale_de > locale_game.txt öffnen und das hier irgenwo rein klatschen
Code:
HANDELN_FRAGE1	Du bist grade mit einem Spieler am Handeln.
HANDELN_FRAGE2	Das Handeln kann nicht wieder rückgängig gemacht werden.
HANDELN_FRAGE3	Wir empfehlen dir deine Sachen nochmal zu kontrollieren.
HANDELN_FRAGE4	Möchtest du Handeln?
HANDELN_FRAGE5	PS: Der Spieler ist selber verantwortlich !
Und die datei im Anhng einfach in die uiscrpt reinschmeissen
10/16/2016 16:47 I´m Raylee#2
Nützliche Idee :)

Best regards
Raylee
10/16/2016 16:49 xRed™#3
Gute Idee! :)

Liebe Grüße, Red
10/16/2016 18:39 MrTherzon#4
Schöne Idee Danke dir!
10/16/2016 19:24 Kyuso /..#5
Simpel aber nützlich. Bzw. man kann es verwenden bedanke mich mal dafür.
10/16/2016 20:11 xP3NG3Rx#6
Good idea, thanks.
10/16/2016 23:01 αηαℓуzє™ღ#7
klein, aber nützlich danke!
10/16/2016 23:34 rollback#8
Nette Idee, allerdings würde ich es besser finden, wenn es keine feste Vorgabe von 6 Zeilen geben würde. Ist nicht allzu schwer umzusetzen, vielleicht erweiterst du es ja noch :)

edit:
untested, müsste aber so oder so ähnlich funktionieren:

Code:
	def AcceptExchange(self):
		import uiCommon
		import re
		
		questionDialog = uiCommon.QuestionDialog3()
		
		questions = {}
		for name, value in localeInfo.__dict__iteritems():
			matcher = re.match("^EXCHANGE_QUESTION([0-9]+)$", name)
			if matcher:
				questions[int(matcher.group(1))] = value
		
		for text in [questions[number] for number in sorted(questions)]:
			questionDialog.AppendText(text)
		
		questionDialog.SetAcceptEvent(ui.__mem_func__(self.__ConfirmAcceptExchange))
		questionDialog.SetCancelEvent(ui.__mem_func__(self.__CancelAcceptExchange))
		questionDialog.Open()
		self.questionDialog = questionDialog
	
	def __ConfirmAcceptExchange(self):
		self.questionDialog.Close()
		net.SendExchangeAcceptPacket()
		self.AcceptButton.Disable()
		snd.PlaySound("sound/effect/etc/levelup_2/levelup1_2.wav")
		
	def __CancelAcceptExchange(self):
		self.questionDialog.Close()
Code:
class QuestionDialog3(QuestionDialog):
	__textLines = None
	
	
	def __init__(self):
		QuestionDialog.__init__(self)
		
		self.__textLines = []
		self.__CreateDialog()

	def __del__(self):
		QuestionDialog.__del__(self)

	def __CreateDialog(self):
		pyScrLoader = ui.PythonScriptLoader()
		pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog3.py")

		self.board = self.GetChild("board")
		self.acceptButton = self.GetChild("accept")
		self.cancelButton = self.GetChild("cancel")

	def AppendText(self, text):
		line = ui.TextLine()
		line.SetParent(self.board)
		line.SetText(text)
		
		addHeight = line.GetTextSize()[1] + 10
		boardNewHeight = self.board.GetHeight() + addHeight
		
		self.board.SetSize(self.board.GetWidth(), boardNewHeight)
		self.acceptButton.SetPosition(self.acceptButton.GetPosition()[0], self.acceptButton.GetPosition()[1] + addHeight)
		self.cancelButton.SetPosition(self.cancelButton.GetPosition()[0], self.cancelButton.GetPosition()[1] + addHeight)
		
		line.SetPosition(0, boardNewHeight - 10 - self.acceptButton.GetHeight() - 10)
		line.Show()
		
		self.__textLines.append(line)
Code:
import uiScriptLocale

window = {
	"name" : "QuestionDialog",
	"style" : ("movable", "float",),

	"x" : SCREEN_WIDTH/2 - 125,
	"y" : SCREEN_HEIGHT/2 - 52,

	"width" : 300,
	"height" : 41,

	"children" :
	(
		{
			"name" : "board",
			"type" : "board",

			"x" : 0,
			"y" : 0,

			"width" : 300,
			"height" : 41,

			"children" :
			(
				{
					"name" : "accept",
					"type" : "button",

					"x" : -40,
					"y" : 143,

					"width" : 61,
					"height" : 21,

					"horizontal_align" : "center",
					"text" : uiScriptLocale.YES,

					"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",
				},
				{
					"name" : "cancel",
					"type" : "button",

					"x" : +40,
					"y" : 143,

					"width" : 61,
					"height" : 21,

					"horizontal_align" : "center",
					"text" : uiScriptLocale.NO,

					"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",
				},
			),
		},
	),
}
10/17/2016 09:05 Partyzone#9
Eine Nette Idee!
10/17/2016 10:25 /exit#10
Gute Idee! Auch wenn 6 Zeilen etwas zu viel sind.
10/17/2016 17:10 Cyber36#11
Danke, aber eig. ist das unnötig. Man drückt nicht ausversehen mal auf einen Button, also zuerst auf Handeln, dann bewegt man seine Maus ganz ausversehen zum Button und klickt noch drauf.

Ist ja fast wie Frau Keptry, die meinte, dass sie ausversehen einen Text in Twitter geschrieben und dann auf der Tastatur ausgerutscht ist hehe.

Dennoch danke.

MfG
Cyber
10/20/2016 08:33 DevBlade#12
Quote:
Originally Posted by Cyber36 View Post
Danke, aber eig. ist das unnötig. Man drückt nicht ausversehen mal auf einen Button, also zuerst auf Handeln, dann bewegt man seine Maus ganz ausversehen zum Button und klickt noch drauf.

Ist ja fast wie Frau Keptry, die meinte, dass sie ausversehen einen Text in Twitter geschrieben und dann auf der Tastatur ausgerutscht ist hehe.

Dennoch danke.

MfG
Cyber
Frau Keptry? Dein ernst?
10/27/2016 12:27 DeZy.#13
Kann man gut gebrauchen, Danke :)

Liebe Grüße,
DeZy.
12/13/2021 20:35 BassBox007#14
Quote:
Originally Posted by q.@quaresma741 View Post
Da es Spieler gibt die beim Handeln verpennen und später sich bei den Teamlern melden. Poste ich dies hier eine Sicherheitsabfrage wenn man Handelt


[Only registered and activated users can see links. Click Here To Register...]

root > uiexchange.py öffnen

Suchen
Code:
def AcceptExchange(self):
und ersetzten den Codeblock mit dem hier
Code:
	def AcceptExchange(self):
		import uiCommon
		questionDialog = uiCommon.QuestionDialog3()
		questionDialog.SetText1(localeInfo.HANDELN_FRAGE1)
		questionDialog.SetText2(localeInfo.HANDELN_FRAGE2)
		questionDialog.SetText3(localeInfo.HANDELN_FRAGE3)
		questionDialog.SetText4(localeInfo.HANDELN_FRAGE4)
		questionDialog.SetText5(localeInfo.HANDELN_FRAGE5)
		questionDialog.SetAcceptEvent(ui.__mem_func__(self.Handeln))
		questionDialog.SetCancelEvent(ui.__mem_func__(self.Abbrechen))
		questionDialog.Open()
		self.questionDialog = questionDialog
	
	def Handeln(self):
		self.questionDialog.Close()
		net.SendExchangeAcceptPacket()
		self.AcceptButton.Disable()
		snd.PlaySound("sound/effect/etc/levelup_2/levelup1_2.wav")
        
	def Abbrechen(self):
		self.questionDialog.Close()

root > uicommon.py öffnen und am ende das hier einfügen
Code:
class QuestionDialog3(QuestionDialog):

	def __init__(self):
		QuestionDialog.__init__(self)
		self.__CreateDialog()

	def __del__(self):
		QuestionDialog.__del__(self)

	def __CreateDialog(self):
		pyScrLoader = ui.PythonScriptLoader()
		pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog3.py")

		self.board = self.GetChild("board")
		self.textLine1 = self.GetChild("message1")
		self.textLine2 = self.GetChild("message2")
		self.textLine3 = self.GetChild("message3")
		self.textLine4 = self.GetChild("message4")
		self.textLine5 = self.GetChild("message5")
		self.acceptButton = self.GetChild("accept")
		self.cancelButton = self.GetChild("cancel")

	def SetText1(self, text):
		self.textLine1.SetText(text)

	def SetText2(self, text):
		self.textLine2.SetText(text)
	
	def SetText3(self, text):
		self.textLine3.SetText(text)

	def SetText4(self, text):
		self.textLine4.SetText(text)

	def SetText5(self, text):
		self.textLine5.SetText(text)
locale_de > locale_game.txt öffnen und das hier irgenwo rein klatschen
Code:
HANDELN_FRAGE1	Du bist grade mit einem Spieler am Handeln.
HANDELN_FRAGE2	Das Handeln kann nicht wieder rückgängig gemacht werden.
HANDELN_FRAGE3	Wir empfehlen dir deine Sachen nochmal zu kontrollieren.
HANDELN_FRAGE4	Möchtest du Handeln?
HANDELN_FRAGE5	PS: Der Spieler ist selber verantwortlich !
Und die datei im Anhng einfach in die uiscrpt reinschmeissen
Hi ich weis ist schon älter dennoch finde ich es cool und will das haben.

allerdings wenn ich dann den clienten starten will kommen folgende 2 meldungen

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Habe meiner meinung nach alles richtig eingegeben O.o