PDA

Просмотр полной версии : [CMD] /settime - меняем время



Desulaid
27.06.2016, 10:20
SETTIME

Хаю-хай, хочу представить вам два простых варианта одной команды, которые меняют время как время для игроков, так и время абсолютно.


Этот вариант команды абсолютно меняет время на сервере и меняет внутриигровое время суток. Подробнее о функции settime() можно прочитать вот тут (перейти) (http://pro-pawn.ru/showthread.php?8862).
Не сложно понять, но тут нам понадобится sscanf(). При его отсутствии скачать плагин можно здесь (перейти) (https://github.com/maddinat0r/sscanf/releases).


CMD:settime(playerid, params[])
{
const SIZE_PACKED_STRING = 31;
const AMOUNT_SIZE_TIME_STRING = 9;

new hourse, minutes, seconds;
if (sscanf(params, !"dD(-1)D(-1)", hourse, minutes, seconds))
{
SendClientMessage(playerid, -1, !"Использование: /settime (0-23) (0-59) (0-59)");
return SendClientMessage(playerid, -1, !"* использование минут и секунд не обязательно !");
}
if (minutes == -1)
gettime(_, minutes, _);
if (seconds == -1)
gettime(_, _, seconds);
new str_time[AMOUNT_SIZE_TIME_STRING];
format(str_time, sizeof(str_time), "%02d:%02d:%02d", hourse, minutes, seconds);
if ((!(0 <= hourse <= 23) && (!(0 <= minutes <= 59)) && (!(0 <= seconds <= 59))))
return SendClientMessage(playerid, -1, !"Ошибка в указании времени !");
new str[SIZE_PACKED_STRING] = !"Администратор ({48FC23}", name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
strcat(str, name);
strcat(str, !"{ffffff}) сменил время на сервере. Текущее время: {48FC23}");
strcat(str, str_time);
strcat(str, !"{ffffff}.");
SetWorldTime(hourse);
settime(hourse, minutes, seconds);
return SendClientMessageToAll(-1, str);
}
Этот вариант команды просто изменит внутриигровое время суток. Здесь я постарался писать без зависимостей.


CMD:settime(playerid, params[])
{
const SIZE_PACKED_STRING = 31;

if (isnull(params))
return SendClientMessage(playerid, -1, !"Использование: /settime (0-23)");
// Если ввели не число - strval вернет ноль.
// А магическое получение нуля никому не хочется :c.
if (!('0' <= params[0] <= '9'))
return SendClientMessage(playerid, -1, !"Ошибка в указании времени !");
new hourse = strval(params);
if (!(0 <= hourse <= 23))
return SendClientMessage(playerid, -1, !"Время может быть в пределах 0-23 !");
new str[SIZE_PACKED_STRING] = !"Администратор ({48FC23}", name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
strcat(str, name);
strcat(str, !"{ffffff}) сменил время на сервере. Текущее время: {48FC23}");
strcat(str, params);
strcat(str, !"{ffffff} час(а).");
SetWorldTime(hourse);
return SendClientMessageToAll(-1, str);
}


Автор Anton Styazhkin (Untonyst) (http://pro-pawn.ru/member.php?4123-Anton-Styazhkin).
Всем бай-бай!