Hey,
ich habe mal eine Codingfrage, bei dir
ich bisher noch nicht wirklich weiter gekommen bin.
Daher meine Frage:
Wie kann ich die Server-Spieleranzahl in ein Template einbinden?
Habt ihr evtl. ein paar hilfreiche Codeschnipsel?
Mfg
iFeet
Hey,
ich habe mal eine Codingfrage, bei dir
ich bisher noch nicht wirklich weiter gekommen bin.
Daher meine Frage:
Wie kann ich die Server-Spieleranzahl in ein Template einbinden?
Habt ihr evtl. ein paar hilfreiche Codeschnipsel?
Mfg
iFeet
denke mal du willst es für SAMP haben.
Google mal nach "SAMP PHP API" dort findest du dann eine API mit der du das ziemlich einfach gestalten kannst und auch noch nen paar Funktionen mehr hast.
MfG
Ich würde eine Tabelle anlegen, in der sämliche Serverdaten gespeichert werden. Z.B. Useranzahl.
Dann würde ich das Script alle paar Sekunden / Minuten je nach bedarf, den Wert der Useranzahl Spalter updaten lassen, bzw. immer wenn ein Spieler verbindet, oder disconnectet +1,
würde ressourcen sparen, und ggf. auch lästige Ladezeiten präventiv vorbeugen.
API dich ich für mein Panel Nuzte
<?php
class SampRcon {
/**
* Variables
**/
private
$socket = null, /* Socket */
$serverinfo = array( /* Server Infos array */
'ip' => null,
'port' => null,
'passwd' => null,
'online' => null
);
/***
* Constructor
*
* @param (string)$srvip Server IP
* @param (int)$srvport Server Port
* @param (string)$srvpass Server RCON Password
* return void
***/
public function __construct($srvip = '127.0.0.1', $srvport = 7777, $srvpass = '') {
$this->serverinfo['ip'] = $srvip;
$this->serverinfo['port'] = $srvport;
$this->serverinfo['passwd'] = $srvpass;
$this->socket = fsockopen('udp://' . $this->serverinfo['ip'], $this->serverinfo['port']);
socket_set_timeout($this->socket, 1);
if($this->socket == false) {
$this->serverinfo['online'] = false;
return;
}
$this->sendPacket('p1234');
fread($this->socket, 10);
if(fread($this->socket, 5) != 'p1234') {
$this->serverinfo['online'] = false;
return;
}
$this->serverinfo['online'] = true;
}
/***
* Check if the server is online or not
*
* @param none
* @return boolean True if the server is on, false if not.
***/
public function isOnline() {
return $this->serverinfo['online'];
}
/***
* Send the RCON Command
*
* @param (string)$command RCON Command to send to the server.
* @return nothing
***/
public function sendRcon($command) {
$this->sendPacket('x', $command);
return fread($this->socket, 100);
}
/***
*
* @ingnore
*
***/
private function sendPacket($queryParam, $command = '') {
$packet = 'SAMP';
$packet .= chr(strtok($this->serverinfo['ip'], '.'));
$packet .= chr(strtok('.')).chr(strtok('.')).chr(strtok('.'));
$packet .= chr($this->serverinfo['port'] & 0xFF);
$packet .= chr($this->serverinfo['port'] >> 8 & 0xFF);
$packet .= $queryParam;
if($queryParam == 'x') {
$packet .= chr(strlen($this->serverinfo['passwd']) & 0xFF);
$packet .= chr(strlen($this->serverinfo['passwd']) >> 8 & 0xFF);
$packet .= $this->serverinfo['passwd'];
$packet .= chr(strlen($command) & 0xFF);
$packet .= chr(strlen($command) >> 8 & 0xFF);
$packet .= $command;
}
return fwrite($this->socket, $packet);
}
}
Alles anzeigen
und dann der Code der dir die Spielerzahl ausgibt.
Kannst ich die API in ein Styletemplate einbinden?
Jede (3) sek. die tabelle updaten?
bzw. immer wenn ein Spieler verbindet, oder disconnectet +1,
Life of German z.B. nutzt dieses System
Das würde mich aber auch interessieren wie genau das geht
evtl so
{foreach from=$sinfos item=samp}
<tr>
<td><a href="">{$samp.players}</a></td>
</tr>
{foreachelse}
<tr>
<td colspan="6">Es sind keine Spieler Online.</td>
</tr>
{/foreach}
Obs so genau geht kann ich nicht sagen habs nicht Überprüft da ich zurzeit keinen Zugriff auf Entsprechende Daten von mir habe
//Push
Bin leider nicht vorran gekommen
Du musst die bereits genannte API in einem EventListener verarbeiten und an das
Template die Infos weiter geben.
Du musst die bereits genannte API in einem EventListener verarbeiten und an das
Template die Infos weiter geben.
Danke, hat sich somit