|
You last visited: Today at 21:22
Advertisement
[PHYTON] GM Abfrage
Discussion on [PHYTON] GM Abfrage within the Metin2 Private Server forum part of the Metin2 category.
12/03/2015, 03:16
|
#1
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
[PHYTON] GM Abfrage
Guten Tag.
Ich verstehe etwas nicht.
Code:
def FaceButton(self):
if player.GetName == ("[GM]" + " " + (player.GetName)):
global AdminPanelOpen
AdminPanelOpen = ui.Button()
AdminPanelOpen.SetText("")
AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120)
AdminPanelOpen.SetSize(88, 21)
AdminPanelOpen.SetEvent(self.LoadMainForm.Show)
AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
AdminPanelOpen.Show()
global AdminPanelText
AdminPanelText = ui.TextLine()
AdminPanelText.SetParent(AdminPanelOpen)
AdminPanelText.SetVerticalAlignCenter()
AdminPanelText.SetHorizontalAlignCenter()
AdminPanelText.SetPosition(43,10)
AdminPanelText.SetText("Admin Panel")
AdminPanelText.Show()
else:
self.Hide()
Ich bin ein totaler Neuling. Ich möchte eine Abfrage machen, und zwar soll der Button erst dann angezeigt werden, wenn der User ein [GM] vor dem Namen hat. Nicht anders, genau so. Sollte er kein GM sein, soll der Button nicht angezeigt werden.
Ich habe das Gefühl, das ist total falsch. Was kann ich da tun?
|
|
|
12/03/2015, 08:04
|
#2
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Ich würde empfehlen mit Regex zu arbeiten:
Code:
import re
if not re.search("^\\[GM\\].+$", player.GetName()):
return
Allerdings würde ich generell davon abraten, solche Abfragen im Client (besonders im Python-Teil) zu machen.
|
|
|
12/03/2015, 13:16
|
#3
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
|
Quote:
Originally Posted by Kira Mikami
if player.GetName == ("[GM]" + " " + (player.GetName))
|
Code:
if (irgendwas == "xyz" + irgendwas)
Dein Ernst?
|
|
|
12/03/2015, 14:34
|
#4
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Quote:
Originally Posted by Mi4uric3
Code:
if (irgendwas == "xyz" + irgendwas)
Dein Ernst?
|
Ja. Das war mein erster Versuch, und ich wusste auch, das er nicht klappen kann. Zudem kann es AUCH nicht funktionieren, da "player.GetName()" bereits [GM] enthält, und er den Button erst anzeigen würde, hieße ich: [GM][GM]xyz.
Ich sagte euch, ich bin ein Neuling.
Quote:
Originally Posted by Seחsi
Ich würde empfehlen mit Regex zu arbeiten:
Code:
import re
if not re.search("^\\[GM\\].+$", player.GetName()):
return
Allerdings würde ich generell davon abraten, solche Abfragen im Client (besonders im Python-Teil) zu machen.
|
Danke dir für den Tipp, aber es dient mehr zu meinem eigenen Zweck, und ich würde es erst zur Demonstration nutzen. Das Admin Panel können die User sowieso nicht verwenden, trotzdem sollen sie es nicht sehen, einfach, weil sie keine Admins sind.
Und wie ich bereits sagte, ich bin ein totaler Neuling. Ich habe keine Ahnung, wie ich mein Admin Panel ohne Probleme geschrieben habe.
Könntest du meinen Code mit deinem verbinden? Und könntest du mir auch erklären, was er genau bedeutet? Ich würde es sehr gerne verstehen.
Ich wäre dir sehr dankbar.
|
|
|
12/03/2015, 15:04
|
#5
|
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
|
In python an sich gibts die nette Function startswith(), ob die im Mt2 Client sinnvoll ist müssen dir Andere beantworten 
Sprich ich würde mir das als absolut unerfahrener Python Programmier so vorstellen:
if player.GetName.startswith("[GM]")
|
|
|
12/03/2015, 15:28
|
#6
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Quote:
Originally Posted by .Delta
In python an sich gibts die nette Function startswith(), ob die im Mt2 Client sinnvoll ist müssen dir Andere beantworten 
Sprich ich würde mir das als absolut unerfahrener Python Programmier so vorstellen:
if player.GetName.startswith("[GM]")
|
Danke dir, sieht zwar sehr vielversprechend aus, aber funktioniert leider auch nicht. Hier war ich mir relativ sicher, das es klappen könnte. Vielleicht muss man den Befehl anders nutzen.
|
|
|
12/03/2015, 15:41
|
#7
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Kira Mikami
Könntest du meinen Code mit deinem verbinden? Und könntest du mir auch erklären, was er genau bedeutet? Ich würde es sehr gerne verstehen.
Ich wäre dir sehr dankbar.
|
Code:
def FaceButton(self):
if not re.search("^\\[GM\\].+$", player.GetName()):
self.Hide()
return
global AdminPanelOpen
AdminPanelOpen = ui.Button()
AdminPanelOpen.SetText("")
AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120)
AdminPanelOpen.SetSize(88, 21)
AdminPanelOpen.SetEvent(self.LoadMainForm.Show)
AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
AdminPanelOpen.Show()
global AdminPanelText
AdminPanelText = ui.TextLine()
AdminPanelText.SetParent(AdminPanelOpen)
AdminPanelText.SetVerticalAlignCenter()
AdminPanelText.SetHorizontalAlignCenter()
AdminPanelText.SetPosition(43,10)
AdminPanelText.SetText("Admin Panel")
AdminPanelText.Show()
import re nicht vergessen!
Was das ganze macht kannst du hier nachlesen:

die Funktionen der einzelnen sind (fast) die selben wie in Java, nur finde ich die Liste in Java simpler aufgebaut, deshalb hier nochmal von Java:
Der von mir gezeigte Regex prüft funktioniert wie folgt:
^
Der String muss an dieser Stelle starten, es darf nichts vorher stehen.
\\
Escape für [, weil [ eine eigene Funktion als Regex-Zeichen hat, wir diese aber hier nicht nutzen möchten sondern das Zeichen im String vorhanden sein soll
[GM]
ein festgelegter Text, der in dem String so vorkommen soll. Das ] wird wieder escaped.
.
Beliebiges Zeichen
+
1 - * Vorkommnisse des zuvor angegebenen Ausdrucks.
$
Ende des Strings, auf den bis hierhin genannten Regex darf im String kein Zeichen folgen.
In Textform:
Der String muss mit [GM] anfangen, gefolgt von mindestens einem oder mehr weiteren beliebigen Zeichen. Danach darf nichts mehr kommen.
|
|
|
12/03/2015, 20:55
|
#8
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Quote:
Originally Posted by Seחsi
Code:
def FaceButton(self):
if not re.search("^\\[GM\\].+$", player.GetName()):
self.Hide()
return
global AdminPanelOpen
AdminPanelOpen = ui.Button()
AdminPanelOpen.SetText("")
AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120)
AdminPanelOpen.SetSize(88, 21)
AdminPanelOpen.SetEvent(self.LoadMainForm.Show)
AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
AdminPanelOpen.Show()
global AdminPanelText
AdminPanelText = ui.TextLine()
AdminPanelText.SetParent(AdminPanelOpen)
AdminPanelText.SetVerticalAlignCenter()
AdminPanelText.SetHorizontalAlignCenter()
AdminPanelText.SetPosition(43,10)
AdminPanelText.SetText("Admin Panel")
AdminPanelText.Show()
import re nicht vergessen!
Was das ganze macht kannst du hier nachlesen:

die Funktionen der einzelnen sind (fast) die selben wie in Java, nur finde ich die Liste in Java simpler aufgebaut, deshalb hier nochmal von Java:
Der von mir gezeigte Regex prüft funktioniert wie folgt:
^
Der String muss an dieser Stelle starten, es darf nichts vorher stehen.
\\
Escape für [, weil [ eine eigene Funktion als Regex-Zeichen hat, wir diese aber hier nicht nutzen möchten sondern das Zeichen im String vorhanden sein soll
[GM]
ein festgelegter Text, der in dem String so vorkommen soll. Das ] wird wieder escaped.
.
Beliebiges Zeichen
+
1 - * Vorkommnisse des zuvor angegebenen Ausdrucks.
$
Ende des Strings, auf den bis hierhin genannten Regex darf im String kein Zeichen folgen.
In Textform:
Der String muss mit [GM] anfangen, gefolgt von mindestens einem oder mehr weiteren beliebigen Zeichen. Danach darf nichts mehr kommen.
|
Ich habe es getestet, und leider klappt es nicht. Du, können wir uns darüber in Skype unterhalten? Du scheinst mir, einiges zu verstehen, und ich lerne wirklich schnell. Magst du mir da ein wenig weiterhelfen? Ich möchte das Admin Panel nämlich langsam abschließen, brauche aber diese Abfrage, sonst kann ich es nicht vollkommen testen.
|
|
|
12/03/2015, 22:20
|
#9
|
elite*gold: 20
Join Date: Jun 2011
Posts: 2,901
Received Thanks: 3,342
|
oder die uralte variante:
if (player.GetName()[:3] == "[GM]"):
|
|
|
12/04/2015, 03:25
|
#10
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Quote:
Originally Posted by xCPx
oder die uralte variante:
if (player.GetName()[:3] == "[GM]"):
|
Wenn ich das benutze, sagt mir die sysrr das:
Code:
global AdminPanelOpen
einen Fehler verursacht.
|
|
|
12/04/2015, 14:59
|
#11
|
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,937
|
Quote:
Originally Posted by Kira Mikami
Wenn ich das benutze, sagt mir die sysrr das:
Code:
global AdminPanelOpen
einen Fehler verursacht.
|
Generell hier mit globals zu arbeiten ist ziemlich unnütz und unschön..
Sonst wurden hier ja bereits zahlreiche Lösungswege vorgeschlagen. Wenn etwas nicht funktioniert liegt es an dir..
|
|
|
12/04/2015, 17:44
|
#12
|
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
|
Quote:
Originally Posted by xCPx
oder die uralte variante:
if (player.GetName()[:3] == "[GM]"):
|
oder auch
Ist kein GM:
PHP Code:
if player.GetName().find("[GM]") == -1:
ist GM:
PHP Code:
if player.GetName().find("[GM]") != -1:
PHP Code:
def FaceButton(self): if player.GetName().find("[GM]") != -1: global AdminPanelOpen AdminPanelOpen = ui.Button() AdminPanelOpen.SetText("") AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120) AdminPanelOpen.SetSize(88, 21) AdminPanelOpen.SetEvent(self.LoadMainForm.Show) AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") AdminPanelOpen.Show() global AdminPanelText AdminPanelText = ui.TextLine() AdminPanelText.SetParent(AdminPanelOpen) AdminPanelText.SetVerticalAlignCenter() AdminPanelText.SetHorizontalAlignCenter() AdminPanelText.SetPosition(43,10) AdminPanelText.SetText("Admin Panel") AdminPanelText.Show() else: self.Hide()
|
|
|
12/04/2015, 23:51
|
#13
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Quote:
Originally Posted by byte xGr33n
oder auch
Ist kein GM:
PHP Code:
if player.GetName().find("[GM]") == -1:
ist GM:
PHP Code:
if player.GetName().find("[GM]") != -1:
PHP Code:
def FaceButton(self):
if player.GetName().find("[GM]") != -1:
global AdminPanelOpen
AdminPanelOpen = ui.Button()
AdminPanelOpen.SetText("")
AdminPanelOpen.SetPosition(wndMgr.GetScreenWidth()-110,wndMgr.GetScreenHeight()-120)
AdminPanelOpen.SetSize(88, 21)
AdminPanelOpen.SetEvent(self.LoadMainForm.Show)
AdminPanelOpen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
AdminPanelOpen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
AdminPanelOpen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
AdminPanelOpen.Show()
global AdminPanelText
AdminPanelText = ui.TextLine()
AdminPanelText.SetParent(AdminPanelOpen)
AdminPanelText.SetVerticalAlignCenter()
AdminPanelText.SetHorizontalAlignCenter()
AdminPanelText.SetPosition(43,10)
AdminPanelText.SetText("Admin Panel")
AdminPanelText.Show()
else:
self.Hide()
|
Ich habe das Gefühl, der Fehler liegt an mir. Es klappt immer noch nicht.
Sysrr:
Code:
1204 23:49:16394 :: Traceback (most recent call last):
1204 23:49:16394 :: File "networkModule.py", line 230, in SetGamePhase
1204 23:49:16394 :: File "system.py", line 130, in __pack_import
1204 23:49:16395 :: File "system.py", line 110, in _process_result
1204 23:49:16395 :: File "game.py", line 2, in ?
1204 23:49:16395 :: File "system.py", line 130, in __pack_import
1204 23:49:16395 :: File "
1204 23:49:16395 :: <string>
1204 23:49:16395 :: ", line
1204 23:49:16395 :: 362
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 :: if player.GetName().find("[GM]") != -1:
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 :: ^
1204 23:49:16395 :: IndentationError
1204 23:49:16395 :: :
1204 23:49:16395 :: unindent does not match any outer indentation level
1204 23:49:16395 ::
|
|
|
12/05/2015, 13:24
|
#14
|
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
|
Quote:
Originally Posted by Kira Mikami
Ich habe das Gefühl, der Fehler liegt an mir. Es klappt immer noch nicht.
Sysrr:
Code:
1204 23:49:16394 :: Traceback (most recent call last):
1204 23:49:16394 :: File "networkModule.py", line 230, in SetGamePhase
1204 23:49:16394 :: File "system.py", line 130, in __pack_import
1204 23:49:16395 :: File "system.py", line 110, in _process_result
1204 23:49:16395 :: File "game.py", line 2, in ?
1204 23:49:16395 :: File "system.py", line 130, in __pack_import
1204 23:49:16395 :: File "
1204 23:49:16395 :: <string>
1204 23:49:16395 :: ", line
1204 23:49:16395 :: 362
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 :: if player.GetName().find("[GM]") != -1:
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 ::
1204 23:49:16395 :: ^
1204 23:49:16395 :: IndentationError
1204 23:49:16395 :: :
1204 23:49:16395 :: unindent does not match any outer indentation level
1204 23:49:16395 ::
|
Deine Einrückung ist falsch.
|
|
|
12/05/2015, 16:11
|
#15
|
elite*gold: 0
Join Date: Nov 2012
Posts: 1,620
Received Thanks: 1,745
|
Du meinst, die Spalte, wo der Text steht?
Ich habe in den letzten Tagen verdammt viel gelernt, aber genau das verstehe ich immer noch nicht..
|
|
|
Similar Threads
|
Phyton bildeinfügen?
07/14/2013 - General Coding - 3 Replies
Hallo!
ich habe 2 fragen zu phyton
Frage 1.
window = {
"name" : "TaskBar",
"x" : 0,
|
M2 Phyton Loader.exe
05/13/2013 - Metin2 Hacks, Bots, Cheats, Exploits & Macros - 2 Replies
Hey guys,i saw a phyton fishbot at DaRealFreak and i need a phyton loader to use it,how can i get it? a link for download may be...?
|
Phyton Help
11/28/2012 - Metin2 Private Server - 1 Replies
Suche Jemand Der sich mit Python Auskennt und Kurz Zeit in Skype Hatt. Einfach Hier Rein Schreiben und ich adde
|
Phyton-Tutorial
09/26/2010 - Coding Tutorials - 4 Replies
Hier ist ein kleines Tutorial mit Phyton:
|
[S]Phyton Experten
09/05/2010 - Metin2 Private Server - 0 Replies
Halluuu...
Ich bin grade dabei etwas am 010er Client zu basteln ich doch ich bin schon weit gekommen nur suche ich noch einen Phyton Spezialisten der sich wirklich mit Phyton auskennt.
Da ich nicht all zuu viel Ahnung von .py habe.
Ich hoffe auf eine antwort.
Lg
|
All times are GMT +1. The time now is 21:22.
|
|