Das Script von Coniesan ist recht performancelastig bei vielen Spielern. (Es geht für jeden Account, egal ob leer oder nicht, die ganze player-Tabelle durch und zählt dabei die Anzahl der Charaktere)
Ich würde empfehlen, die leeren Accounts direkt in einem Query zu finden:
Code:
SELECT account.id,account.login
FROM account.account
LEFT JOIN player.player_index ON player_index.id = account.id
WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Dieser Query zählt ausserdem nicht durch die ganze Charaktertabelle, sondern nutzt die player_index-Tabelle, was auch Ressourcen spart.
Coniesan kann das Script ja anpassen, wenn er Lust hat. (ich hatte keine Lust dazu)
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
Keine Sorge, daran habe ich auch gedacht.
Wenn kein Eintrag mit dieser ID in der player_index gefunden wird, ist der Inhalt von beispielsweise der "player_index.id" Spalte NULL. Dieser Befehl, welchen du übrigens auch im Query findest, prüft ob diese Spalte NULL ist.
jojo das hab ich dann soweit auch schon bearbeitet gehabt
Also hier das bearbeitete Script, und nochmal danke für die SQL
PHP Code:
<?php // Temp. SQL connection $sqlCon = mysql_connect('127.0.0.1', 'root', 'pass'); //Auslesen der leeren Acc's $sql=mysql_query('SELECT account.id,account.login FROM account.account LEFT JOIN player.player_index ON player_index.id = account.id WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0);')or die(mysql_error());
das script wird einmahlig benutzt alle 2-3 monate und nuhr dan ist es auch activ
also wird es auscomentiert wen es nicht gepraucht wird .
bei 13k+ accounts kanst lange suchen welche jetzt chars besitzen und welche nicht
mfg
jojo das hab ich dann soweit auch schon bearbeitet gehabt
Also hier das bearbeitete Script, und nochmal danke für die SQL
Code:
OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Warum hast du denn diesen Teil des Querys rausgenommen?
Wenn jemand einen Char erstellt und diesen wieder löscht, bleibt der player_index Eintrag, obwohl keine Chars mehr vorhanden sind, und dieser enthält dann bei jeder der pid Spalten eine 0, daher diese Überprüfung.
man könnte ja n Autoscript schreiben, welches jeden Tag guckt, ob und welcher Acc länger als 2 Monate (oder, wie mans halt gern hätte) nicht benutzt wurde, und die dort gelisteten automatisch löscht
#Edit: Ja sry, habs ausm Queryeditor Copy&Paste raus da hab ich als Experiment den Part raus geschmissen gehabt
[S] Mysql Befehl! 04/14/2013 - Metin2 Private Server - 3 Replies Hallo Community,
Ich möchte gerne meine 3 Tausend löschen aber das nicht per Hand sondern per befehl.
Wie so einer.
DELETE FROM item WHERE vnum = 72726
Aber dies für die Account Tabelle und für die Player Tabelle
Also ich weiß nur das man so anfängt.
''DELETE FROM''
Aber mehr weiß ich nicht.
MySQL Befehl? 11/25/2012 - Metin2 Private Server - 0 Replies Hallu,
kennt jemand einen MySQL Befehl, den man für die Mob Proto anwenden kann?
Würde gerne einige Spalten dort updaten, sprich, erweitern, mit Nullen, weil ich alle diese Mobs, auch die auf Map2 etc., an Level 100 angleichen möchte und von Hand dauert das echt lange >.<
Kennt jemand nen Befehl dafür?
Suche Mysql befehl 07/23/2012 - Metin2 Private Server - 2 Replies hallo com habe ein kleines problem und zwar sind autopots bei mir auf dem server
unters folk gelangt das es nicht solte also ein GM hatt die verteilt
so meine frage ist es gibt sicher einen mysql befehl der in der tabelle item
zb das item 72726 loescht also von allen playern das suchen dauert lange
danke im voraus
mfg
suche MySQL Befehl 10/28/2011 - Metin2 Private Server - 6 Replies Guten Abend !!
Gibt es einen Befehl für die MySQL ,wo man die Accounts alle auf einmal auf BLOCK stellt ?
Habe in der SUFU nichts gefunden
mysql befehl 05/08/2010 - Metin2 Private Server - 4 Replies hi,ich suche 3 mysql befehle für navicat in der query tabelle für die exp yang und item drop
und wo genau ich die eingeben muss iwo in der player is das egal? oder in der mobproto?
und ich kann iwie die npcs nimmer anklicken nur noch die shops woran liegt das? währe nett wenn mir jemand hilft