|
You last visited: Today at 18:39
Advertisement
[Python] Whisperblock (Datenbankspeicherung)
Discussion on [Python] Whisperblock (Datenbankspeicherung) within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
11/27/2012, 01:51
|
#1
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
|
[Python] Whisperblock (Datenbankspeicherung)
Heya,
da ich seit Tagen nun damit gekämpft habe, ob ich das überhaupt releasen sollte beziehungsweise ein Tutorial drüber machen sollte, habe ich mich nun doch dafür entschlossen.
In diesem Tutorial oder Release, seht es wie ihr wollt, geht es nicht einfach darum etwas public zu machen, was dann jeder benutzen kann wie er will, es geht hier um eine wirkliche Lehrstunde, in der ihr ein wenig mit PHP, sowie urllib und Python in Verbindungen kommt, wen es nicht interessiert kann sich auch einfach den Source rauskopieren ohne alles zu lesen.
Was genau geht hier nun vor sich?
- User entblocken / blocken
- Geblockte User in Datenbank
- Benachrichtigung des Blocks
Sourcecodes (py):
- root -> uiwhisper.py
Zu erst einmal löscht ihr alles aus der Datei raus was nach "self.ignoreButton.Hide()" aussieht, einfach rauslöschen, dadurch wird der Button dann schonmal angezeigt.
Nun geht ihr in die Methode "IgnoreTarget" und löscht den gesamten Inhalt der Methode und ersetzt ihn mit meinem.
Code:
player_name = player.GetName() # Spielernamen auslesen
ignored_player_name = self.targetName # Namen des Chatpartners auslesen
read = urllib.urlopen("http://future3.eu/whisper_block.php?do=select&player_name=" + player_name + "").read() # Via urllib und meiner PHP Datei geblockte Spieler auslesen
if read.find(ignored_player_name) == -1: # Wenn Spieler nicht gefunden dann "Block"-Funktion ausführen
block = urllib.urlopen("http://future3.eu/whisper_block.php?do=add&player_name=" + player_name + "&ignored_player_name=" + ignored_player_name + "") # Via urllibg und meiner PHP Datei einen Spieler blocken und in die Datenabank eintragen
chat.AppendChat(chat.CHAT_TYPE_INFO, "Der Spieler " + ignored_player_name + " wurde blockiert, du wirst von ihm keine Nachrichten mehr empfangen!") # Infonachricht, dass du jemanden geblockt hast
net.SendWhisperPacket(ignored_player_name, "Der Spieler " + player_name + " hat dich soeben geblockt!") # PN an den geblockten User, dass er geblockt wurde
self.ignoreButton.SetText("Entblocken") # Button Text zu "Entblocken" ändern
else: # Wenn Spieler gefunden die "Entblock"-Funktion ausführen
unblock = urllib.urlopen("http://future3.eu/whisper_block.php?do=remove&player_name=" + player_name + "&ignored_player_name=" + ignored_player_name + "") # Via urllibg und meiner PHP Datei einen Spieler entblocken und aus der Datenbank löschen
chat.AppendChat(chat.CHAT_TYPE_INFO, "Der Spieler " + ignored_player_name + " wurde entblockt, er kann dir nun wieder Nachrichten schicken!") # Infonachricht, dass du jemanden entblockt hast
net.SendWhisperPacket(ignored_player_name, "Der Spieler " + player_name + " hat dich soeben entblockt!") # PN an den entblockten User, dass er entblockt wurde
self.ignoreButton.SetText("Blocken") # Button Text zu "Blocken" ändern
Das war's auch schon soweit in der "uiwhisper.py"-Datei! Nun geht's weiter mit der "game.py", ebenfalls in der root Datei in die Methode "OnRecvWhisper" um abzufragen, ob du eine Nachricht von einem geblockten Spieler empfängst. Löscht einfach den gesamten Inhalt der Funktion und fügt meinen ein.
Code:
if mode == chat.WHISPER_TYPE_GM: # Wenn Nachricht von einem GM kommt dann trotzdem empfangen, egal ob geblockt oder nicht
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)
else: # Wenn Nachricht von einem User
player_name = player.GetName() # Eigenen Spielernamen auslesen
read = urllib.urlopen("http://future3.eu/whisper_block.php?do=select&player_name=" + player_name + "").read() # Geblockten Spieler via urllib + PHP auslesen
if read.find(name) != -1: # Wenn Spieler in der Liste steht und er geblockt ist
chat.AppendChat(chat.CHAT_TYPE_INFO, "Der Spieler " + name + " hat versucht dich zu kontaktieren.") # Infonachricht, dass du kontaktiert wurdest
net.SendWhisperPacket(name, "Du kannst diesem Spieler keine Nachrichten senden, da er dich blockiert hat.") # Private Nachricht an den geblockten Spieler, dass er geblockt ist
else: # Wenn Spieler nicht drin steht und daher nicht geblockt ist Nachricht empfangen
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)
Das war's eigentlich auch schon Clientside, natürlich solltet ihr die urllib.pyc eingefügt und überall importiert haben. Nun geht's weiter mit dem PHP Teil, bitte vergesst nicht eure Links zu ändern, keine Angst, "future3.eu" ist keine Serverdomain, zumindest ist kein Server darauf zu finden.
Sourcecodes (php):
- whisper_block.php
Nun geht's um die PHP Datei, in welcher alles geregelt wird, das blocken, auslesen und entblocken, natürlich auch hier wieder alles kommentiert.
Code:
<?PHP
if ($_GET['do'] == "select") # Wenn GET Parameter "Select" ist zum auslesen
{
if (!$_GET['player_name'] == "") # Solange der Spielername Parameter nicht leer ist
{
$player_name = $_GET['player_name']; # GET Parameter des Spielers auslesen
mysql_connect("ip", "user", "pw); # Datenbankverbindung herstellen
mysql_select_db("urllib"); # Datenbank auswählen
$blocked_players = mysql_query("SELECT ignored_player_name FROM whisper_block WHERE player_name = '$player_name'"); # Alle ignorierten Spieler des Users auslesen
while ($row = mysql_fetch_object($blocked_players)) # Solange User gefunden werden
{
echo "$row->ignored_player_name <br>"; # Spieler mit Zeilenumbruch ausgeben
}
mysql_free_result($blocked_players); # Ergebnis wieder freigeben
}
}
elseif ($_GET['do'] == "remove") # Wenn GET Parameter "remove" ist zum löschen
{
if (!$_GET['player_name'] == "") # Solange der Spielername Parameter nicht leer ist
{
if (!$_GET['ignored_player_name'] == "") # Solange der Spielername des ignorierten nicht leer ist
{
$player_name = $_GET['player_name']; # GET Parameter des Spielers auslesen
$ignored_player_name = $_GET['ignored_player_name']; # GET Parameter des ignorierten Spielers auslesen
mysql_connect("ip", "user", "pw); # Datenbankverbindung herstellen
mysql_select_db("urllib"); # Datenbank auswählen
mysql_query("DELETE FROM whisper_block WHERE player_name = '$player_name' AND ignored_player_name = '$ignored_player_name'"); # Spieler aus Datenbank löschen
}
}
}
elseif ($_GET['do'] == "add") # Wenn GET Parameter "add" ist zum einfügen
{
if (!$_GET['player_name'] == "") # Solange der Spielername Parameter nicht leer ist
{
if (!$_GET['ignored_player_name'] == "") # Solange der Spielername des ignorierten nicht leer ist
{
$player_name = $_GET['player_name']; # GET Parameter des Spielers auslesen
$ignored_player_name = $_GET['ignored_player_name']; # GET Parameter des ignorierten Spielers auslesen
mysql_connect("ip", "user", "pw); # Datenbankverbindung herstellen
mysql_select_db("urllib"); # Datenbank auswählen
mysql_query("INSERT INTO whisper_block (player_name, ignored_player_name) VALUES ('$player_name','$ignored_player_name')"); # Spieler in die Datenbank einfügen
}
}
}
?>
So, das war's nun auch im PHP Teil, das einzige, was ihr nun noch braucht ist die Datenbank selbst und natürlich auch hier eure MySQL Daten eintragen! ;-)
Sourcecodes (MySQL):
- urllib.whisper_block.myd
Code:
CREATE TABLE `whisper_block` (
`player_name` varchar(16) NOT NULL,
`ignored_player_name` varchar(16) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ich denke mal, dass dieses "Tutorial" recht einfach zu verstehen ist und für jeden machbar sein sollte, ausbessern könnt ihr es natürlich wie ihr wollt, dieses Feature wird als erstes auf Future3 zu sehen sein damit auch jeder weiß, von wem es ist :>
Wünsche euch viel Spaß damit,
Best Regards
-> SoNiice
|
|
|
11/27/2012, 02:39
|
#2
|
elite*gold: 0
Join Date: Aug 2012
Posts: 52
Received Thanks: 13
|
Wie soll es auf Future3 zum ersten mal zu sehen sein wenn Future3 nicht online ist, das Feature aber releasd? Wenn es jetzt jemand einbaut, ist es ja wo anders zuerst...oder verstehe ich da was falsch?
Aber es ist ein sehr gutes Release und sehr gut erklärt. Danke
Mfg.
|
|
|
11/27/2012, 03:27
|
#3
|
elite*gold: 50
Join Date: Nov 2009
Posts: 865
Received Thanks: 1,229
|
Quote:
Quote:
natürlich solltet ihr die urllib.pyc eingefügt und überall importiert haben
|
|
Das mit der urllib musste mal genau erklären weil das nicht nur mit copy und paste zumachen ist, da fehlen auch ja noch datein die auch noch in die root reinmüssen, sonst erkennt der ja die funktion nicht.
|
|
|
11/27/2012, 03:59
|
#4
|
elite*gold: 200
Join Date: Oct 2012
Posts: 318
Received Thanks: 594
|
Seh ich das falsch, oder kann man einfach über den aufruf der .php mit gewissen Parametern einfach andere Playernamen eintragen und so die Chats für andere Spieler blocken?
Oder sich selbst wieder entblocken?
Code:
h t t p ://future3.eu/whisper_block.php?do=remove&player_name=SoNiice&ignored_player_name=Profizocker94
Edit: Was ist wenn die .php gedowned wird? Ist dann kein ordentliches Whispern mehr möglich?
|
|
|
11/27/2012, 06:23
|
#5
|
elite*gold: 0
Join Date: Nov 2011
Posts: 478
Received Thanks: 790
|
Naja wenn man den Link hat kann man viel unsinn anstellen :P
|
|
|
11/27/2012, 06:47
|
#6
|
elite*gold: 21
Join Date: Oct 2012
Posts: 374
Received Thanks: 524
|
da sollte eine überprüftung rein wie zb beim wartungsmod das er ne txt ausließt wo man das aktiviern und deaktivieren kann.. bzw wenn er die txt dann nicht laden kann weil hp down is sollas einrach ignorieren wäre das möglich soniice`?
und ja man kann mist baun
tzd danke..
|
|
|
11/27/2012, 09:02
|
#7
|
elite*gold: 139
Join Date: Sep 2010
Posts: 583
Received Thanks: 545
|
gutes braaaaa
|
|
|
11/27/2012, 10:15
|
#8
|
elite*gold: 0
Join Date: Sep 2009
Posts: 1,033
Received Thanks: 1,168
|
Webspace down und das wars Wird lauter Errors regnen, wenn die PHP Datei nicht erreichbar ist. Gibt noch etwas bessere Methoden, die sowas umgehen könnten trozdem danke fürs teilen!
LG Raicon
|
|
|
11/27/2012, 12:16
|
#9
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
|
Ich rieche Undankbarkeit - Wie gesagt, was ihr damit macht, ist mir relativ latte, baut es aus wie Lust und Laune habt.
Quote:
Originally Posted by Prσfizσckєr94
Seh ich das falsch, oder kann man einfach über den aufruf der .php mit gewissen Parametern einfach andere Playernamen eintragen und so die Chats für andere Spieler blocken?
Oder sich selbst wieder entblocken?
Code:
h t t p ://future3.eu/whisper_block.php?do=remove&player_name=SoNiice&ignored_player_name=Profizocker94
Edit: Was ist wenn die .php gedowned wird? Ist dann kein ordentliches Whispern mehr möglich?
|
An sich hast du Recht, ich habe bei mir noch eine Abfrage mit drin, ob mein Host überhaupt erreichbar ist oder nicht, hier ist nur das Whispern drin.
___
Und ja, im Endeffekt kannst andere Spieler blocken etc. wenn man den Link weiß.
|
|
|
11/27/2012, 13:40
|
#10
|
elite*gold: 0
Join Date: Jan 2012
Posts: 7,868
Received Thanks: 7,712
|
Nette Idee und so.
Danke marcel.
|
|
|
11/27/2012, 13:47
|
#11
|
elite*gold: 0
Join Date: Jan 2010
Posts: 1,916
Received Thanks: 538
|
naja man könnte doch per .htacess oder wie die datei heißt machen, dass niemand auf diese datei zugreifen kann außer der root server..
|
|
|
11/27/2012, 13:48
|
#12
|
elite*gold: 1
Join Date: Apr 2012
Posts: 928
Received Thanks: 2,486
|
Quote:
Originally Posted by SoNiice
Ich rieche Undankbarkeit - Wie gesagt, was ihr damit macht, ist mir relativ latte, baut es aus wie Lust und Laune habt.
An sich hast du Recht, ich habe bei mir noch eine Abfrage mit drin, ob mein Host überhaupt erreichbar ist oder nicht, hier ist nur das Whispern drin.
___
Und ja, im Endeffekt kannst andere Spieler blocken etc. wenn man den Link weiß.
|
Dass ist keine Undankbarkeit das ist Kritik.
Man kann die Kritik annehmen oder mich gleich wegen dem Post anflammen, ist mir relativ.
|
|
|
11/27/2012, 14:18
|
#13
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
|
Quote:
Originally Posted by .Awesoome'
Dass ist keine Undankbarkeit das ist Kritik.
Man kann die Kritik annehmen oder mich gleich wegen dem Post anflammen, ist mir relativ.
|
Kritik und Undankbarkeit landen so ziemlich auf der selben Stufe, das was hier gepostet wird ist überwiegend keine Kritik, mehr eine Undankbarkeit getarnt mit ein wenig Kritik, welche absolut unpassend ist, ich mein' - Warum schreibe ich denn extra rein, ihr könnt damit anfangen was IHR wollt, dann brauch man doch nicht die Sourcehilfen kritisieren, welche lediglich ein Ansatz für weiteres ist, aber auch so funktionieren würde.
Quote:
Originally Posted by ebert.tonna
Das mit der urllib musste mal genau erklären weil das nicht nur mit copy und paste zumachen ist, da fehlen auch ja noch datein die auch noch in die root reinmüssen, sonst erkennt der ja die funktion nicht.
|
Zur urllib habe ich genug erklärt, urlliby.pyc in den lib Ordner und urllib importieren.
|
|
|
11/28/2012, 01:16
|
#14
|
elite*gold: 21
Join Date: Oct 2012
Posts: 374
Received Thanks: 524
|
PHP Code:
import dbg import os
command = os.system('ping euredomain/ip') ### euredomain/ip durch die ipadresse ersetzen oder durch die domain zb google.de if command == 0: dbg.LogBox("TRUE") else: dbg.LogBox ("FALSE")
ist ein ansatz aber geht jedesmal cmd auf und pingt kurz an...
|
|
|
11/28/2012, 02:43
|
#15
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
|
Mit der socket Methode von Python geht's einfacher.
|
|
|
|
Similar Threads
|
[Python-Modul]EXP-Donator (kompatibel mit Python Loader)
11/23/2013 - Metin2 Hacks, Bots, Cheats, Exploits & Macros - 27 Replies
Moin,
da man mich danach gefragt hat und ich sowieso mal ein Beispiel für die Benutzung meines Python Loaders veröffentlichen wollte, habe ich die Gelegenheit genutzt und euch eben einen EXP-Spendebot geschrieben.
Man kann ihn einfach mit dem oben verlinkten Python Module Loader laden und ihn mit F5 aktivieren/deaktivieren.
Sobald ihr mehr als 99 Erfahrungspunkte habt (man kann nur in 100er Schritten spenden), werden alle Erfahrungspunkte an eure Gilde gespendet.
Wer Lust hat und...
|
Metin2 - Python - Wie Python Hacks verschlüsseln und Server überprüfen (GF/PServe)
09/23/2012 - Metin2 - 2 Replies
Ich wollte fragen,
wie man Python Hacks am besten Verschlüsselt ?
und wie man feststellen kann ob man auf einem GF / Pserver spielt. ?
|
python
10/23/2011 - Metin2 Private Server - 0 Replies
Hey Com ich wollte fragen wer mir bei dem switchbot von python helfen kann und die 2.0V geben kann wer so nett ist bitte skyp!:handsdown::handsdown::handsdown:
|
Python + Eric Python IDE installieren ?!
07/05/2011 - General Coding - 0 Replies
hat sich erledigt.
|
Whisperblock
05/24/2007 - World of Warcraft - 2 Replies
Ich habe von einem Addon gehört das whisper blockt von leuten die nicht zu der Gilde usw gehören.
Kennt das jemand?
|
All times are GMT +2. The time now is 18:39.
|
|