View Single Post
vBrute

JCF Member

Joined: Sep 2013

Posts: 32

vBrute is doing well so far

Jun 8, 2017, 01:10 AM
vBrute is offline
Reply With Quote
I have written to the comments section of the News about this update, but noone sawit, so i write here too

Hello, what exactly did u change in transmitting gamedata, because my LGSL status stopped working, it is unable now to display player names in extended info
http://brut.me/lgsl/?s=8
and what exactly information else are sended, that could be added into the table in extended information past the version of the game?
I add the code here

Code:
function lgsl_query_42(&$server, &$lgsl_need, &$lgsl_fp)
{
if (!isset($server['e']['version'])) {
fwrite($lgsl_fp, "\x06\x0D\x05\x00"); // request JJ2 status via UDP
if (strlen($buffer = fread($lgsl_fp, 1024)) < 20) return FALSE;

$buffer = substr($buffer, 7);
if (ord(lgsl_cut_byte($buffer, 1))) $server['e']['spectator mode'] = 'enabled';
$ver = lgsl_cut_byte($buffer, 2);
$server['e']['version'] = '1.'.$ver;
$buffer = substr($buffer, 3);
$server['s']['players'] = ord(lgsl_cut_byte($buffer, 1));

$gamemode = array('Single Player','Coop','Battle','Race','Treasure','CTF');
$mode = ord(lgsl_cut_byte($buffer, 1));
$server['s']['game'] = $mode < 6 ? $gamemode[$mode] : 'unknown';
$server['s']['playersmax'] = ord(lgsl_cut_byte($buffer, 1));
$server['s']['name'] = str_replace('|', '', lgsl_cut_pascal($buffer, 1));

fwrite($lgsl_fp, "\x85\x0F\x03\x08\x15\xB4\x05\x00\x32\x34\x20\x20"); // second request via UDP
$buffer = fread($lgsl_fp, 1024);
if (ord(substr($buffer, -1)) >= 160) {
$server['s']['password'] = 1;
if ($lgsl_need['p']) { // needs password in the server's "Comment" field to return player info
global $comment;
if (!empty($comment)) fwrite($lgsl_fp, "r\x96\x0A\x07{$comment}"); // send password
}
}
$lgsl_need['switch'] = TRUE; // switch to tcp for the next query
}
else {
fwrite($lgsl_fp, "\x09\x0F\x01\x04".substr($server['e']['version'], -2)."\x20\x20\x01"); // request status via TCP
$buffer = fread($lgsl_fp, 1024);
if (strlen($buffer) < 10) { return TRUE; }
$slot = substr(lgsl_cut_byte($buffer, 4), 2, 1);
$server['s']['map'] = lgsl_cut_pascal($buffer, 1, -4);
if (!$lgsl_need['e'] && !$lgsl_need['p']) return TRUE;

fwrite($lgsl_fp, "\x08\x3F\x20\x03\x04\x00\x05\x00");
$buffer = fread($lgsl_fp, 1024);
$buffer = fread($lgsl_fp, 1024);
if ($offset = strpos($buffer, 'Z')) {
$buffer = substr($buffer, $offset+10);
$i = 0;
while ($buffer = substr($buffer, 5)) {
if (($part = ord(substr($buffer, 1, 1))) < 65 || $part > 122) {
$j = 0;
while ($lgsl_need['p'] && ($buffer = fread($lgsl_fp, 1024))) { // cleanup before requesting players
if ($j == 4) return TRUE; // failsafe
$j++;
}
break;
}
$server['e']['mutator'.$i] = lgsl_cut_pascal($buffer, 1);
$i++;
}
}
if (!$lgsl_need['p']) return TRUE;

$botname = "LGSL";
$char = array('Jazz', 'Spaz', 'Lori', 'Bird', 'Frog');
fwrite($lgsl_fp, chr(strlen($botname)+17)."\x0E\x01{$slot}\x02\x00\x40\x40\x40\x40\x11{$slot}\x0A\x0D\x00\x00{$botname}\x00");
$i = 0;
while (TRUE) {
if (strlen($buffer = fread($lgsl_fp, 8192)) < 18) break;
while ($buffer) {
if (($part = lgsl_cut_string($buffer, 0, "\x0A\x0D")) == $buffer) break 2;
if (($name = lgsl_cut_string($buffer, 2)) == $botname) continue;
else $server['p'][$i]['name'] = str_replace('|', '', $name);
$server['p'][$i]['char'] = $char[ord(substr($part, -8, 1))];
$server['p'][$i]['team'] = ord(substr($part, -7, 1)) ? 'red': 'blue';
$i++;
if ($i == $server['s']['players']) break 2;
}
}
}
return TRUE;
}
btw: here is how my chatlogger looks like now on windows xp server
http://brut.me/jj2/chatlogger.png
__________________
admin of BRUT.me