Írtam rá egy komplett szkriptet, de nem teszteltem, ha nem megy, akkor jelezd itt, és kijavítom.
#include < a_samp >
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xFF0000AA
new bool: inProgress = false;
new serverCount;
new restartTimer;
public RestartServer( );
public OnPlayerCommandText( playerid, cmdtext[ ] ) {
if( !strcmp( \"/restart\", cmdtext, true ) ) {
if( IsPlayerAdmin( playerid ) ) {
SendClientMessage( playerid, COLOR_RED, \"Nem használhatod ezt a parancsot!\" );
} else if( inProgress ) {
SendClientMessage( playerid, COLOR_RED, \"Már folyamatban van egy visszaszámlálás!\" );
} else {
inProgress = true;
serverCount = 30;
restartTimer = SetTimer( \"RestartServer\", 1000, true );
SendClientMessage( playerid, COLOR_GREEN, \"Visszaszámlálás elindítva!\" );
}
return 1;
}
return 0;
}
public RestartServer( ) {
--serverCount;
if( !serverCount ) {
inProgress = false;
SendRconCommand( \"gmx\" );
KillTimer( restartTimer );
return;
}
static formatString[ 3 ];
format( formatString, 3, \"%d\", serverCount );
GameTextForAll( formatString, 1000, 4 );
}
E: Bennehagytam egy felesleges paramétert a RestartServer függvény deklarációjánál, mostmár kiszedtem.
De magát a parancsot csak simán másold be az OnPlayerCommandText függvényedbe. Na várj, megpróbálom dcmd-be, de felesleges, plusz, ha ilyen parancskezelõt akarsz használni, akkor zcmd-t használj, az a leggyorsabb. De:
public OnPlayerCommandText( playerid, cmdtext[ ] ) {
dcmd(restart,7,cmdtext);
return 0;
}
dcmd_restart( playerid, params[ ] ) {
#pragma unused params
if( IsPlayerAdmin( playerid ) ) {
SendClientMessage( playerid, COLOR_RED, \"Nem használhatod ezt a parancsot!\" );
} else if( inProgress ) {
SendClientMessage( playerid, COLOR_RED, \"Már folyamatban van egy visszaszámlálás!\" );
} else {
inProgress = true;
serverCount = 30;
restartTimer = SetTimer( \"RestartServer\", 1000, true );
SendClientMessage( playerid, COLOR_GREEN, \"Visszaszámlálás elindítva!\" );
}
return 1;
}
Talán valahogy így, már nagyon rég használtam dcmd-t.