|
|
Hi!
Ich hab den Code von Teamspeakdisplay in meine Page eingebaut und würde gerne 2 Kleinigkeiten ändern, den Rest hab ich schon soweit hinbekommen:
Als erstes würde ich für die Playerflags gerne *.gif anzeigen lassen, anstelle vom Text. (Wie beim Teamspeakviewer).
Ausserdem würde ich gerne die Funktion der Uptime erweitern, das er es so anzeigt: DD:HH:MM:SS
Hier die Codes der beiden Funktionen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
function _setPlayerDisplayName(&$playerInfo) {
// Determine the player status (U = Unregistered, R = Registered, SA = Server Admin,
// CA = Channel Admin, AO = Auto-Operator, AV = Auto-Voice, O = Operator, V = Voice)
if (($playerInfo["userstatus"] & 4) == 4) { $playerstatus = "R"; } else { $playerstatus = 'U'; }
if (($playerInfo["userstatus"] & 1) == 1) { $playerstatus .= " SA"; }
if (($playerInfo["privileg"] & 1) == 1) { $playerstatus .= " CA"; }
if (($playerInfo["privileg"] & 8) == 8) { $playerstatus .= " AO"; }
if (($playerInfo["privileg"] & 16) == 16) { $playerstatus .= " AV"; }
if (($playerInfo["privileg"] & 2) == 2) { $playerstatus .= " O"; }
if (($playerInfo["privileg"] & 4) == 4) { $playerstatus .= " V"; }
if (($playerInfo["attribute"] & 64) == 64) { $playerstatus .= " Rec"; }
// Determine the player attributes to be listed behind the player status (WV = Want Voice)
if (($playerInfo["attribute"] & 2) == 2) { $playerattributes = ' WV'; } else { $playerattributes = ''; }
$playerInfo["displayname"] = $playerInfo["playername"] . " (" . $playerstatus . ")" . $playerattributes;
}
|
|
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
function _formatTime($totaltime) {
$hours = floor($totaltime / 3600);
$minutes = floor(($totaltime % 3600) / 60);
return (($hours < 10) ? "0" : "") . $hours . "h:" . (($minutes < 10) ? "0" : "") . $minutes."m";
}
|
|
Naja, und wenn ich schon am Fragen bin: Der Viewer zeigt nur die max. User an, aber nicht wie gewünscht: Current User / max. User.
Wenn da einer ne Antwort wüsste, wäre das natürlich das Tüpfelchen aufm i
Hier der gesamte Code, da er in mein Posting nicht reinpasst: Klick
ToM
__________________

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Nightwing: 04.09.2008 01:27.
|
|
|
|
|
 |
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von Nightwing
Als erstes würde ich für die Playerflags gerne *.gif anzeigen lassen, anstelle vom Text.
Wenn du es ganz schnell und Dirty machen willst:
Zeile 108
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
|
$playerInfo["displayname"] = $playerInfo["playername"] . " <img src=\"teamspeakdisplay/" . $playerstatus . ".gif alt=\"" . $playerstatus . "\" />" . $playerattributes;
|
|
Für jeden möglichen Status entsprechend die .gif unter teamspeakdisplay/ ablegen und SA.gif, CA.gif, U.gif, Rec.gif [...] bennennen. Ist zwar unschön weil Hardgecoded - aber alles andere ist aufwendiger.
Uptime is the Game Downtime is the Name:
Zeile 288
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
function _formatTime($totaltime) {
$days = floor($totaltime / 86400);
$hours = floor($totaltime / 3600);
$minutes = floor(($totaltime % 3600) / 60);
$sekunds = floor($minutes / 60);
return (($days < 10) ? "0" : "") . $days . "d:" . (($hours < 10) ? "0" : "") . $hours . "h:" . (($minutes < 10) ? "0" : "") . $minutes."m" . (($sekunds < 10) ? "0" : "") . $sekunds."s";
}
|
|
Naja, und wenn ich schon am Fragen bin: Der Viewer zeigt nur die max. User an, aber nicht wie gewünscht: Current User / max. User.
Wenn da einer ne Antwort wüsste, wäre das natürlich das Tüpfelchen aufm i
hmmm.
~Zeile 430 einfügen
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
|
// determine number of all players
$allplayerscount = 0;
foreach($serverInfo["playerlist"]) {
$allplayerscount++;
}
|
|
Zeile 400 (im Original)
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
|
$popupInfo = "Server address: " . $settings["serveraddress"] . (($settings["serverudpport"] != 8767) ? (":" . $settings["serverudpport"]): "") . ", Players: " . $allplayerscount . "/" . $serverInfo["serverinfo"]["server_maxusers"] . ", Uptime: " . $this->_formatTime($serverInfo["serverinfo"]["server_uptime"]);
|
|
Da bin ich mir aber nicht sicher ob ed die richtige Stelle ist. Alles ungetestet und auf eigene Gefahr nur nach Backup und Mitdenken.
Tipp und DenkFehler nicht ausgeschlossen.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
 |
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von Nightwing
Schnell und Dirty iss immer gut 
, mag nur edd funzen, anstelle der Icons zeigt der mir den Player so an:
Ach mist.
Zeile 469:
echo(str_replace(" ", " ", htmlspecialchars($playerInfo["displayname"])));
Wird ganz zu recht - alles was nach html aussieht escapt damit ein Spieler der <javascript> heißt nicht die ganze Seite zerlegt. *Grrr*
Die Uptime funktioniert zwar - aber die Stunden laufen weiter hoch und hören nicht bei 24 auf... Damn solche sinnlosen Flüchtigkeitsfehler..
Parse error: syntax error, unexpected ')' in /www/htdocs/w008092d/serverdownload/hp/tsViewer/teamspeakdisplay.php on line 432
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
|
// determine number of all players
$allplayerscount = 0;
foreach($serverInfo["playerlist"] as $playerInfo) {
$allplayerscount++;
}
|
|
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
|
echo("Max. Players: ". $allplayerscount ."/".$serverInfo["serverinfo"]["server_maxusers"] ."</span></td></tr>"); |
|
Aber die Zeit und die Icons - da möchte ich noch ein wenig nachdenken. Dafür müsste man $playerInfo["displayname"] nochmal zerlegen in Name, Status, etc...
Doch alles nicht so einfach wie es auf den ersten Blick scheint..
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
|
|
Mit dem allplayerscount näherst Du dich an:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
|
Max. Players: /500 |
|
Liegt das daran, das schon 2 Player drauf sind? Eher undenkbar, da die Abfrage ja startet, wenn ich F5 drück.
Jo, nur keine Eile. Hilft es Dir weiter, wenn ich Dir all die Dateien als Paket schnüre und sende?
ToM
Nachtrag:
Mein Webmaster schaute grad mal drüber, die Icons sind drin:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
|
function _setPlayerDisplayName(&$playerInfo) {
// Determine the player status (U = Unregistered, R = Registered, SA = Server Admin,
// CA = Channel Admin, AO = Auto-Operator, AV = Auto-Voice, O = Operator, V = Voice)
if (($playerInfo["userstatus"] & 4) == 4) { $playerstatus = "<img src='R.gif' alt='R' />"; } else { $playerstatus = "<img src='U.gif' alt='' />"; }
if (($playerInfo["userstatus"] & 1) == 1) { $playerstatus .= "<img src='SA.gif' alt='SA' />"; }
if (($playerInfo["privileg"] & 1) == 1) { $playerstatus .= "<img src='CA.gif' alt='CA' />"; }
if (($playerInfo["privileg"] & 8) == 8) { $playerstatus .= "<img src='AO.gif' alt='AO' />"; }
if (($playerInfo["privileg"] & 16) == 16) { $playerstatus .= "<img src='AV.gif' alt='AV' />"; }
if (($playerInfo["privileg"] & 2) == 2) { $playerstatus .= "<img src='O.gif' alt='O' />"; }
if (($playerInfo["privileg"] & 4) == 4) { $playerstatus .= "<img src='V.gif' alt='V' />"; }
if (($playerInfo["attribute"] & 64) == 64) { $playerstatus .= "<img src='Rec.gif' alt='REC' />"; }
// Determine the player attributes to be listed behind the player status (WV = Want Voice)
if (($playerInfo["attribute"] & 2) == 2) { $playerattributes = ' WV'; } else { $playerattributes = ''; }
$playerInfo["displayname"] = $playerInfo["playername"] . " " . $playerstatus . $playerattributes;
//$playerInfo["displayname"] = $playerInfo["playername"] . " <img src=\"" . $playerstatus . ".gif alt=\"" . $playerstatus . "\" />" . $playerattributes;
}
|
|
weiter unten, jetzt Zeile 481:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
|
echo($playerInfo["displayname"]);
|
|
und:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
// determine number of all players
$allplayerscount = 0;
foreach($serverInfo["playerlist"] as $count) {
$allplayerscount++;
}
|
|
__________________

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 11.08.2008 21:04.
|
|
|
|
|
 | |
 |
|
|
Original von Kellerkind
Das hilft natürlich - ist aber keine soooo gute Idee.
Im Original sorgt das htmlspecialchars()
Dafür das Spielernamen wie <iframe> http://devil.tld</iframe> oder <mailto:victim@example.com> so angezeigt werden statt den Code auszuführen. Wenn du solche "böse" Namen (Auch bei Gästen) ausschließen kannst ist alles OK. Ansonsten potentiell Gefährlich. Vielleicht in der bad_names.txt und in der server.ini von Teamspeak vorkehrungen treffen. (DisAllowedClientNameChars) Dürfte allerdings schwierig werden da alles abzudecken - %3c%48%54%4D%4c%3e ist z.B. genauso gefährlich wie <html> Ich weiß nicht wieviel Zeichen ein TS-Nick eigentlich enthalten kann, wenn das ein sehr hoher Wert, ich sag mal > 20 ist könnte jemand solange er sich mit einem Geschickt gewählten Namen im TS aufhällt die komplette Seite verunstalten.
Also: Nur mit Vorsicht so verwenden.
Sooo, grad mal getestet:
<iframe>http://devil.tld</iframe> wird zwar angezeigt, jedoch wirft der PerlMod diesen Namen runter, da Bad Nick Protection (http:// & www.)
Vorteil PerlMod: Er kickt auch, wenns nur ein Bestandteil des Namens ist
<mailto:victim@example.com>: Hier wird der name nicht angezeigt, nur die Playerflags, scheint zu funktionieren, wie es soll.
%3c%48%54%4D%4c%3e zeigts an, passiert aber nix.
TS lässt maximal 29 Zeichen zu, mehr iss nicht, ansonsten greift der PerlMod mit der BugDetection --> Kick
Würd mich allerdings nicht wundern, wenn Du ne Möglichkeit finden würdest
Danke
ToM
Nachtrag: mailto steht nun auch auf der Bad Nick Liste, ebenso <iframe>
__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 12.08.2008 11:12.
|
|
|
|
|
 |
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von Nightwing
Würd mich allerdings nicht wundern, wenn Du ne Möglichkeit finden würdest
Das währe nicht schlimm. Schlimm wenn jemand anders was einfällt
Das Risioko scheint ja abschätzbar zu sein wenn du einen Mod hast der konfigurierbar ist. Aber wenn du noch Lust und zuviel Zeit hast:
Erst Status und Notgezwungen Attribute lösen damit es getrennt per htmlspecialchars() gejagt werden kann oder auch nicht.
$playerstatus kann unverändert bleiben, das gif wird später drangebastelt.
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
|
function _setPlayerDisplayName(&$playerInfo) {
// Determine the player status (U = Unregistered, R = Registered, SA = Server Admin,
// CA = Channel Admin, AO = Auto-Operator, AV = Auto-Voice, O = Operator, V = Voice)
if (($playerInfo["userstatus"] & 4) == 4) { $playerstatus = "R"; } else { $playerstatus = 'U'; }
if (($playerInfo["userstatus"] & 1) == 1) { $playerstatus .= " SA"; }
if (($playerInfo["privileg"] & 1) == 1) { $playerstatus .= " CA"; }
if (($playerInfo["privileg"] & 8) == 8) { $playerstatus .= " AO"; }
if (($playerInfo["privileg"] & 16) == 16) { $playerstatus .= " AV"; }
if (($playerInfo["privileg"] & 2) == 2) { $playerstatus .= " O"; }
if (($playerInfo["privileg"] & 4) == 4) { $playerstatus .= " V"; }
if (($playerInfo["attribute"] & 64) == 64) { $playerstatus .= " Rec"; }
// Determine the player attributes to be listed behind the player status (WV = Want Voice)
if (($playerInfo["attribute"] & 2) == 2) { $playerattributes = ' WV'; } else { $playerattributes = ''; }
// Hack Playerstatus und Attribute extra
// $playerInfo["displayname"] = $playerInfo["playername"] . " (" . $playerstatus . ")" . $playerattributes;
$playerInfo["displayname"] = $playerInfo["playername"];
}
|
|
Dann im Channel Attribute und Status wieder dranbasteln. Und hier bei $playerstatus das .gif dranpappen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
// Display player:
echo("<table><tr><td>");
echo("<img src=\"teamspeakdisplay/treeimage" . ((($counter + 1) == $currentchannels) ? "4" : "1") . ".png\" alt=\"\">");
echo("<img src=\"teamspeakdisplay/treeimage" . ((($counter_playerandsubchannels + 1) == $currentplayersandsubchannels) ? "3" : "2") . ".png\" alt=\"\">");
echo("<img src=\"teamspeakdisplay/player_" . $playerInfo["displayimage"] . ".png\" alt=\"" . $playerInfo["displayimage"] . "\" title=\"" . $popupInfo . "\">");
echo("</td><td class=\"teamspeakplayer\" title=\"" . $popupInfo . "\">");
echo(str_replace(" ", " ", htmlspecialchars($playerInfo["displayname"])));
// Hack Playerstatus + attribute extra ohne htmlspecialchars - kann eh nur feste Werte haben.
echo("<img src=\"" . $playerstatus . "\".gif alt=\"" . $playerstatus . "\" />" . $playerattributes . "");
echo("</td></tr></table>\n"); |
|
Und für Subchannel dasselbe
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
// Display player:
echo("<table><tr><td>");
echo("<img src=\"teamspeakdisplay/treeimage" . ((($counter + 1) == $currentchannels) ? "4" : "1") . ".png\" alt=\"\">");
echo("<img src=\"teamspeakdisplay/treeimage" . ((($counter_playerandsubchannels + 1) == $currentplayersandsubchannels) ? "4" : "1") . ".png\" alt=\"\">");
echo("<img src=\"teamspeakdisplay/treeimage" . ((($counter_player + 1) == $currentplayers) ? "3" : "2") . ".png\" alt=\"\">");
echo("<img src=\"teamspeakdisplay/player_" . $playerInfo["displayimage"] . ".png\" alt=\"" . $playerInfo["displayimage"] . "\" title=\"" . $popupInfo . "\">");
echo("</td><td class=\"teamspeakplayer\" title=\"" . $popupInfo . "\">");
echo(str_replace(" ", " ", htmlspecialchars($playerInfo["displayname"])));
// Hack Playerstatus + attribute extra ohne htmlspecialchars - kann eh nur feste Werte haben.
echo("<img src=\"" . $playerstatus . "\".gif alt=\"" . $playerstatus . "\" />" . $playerattributes . "");
echo("</td></tr></table>\n");
|
|
Ich habs aber wieder nicht getestet - hier[TM] hab ich kein TS...
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
|
|
Okay, eins hätt ich noch, Kelly:
Wie rechnet der sich hier den Status raus, den der User hat?
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
|
function _setPlayerDisplayImage(&$playerInfo) {
// Determine the right userpicture:
if (($playerInfo["attribute"] & 8) == 8) { $playerImage = "away"; }
else if (($playerInfo["attribute"] & 32) == 32) { $playerImage = "mutespeakers"; }
else if (($playerInfo["attribute"] & 16) == 16) { $playerImage = "mutemicrophone"; }
else if (($playerInfo["attribute"] & 1) == 1) { $playerImage = "channelcommander"; }
else { $playerImage = "normal"; }
$playerInfo["displayimage"] = $playerImage;
}
function _setPlayerDisplayName(&$playerInfo) {
// Determine the player status (U = Unregistered, R = Registered, SA = Server Admin,
// CA = Channel Admin, AO = Auto-Operator, AV = Auto-Voice, O = Operator, V = Voice)
if (($playerInfo["userstatus"] & 4) == 4) { $playerstatus = "<img src='R.png' alt='R' />"; } else { $playerstatus = "<img src='U.png' alt='U' />"; }
if (($playerInfo["userstatus"] & 1) == 1) { $playerstatus .= "<img src='SA.png' alt='SA' />"; }
if (($playerInfo["privileg"] & 1) == 1) { $playerstatus .= "<img src='CA.png' alt='CA' />"; }
if (($playerInfo["privileg"] & 8) == 8) { $playerstatus .= "<img src='AO.png' alt='AO' />"; }
if (($playerInfo["privileg"] & 16) == 16) { $playerstatus .= "<img src='AV.png' alt='AV' />"; }
if (($playerInfo["privileg"] & 2) == 2) { $playerstatus .= "<img src='O.png' alt='O' />"; }
if (($playerInfo["privileg"] & 4) == 4) { $playerstatus .= "<img src='V.png' alt='V' />"; }
if (($playerInfo["attribute"] & 64) == 64) { $playerstatus .= "<img src='Rec.png' alt='REC' />"; }
// Determine the player attributes to be listed behind the player status (WV = Want Voice)
if (($playerInfo["attribute"] & 2) == 2) { $playerattributes = '<img src="WV.png" alt="WV" />'; } else { $playerattributes = ''; }
$playerInfo["displayname"] = $playerInfo["playername"] . " " . $playerstatus . $playerattributes;
//$playerInfo["displayname"] = $playerInfo["playername"] . " <img src=\"" . $playerstatus . ".gif alt=\"" . $playerstatus . "\" />" . $playerattributes;
}
function _getPlayerList($socket) {
// Request, read and parse the player list
fputs($socket, "pl\n");
$buffer = $this->_stripEOL(fgets($socket, 4096));
$result = array();
if (strtoupper(substr($buffer, 0, 5)) == "ERROR") { return $result; }
do {
$buffer = $this->_stripEOL(fgets($socket, 4096));
if (($buffer != "OK") && (strtoupper(substr($buffer, 0, 5)) != "ERROR")) {
$playerid = $this->_stripPartFromString($buffer);
$result[$playerid] = array(
"playerid" => $playerid,
"channelid" => $this->_stripPartFromString($buffer),
"receivedpackets" => $this->_stripPartFromString($buffer),
"receivedbytes" => $this->_stripPartFromString($buffer),
"sentpackets" => $this->_stripPartFromString($buffer),
"sentbytes" => $this->_stripPartFromString($buffer),
"paketlost" => $this->_stripPartFromString($buffer) / 100,
"pingtime" => $this->_stripPartFromString($buffer),
"totaltime" => $this->_stripPartFromString($buffer),
"idletime" => $this->_stripPartFromString($buffer),
"privileg" => $this->_stripPartFromString($buffer),
"userstatus" => $this->_stripPartFromString($buffer),
"attribute" => $this->_stripPartFromString($buffer),
"ip" => $this->_stripPartFromString($buffer),
"playername" => $this->_stripQuotes($this->_stripPartFromString($buffer)),
"loginname" => $this->_stripQuotes($this->_stripPartFromString($buffer))
);
$this->_setPlayerDisplayImage($result[$playerid]);
$this->_setPlayerDisplayName($result[$playerid]);
}
} while (($buffer != "OK") && (strtoupper(substr($buffer, 0, 5)) != "ERROR") && (!feof($socket)));
return $result;
}
function _getLimitedPlayerList($socket, $channelList) {
$playerList = $this->_getPlayerList($socket);
$result = array();
foreach($playerList as $playerInfo) {
foreach($channelList as $channelInfo) {
if ($playerInfo["channelid"] == $channelInfo["channelid"]) {
$result[$playerInfo["playerid"]] = $playerInfo;
}
}
}
return $result;
}
|
|
Da die Abfrage des PerlMod über TelNet anders aussieht, oder ich sie anders sehe
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
# Class method: new()
# Creates a new TeamSpeak2::TCPquery::Player object
#
sub new {
my ($class, $tcpquery, @player) = @_;
my $self = bless {
tcpquery => $tcpquery,
server => $tcpquery->{selected},
p_id => $player[0],
c_id => $player[1],
ps => $player[2],
bs => $player[3],
pr => $player[4],
br => $player[5],
pl => $player[6],
ping => $player[7],
logintime => $player[8],
idletime => $player[9],
cprivs => {
total => $player[10],
channeladmin => ($player[10] & 1),
operator => ($player[10] & 2),
voice => ($player[10] & 4),
auto_operator => ($player[10] & 8),
auto_voice => ($player[10] & 16),
},
pprivs => {
total => $player[11],
serveradmin => ($player[11] & 1),
allowed_reg => ($player[11] & 2),
registered => ($player[11] & 4),
sticky => ($player[11] & 16),
},
pflags => {
total => $player[12],
c_commander => ($player[12] & 1),
v_requested => ($player[12] & 2),
no_whispers => ($player[12] & 4),
away => ($player[12] & 8),
mic_muted => ($player[12] & 16),
snd_muted => ($player[12] & 32),
recording => ($player[12] & 64),
},
ip => $player[13],
nick => $player[14],
loginname => $player[15],
};
return $self;
}
|
|
Hintergrund: Der Viewer zeigt den Sticky Status nicht an, soll ja vollkommen sein
Hast Du eine Idee?
ToM
__________________

|
|
|
|
|
 |
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von Nightwing
Wie rechnet der sich hier den Status raus, den der User hat?
Ich hab zwar keine Doku dazu gefunden, aber den Bereich des PerlMod dazuzuposten war eine gute Idee
Daraus schlussfolgere ich mal das es userstatus 16 sein sollte.
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
|
// Determine the player status (U = Unregistered, R = Registered, SA = Server Admin,
// CA = Channel Admin, AO = Auto-Operator, AV = Auto-Voice, O = Operator, V = Voice, S = Sticky)
if (($playerInfo["userstatus"] & 4) == 4) { $playerstatus = "<img src='R.png' alt='R' />"; } else { $playerstatus = "<img src='U.png' alt='U' />"; }
if (($playerInfo["userstatus"] & 1) == 1) { $playerstatus .= "<img src='SA.png' alt='SA' />"; }
if (($playerInfo["userstatus"] & 16) == 16) { $playerstatus .= "<img src='Sticky.png' alt='Sticky' />"; }
|
|
(Einfach das Array Playerid durchzählen, dann entspricht bei tsviewer playerid = 0 im Perlmod $player[0], sentpackets = 5 im Perlmod $player[5] u.s.w.
PS: Und $playerInfo["userstatus"] 2 müsste Allow Registered sein, fehlt auch noch
PPS: Aber was ist userstatus 8 bzw $player[11] = 8 -- fehlt in beiden..
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kellerkind: 04.09.2008 08:28.
|
|
|
|
|
|
|
Bingo! Du bist mein persönlicher Held!
Was den userstatus 8 angeht, keine Ahnung, der PerlMod greift eigentlich alles ab, was es gibt. Ein weiterer Fehler in TS 2?
ToM
__________________

|
|
|
|
|
|
|
Kelly, ich hab noch eine Frage zu PHP:
Wie kann ich eine globale Variable in der HP anlegen, um dem TS Display mehr Informationen zu entlocken, die nicht jeden was angehen?
Quasi eine (bestimmt bestehende) Variable global gültig machen.
Beispiel Popupinfo Player:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
|
if($check_if_var_admin == 1) $popupInfo = "Loginname: " .$playerInfo["loginname"] . ", IP: " .$playerInfo["ip"] . ", ID: " .$playerInfo["playerid"] . ", Time online: " . $this->_formatTime($playerInfo["totaltime"]) . ", Time idle: " . $this->_formatTime($playerInfo["idletime"]) . ", Ping: " . $playerInfo["pingtime"] . "ms";
else $popupInfo = "ID: " .$playerInfo["playerid"] . ", Time online: " . $this->_formatTime($playerInfo["totaltime"]) . ", Time idle: " . $this->_formatTime($playerInfo["idletime"]) . ", Ping: " . $playerInfo["pingtime"] . "ms";
|
|
Nebenbei gefragt: Wenn zwischen den Variablen Text steht, steht der in " " und ist mit einem . zur var getrennt.
Mache ich anstelle vom . ein , ergibt das einen Zeilenumbruch?
ToM
__________________

|
|
|
|
|
 |
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von Nightwing
Wie kann ich eine globale Variable in der HP anlegen, um dem TS Display mehr Informationen zu entlocken, die nicht jeden was angehen?
Quasi eine (bestimmt bestehende) Variable global gültig machen.
Beispiel Popupinfo Player:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
|
if($check_if_var_admin == 1) [...]
|
|
Das kommt drauf an wie deine Seite (Von da kommt das var_admin 1 im Beispiel?) benutzt.
Wenn es per $POST / $GET weitergeschleppt wird reicht register_globals auf 1 zu stellen. Aber niemand der Klar bei Verstand ist macht das noch.
Entweder hast du eine SessionID an deiner url - dann musst du die Funktion mit in dem TS Script einbinden.
Oder es wird Benutzername / Passwort in einem Cookie gespeichert, dann musst du den Keks auslesen und vermutlich mit der DB abgleichen. Solange du auf dem selben Domainnamen bist sollte das gehen.
Meistens wird beides kombiniert, Cookies weil sie "Browserfenster zu" resident sind und Session in der url damit es auch mit deaktivierten Keksen geht.
Kann ich so nicht sagen - aber meistens reicht ein include () und dann halt die passende Funktion aufrufen. Musst du dir die bestehenden Seiten ansehen, und nach sowas wie
include_once('config.php');
require_once('login.php');
if (!checkUser())
{
header("Location:login.php");
}
suchen.
Original von Nightwing
Wenn zwischen den Variablen Text steht, steht der in " " und ist mit einem . zur var getrennt.
Mache ich anstelle vom . ein , ergibt das einen Zeilenumbruch?
Der . "klebt" nur den Inhalt der nächsten Variable an den Text davor.
Das Komma macht dasselbe, ich hab aber noch niemand gesehen der es mit Komma schreibt. Lässt du den Punkt (oder Komma) weg gibt es einfach nur ein Fehler. Die Anführungszeichen sind wichtig sonst würde einfach nur der Text "$foo" ausgegeben. Also genau so - nicht der Inhalt.
Deswegen echo "hallo" . $world ."!";
Wenn du einen Zeilenumbruch willst schreib ihn einfach vorher oder hinterher rein
echo "hallo<br />" . $world . "!";
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
|
|
Ich bin grad noch am suchen. Ich hatte oben vergessen zu posten, das es sich um WebSpell handelt. Hilft das weiter?
Die var $check_if_var_admin hab ich frei erfunden, um mein Anliegen deutlicher vorzubringen.
Kann ich das, was in der login.php steht, bedenkenlos posten? Nicht, das sich da einer nen Scherz erlauben kann
Danke für die Erklärung mit dem Zeilenumbruch. Ich war da von Perl etwas verwirrt, da es dort mit einem Komma geht.
ToM
__________________

|
|
|
|
|
 | |
|
|
Wir nähern uns
teamspeakdisplay.php
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
include("_mysql.php");
include("_settings.php");
include('_functions.php');
$check_if_admin_online = 0;
if(issuperadmin($userID)) $check_if_admin_online = 1;
|
|
Problem, er zeigt mir auch im ausgeloggten Zustand den Loginname an, trotz definierter Var:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
|
if($check_if_admin_online = 1) $popupInfo = "Loginname: " .$playerInfo["loginname"] . ", ID: " .$playerInfo["playerid"] . ", Time online: " . $this->_formatTime($playerInfo["totaltime"]) . ", Time idle: " . $this->_formatTime($playerInfo["idletime"]) . ", Ping: " . $playerInfo["pingtime"] . "ms";
else $popupInfo = "ID: " .$playerInfo["playerid"] . ", Time online: " . $this->_formatTime($playerInfo["totaltime"]) . ", Time idle: " . $this->_formatTime($playerInfo["idletime"]) . ", Ping: " . $playerInfo["pingtime"] . "ms";
|
|
Schönheitsproblem:
Den Zeilenumbruch mit <br /> mag er nicht. Entweder steht der Umbruch im Text drin, wenn in " ", oder es verursacht einen Fehler.
ToM
__________________

|
|
|
|
|
 | |
 | |
|
|
 |
Impressum ||Datenschutzerklärung
|