[MOD]Easy-Chatblock + Kick

04/11/2011 15:47 musicinstructor#1
Moin,

ich hab´ ein Skript für euch, mit dem man als GM den Spielern einen Chatblock geben kann, ohne deren Namen eingeben oder die Zeit in Sekunden ausrechnen zu müssen, denn das macht die Erweiterung automatisch.

Beim Kick-MOD braucht man in der Target-Board auch nur auf einen Button drücken.

Screenshot:

Nun zum Installieren:
Als erstes öffnet ihr die uitarget.py aus der root-Datei.

Erstmal schreibt ihr zu den Imports das neue Modul dazu.
Code:
import uiChatBlock
Wir müssen die beiden Buttons in die BUTTON_NAME_LIST einfügen.
Dazu am Ende der Liste einfach noch das hinzufügen:
Code:
		"Kick",
		"ChatBlock",
So sollte die Liste dann bei euch aussehen:

Dann weisen wir dem Button ein Event zu.
Sucht nach
Code:
		self.buttonDict[locale.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
und setzt diese beiden Zeilen darunter:
Code:
		self.buttonDict["Kick"].SetEvent(ui.__mem_func__(self.OnKick))
		self.buttonDict["ChatBlock"].SetEvent(ui.__mem_func__(self.OnChatBlock))
Um den Dialog zu laden, sucht nach
Code:
self.name = name
und setzt Folgendes darunter:
Code:
		dlgChatBlock = uiChatBlock.ChatBlockDialog()
		dlgChatBlock.LoadDialog()
		dlgChatBlock.SetTitleName("ChatBlock")
		dlgChatBlock.Hide()
		self.dlgChatBlock = dlgChatBlock
Der Dialog muss auch wieder entladen werden können, also sucht nach
Code:
	def Destroy(self):
und schreibt darunter
Code:
		self.dlgChatBlock.Destroy()
		self.dlgChatBlock = 0
Die entsprechenden Events kommen ganz ans Ende der Datei:
Code:
	def OnKick(self):
		net.SendChatPacket("/dc " + str(chr.GetNameByVID(self.vid)))

	def OnChatBlock(self):
		#if os.path.exists('gm.txt') and os.path.isfile('gm.txt'):
		if str(player.GetName())[0] == "[":
			self.dlgChatBlock.SetTitleName("ChatBlock: " + str(chr.GetNameByVID(self.vid)))
			self.dlgChatBlock.Open(str(chr.GetNameByVID(self.vid)))
Als letztes sucht ihr nach
Code:
self.ShowDefaultButton()
und setzt darunter
Code:
		if str(player.GetName())[0] == "[":
			self.__ShowButton("Kick")
			self.__ShowButton("ChatBlock")
Jetzt könnt ihr die Datei speichern.

Zum Schluss müsst ihr noch uichatblock.py aus dem Archiv im Anhang in euer root-Archiv und chatblockdialog.py in euer uiscript-Archiv (in den Ordner uiscript) packen.
Ihr dürft nicht vergessen, die Dateien auch wieder in eure Repack-XML reinzuschreiben.
Wenn bei euch Fehler in der uitarget.py kommen, löscht alle Tabs und macht sie nochmal neu, denn vBulletin wandelt sie in Leerzeichen um.
04/11/2011 15:48 CranK™#2
Schaut schick aus.
Thanks given ;)
04/11/2011 15:50 .GameFrosch™#3
dein patcher is gaail...
dein kick und cb giver is gail..

music instructer is gaail!!! thanks given ;)
04/11/2011 15:51 0x4D617276#4
Sieht gut aus
#THX GIVEN
04/11/2011 15:53 .TreVor##5
Nice :)
04/11/2011 15:54 Bataleon#6
Sehr nützlich danke :)
04/11/2011 16:04 CranK™#7
Habe noch ne kleine Idee:
Ne Nachricht für den Spieler anzeigen lassen der geblockt ist.
( Keine pn sondern auch so appendChat ...)
Wäre das denn überhaupt möglichß
04/11/2011 16:12 musicinstructor#8
Quote:
Originally Posted by CranK™ View Post
Habe noch ne kleine Idee:
Ne Nachricht für den Spieler anzeigen lassen der geblockt ist.
( Keine pn sondern auch so appendChat ...)
Wäre das denn überhaupt möglichß
man könnte dem spieler die nachricht per pn schicken und dann einbauen, dass wenn die pn z.B. mit CBR: (ChatBlockReason) beginnt, man im chat "Dein Chat wurde von " + NamedesSenders + " für " + Sekunden + " wegen " + Grund + " geblockt." ausgibt. Die Informationen kann man dann aus der PN rausholen und die PN wird nur akzeptiert, wenn der name des Senders mit [ beginnt.

Mal sehen, ob ich dafür mal zeit habe...
04/11/2011 16:14 CranK™#9
Okay, ich werd's auch mal testen.
Aber dann wäre es auch gut wenn man noch so einbaut, das die chatline wieder geleert wird, wenn du weißt wie ich meine.
Also so dass der Spieler gar nichts von der pn mit bekommt..
04/11/2011 16:42 musicinstructor#10
Quote:
Originally Posted by CranK™ View Post
Okay, ich werd's auch mal testen.
Aber dann wäre es auch gut wenn man noch so einbaut, das die chatline wieder geleert wird, wenn du weißt wie ich meine.
Also so dass der Spieler gar nichts von der pn mit bekommt..
das geht ganz einfach, das habe ich schon in einem anderen mod von mir benutzt.
04/11/2011 16:53 .Rebel#11
musicinstructor

can you release your uitarget.py i am get some dificultes set your release
04/11/2011 16:55 FakeTool#12
Nice

#Thx

Welcher Server ist das wenn ich Fragen darf?

Und dann habe ich noch eine Frage könnte man es nicht auch mit anderen Sachen? z.B das man auf einen Metin draufklickt und neben der Anzeige dann sowas wie Kill Metin oder Weak Metin machen?

Dadurch lassen sich doch auch per Klick die Namenlosen bannen oder nicht?


MFG Fake
04/11/2011 16:55 Almari#13
Quote:
Originally Posted by musicinstructor View Post
Moin,

ich hab´ ein Skript für euch, mit dem man als GM den Spielern einen Chatblock geben kann, ohne deren Namen eingeben zu müssen oder die Zeit in Sekunden ausrechnen muss, denn das macht die Erweiterung automatisch.

Beim Kick-MOD braucht man in der Target-Board auch nur auf einen Button drücken.

Screenshot:

Nun zum Installieren:
Als erstes öffnet ihr die uitarget.py aus der root-Datei.

Erstmal schreibt ihr zu den Imports das neue Modul dazu.
Code:
import uiChatBlock
Wir müssen die beiden Buttons in die BUTTON_NAME_LIST einfügen.
Dazu am Ende der Liste einfach noch das hinzufügen:
Code:
		"Kick",
		"ChatBlock",
So sollte die Liste dann bei euch aussehen:

Dann weisen wir dem Button ein Event zu.
Sucht nach
Code:
		self.buttonDict[locale.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
und setzt diese beiden Zeilen darunter:
Code:
		self.buttonDict["Kick"].SetEvent(ui.__mem_func__(self.OnKick))
		self.buttonDict["ChatBlock"].SetEvent(ui.__mem_func__(self.OnChatBlock)
Um den Dialog zu laden, sucht nach
Code:
self.name = name
und setzt Folgendes darunter:
Code:
		dlgChatBlock = uiChatBlock.ChatBlockDialog()
		dlgChatBlock.LoadDialog()
		dlgChatBlock.SetTitleName("ChatBlock")
		dlgChatBlock.Hide()
		self.dlgChatBlock = dlgChatBlock
Der Dialog muss auch wieder entladen werden können, also sucht nach
Code:
	def Destroy(self):
und schreibt darunter
Code:
		self.dlgChatBlock.Destroy()
		self.dlgChatBlock = 0
Die entsprechenden Events kommen ganz ans Ende der Datei:
Code:
	def OnKick(self):
		net.SendChatPacket("/dc " + str(chr.GetNameByVID(self.vid)))

	def OnChatBlock(self):
		#if os.path.exists('gm.txt') and os.path.isfile('gm.txt'):
		if str(player.GetName())[0] == "[":
			self.dlgChatBlock.SetTitleName("ChatBlock: " + str(chr.GetNameByVID(self.vid)))
			self.dlgChatBlock.Open(str(chr.GetNameByVID(self.vid)))
Als letztes sucht ihr nach
Code:
self.ShowDefaultButton()
und setzt darunter
Code:
		if str(player.GetName())[0] == "[":
			self.__ShowButton("Kick")
			self.__ShowButton("ChatBlock")
Jetzt könnt ihr die Datei speichern.

Zum Schluss müsst ihr noch uichatblock.py aus dem Archiv im Anhang in euer root-Archiv und chatblockdialog.py in euer uiscript-Archiv (in den Ordner uiscript) packen.
Ihr dürft nicht vergessen, die Dateien auch wieder in eure Repack-XML reinzuschreiben.
Wenn bei euch Fehler in der uitarget.py kommen, löscht alle Tabs und macht sie nochmal neu, denn vBulletin wandelt sie in Leerzeichen um.
LOL like you haven`t made it easy enough already. Thanks anyways.

LG+
.99Percent
04/11/2011 16:57 CranK™#14
Quote:
Originally Posted by FakeTool View Post
Nice

#Thx

Welcher Server ist das wenn ich Fragen darf?

Und dann habe ich noch eine Frage könnte man es nicht auch mit anderen Sachen? z.B das man auf einen Metin draufklickt und neben der Anzeige dann sowas wie Kill Metin oder Weak Metin machen?

Dadurch lassen sich doch auch per Klick die Namenlosen bannen oder nicht?


MFG Fake
LongDong2
Ich lade ihn mir gerade auch runter :D
04/11/2011 17:24 Critone#15
Muss man den root ordner wo die "uichatblock.py" drin ist, ganz in den root.epk ordner stecken oder nur die datei?