79 lines
2.7 KiB
PHP
79 lines
2.7 KiB
PHP
|
<?php
|
||
|
/* vim: set noexpandtab tabstop=2 softtabstop=2 shiftwidth=2: */
|
||
|
|
||
|
/**
|
||
|
* Nextmap plugin.
|
||
|
* Shows the name of the next challenge.
|
||
|
* Updated by Xymph & AssemblerManiac
|
||
|
*
|
||
|
* Dependencies: none
|
||
|
*/
|
||
|
|
||
|
Aseco::addChatCommand('nextmap', 'Shows name of the next challenge');
|
||
|
|
||
|
function chat_nextmap($aseco, $command) {
|
||
|
global $rasp, $jukebox;
|
||
|
|
||
|
$login = $command['author']->login;
|
||
|
|
||
|
// check for relay server
|
||
|
if ($aseco->server->isrelay) {
|
||
|
$message = formatText($aseco->getChatMessage('NOTONRELAY'));
|
||
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// check jukebox first
|
||
|
if (!empty($jukebox)) {
|
||
|
$jbtemp = $jukebox;
|
||
|
$track = array_shift($jbtemp);
|
||
|
$next = $track['Name'];
|
||
|
// get environment if TMF/TMS/TMO
|
||
|
if ($aseco->server->getGame() != 'TMN') {
|
||
|
$aseco->client->query('GetChallengeInfo', $track['FileName']);
|
||
|
$track = $aseco->client->getResponse();
|
||
|
$env = $track['Environnement'];
|
||
|
}
|
||
|
} else {
|
||
|
if ($aseco->server->getGame() != 'TMF') {
|
||
|
// rewrite by AssemblerManiac with the current index
|
||
|
$aseco->client->query('GetCurrentChallengeIndex');
|
||
|
$current = $aseco->client->getResponse();
|
||
|
// do GetChallengeList with the incremented index, this way we avoid looping through data to find the right track
|
||
|
$aseco->client->resetError();
|
||
|
$rtn = $aseco->client->query('GetChallengeList', 1, ++$current);
|
||
|
$track = $aseco->client->getResponse();
|
||
|
// if we try to get one more than really exists, we get a trappable error, so then get the first track
|
||
|
if ($aseco->client->isError()) {
|
||
|
$rtn = $aseco->client->query('GetChallengeList', 1, 0);
|
||
|
$track = $aseco->client->getResponse();
|
||
|
}
|
||
|
} else { // TMF
|
||
|
$aseco->client->query('GetNextChallengeIndex');
|
||
|
$next = $aseco->client->getResponse();
|
||
|
$rtn = $aseco->client->query('GetChallengeList', 1, $next);
|
||
|
$track = $aseco->client->getResponse();
|
||
|
}
|
||
|
$next = stripNewlines($track[0]['Name']);
|
||
|
$env = $track[0]['Environnement'];
|
||
|
}
|
||
|
|
||
|
// show chat message
|
||
|
if ($aseco->server->getGame() == 'TMF') {
|
||
|
if ($aseco->server->packmask == 'Stadium')
|
||
|
$message = formatText($rasp->messages['NEXTMAP'][0],
|
||
|
stripColors($next));
|
||
|
else
|
||
|
$message = formatText($rasp->messages['NEXTENVMAP'][0],
|
||
|
$env, stripColors($next));
|
||
|
} elseif ($aseco->server->getGame() == 'TMN') {
|
||
|
$message = formatText($rasp->messages['NEXTMAP'][0],
|
||
|
stripColors($next));
|
||
|
} else { // TMS/TMO
|
||
|
$message = formatText($rasp->messages['NEXTENVMAP'][0],
|
||
|
$env, stripColors($next));
|
||
|
}
|
||
|
$aseco->client->query('ChatSendServerMessageToLogin', $aseco->formatColors($message), $login);
|
||
|
} // chat_nextmap
|
||
|
?>
|