1867 lines
71 KiB
PHP
1867 lines
71 KiB
PHP
<?php
|
|
/* vim: set noexpandtab tabstop=2 softtabstop=2 shiftwidth=2: */
|
|
|
|
/**
|
|
* Chat plugin.
|
|
* Provides Jfreu admin commands.
|
|
* This file is included by jfreu.plugin.php, so don't list it in plugins.xml!
|
|
* Updated by Xymph
|
|
*
|
|
* Dependencies: used by jfreu.plugin.php
|
|
*/
|
|
|
|
// handles action id's "-4001"-"-4200" for /jfreu badword
|
|
// handles action id's "-4201"-"-4400" for /jfreu banfor 1H
|
|
// handles action id's "-4401"-"-4600" for /jfreu banfor 24H
|
|
// handles action id's "-4601"-"-4800" for /jfreu unban
|
|
// handles action id's "-4801"-"-5000" for /jfreu addvip
|
|
// handles action id's "-5001"-"-5200" for /jfreu removevip
|
|
// handles action id's "-5201"-"-5400" for /jfreu unspec
|
|
// handles action id's "-5401"-"-5600" for /jfreu unban in listbans
|
|
// handles action id's "-5601"-"-5800" for /jfreu removevip in listvips
|
|
// handles action id's "-5801"-"-6000" for /jfreu removevipteam in listvipteams
|
|
Aseco::registerEvent('onPlayerManialinkPageAnswer', 'event_jfreu');
|
|
|
|
function init_jfreu_admin_commands($aseco)
|
|
{
|
|
addJfreuAdminChatCommand('help', 'Shows Jfreu commands');
|
|
addJfreuAdminChatCommand('helpall', 'Displays help for Jfreu commands');
|
|
addJfreuAdminChatCommand('autochangename', 'Auto change servername {ON/OFF}');
|
|
addJfreuAdminChatCommand('setrank', 'Sets ranklimiting {ON/OFF}');
|
|
addJfreuAdminChatCommand('setlimit', 'Sets ranklimit value');
|
|
addJfreuAdminChatCommand('autorank', 'Sets autoranking {ON/OFF}');
|
|
addJfreuAdminChatCommand('offset', 'Sets autorank offset (-999 - 999)');
|
|
addJfreuAdminChatCommand('hardlimit', 'Sets hardlimit value');
|
|
addJfreuAdminChatCommand('autorankminplayers', 'Sets min players for autorank {0-50}');
|
|
addJfreuAdminChatCommand('autorankvip', 'Include VIPs in autorank {ON/OFF}');
|
|
addJfreuAdminChatCommand('maxplayers', 'Sets maxplayers for Kick HiRank');
|
|
addJfreuAdminChatCommand('kickhirank', 'Kick HiRank when server full {ON/OFF}');
|
|
addJfreuAdminChatCommand('listlimits', 'Displays rank limit settings');
|
|
addJfreuAdminChatCommand('kickworst', 'Kicks worst players {count}');
|
|
addJfreuAdminChatCommand('players', 'Displays list of known players {string}');
|
|
addJfreuAdminChatCommand('unspec', 'UnSpecs player {login/ID} (clear SpecOnly)');
|
|
addJfreuAdminChatCommand('addvip', 'Adds a VIP {login/ID}');
|
|
addJfreuAdminChatCommand('removevip', 'Removes a VIP {login/ID}');
|
|
addJfreuAdminChatCommand('addvipteam', 'Adds a VIP_Team {team}');
|
|
addJfreuAdminChatCommand('removevipteam', 'Removes VIP_Team {team}');
|
|
addJfreuAdminChatCommand('listvips', 'Displays VIPs list');
|
|
addJfreuAdminChatCommand('listvipteams', 'Displays VIP_Teams list');
|
|
addJfreuAdminChatCommand('writelists', 'Saves VIP/VIP_Team lists (def: jfreu.vips.xml)');
|
|
addJfreuAdminChatCommand('readlists', 'Loads VIP/VIP_Team lists (def: jfreu.vips.xml)');
|
|
addJfreuAdminChatCommand('badwords', 'Sets badwords bot {ON/OFF}');
|
|
addJfreuAdminChatCommand('badwordsban', 'Sets badwords ban {ON/OFF}');
|
|
addJfreuAdminChatCommand('badwordsnum', 'Sets badwords limit {count}');
|
|
addJfreuAdminChatCommand('badwordstime', 'Sets banning period {mins}');
|
|
addJfreuAdminChatCommand('badword', 'Gives extra badword warning {login/ID}');
|
|
addJfreuAdminChatCommand('banfor', 'Bans player {mins/hoursH} {login/ID}');
|
|
addJfreuAdminChatCommand('unban', 'UnBans temporarily banned player');
|
|
addJfreuAdminChatCommand('listbans', 'Displays temporarily banned players');
|
|
addJfreuAdminChatCommand('message', 'Fakes message from server {msg}');
|
|
addJfreuAdminChatCommand('player', 'Fakes message from player {login/ID} {msg}');
|
|
addJfreuAdminChatCommand('nopfkick', 'Sets NoPfKick {map/time/OFF}');
|
|
addJfreuAdminChatCommand('cancel', 'Cancels current vote (kick/ban/nextmap/restart)');
|
|
addJfreuAdminChatCommand('novote', 'Auto-cancel CallVotes {ON/OFF}');
|
|
addJfreuAdminChatCommand('unspecvote', 'Allow /unspec votes {ON/OFF}');
|
|
addJfreuAdminChatCommand('infomessages', 'Sets info messages {2/1/0}');
|
|
addJfreuAdminChatCommand('writeconfig', 'Saves Jfreu config (def: jfreu.config.xml)');
|
|
addJfreuAdminChatCommand('readconfig', 'Loads Jfreu config (def: jfreu.config.xml)');
|
|
} // init_jfreu_admin_commands
|
|
|
|
function chat_jfreu($aseco, $command)
|
|
{
|
|
$red = $aseco->server->jfreu->red;
|
|
$yel = $aseco->server->jfreu->yellow;
|
|
$whi = $aseco->server->jfreu->white;
|
|
$blu = $aseco->server->jfreu->blue;
|
|
$gre = $aseco->server->jfreu->green;
|
|
|
|
$admin = $command['author'];
|
|
$login = $admin->login;
|
|
|
|
// check if chat command was allowed for a masteradmin/admin/operator
|
|
if ($aseco->isMasterAdmin($admin))
|
|
{
|
|
$logtitle = 'MasterAdmin';
|
|
$chattitle = $aseco->titles['MASTERADMIN'][0];
|
|
}
|
|
else
|
|
{
|
|
if ($aseco->isAdmin($admin) && $aseco->allowAdminAbility('chat_jfreu')) {
|
|
$logtitle = 'Admin';
|
|
$chattitle = $aseco->titles['ADMIN'][0];
|
|
}
|
|
else
|
|
{
|
|
if ($aseco->isOperator($admin) && $aseco->allowOpAbility('chat_jfreu')) {
|
|
$logtitle = 'Operator';
|
|
$chattitle = $aseco->titles['OPERATOR'][0];
|
|
}
|
|
else
|
|
{
|
|
// write warning in console
|
|
$aseco->console($login . ' tried to use Jfreu chat command (no permission!): ' . $command['params']);
|
|
// sends chat message
|
|
$aseco->client->query('ChatSendToLogin', $red.'You don\'t have the required admin rights to do that!', $login);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
// check for unlocked password
|
|
if ($aseco->settings['lock_password'] != '' && !$admin->unlocked) {
|
|
// write warning in console
|
|
$aseco->console($login . ' tried to use Jfreu chat command (not unlocked!): ' . $command['params']);
|
|
// sends chat message
|
|
$aseco->client->query('ChatSendToLogin', $red.'You don\'t have the required admin rights to do that!', $login);
|
|
return false;
|
|
}
|
|
|
|
// split params into arrays & insure optional parameters exist
|
|
$arglist = explode(' ', $command['params'], 2);
|
|
if (!isset($arglist[1])) $arglist[1] = '';
|
|
$command['params'] = explode(' ', preg_replace('/ +/', ' ', $command['params']));
|
|
if (!isset($command['params'][1])) $command['params'][1] = '';
|
|
|
|
// Show jfreuAdmin help.
|
|
if ($command['params'][0] == 'help')
|
|
{
|
|
// show Jfreu commands on command line
|
|
showHelp($admin, $aseco->server->jfreu->admin_commands, 'Jfreu admin', true, false);
|
|
}
|
|
|
|
// Display jfreuAdmin help.
|
|
elseif ($command['params'][0] == 'helpall')
|
|
{
|
|
// display Jfreu commands in popup with descriptions
|
|
showHelp($admin, $aseco->server->jfreu->admin_commands, 'Jfreu admin', true, true, 0.45);
|
|
}
|
|
|
|
// Set autochangename ON/OFF.
|
|
elseif ($command['params'][0] == 'autochangename')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->autochangename = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autochangename: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoChangeName: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->autochangename = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autochangename: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoChangeName: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'AutoChangeName is: '.$whi.
|
|
($aseco->server->jfreu->autochangename ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set ranklimit ON/OFF.
|
|
elseif ($command['params'][0] == 'setrank')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->ranklimit = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set rank limiting: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set RankLimit: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
if ($aseco->server->jfreu->autochangename)
|
|
{
|
|
$servername = $aseco->server->jfreu->servername . $aseco->server->jfreu->top . $aseco->server->jfreu->limit;
|
|
$aseco->client->query('SetServerName', $servername);
|
|
}
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->ranklimit = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set rank limiting: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set RankLimit: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
if ($aseco->server->jfreu->autochangename)
|
|
{
|
|
$servername = $aseco->server->jfreu->servername . ' NoLimit';
|
|
$aseco->client->query('SetServerName', $servername);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'RankLimit is: '.$whi.
|
|
($aseco->server->jfreu->ranklimit ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set ranklimit value.
|
|
elseif ($command['params'][0] == 'setlimit')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] > 0 && $command['params'][1] < 2000000)
|
|
{
|
|
if ($aseco->server->jfreu->autorank)
|
|
{
|
|
set_ranklimit($aseco, $command['params'][1], 2);
|
|
}
|
|
else
|
|
{
|
|
set_ranklimit($aseco, $command['params'][1], 0);
|
|
}
|
|
write_config_xml($aseco);
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set (auto)ranklimit: {3}', $logtitle, $login, $command['params'][1]);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid ranklimit value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'RankLimit value is: '.$whi.$aseco->server->jfreu->limit.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
|
|
// Set autorank ON/OFF.
|
|
elseif ($command['params'][0] == 'autorank')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->autorank = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autoranking: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRank: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
autorank($aseco, $command);
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->autorank = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autoranking: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRank: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
set_ranklimit($aseco, $aseco->server->jfreu->limit, 0);
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'AutoRank is: '.$whi.
|
|
($aseco->server->jfreu->autorank ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set offset value.
|
|
elseif ($command['params'][0] == 'offset')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] > -1000 && $command['params'][1] < 1000)
|
|
{
|
|
$aseco->server->jfreu->offset = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autorank offset: {3}', $logtitle, $login, $aseco->server->jfreu->offset);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRank Offset to: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->offset);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
autorank($aseco, $command);
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid offset value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'AutoRank Offset value is: '.$whi.$aseco->server->jfreu->offset.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set hardlimit value.
|
|
elseif ($command['params'][0] == 'hardlimit')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] >= 0 && $command['params'][1] < 2000000)
|
|
{
|
|
$aseco->server->jfreu->hardlimit = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set hardlimit: {3}', $logtitle, $login, $aseco->server->jfreu->hardlimit);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set HardLimit to: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->hardlimit);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid hardlimit value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
elseif ($aseco->server->jfreu->hardlimit > 0)
|
|
{
|
|
$message = $yel.'> '.$blu.'HardLimit value is: '.$whi.$aseco->server->jfreu->hardlimit.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'HardLimit is: '.$whi.'OFF'.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set autorankminplayers value.
|
|
elseif ($command['params'][0] == 'autorankminplayers')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] >= 0 && $command['params'][1] < 50)
|
|
{
|
|
$aseco->server->jfreu->autorankminplayers = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autorankminplayers: {3}', $logtitle, $login, $aseco->server->jfreu->autorankminplayers);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRankMinPlayer to: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->autorankminplayers);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
autorank($aseco, $command);
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid minplayers value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'AutoRankMinPlayer value is: '.$whi.$aseco->server->jfreu->autorankminplayers.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set autorankvip ON/OFF.
|
|
elseif ($command['params'][0] == 'autorankvip')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->autorankvip = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autorankvip: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRankVIP: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->autorankvip = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set autorankvip: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set AutoRankVIP: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'AutoRankVIP is: '.$whi.
|
|
($aseco->server->jfreu->autorankvip ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set maxplayers value.
|
|
elseif ($command['params'][0] == 'maxplayers')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if ($command['params'][1] >= 0 && $command['params'][1] < 150)
|
|
{
|
|
$aseco->server->jfreu->maxplayers = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set maxplayers: {3}', $logtitle, $login, $aseco->server->jfreu->maxplayers);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set MaxPlayers to: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->maxplayers);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid maxplayers value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'MaxPlayers value is: '.$whi.$aseco->server->jfreu->maxplayers.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set kickhirank ON/OFF.
|
|
elseif ($command['params'][0] == 'kickhirank')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->kickhirank = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set kickhirank: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set KickHiRank: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->kickhirank = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set kickhirank: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set KickHiRank: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'KickHiRank is: '.$whi.
|
|
($aseco->server->jfreu->kickhirank ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Displays rank limit settings
|
|
elseif ($command['params'][0] == 'listlimits')
|
|
{
|
|
if ($aseco->server->getGame() == 'TMN') {
|
|
$limits = 'Current rank limit settings:' . LF;
|
|
$limits .= ' $gRank limiting : {#black}' . ($aseco->server->jfreu->ranklimit ? 'ON' : 'OFF') . LF;
|
|
$limits .= ' $gRank limit : {#black}' . $aseco->server->jfreu->limit . LF;
|
|
$limits .= ' $gHard limit : {#black}' . $aseco->server->jfreu->hardlimit . LF;
|
|
$limits .= ' $gAuto ranking : {#black}' . ($aseco->server->jfreu->autorank ? 'ON' : 'OFF') . LF;
|
|
$limits .= ' $gAutorank offset : {#black}' . $aseco->server->jfreu->offset . LF;
|
|
$limits .= ' $gAutorank limit : {#black}' . $aseco->server->jfreu->autolimit . LF;
|
|
$limits .= ' $gAutorank minplayers: {#black}' . $aseco->server->jfreu->autorankminplayers . LF;
|
|
$limits .= ' $gAutorank VIP : {#black}' . ($aseco->server->jfreu->autorankvip ? 'ON' : 'OFF') . LF;
|
|
$limits .= ' $gMaxplayers HiRank : {#black}' . $aseco->server->jfreu->maxplayers . LF;
|
|
$limits .= ' $gKickHiRank : {#black}' . ($aseco->server->jfreu->kickhirank ? 'ON' : 'OFF');
|
|
// display popup message
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $aseco->formatColors($limits), 'OK', '', 0);
|
|
|
|
} elseif ($aseco->server->getGame() == 'TMF') {
|
|
$header = 'Current rank limit settings:';
|
|
$limits = array();
|
|
$limits[] = array('Rank limiting', '{#black}' . ($aseco->server->jfreu->ranklimit ? 'ON' : 'OFF'));
|
|
$limits[] = array('Rank limit', '{#black}' . $aseco->server->jfreu->limit);
|
|
$limits[] = array('Hard limit', '{#black}' . $aseco->server->jfreu->hardlimit);
|
|
$limits[] = array('Auto ranking', '{#black}' . ($aseco->server->jfreu->autorank ? 'ON' : 'OFF'));
|
|
$limits[] = array('Autorank offset', '{#black}' . $aseco->server->jfreu->offset);
|
|
$limits[] = array('Autorank limit', '{#black}' . $aseco->server->jfreu->autolimit);
|
|
$limits[] = array('Autorank minplayers', '{#black}' . $aseco->server->jfreu->autorankminplayers);
|
|
$limits[] = array('Autorank VIP', '{#black}' . ($aseco->server->jfreu->autorankvip ? 'ON' : 'OFF'));
|
|
$limits[] = array('Maxplayers HiRank', '{#black}' . $aseco->server->jfreu->maxplayers);
|
|
$limits[] = array('KickHiRank', '{#black}' . ($aseco->server->jfreu->kickhirank ? 'ON' : 'OFF'));
|
|
// display ManiaLink message
|
|
display_manialink($login, $header, array('Icons128x128_1', 'ProfileAdvanced', 0.02), $limits, array(0.8, 0.4, 0.4), 'OK');
|
|
}
|
|
}
|
|
|
|
// KickWorst (kick X worst players)
|
|
elseif ($command['params'][0] == 'kickworst' && $command['params'][1] != '')
|
|
{
|
|
if (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] > 0 && $command['params'][1] < 50)
|
|
{
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} kicks the {#highlite}{3}{#message} worst ranked player{4}.',
|
|
$chattitle, $admin->nickname, $command['params'][1],
|
|
($command['params'][1] == 1 ? '' : 's'));
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
kick_worst($aseco, $command['params'][1]);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid kickworst value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
|
|
// Players (display players list)
|
|
elseif ($command['params'][0] == 'players')
|
|
{
|
|
$admin->playerlist = array();
|
|
$admin->msgs = array();
|
|
|
|
// remember players parameter for possible refresh
|
|
$admin->panels['plyparam'] = $command['params'][1];
|
|
$onlineonly = (strtolower($command['params'][1]) == 'live');
|
|
|
|
// create new list of online players
|
|
$aseco->client->resetError();
|
|
$onlinelist = array();
|
|
// get current players on the server (hardlimited to 300)
|
|
if ($aseco->server->getGame() == 'TMF')
|
|
$aseco->client->query('GetPlayerList', 300, 0, 1);
|
|
else
|
|
$aseco->client->query('GetPlayerList', 300, 0);
|
|
$players = $aseco->client->getResponse();
|
|
if ($aseco->client->isError()) {
|
|
trigger_error('[' . $aseco->client->getErrorCode() . '] GetPlayerList - ' . $aseco->client->getErrorMessage(), E_USER_WARNING);
|
|
} else {
|
|
foreach ($players as $pl)
|
|
if ($aseco->server->getGame() == 'TMF') {
|
|
// on relay, check for player from master server
|
|
if (!$aseco->server->isrelay || floor($pl['Flags'] / 10000) % 10 == 0)
|
|
$onlinelist[$pl['Login']] = array('login' => $pl['Login'],
|
|
'spec' => $pl['SpectatorStatus']);
|
|
} else {
|
|
$onlinelist[$pl['Login']] = array('login' => $pl['Login'],
|
|
'spec' => $pl['IsSpectator']);
|
|
}
|
|
}
|
|
|
|
$playerlist = array();
|
|
// use online list?
|
|
if ($onlineonly) {
|
|
foreach ($aseco->server->jfreu->playerlist as $pl => $entry) {
|
|
if (array_key_exists($pl, $onlinelist))
|
|
$playerlist[$pl] = $entry;
|
|
}
|
|
} else {
|
|
// search for known logins
|
|
foreach ($aseco->server->jfreu->playerlist as $pl => $entry) {
|
|
if ($command['params'][1] == '' || stripos($pl, $command['params'][1]) !== false)
|
|
$playerlist[$pl] = $entry;
|
|
}
|
|
// append vip list
|
|
foreach ($aseco->server->jfreu->vip_list as $pl) {
|
|
// check if vip is not yet in the new list and matches search
|
|
if ($pl != '' && !array_key_exists($pl, $playerlist) &&
|
|
($command['params'][1] == '' || stripos($pl, $command['params'][1]) !== false)) {
|
|
ajouter_joueur_liste($aseco, $pl, true, false);
|
|
$playerlist[$pl] = $aseco->server->jfreu->playerlist[$pl];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!empty($playerlist)) {
|
|
if ($aseco->server->getGame() == 'TMN') {
|
|
$head = ($onlineonly ? 'Online' : 'Known') . ' Players On This Server:' . LF .
|
|
'Id ' . ($aseco->server->jfreu->badwords ? 'Bw ' : '') .
|
|
'{#nick}Nick $g/{#login} Login' . LF;
|
|
$msg = '';
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = 1;
|
|
foreach ($playerlist as $pl => $entry) {
|
|
$plarr = array();
|
|
$plarr['login'] = $pl;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
// check for badwords filtering
|
|
$msg .= '$g' . str_pad($pid, 2, '0', STR_PAD_LEFT) . '. '
|
|
. ($aseco->server->jfreu->badwords ? $entry->badwords . ' ' : '')
|
|
. '{#black}' . str_ireplace('$w', '', $aseco->getPlayerNick($pl))
|
|
. '$z / ' . ($aseco->isAnyAdminL($pl) ? '{#logina}' : '{#login}') . $pl . LF;
|
|
$pid++;
|
|
if (++$lines > 9) {
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
$lines = 0;
|
|
$msg = '';
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if ($msg != '')
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
|
|
// display popup message
|
|
if (count($admin->msgs) == 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'OK', '', 0);
|
|
} elseif (count($admin->msgs) > 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'Close', 'Next', 0);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No player(s) found!'), $login);
|
|
}
|
|
|
|
} elseif ($aseco->server->getGame() == 'TMF') {
|
|
$head = ($onlineonly ? 'Online' : 'Known') . ' Players On This Server:';
|
|
$msg = array();
|
|
// check for badwords filtering
|
|
if ($aseco->server->jfreu->badwords) {
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', '$nCount', 'BadW', 'Ban', 'Ban', 'Left', 'UnBan', 'VIP', 'Spec');
|
|
$admin->msgs[0] = array(1, $head, array(1.591, 0.15, 0.5, 0.10, 0.12, 0.12, 0.12, 0.12, 0.121, 0.12, 0.12), array('Icons128x128_1', 'Buddies'));
|
|
} else {
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', 'Ban', 'Ban', 'Left', 'UnBan', 'VIP', 'Spec');
|
|
$admin->msgs[0] = array(1, $head, array(1.371, 0.15, 0.5, 0.12, 0.12, 0.12, 0.121, 0.12, 0.12), array('Icons128x128_1', 'Buddies'));
|
|
}
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$time = time();
|
|
foreach ($playerlist as $pl => $entry) {
|
|
$plarr = array();
|
|
$plarr['login'] = $pl;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
// format nickname & login
|
|
$ply = '{#black}' . str_ireplace('$w', '', $aseco->getPlayerNick($pl))
|
|
. '$z / ' . ($aseco->isAnyAdminL($pl) ? '{#logina}' : '{#login}') . $pl;
|
|
// define colored column strings
|
|
$bdw = '$ff3+1';
|
|
$bn1 = '$f301Hour';
|
|
$bn2 = '$f0324H';
|
|
$ubn = '$c3fUnBan';
|
|
$gst = '$3c3Add';
|
|
$ugt = '$393Remove';
|
|
$usp = '$09fUnSpec';
|
|
$off = '$09cOffln';
|
|
$plr = '$09cPlayer';
|
|
$spc = '$09cSpec';
|
|
|
|
// check whether temporarily banned
|
|
if ($entry->banned > $time) {
|
|
$remain = round(($entry->banned - $time) / 60); // compute mins
|
|
if ($remain > 60) { // check for >1 hour
|
|
$remain = sprintf('%dh%02d', $remain / 60, $remain % 60);
|
|
}
|
|
} else {
|
|
$remain = false;
|
|
}
|
|
|
|
// always add clickable buttons
|
|
if ($pid <= 200) {
|
|
$ply = array($ply, $pid+2000);
|
|
if (array_key_exists($pl, $onlinelist)) {
|
|
$bdw = array($bdw, -4000-$pid);
|
|
$bn1 = array($bn1, -4200-$pid);
|
|
$bn2 = array($bn2, -4400-$pid);
|
|
if ($remain !== false)
|
|
$ubn = array($ubn, -4600-$pid);
|
|
if (in_array($pl, $aseco->server->jfreu->vip_list))
|
|
$gst = array($ugt, -5000-$pid);
|
|
else
|
|
$gst = array($gst, -4800-$pid);
|
|
if ($entry->speconly)
|
|
$spc = array($usp, -5200-$pid);
|
|
elseif (!$onlinelist[$pl]['spec'])
|
|
$spc = $plr;
|
|
} else {
|
|
// determine offline operations
|
|
$bn1 = array($bn1, -4200-$pid);
|
|
$bn2 = array($bn2, -4400-$pid);
|
|
if ($remain !== false)
|
|
$ubn = array($ubn, -4600-$pid);
|
|
if (in_array($pl, $aseco->server->jfreu->vip_list))
|
|
$gst = array($ugt, -5000-$pid);
|
|
else
|
|
$gst = array($gst, -4800-$pid);
|
|
$spc = $off;
|
|
}
|
|
} else {
|
|
// no more buttons
|
|
if (in_array($pl, $aseco->server->jfreu->vip_list))
|
|
$gst = $ugt;
|
|
if (array_key_exists($pl, $onlinelist)) {
|
|
if ($entry->speconly)
|
|
$spc = $usp;
|
|
elseif (!$onlinelist[$pl]['spec'])
|
|
$spc = $plr;
|
|
} else {
|
|
$spc = $off;
|
|
}
|
|
}
|
|
|
|
// check for badwords filtering
|
|
if ($aseco->server->jfreu->badwords)
|
|
$msg[] = array(str_pad($pid, 2, '0', STR_PAD_LEFT) . '.', $ply,
|
|
$entry->badwords, $bdw, $bn1, $bn2,
|
|
($remain !== false ? $remain : 'none'),
|
|
$ubn, $gst, $spc);
|
|
else
|
|
$msg[] = array(str_pad($pid, 2, '0', STR_PAD_LEFT) . '.', $ply,
|
|
$bn1, $bn2,
|
|
($remain !== false ? $remain : 'none'),
|
|
$ubn, $gst, $spc);
|
|
$pid++;
|
|
if (++$lines > 14) {
|
|
$admin->msgs[] = $msg;
|
|
$lines = 0;
|
|
$msg = array();
|
|
if ($aseco->server->jfreu->badwords)
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', '$nCount', 'BadW', 'Ban', 'Ban', 'Left', 'UnBan', 'VIP', 'Spec');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', 'Ban', 'Ban', 'Left', 'UnBan', 'VIP', 'Spec');
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if (count($msg) > 1)
|
|
$admin->msgs[] = $msg;
|
|
|
|
// display ManiaLink message
|
|
if (count($admin->msgs) > 1) {
|
|
display_manialink_multi($admin);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No player(s) found!'), $login);
|
|
}
|
|
}
|
|
} else {
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No player(s) found!'), $login);
|
|
}
|
|
}
|
|
|
|
// Unspec (unspec a player)
|
|
elseif ($command['params'][0] == 'unspec' && $command['params'][1] != '')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1]))
|
|
return;
|
|
|
|
if (isset($aseco->server->jfreu->playerlist[$target->login]) &&
|
|
$aseco->server->jfreu->playerlist[$target->login]->speconly)
|
|
{
|
|
$aseco->server->jfreu->playerlist[$target->login]->speconly = false;
|
|
$aseco->server->jfreu->playerlist[$target->login]->isvip = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] unSpec-ed [{3}]', $logtitle, $login, $target->login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} unSpecs {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, clean_nick($target->nickname));
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
if ($aseco->server->jfreu->autorank)
|
|
{
|
|
autorank($aseco, $command);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$red.'Login: '.$whi.$target->login.$red.' is not SpecOnly!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Add VIP (permanent !!)
|
|
elseif ($command['params'][0] == 'addvip' && $command['params'][1] != '')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1]))
|
|
return;
|
|
|
|
if (in_array($target->login, $aseco->server->jfreu->vip_list))
|
|
{
|
|
$message = $yel.'> '.$blu.'Login: '.$whi.$target->login.$blu.' is already in VIP list.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
$aseco->server->jfreu->vip_list[] = $target->login;
|
|
write_lists_xml($aseco);
|
|
// log console message
|
|
$aseco->console('{1} [{2}] adds VIP [{3}]', $logtitle, $login, $target->login);
|
|
// show chat message
|
|
$message = $yel.'>> '.$blu.'New VIP: '.$whi.$target->login.$blu.' / '.$whi.clean_nick($target->nickname).'.';
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
// mark player as VIP
|
|
$aseco->server->jfreu->playerlist[$target->login]->isvip = true;
|
|
}
|
|
|
|
// Remove VIP (permanent !!)
|
|
elseif ($command['params'][0] == 'removevip' && $command['params'][1] != '')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1], true))
|
|
return;
|
|
|
|
if (($i = array_search($target->login, $aseco->server->jfreu->vip_list)) === false)
|
|
{
|
|
$message = $yel.'> '.$blu.'Login: '.$whi.$target->login.$blu.' is not in VIP list.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
$aseco->server->jfreu->vip_list[$i] = '';
|
|
write_lists_xml($aseco);
|
|
// log console message
|
|
$aseco->console('{1} [{2}] removes VIP [{3}]', $logtitle, $login, $target->login);
|
|
// show chat message
|
|
$message = $yel.'>> '.$blu.'Login: '.$whi.$target->login.$blu.' removed from VIP list.';
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
// mark player as non-VIP
|
|
if (isset($aseco->server->jfreu->playerlist[$target->login]))
|
|
{
|
|
$aseco->server->jfreu->playerlist[$target->login]->isvip = false;
|
|
}
|
|
}
|
|
|
|
// Add VIP_Team (permanent !!)
|
|
elseif ($command['params'][0] == 'addvipteam' && $command['params'][1] != '')
|
|
{
|
|
$team = $command['params'][1];
|
|
if (in_array($team, $aseco->server->jfreu->vip_team_list))
|
|
{
|
|
$message = $yel.'> '.$blu.'Team: '.$whi.$team.$blu.' is already in VIP_Team list.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
$aseco->server->jfreu->vip_team_list[] = $team;
|
|
write_lists_xml($aseco);
|
|
// log console message
|
|
$aseco->console('{1} [{2}] adds VIP_Team [{3}]', $logtitle, $login, $team);
|
|
// show chat message
|
|
$message = $yel.'>> '.$blu.'New VIP_Team: '.$whi.$team.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
}
|
|
|
|
// Remove VIP_Team (permanent !!)
|
|
elseif ($command['params'][0] == 'removevipteam' && $command['params'][1] != '')
|
|
{
|
|
$team = $command['params'][1];
|
|
if (($i = array_search($team, $aseco->server->jfreu->vip_team_list)) === false)
|
|
{
|
|
$message = $yel.'> '.$blu.'Team: '.$whi.$team.$blu.' is not in VIP_Team list.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
$aseco->server->jfreu->vip_team_list[$i] = '';
|
|
write_lists_xml($aseco);
|
|
// log console message
|
|
$aseco->console('{1} [{2}] removes VIP_Team [{3}]', $logtitle, $login, $team);
|
|
// show chat message
|
|
$message = $yel.'>> '.$blu.'Team: '.$whi.$team.$blu.' removed from VIP_Team list.';
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
}
|
|
|
|
// Display VIPs list
|
|
elseif ($command['params'][0] == 'listvips')
|
|
{
|
|
$admin->playerlist = array();
|
|
$admin->msgs = array();
|
|
|
|
if ($aseco->server->getGame() == 'TMN') {
|
|
$head = 'Current VIPs:' . LF . 'Id {#nick}Nick $g/{#login} Login' . LF;
|
|
$msg = '';
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = 1;
|
|
foreach ($aseco->server->jfreu->vip_list as $player) {
|
|
if ($player != '') {
|
|
$plarr = array();
|
|
$plarr['login'] = $player;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
$msg .= '$g' . str_pad($pid, 2, '0', STR_PAD_LEFT) . '. {#black}'
|
|
. $aseco->getPlayerNick($player) . '$z / {#login}' . $player . LF;
|
|
$pid++;
|
|
if (++$lines > 9) {
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
$lines = 0;
|
|
$msg = '';
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if ($msg != '')
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
|
|
// display popup message
|
|
if (count($admin->msgs) == 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'OK', '', 0);
|
|
} elseif (count($admin->msgs) > 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'Close', 'Next', 0);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No VIP(s) found!'), $login);
|
|
}
|
|
|
|
} elseif ($aseco->server->getGame() == 'TMF') {
|
|
$head = 'Current VIPs:';
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login$g (click to Remove)');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login');
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = array(1, $head, array(0.9, 0.1, 0.8), array('Icons128x128_1', 'Invite'));
|
|
foreach ($aseco->server->jfreu->vip_list as $player) {
|
|
if ($player != '') {
|
|
$plarr = array();
|
|
$plarr['login'] = $player;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
// format nickname & login
|
|
$ply = '{#black}' . str_ireplace('$w', '', $aseco->getPlayerNick($player))
|
|
. '$z / {#login}' . $player;
|
|
if ($aseco->settings['clickable_lists'])
|
|
$ply = array($ply, -5600-$pid); // action id // action id
|
|
$msg[] = array(str_pad($pid, 2, '0', STR_PAD_LEFT) . '.', $ply);
|
|
$pid++;
|
|
if (++$lines > 14) {
|
|
$admin->msgs[] = $msg;
|
|
$lines = 0;
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login$g (click to Remove)');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login');
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if (count($msg) > 1)
|
|
$admin->msgs[] = $msg;
|
|
|
|
// display ManiaLink message
|
|
if (count($admin->msgs) > 1) {
|
|
display_manialink_multi($admin);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No VIP(s) found!'), $login);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Display VIP_Teams list
|
|
elseif ($command['params'][0] == 'listvipteams')
|
|
{
|
|
$admin->playerlist = array();
|
|
$admin->msgs = array();
|
|
|
|
if ($aseco->server->getGame() == 'TMN') {
|
|
$head = 'Current VIP_Teams:' . LF . 'Id {#nick}Team' . LF;
|
|
$msg = '';
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = 1;
|
|
foreach ($aseco->server->jfreu->vip_team_list as $team) {
|
|
if ($team != '') {
|
|
$plarr = array();
|
|
$plarr['login'] = $team;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
$msg .= '$z' . str_pad($pid, 2, '0', STR_PAD_LEFT) . '. {#black}'
|
|
. $team . LF;
|
|
$pid++;
|
|
if (++$lines > 9) {
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
$lines = 0;
|
|
$msg = '';
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if ($msg != '')
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
|
|
// display popup message
|
|
if (count($admin->msgs) == 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'OK', '', 0);
|
|
} elseif (count($admin->msgs) > 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'Close', 'Next', 0);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No VIP_Team(s) found!'), $login);
|
|
}
|
|
|
|
} elseif ($aseco->server->getGame() == 'TMF') {
|
|
$head = 'Current VIP_Teams:';
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Team$g (click to Remove)');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Team');
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = array(1, $head, array(0.8, 0.1, 0.7), array('Icons128x128_1', 'Invite'));
|
|
foreach ($aseco->server->jfreu->vip_team_list as $team) {
|
|
if ($team != '') {
|
|
$plarr = array();
|
|
$plarr['login'] = $team;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
$msg[] = array(str_pad($pid, 2, '0', STR_PAD_LEFT) . '.',
|
|
($aseco->settings['clickable_lists'] ?
|
|
array('{#black}' . $team, -5800-$pid) : // action id
|
|
'{#black}' . $team));
|
|
$pid++;
|
|
if (++$lines > 14) {
|
|
$admin->msgs[] = $msg;
|
|
$lines = 0;
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Team$g (click to Remove)');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Team');
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if (count($msg) > 1)
|
|
$admin->msgs[] = $msg;
|
|
|
|
// display ManiaLink message
|
|
if (count($admin->msgs) > 1) {
|
|
display_manialink_multi($admin);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No VIP_Team(s) found!'), $login);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Saves vip/team lists
|
|
elseif ($command['params'][0] == 'writelists')
|
|
{
|
|
write_lists_xml($aseco);
|
|
$message = $yel.'> '.$whi.'Jfreu lists'.$yel.' written.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
|
|
// Loads vip/team lists
|
|
elseif ($command['params'][0] == 'readlists')
|
|
{
|
|
$aseco->server->jfreu->vip_list = array();
|
|
$aseco->server->jfreu->vip_team_list = array();
|
|
read_lists_xml($aseco);
|
|
read_guest_list($aseco);
|
|
|
|
$message = $yel.'> '.$whi.'Jfreu lists'.$yel.' read.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
|
|
// Set badwords ON/OFF.
|
|
elseif ($command['params'][0] == 'badwords')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->badwords = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwords bot: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWords bot: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->badwords = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwords bot: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWords bot: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'BadWords is: '.$whi.
|
|
($aseco->server->jfreu->badwords ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set badwordsban ON/OFF.
|
|
elseif ($command['params'][0] == 'badwordsban')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->badwordsban = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwords ban: ON', $logtitle, $login);
|
|
// show chat message
|
|
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWordsBan: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->badwordsban = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwords ban: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWordsBan: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'BadWordsBan is: '.$whi.
|
|
($aseco->server->jfreu->badwordsban ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set badwordsnum value.
|
|
elseif ($command['params'][0] == 'badwordsnum')
|
|
{
|
|
if ($command['params'][1] != '' && is_numeric($command['params'][1]))
|
|
{
|
|
if ($command['params'][1] > 0 && $command['params'][1] < 10)
|
|
{
|
|
$aseco->server->jfreu->badwordsnum = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwordsnum: {3}', $logtitle, $login, $aseco->server->jfreu->badwordsnum);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWordsNum to: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->badwordsnum);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'BadWordsNum value is: '.$whi.$aseco->server->jfreu->badwordsnum.$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set badwordstime value.
|
|
elseif ($command['params'][0] == 'badwordstime')
|
|
{
|
|
if ($command['params'][1] != '' && is_numeric($command['params'][1]))
|
|
{
|
|
if ($command['params'][1] > 0 && $command['params'][1] <= 24 * 60) // 1 day
|
|
{
|
|
$aseco->server->jfreu->badwordstime = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set badwordstime: {3}', $logtitle, $login, $aseco->server->jfreu->badwordstime);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set BadWordsTime to: {#highlite}{3}{#message} mins.',
|
|
$chattitle, $admin->nickname, $aseco->server->jfreu->badwordstime);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'BadWordsTime value is: '.$whi.$aseco->server->jfreu->badwordstime.$blu.' mins.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Give extra badword warning {login/ID}
|
|
elseif ($command['params'][0] == 'badword' && $command['params'][1] != '')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1]))
|
|
return;
|
|
|
|
badword_found($target->login, $target->nickname, '');
|
|
}
|
|
|
|
// Ban player temporarily (/jfreu banfor <mins>/<hours>H <login>)
|
|
elseif ($command['params'][0] == 'banfor' && $command['params'][1] != '' && isset($command['params'][2]))
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][2], true))
|
|
return;
|
|
|
|
// check time parameter
|
|
$time = $command['params'][1];
|
|
if (strtolower(substr($time, -1)) == 'h') {
|
|
$time = substr($time, 0, -1);
|
|
if (is_numeric($time)) {
|
|
$time *= 60; // convert to hours
|
|
} else {
|
|
$message = $yel.'> '.$whi.$command['params'][1].$red.' is not a valid time!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
}
|
|
elseif (!is_numeric($time) || $time <= 0) {
|
|
$message = $yel.'> '.$whi.$command['params'][1].$red.' is not a valid time!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
return;
|
|
}
|
|
|
|
// format time value
|
|
if ($time > 60) { // check for >1 hour
|
|
$ban = sprintf('%d {#message}hour%s {#highlite}%02d {#message}min%s',
|
|
$time / 60, (floor($time / 60) == 1 ? '' : 's'),
|
|
$time % 60, (($time % 60) == 1 ? '' : 's'));
|
|
} else {
|
|
$ban = sprintf('%d {#message}min%s', $time, ($time == 1 ? '' : 's'));
|
|
}
|
|
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} bans {#highlite}{3}{#message} for {#highlite}{4}.',
|
|
$chattitle, $admin->nickname,
|
|
clean_nick($target->nickname), $ban);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
banfor($aseco, $target->login, $time);
|
|
}
|
|
|
|
// UnBans temporarily banned player
|
|
elseif ($command['params'][0] == 'unban')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1], true))
|
|
return;
|
|
|
|
if (isset($aseco->server->jfreu->playerlist[$target->login])) {
|
|
if ($aseco->server->jfreu->playerlist[$target->login]->banned > 0) {
|
|
$aseco->server->jfreu->playerlist[$target->login]->banned = 0;
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} unbans {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname,
|
|
clean_nick($target->nickname));
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_bans_xml($aseco);
|
|
return;
|
|
}
|
|
}
|
|
$message = $yel.'> '.$whi.$target->login.$red.' is not a banned player!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
|
|
// Displays temporarily banned players
|
|
elseif ($command['params'][0] == 'listbans')
|
|
{
|
|
$admin->playerlist = array();
|
|
$admin->msgs = array();
|
|
|
|
if ($aseco->server->getGame() == 'TMN') {
|
|
$head = 'Temporarily Banned Players:' . LF . 'Id {#nick}Nick $g/{#login} Login $g/{#black} Time' . LF;
|
|
$msg = '';
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = 1;
|
|
$time = time();
|
|
foreach ($aseco->server->jfreu->playerlist as $player => $entry) {
|
|
// check for banned players
|
|
if ($entry->banned > $time) {
|
|
$plarr = array();
|
|
$plarr['login'] = $player;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
$remain = round(($entry->banned - $time) / 60); // compute mins
|
|
if ($remain > 60) { // check for >1 hour
|
|
$remain = sprintf('%dh%02d', $remain / 60, $remain % 60);
|
|
}
|
|
$msg .= '$g' . str_pad($pid, 2, '0', STR_PAD_LEFT) . '. {#black}'
|
|
. str_ireplace('$w', '', $aseco->getPlayerNick($player))
|
|
. '$z / {#login}' . $player . '$g / {#black}' . $remain . LF;
|
|
$pid++;
|
|
if (++$lines > 9) {
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
$lines = 0;
|
|
$msg = '';
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if ($msg != '')
|
|
$admin->msgs[] = $aseco->formatColors($head . $msg);
|
|
|
|
// display popup message
|
|
if (count($admin->msgs) == 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'OK', '', 0);
|
|
} elseif (count($admin->msgs) > 2) {
|
|
$aseco->client->query('SendDisplayServerMessageToLogin', $login, $admin->msgs[1], 'Close', 'Next', 0);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No player(s) found!'), $login);
|
|
}
|
|
|
|
} elseif ($aseco->server->getGame() == 'TMF') {
|
|
$head = 'Temporarily Banned Players:';
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login$g (click to UnBan)', '{#black}Time');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', '{#black}Time');
|
|
$pid = 1;
|
|
$lines = 0;
|
|
$admin->msgs[0] = array(1, $head, array(1.1, 0.1, 0.8, 0.2), array('Icons64x64_1', 'NotBuddy'));
|
|
$time = time();
|
|
foreach ($aseco->server->jfreu->playerlist as $player => $entry) {
|
|
// check for banned players
|
|
if ($entry->banned > $time) {
|
|
$plarr = array();
|
|
$plarr['login'] = $player;
|
|
$admin->playerlist[] = $plarr;
|
|
|
|
$remain = round(($entry->banned - $time) / 60); // compute mins
|
|
if ($remain > 60) { // check for >1 hour
|
|
$remain = sprintf('%dh%02d', $remain / 60, $remain % 60);
|
|
}
|
|
// format nickname & login
|
|
$ply = '{#black}' . str_ireplace('$w', '', $aseco->getPlayerNick($player))
|
|
. '$z / {#login}' . $player;
|
|
if ($aseco->settings['clickable_lists'])
|
|
$ply = array($ply, -5400-$pid); // action id
|
|
$msg[] = array(str_pad($pid, 2, '0', STR_PAD_LEFT) . '.', $ply,
|
|
'{#black}' . $remain);
|
|
$pid++;
|
|
if (++$lines > 14) {
|
|
$admin->msgs[] = $msg;
|
|
$lines = 0;
|
|
$msg = array();
|
|
if ($aseco->settings['clickable_lists'])
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login$g (click to UnBan)', '{#black}Time');
|
|
else
|
|
$msg[] = array('Id', '{#nick}Nick $g/{#login} Login', '{#black}Time');
|
|
}
|
|
}
|
|
}
|
|
// add if last batch exists
|
|
if (count($msg) > 1)
|
|
$admin->msgs[] = $msg;
|
|
|
|
// display ManiaLink message
|
|
if (count($admin->msgs) > 1) {
|
|
display_manialink_multi($admin);
|
|
} else { // == 1
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors('{#server}> {#error}No player(s) found!'), $login);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Message from Server (/jfreu message <message>)
|
|
elseif ($command['params'][0] == 'message' && $command['params'][1] != '')
|
|
{
|
|
$message = $whi.'['.$aseco->server->name.$whi.'] $z$s' . $arglist[1];
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
}
|
|
|
|
// Message from Player (/jfreu player <login> <message>)
|
|
elseif ($command['params'][0] == 'player' && $command['params'][1] != '')
|
|
{
|
|
if (!$target = $aseco->getPlayerParam($admin, $command['params'][1]))
|
|
return;
|
|
|
|
$text = explode(' ', $arglist[1], 2);
|
|
// don't use $s as a subtle hint this isn't the actual player saying it
|
|
$message = '$z['.$target->nickname.'$z] '.$text[1];
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
}
|
|
|
|
// Set PF (BAD BAD BAD) {map} or {time}/OFF.
|
|
elseif ($command['params'][0] == 'nopfkick')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'OFF' ||
|
|
$command['params'][1] == '0')
|
|
{
|
|
$aseco->server->jfreu->pf = 0;
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set NoPfKick: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (isset($aseco->server->jfreu->pf_list[$command['params'][1]]))
|
|
{
|
|
$aseco->server->jfreu->pf = $aseco->server->jfreu->pf_list[$command['params'][1]];
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set NoPfKick on {#highlite}{3}{#message} map.',
|
|
$chattitle, $admin->nickname, $command['params'][1]);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (is_numeric($command['params'][1]) &&
|
|
$command['params'][1] > 0 && $command['params'][1] < 600000)
|
|
{
|
|
$aseco->server->jfreu->pf = $command['params'][1];
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set NoPfKick time: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, $command['params'][1]);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'Map '.$whi.$command['params'][1].$blu.' is not in PF list.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set NoPfKick: {3}', $logtitle, $login, $aseco->server->jfreu->pf);
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'NoPfKick is: '.$whi.
|
|
($aseco->server->jfreu->pf == 0 ? 'OFF' : 'ON').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Cancel vote - redundant with /admin cancel
|
|
elseif ($command['params'][0] == 'cancel')
|
|
{
|
|
global $feature_votes; // from rasp.settings.php
|
|
|
|
// disabled if chat-based votes are enabled
|
|
if (!$feature_votes)
|
|
{
|
|
$aseco->client->query('CancelVote');
|
|
$message = $yel.'>> '.$blu.'Vote canceled.';
|
|
$aseco->client->query('ChatSendServerMessage', $message);
|
|
}
|
|
}
|
|
|
|
// Set novote ON/OFF.
|
|
elseif ($command['params'][0] == 'novote')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->novote = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set novote: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set NoVote: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->novote = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set novote: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set NoVote: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'NoVote is: '.$whi.
|
|
($aseco->server->jfreu->novote ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set unspecvote ON/OFF.
|
|
elseif ($command['params'][0] == 'unspecvote')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if (strtoupper($command['params'][1]) == 'ON')
|
|
{
|
|
$aseco->server->jfreu->unspecvote = true;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set /unspec vote: ON', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set UnSpecVote: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'ON');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
elseif (strtoupper($command['params'][1]) == 'OFF')
|
|
{
|
|
$aseco->server->jfreu->unspecvote = false;
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set /unspec vote: OFF', $logtitle, $login);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set UnSpecVote: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname, 'OFF');
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'UnSpecVote is: '.$whi.
|
|
($aseco->server->jfreu->unspecvote ? 'ON' : 'OFF').$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Set infomessages ON/OFF.
|
|
elseif ($command['params'][0] == 'infomessages')
|
|
{
|
|
if ($command['params'][1] != '')
|
|
{
|
|
if ($command['params'][1] >= 0 && $command['params'][1] <= 2)
|
|
{
|
|
$aseco->server->jfreu->infomessages = $command['params'][1];
|
|
// log console message
|
|
$aseco->console('{1} [{2}] set info messages: {3}', $logtitle, $login, $command['params'][1]);
|
|
// show chat message
|
|
$message = formatText('{#server}>> {#message}{1}$z$s {#highlite}{2}$z$s{#message} set InfoMessages: {#highlite}{3}{#message}.',
|
|
$chattitle, $admin->nickname,
|
|
$command['params'][1]);
|
|
$aseco->client->query('ChatSendServerMessage', $aseco->formatColors($message));
|
|
write_config_xml($aseco);
|
|
}
|
|
else
|
|
{
|
|
$message = '{#server}> {#highlite}' . $command['params'][1] . '{#error} is not a valid infomessages value!';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$message = $yel.'> '.$blu.'InfoMessages is: '.$whi.
|
|
$aseco->server->jfreu->infomessages .$blu.'.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
}
|
|
|
|
// Saves Jfreu config
|
|
elseif ($command['params'][0] == 'writeconfig')
|
|
{
|
|
write_config_xml($aseco);
|
|
$message = $yel.'> '.$whi.'Jfreu config'.$yel.' written.';
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
|
|
// Loads Jfreu config
|
|
elseif ($command['params'][0] == 'readconfig')
|
|
{
|
|
read_config_xml($aseco);
|
|
$message = $yel.'> '.$whi.'Jfreu config'.$yel.' read. Servername: '.$whi . $aseco->getServerName();
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $message, $login);
|
|
}
|
|
|
|
else
|
|
{
|
|
$message = '{#server}> {#error}Unknown Jfreu command or missing parameter(s): {#highlite}$i ' . $arglist[0] . ' ' . $arglist[1];
|
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
|
}
|
|
} // chat_jfreu
|
|
|
|
|
|
// called @ onPlayerManialinkPageAnswer
|
|
// Handles ManiaLink jfreu responses
|
|
// [0]=PlayerUid, [1]=Login, [2]=Answer
|
|
function event_jfreu($aseco, $answer) {
|
|
|
|
// leave actions outside -5600 - -4001 to other handlers
|
|
if ($answer[2] < -5600 && $answer[2] > -4001)
|
|
return;
|
|
|
|
// get player & possible parameter
|
|
$player = $aseco->server->players->getPlayer($answer[1]);
|
|
if (isset($player->panels['plyparam']))
|
|
$param = $player->panels['plyparam'];
|
|
|
|
// check for /jfreu badword command
|
|
if ($answer[2] >= -4200 && $answer[2] <= -4001) {
|
|
$target = $player->playerlist[abs($answer[2])-4001]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu badword {2}"',
|
|
$player->login, $target);
|
|
|
|
// badword selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'badword ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu banfor 1H command
|
|
elseif ($answer[2] >= -4400 && $answer[2] <= -4201) {
|
|
$target = $player->playerlist[abs($answer[2])-4201]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu banfor 1H {2}"',
|
|
$player->login, $target);
|
|
|
|
// banfor 1H selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'banfor 1H ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu banfor 24H command
|
|
elseif ($answer[2] >= -4600 && $answer[2] <= -4401) {
|
|
$target = $player->playerlist[abs($answer[2])-4401]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu banfor 24H {2}"',
|
|
$player->login, $target);
|
|
|
|
// banfor 24H selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'banfor 24H ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu unban command
|
|
elseif ($answer[2] >= -4800 && $answer[2] <= -4601) {
|
|
$target = $player->playerlist[abs($answer[2])-4601]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu unban {2}"',
|
|
$player->login, $target);
|
|
|
|
// unban selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'unban ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu addvip command
|
|
elseif ($answer[2] >= -5000 && $answer[2] <= -4801) {
|
|
$target = $player->playerlist[abs($answer[2])-4801]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu addvip {2}"',
|
|
$player->login, $target);
|
|
|
|
// addvip selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'addvip ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu removevip command
|
|
elseif ($answer[2] >= -5200 && $answer[2] <= -5001) {
|
|
$target = $player->playerlist[abs($answer[2])-5001]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu removevip {2}"',
|
|
$player->login, $target);
|
|
|
|
// removevip selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'removevip ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu unspec command
|
|
elseif ($answer[2] >= -5400 && $answer[2] <= -5201) {
|
|
$target = $player->playerlist[abs($answer[2])-5201]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu unspec {2}"',
|
|
$player->login, $target);
|
|
|
|
// unspec selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'unspec ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu players {2}"',
|
|
$player->login, $param);
|
|
|
|
// refresh players window
|
|
$command['params'] = 'players ' . $param;
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
|
|
// check for /jfreu unban command in listbans
|
|
elseif ($answer[2] >= -5600 && $answer[2] <= -5401) {
|
|
$target = $player->playerlist[abs($answer[2])-5401]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu unban {2}"',
|
|
$player->login, $target);
|
|
|
|
// unban selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'unban ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// check whether last player was unbanned
|
|
$bansleft = false;
|
|
$time = time();
|
|
foreach ($aseco->server->jfreu->playerlist as $entry) {
|
|
if ($entry->banned > $time) {
|
|
$bansleft = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!$bansleft) {
|
|
// close main window
|
|
mainwindow_off($aseco, $player->login);
|
|
} else {
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu listbans"',
|
|
$player->login);
|
|
|
|
// refresh listbans window
|
|
$command['params'] = 'listbans';
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
}
|
|
|
|
// check for /jfreu removevip command in listvips
|
|
elseif ($answer[2] >= -5800 && $answer[2] <= -5601) {
|
|
$target = $player->playerlist[abs($answer[2])-5601]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu removevip {2}"',
|
|
$player->login, $target);
|
|
|
|
// removevip selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'removevip ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// check whether last vip was removed
|
|
$vipsleft = false;
|
|
foreach ($aseco->server->jfreu->vip_list as $lg) {
|
|
if ($lg != '') {
|
|
$vipsleft = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!$vipsleft) {
|
|
// close main window
|
|
mainwindow_off($aseco, $player->login);
|
|
} else {
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu listvips"',
|
|
$player->login);
|
|
|
|
// refresh listvips window
|
|
$command['params'] = 'listvips';
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
}
|
|
|
|
// check for /jfreu removevipteam command in listvipteams
|
|
elseif ($answer[2] >= -6000 && $answer[2] <= -5801) {
|
|
$target = $player->playerlist[abs($answer[2])-5801]['login'];
|
|
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu removevipteam {2}"',
|
|
$player->login, $target);
|
|
|
|
// removevip selected player
|
|
$command = array();
|
|
$command['author'] = $player;
|
|
$command['params'] = 'removevipteam ' . $target;
|
|
chat_jfreu($aseco, $command);
|
|
|
|
// check whether last vipteam was removed
|
|
$teamsleft = false;
|
|
foreach ($aseco->server->jfreu->vip_team_list as $tm) {
|
|
if ($tm != '') {
|
|
$teamsleft = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!$teamsleft) {
|
|
// close main window
|
|
mainwindow_off($aseco, $player->login);
|
|
} else {
|
|
// log clicked command
|
|
$aseco->console('player {1} clicked command "/jfreu listvipteams"',
|
|
$player->login);
|
|
|
|
// refresh listvips window
|
|
$command['params'] = 'listvipteams';
|
|
chat_jfreu($aseco, $command);
|
|
}
|
|
}
|
|
} // event_jfreu
|
|
?>
|