Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

restart

Статус
В этой теме нельзя размещать новые ответы.

Untonyst

Умник
Команда позволяет перезапустить ваш сервер любым удобным вам вариантом: в определенное время и немедленно! Вы можете установить авто-рестарт на определенный момент времени вплоть до секунд и можете изменить это время. Все данные сохраняются в файл '../scriptfilse/restart.ini'. Если вы забыли на какое время установлен авто-рестарт, то можете это узнать (не открывая файл '../scriptfilse/restart.ini' или можете там :3). Если вам понадобится отменить рестарт, то пожалуйста.

Автор: Untonyst

PHP:
#include <dc_cmd>  
#include <sscanf2>  
#include <mxINI>  

new restart_hour, restart_minute, restart_second, restart_timer;  

const  
	DEFAULT_RESTART_HOUR       = 00,  
	DEFAULT_RESTART_MINUTE     = 00,  
	DEFAULT_RESTART_SECOND     = 00;  

enum  
{  
	DLG_RESTART_INPUT_OR_NOT   = 1,  
	DLG_RESTART_INPUT_INFO  
};  

COMMAND:restart(playerid, params[])  
{  
	if (sscanf(params, "i", params[0]))  
	{  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFFFF}Введите /restart <тип>");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}Типы{FFFFFF}:");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}| {FFFFFF}0 {FFFACD}- узнать время на рестарт");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}| {FFFFFF}1 {FFFACD}- установить новое время");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}| {FFFFFF}2 {FFFACD}- загрузить последние изменения");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}| {FFFFFF}3 {FFFACD}- перезапустить сервер сейчас");  
		SendClientMessage(playerid, 0xAAC5E3FF, "{FFFACD}| {FFFFFF}4 {FFFACD}- отменить рестарт");  
		return 0;  
	}  
	switch(params[0])  
	{  
		case 0:  
		{  
			static const format_message[] = "{FFFACD}Рестарт произойдет в {FFFFFF}%i:%i:%i {FFFACD}!";  
			new send_message[sizeof(format_message) + (-6) + 6 + 1];  	
			format(send_message, sizeof(send_message), format_message, restart_hour, restart_minute, restart_second);  
			SendClientMessage(playerid, 0xAAC5E3FF, send_message);  
			return 1;  
		}  
		case 1:  
			return ShowPlayerDialog(playerid, DLG_RESTART_INPUT_OR_NOT, DIALOG_STYLE_MSGBOX, "Установка времени на рестарт:", "{FFFFFF}Вы действительно хотите обновить время на рестарт сервера?", "Да", "Нет");  
		case 2:  
		{  
			if (!fexist("restart.ini"))  
			{  
				SendClientMessage(playerid, 0xAAC5E3FF, "{FF6347}Невозможно совершить выбранное действие!");  
				return 0;  
			}  
			new restart_file = ini_openFile("restart.ini");  
			ini_getInteger(restart_file, "hour", restart_hour);  
			ini_getInteger(restart_file, "minute", restart_minute);  
			ini_getInteger(restart_file, "second", restart_second);  
			ini_closeFile(restart_file);  
			restart_timer = SetTimer("ServerRestart", 500, false);  
			SendClientMessage(playerid, 0xAAC5E3FF, "{32CD32}Данные успешно загруженны!");  
			return 1;  
		}  
		case 3:  
		{  
			SendClientMessageToAll(0xAAC5E3FF, "{FF6347}Происходит рестарт сервера!");  
			GameModeExit();  
			return 1;  
		}  
		case 4:  
		{  
			SendClientMessageToAll(0xAAC5E3FF, "{FF6347}Рестарт был отменен!");  
			KillTimer(restart_timer);  
			return 1;  
		}  
		default:  
			SendClientMessageToAll(0xAAC5E3FF, "{FF6347}Указан не верный тип рестарта!");  
	}  
	return 1;  
}  

forward ServerRestart();  
public ServerRestart()  
{  
	new hour, minute, second;  
	gettime(hour, minute, second);  
	if (hour == restart_hour 
	&& minute == restart_minute 
	&& second == restart_second)  
	{  
		SendClientMessageToAll(0xAAC5E3FF, "{FF6347}Происходит рестарт сервера!");  
		GameModeExit();  
		return 1;  
	}  
	restart_timer = SetTimer("ServerRestart", 500, false);  
	return 1;  
}  

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])  
{  
	switch(dialogid)  
	{  
		case DLG_RESTART_INPUT_OR_NOT:  
		{  
			if (!response)  
				return 0;  
			if (response)  
				ShowPlayerDialog(playerid, DLG_RESTART_INPUT_INFO, DIALOG_STYLE_INPUT, "Установка времени на рестарт:", "{FFFFFF}Введите время на рестарт, разделяя часы, минуты и секунды запятыми!", "Ввести", "Отмена");  
		}  
		case DLG_RESTART_INPUT_INFO:  
		{  
			if (!response)  
				return 0;  
			if (response)  
			{  
				if (!strlen(inputtext))  
					return 0;  
				if (strlen(inputtext) < 3 && strlen(inputtext) > 6)  
					return 0;  
				for (new i = strlen(inputtext) - 1; i != -1; i--)  
					if ((inputtext[i] >= '0' && inputtext[i] <= '9') 
					|| (inputtext[i] == ','))  
						continue;  
					else  
						return 0;  
				sscanf(inputtext, "p<,>iii", restart_hour, restart_minute, restart_second);  
				if (!(0 <= restart_hour <= 23) 
				|| !(0 <= restart_minute <= 59) 
				|| !(0 <= restart_second <= 59))  
					return 0;  
				new restart_file = ini_openFile("restart.ini");  
				ini_setInteger(restart_file, "hour", restart_hour);  
				ini_setInteger(restart_file, "minute", restart_minute);  
				ini_setInteger(restart_file, "second", restart_second);  
				ini_closeFile(restart_file);  
				static const format_message[] = "{FFFACD}Время на рестарт обновленно на %i:%i:%i";  
				new send_message[sizeof(format_message) + (-6) + 6 + 1];  
				format(send_message, sizeof(send_message), format_message, restart_hour, restart_minute, restart_second);  
				SendClientMessage(playerid, 0xAAC5E3FF, send_message);  
			}
		}
	}
	return 1;  
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу