Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Sonntag, 3. August 2008, 18:45

Frage zum PHP HL² Server-Query Script

Ich habe gerade danach gesucht, aber leider nix gefunden.
Und zwar möchte ich gerne in dem Query Script auch die Variable "$infos["nextmap"]" auswerten, aber die gibt es ja nicht.
Hab gerade versucht da durch zu steigen, aber ich hab keinen Plan wie ich zu der Variable komme. :(

Vielleicht könnte mir da mal jemand auf die Sprünge helfen...

Mike

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

2

Dienstag, 5. August 2008, 13:42

Re: Frage zum PHP HL² Server-Query Script

Hi Mike,

das ist leider nicht möglich.
Auf jeden fall wüsste ich nicht wie man es über ein HL2 Server-Query machen könnte.

Hier ist ein Link über den Aufbau: http://developer.valvesoftware.com/wiki/Server_Queries
Wenn man sich mal das "Reply format" anschaut,
dann gibt es keinen "nextmap" string in dem Query.

Edit:
Ich sehe gerade das der Ping-Befehl dazu gekommen ist :-)
Werde es bei Gelegenheit im Tutorial mit einabuen!


MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

3

Dienstag, 5. August 2008, 17:24

Re: Frage zum PHP HL² Server-Query Script

hmm... und wie holt dann HLSW und der Mani-Stats-Reader diese Info?
HLSW könnte das ja über Rcon holen, aber der MSR definitiv nicht, weil dort ja kein rconPW angegeben wird...

EDIT: hab mir mal die hlquery_funcs.inc vom MSR angesehen, und dort folgendes gefunden:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
$info['nextmap'] = NULL;
		if ($rules["amx_nextmap"]) {
		  $info['nextmap'] = $rules["amx_nextmap"];
		}elseif ($rules["cm_nextmap"]) {
		  $info['nextmap'] = $rules["cm_nextmap"];
		}elseif ($rules["am_nextmap"]) {
		  $info['nextmap'] = $rules["am_nextmap"];
		}elseif ($rules["mp_nextmap"]) {
		  $info['nextmap'] = $rules["mp_nextmap"];
		}elseif ($rules["mani_nextmap"]) {
		  $info['nextmap'] = $rules["mani_nextmap"];
		}


Er schaut also welche Pluginbs eventuell installiert sind, und liest dann die entsprechende Variable des Plugins aus.
Aber durch das "$rules" array steig ich nich durch...

Wenn die Datei nicht grad so lang wäre, dann würde ich die ja mal komplett posten... Vielleicht ist es ja auch garnicht soo schwierig... ;)

[OT]
PS: wieso steht beim überfahren der bbcode buttons als alternativText "Traurig"? So traurig find ich die Buttons jetzt garnicht...
[/OT]

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

4

Dienstag, 5. August 2008, 20:10

Re: Frage zum PHP HL² Server-Query Script

Stimmt... über die Cvars kann man es machen.
Natürlich nur wenn es die Cvar auch gibt.

Hier mal ein Beispiel wie es mit der PHP Klasse aus dem Tutorial funkionieren müsste:

Quellcode

1
<span class="syntaxdefault"><?php<br /></span><span class="syntaxcomment">// Setze Leer-Nachricht<br /></span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Unknow!!!'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxcomment">// Cvarinfos abfragen<br /></span><span class="syntaxdefault">$cvars </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $verbindung</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">cvars</span><span class="syntaxkeyword">();<br /></span><span class="syntaxcomment">// Schleife um das Array aus zu lesen<br /></span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">$cvars as $key </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">// Prüfung des Key's.<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'amx_nextmap'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'cm_nextmap'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'am_nextmap'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'mp_nextmap'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'mani_nextmap'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">// Anzeige aller Cvars!!!<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' = '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">Echo </span><span class="syntaxstring">'<br>Next map is: <b>'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$nextmap</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'</b><br>'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">?></span>

Für Sourcemod habe die Cvar emo. nicht auf lager!

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

5

Dienstag, 5. August 2008, 21:47

Re: Frage zum PHP HL² Server-Query Script

Das klappt ja super, dankeschön :) right
Jetzt hab ich endlich "Map decided by vote" da stehen heul
Naja, muss ich das eben auf dem Server abschalten...

Ich versuche nun als letztes noch die Playerliste nach den Frags zu sortieren...
Ich dachte bisher das ich eigentlich ganz gut klarkomme... aber das geht einfach genauswo wenig wie alles andere.

mit

Quellcode

1
2
3
4
5
6
7
8
9
10
...
$players = $verbindung->players();

array_multisort($players["frags"], SORT_ASC, SORT_NUMERIC);

for ($x = 1; $x <= count($players); $x++){

echo '<tr>'.$x.'<td></td><td>'.$players[$x]["name"].'</td><td>'.$players[$x]["frags"].'</td><td>'.$players[$x]["time"].'</td></tr>';
}
...


funktioniert es leider nicht... :(

Quellcode

1
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in .....


Ich dachte $players[] ist ein Array...

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

6

Dienstag, 5. August 2008, 22:19

Re: Frage zum PHP HL² Server-Query Script

Es ist ein Array, aber du hast den Zähler vergessen.

$players[zähler]['frags'].

Ich werde mir das ganze mal morgen anschauen wenn ich wieder zuhause bin!

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

7

Donnerstag, 7. August 2008, 02:07

Re: Frage zum PHP HL² Server-Query Script

Also ich habs jetzt paarmal vergeblich versucht... aber innerhalb der Schleife zu sortieren geht auch nicht, und macht meines Erachtens auch wenig Sinn.... Die Schleife dient ja nur zur Ausgabe der Zeilen...
Wäre schön wenn du mir da nochmal nen Tipp geben könntest... Jetzt haben wir es ja fast komplett ;)

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

8

Donnerstag, 7. August 2008, 23:23

Re: Frage zum PHP HL² Server-Query Script

So...

Ich habe eine Lösung gefunden!
Es gibt bestimmt eine Einfachere Lösung,
aber bis ich eine andere habe, müsste diese funktionieren!

Erstmal müssen wir die klasse ändern:

Quellcode

1
<span class="syntaxdefault">           $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_byte</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_string</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_int32</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">date</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'H:i:s'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">round</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_float32</span><span class="syntaxkeyword">(), </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">)+</span><span class="syntaxdefault">82800</span><span class="syntaxkeyword">);           </span><span class="syntaxdefault"></span>
wird zu

Quellcode

1
<span class="syntaxdefault">           $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_byte</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_string</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_int32</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">date</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'H:i:s'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">round</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_float32</span><span class="syntaxkeyword">(), </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">)+</span><span class="syntaxdefault">82800</span><span class="syntaxkeyword">);           </span><span class="syntaxdefault"></span>


Jetzt haben wir folgenden Aufbau:

$players["frags"][zähler1][zähler2]
$players["name"][zähler1]
$players["time"][zähler1]
$players["index"][zähler1]

Zähler1 und Zähler2 habe vor dem sortieren den gleichen wert!
Da beim sortieren der Frags nur der Zähler1 der Frags geändert wird und der Zähler2 nicht,
brauchen wir den Zähler2 um die Zuordnung der anderen werte nicht zu verlieren.


------

Jetzt kommt das Sortieren und Anzeigen:

Quellcode

1
<span class="syntaxdefault">array_multisort</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">SORT_DESC</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">SORT_STRING</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br />foreach(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">) {<br />  foreach(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$key2 </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value2</span><span class="syntaxkeyword">) {<br />  </span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">++;<br />  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Nummmer<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key2</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Index<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key2</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;  </span><span class="syntaxcomment">// Name<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key2</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Frags<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key2</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Zeit<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">;<br />  }<br />}        </span><span class="syntaxdefault"></span>


Konnte es nicht Testen, aber es müsste funktionieren!

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

9

Freitag, 8. August 2008, 03:08

Re: Frage zum PHP HL² Server-Query Script

So... habs ausprobiert, und es geht leider nicht...

Als erste war ein kleiner Fehler drin.
Da fehlt beim "echo player name" ein punkt am ende...
Nachdem ich das gemacht habe, hat das Script 10 Minuten gebraucht um folgendes auszuspucken:

Quellcode

1
Warning: unpack() [function.unpack]: Type s: not enough input, need 2, have 0 in /is/htdocs/.../status/serverstatus.class.php on line 49


betreffende Zeile:

Quellcode

1
2
3
4
5
47:// einen int16-Wert (2 Bytes) vom Server holen
48:      function get_int16() {
49:        $unpacked = unpack('sint', fread($this->fp, 2));
50:        return $unpacked[int];
51:      }



Leider muss ich jetzt in Urlaub, und kann erst in reichlich zwei Wochen wieder rein schauen...
Vielleicht können wir dann ja an dem Problem weiter arbeiten?
Würd mich jedenfalls freuen, wenn wir da ein funtkionierendes QueueScript hinbekommen würden... ;)

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

10

Freitag, 8. August 2008, 03:10

Re: Frage zum PHP HL² Server-Query Script

Ich werde es morgen mal in meine Query-Klasse (http://www.server.hsfighter.net) einbauen,
und es hier Posten wenn es klappt.
Dann kannst du es nach deinem Urlaub benutzen!

Schönen Urlaub wünsche ich dir!

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

Chrisber

Administrator

Beiträge: 1 030

Wohnort: localhost

Rootserver vorhanden: Ja

  • Nachricht senden

11

Freitag, 8. August 2008, 14:00

Re: Frage zum PHP HL² Server-Query Script

Hi.
Falls du EventScripts installiert hast -> CVar: eventscripts_nextmapoverride ;)

So long, Chris
Und das letzte, was gesagt wird, wenn die Welt untergeht, ist: das ist technisch unmöglich.

12

Dienstag, 26. August 2008, 21:57

Re: Frage zum PHP HL² Server-Query Script

Zitat von »"HSFighter"«

Ich werde es morgen mal in meine Query-Klasse (http://www.server.hsfighter.net) einbauen,
und es hier Posten wenn es klappt.
Dann kannst du es nach deinem Urlaub benutzen!

Schönen Urlaub wünsche ich dir!

MfG


Danke, bin leider schon wieder da... :)

Jedenfalls scheint die Seite down zu sein so wie es aussieht. Bei dem Link geht nix, und auch wenn man hsfighter.net aufruft kommt nur ne confixx Seite... :|

Würde mich aber trotzdem freuen, wenn wir das noch irgendwie hin bekommen, sodas man die Ausgabe noch sortieren kann... ;)

EDIT: so, jetzt geht der Link... hatte nur nen Timeout, weil meine Leitung zu überlastet war...
Wie ich sehe, hast du das aber leider auch noch nicht zum laufen gebracht ... :(
Geht es nicht, oder hattest du nur einfach keine Zeit bisher?

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

13

Mittwoch, 27. August 2008, 01:11

Re: Frage zum PHP HL² Server-Query Script

Sorry....
Habe es schon fertig, aber nicht mit auf den neuen Webspace genommen.
Die URL http://www.hsfighter.net ist neu! war vorher ".de"

Werde ich heute Abend gleich nachholen.

p.s. Wie war der Urlaub?

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

14

Mittwoch, 27. August 2008, 01:48

Re: Frage zum PHP HL² Server-Query Script

Naja, der Urlaub war schön und kurz. Das Wetter hätte besser sein könne, aber auch wesentlich schlechter. Man muss sich ja nun nicht immer nur beklagen ;)

Jedenfalls bin ich mal gespannt wie du das gelöst hast... Vielleicht hab ich da auch nur nen Fehler eingebaut, bei den vielen Codeschnipseln...
Postest du das dann hier, oder aktualisierst du nur den anderen Thread mit der Klasse ?

Achja, und vielen Dank das du dir die viele Mühe machst ... zwinker

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

15

Donnerstag, 28. August 2008, 01:02

Re: Frage zum PHP HL² Server-Query Script

So.... Ich habe fertig.

Weiß auch nicht wie das vorher geklappt hat.
Ich musste meinen V-Server neu Starten,
Da der Timeout mein ganzen Webserver runter gezogen hat.

Nach langen hin und her, habe ich ne wirklich simple Lösung gefunden ^^

So mussen die Player in der Klasse eingelesen werden:

Quellcode

1
<span class="syntaxdefault">        </span><span class="syntaxkeyword">for(</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">; </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">$playercount</span><span class="syntaxkeyword">; </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++) {<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_byte</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_string</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_int32</span><span class="syntaxkeyword">();<br />          </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">playerlist</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">date</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'H:i:s'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">round</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get_float32</span><span class="syntaxkeyword">(), </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">)+</span><span class="syntaxdefault">82800</span><span class="syntaxkeyword">);<br />        }       </span><span class="syntaxdefault"></span>
Dann noch sortieren und anzeigen:

Quellcode

1
<span class="syntaxdefault">arsort </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">]);<br /><br /></span><span class="syntaxdefault">$x </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br />foreach(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">) {<br />  </span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">++;<br />  Echo </span><span class="syntaxstring">'#'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Nummer<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Index<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;  </span><span class="syntaxcomment">// Name<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Frags<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Zeit<br />  </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">;<br />}<br />       </span><span class="syntaxdefault"></span>
Fertig :D

P.s. Hier der Demo Link: http://www.server.hsfighter.net">http://www.server.hsfighter.net</a>

Werde es Morgen in das Tutorial einbauen.

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

16

Donnerstag, 28. August 2008, 03:14

Re: Frage zum PHP HL² Server-Query Script

Spitze... jetzt funktioniert das fast genauso wie ich das haben wollte...

Das einzige Problem tritt auf, wenn der Server leer ist. Dann versucht er ein leeres Array zu sortieren... mit entsprechender Fehlermeldung....

Quellcode

1
Warning: arsort() expects parameter 1 to be array, null given in /is/htdocs/.../status/index.php on line 112


Hab das jetzt mal so gelöst:

Quellcode

1
<span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$infos</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"players"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">></span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">){<br /><br /></span><span class="syntaxdefault">$players </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $verbindung</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">players</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">arsort </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">]);<br /><br /></span><span class="syntaxdefault">$x </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;<br />foreach(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> as $key </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  $x</span><span class="syntaxkeyword">++;<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">'#'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Nummer<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Index<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">  </span><span class="syntaxcomment">// Name<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Frags<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Zeit<br /></span><span class="syntaxdefault">  Echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">;<br />}<br />}else{<br /></span><span class="syntaxdefault">echo </span><span class="syntaxstring">"server leer"</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>



@Chrisber:
sorry, hab deinen Post erst jetzt gesehen...

Zitat von »"Chrisber"«

Falls du EventScripts installiert hast -> CVar: eventscripts_nextmapoverride


Was und wen hast du denn damit gemeint?

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

17

Donnerstag, 28. August 2008, 09:26

Re: Frage zum PHP HL² Server-Query Script

Bei Array's würde ich lieber mit "isSet" Arbeiten.
Ist einfacher da man wert unabhängig ist.
$players = $verbindung->players(); muss vor das IF!


Quellcode

1
<span class="syntaxdefault">$players </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$verbindung</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">players</span><span class="syntaxkeyword">();<br />if (isSet(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">)){<br />  </span><span class="syntaxdefault">arsort </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">]);<br />  </span><span class="syntaxdefault">$x </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br />  foreach(</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">] as </span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">) {<br />    </span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">++;<br />    Echo </span><span class="syntaxstring">'#'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$x</span><span class="syntaxkeyword">.</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Nummer<br />    </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"index"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Index<br />    </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">;  </span><span class="syntaxcomment">// Name<br />    </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"frags"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Frags<br />    </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">''</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$players</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"time"</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' -- '</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// Zeit<br />    </span><span class="syntaxkeyword">Echo </span><span class="syntaxstring">'<br>'</span><span class="syntaxkeyword">;<br />  }<br />}else{<br />  echo </span><span class="syntaxstring">"server leer"</span><span class="syntaxkeyword">;<br />}   </span><span class="syntaxdefault"></span>


Gibt es sonnst noch WICHTIGE Cvars die man auslesen könnte und relevant sind?

Zitat von »"Mike"«


@Chrisber:
sorry, hab deinen Post erst jetzt gesehen...

Zitat von »"Chrisber"«

Falls du EventScripts installiert hast -> CVar: eventscripts_nextmapoverride


Was und wen hast du denn damit gemeint?

Er meint damit das wenn du eventscripts installiert hast,
dann ist die cvar für die nextmap anzeige "eventscripts_nextmapoverride":

Quellcode

1
<span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">== </span><span class="syntaxstring">'eventscripts_nextmapoverride'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">$nextmap </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">;<br />  </span><span class="syntaxdefault"></span>


MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

18

Donnerstag, 28. August 2008, 18:24

Re: Frage zum PHP HL² Server-Query Script

So, hab jetzt noch die if Abfrage auf isset umgestellt. Hatte ich vorher auch schon versucht, aber da hatte ich nen Schreibfehler, und deswegen hat es nicht funktioniert..

Wegen den Cvars gibt es sicher ein paar die man noch einbauen kann (Frag- und Time-limit z.B.)
Man muss halt aufpassen, das das nicht zu überladen wird...
Das einzige was ich manchmal schon vermisst habe ist eine timeleft angabe, damit man weis, ob es sich lohnt, wegen der Map noch auf den Server zu joinen...
Ich wüsste aber nicht, wie man da rankommen soll, da das ja kein cvar ist...

EDIT:

Hab noch einen 'Bug' entdeckt:
Wenn man das Script aufruft, während ein Spieler connectet - also in der Zeit in der im HLSW dann ein Fragezeichen statt des Namens da steht - hängt es sich auf...
Wenn man das nun in eine Seite einbindet, wird dann die ganze Seite nicht geladen...
Wenn jetzt viel Betrieb auf dem Server ist, kann das dazu führen, das die Clanseite auf einmal nichtmehr erreichbar ist ;)

19

Mittwoch, 17. September 2008, 23:51

Re: Frage zum PHP HL² Server-Query Script

Ich wollte nochmal nachfragen ob es vielleicht eine Lösung für das erwähnte Problem gibt.
Ich habe eben das Problem das meistens die ganze Webseite weg ist, weil auf dem Server Hochbetrieb herrscht...
Musste jetzt sogar das Script erstmal wieder rausnehmen deswegen :(

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

20

Donnerstag, 18. September 2008, 21:22

Re: Frage zum PHP HL² Server-Query Script

Sorry, habe dein "Edit:" nicht mehr gelesen.

Es gibt da vieleicht eine Möglichkeit!!!
Wo bei hängt er sich den genau auf?
Wenn du die Abfrage funktion aufrufst "$players = $verbindung->players();",
oder wenn du die Auswertung machst (foreach($players["frags"] as $key => $value) {)?

MfG



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)