Доступ к готовым решениям

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

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

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

Мануал Система бонуса с возможностью редактирования прямо в игре

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

Regisss

Умник
Доброго времени суток, форумчане! Выкладываю вам систему бонуса на сервер, с возможностью редактирования прямо в игре! И так! Приступим!

Нам понадобиться инклуд MxINI. Найти его вы можете на форуме.

И так, для начала создайте файл "bonus.ini" в папке "scriptfiles" и впишите такие значения:

PHP:
bonuson = 0
bonusmoney = 1
bonusdonate = 1
bonuslvl = 1
Всё в дальнейшем вы можете изменить прямо в игре.

И так, в начало мода:

PHP:
new bonus[4];
forward SaveBonus();
forward GiveBonus(playerid);
forward LoadBonus();
forward UpdateBonus();
Ко всем пабликам:

PHP:
public GiveBonus(playerid)
{
	new st[100];
	GiveMoney(playerid, bonus[1]);
	PlayerInfo[playerid][pDonateMoney] = bonus[2]; // на своё
	PlayerInfo[playerid][pLevel] = bonus[3];
	format(st,sizeof(st),"Вы получили бонус: %d$, %d Donate и %d LVL", bonus[1], bonus[2], bonus[3]);
	OnPlayerSave(playerid);
}
public UpdateBonus()
{
	if(bonus[0] == 0) SendRconCommand("hostname [RUS | UA] Relax RPG [0.3.7]"); // название изменяйте на своё
	if(bonus[0] == 1) SendRconCommand("hostname [RUS|UA] Relax RPG [BONUS!!]");
	return 1;
}
public LoadBonus()
{
	new File = iniOpen("bonus.ini");
	ini_GetInteger(File,"bonuson",bonus[0]);
	ini_GetInteger(File,"bonusmoney",bonus[1]);
	ini_GetInteger(File,"bonusdonate",bonus[2]);
	ini_GetInteger(File,"bonuslvl",bonus[3]);
	ini_Close(File);
	return true;
}
public SaveBonus()
{
	new File = iniOpen("bonus.ini");
	ini_SetInteger(File,"bonuson",bonus[0]);
	ini_SetInteger(File,"bonusmoney",bonus[1]);
	ini_SetInteger(File,"bonusdonate",bonus[2]);
	ini_SetInteger(File,"bonuslvl",bonus[3]);
	ini_Close(File);
	return true;
}
В public OnGamemodeInit

PHP:
	LoadBonus();
	UpdateBonus();
в конец вашей регистрации:

PHP:
if(bonus[0] == 1) GiveBonus(playerid);
Сама команда:

PHP:
	if(strcmp(cmd, "/bonuspanel", true) == 0) // чтобы на DC_CMD просто замените шапку на CMD:bonuspanel(playerid, params[])
	{
		if(PlayerInfo[playerid][pAdmin] < 10) return true; // своё
		new ttext[10], str[256];
		if(bonus[0] == 0) ttext = "Выключен";
		else ttext = "Включен";
		format(str,sizeof(str),"~ Бонус "#ogt"[%s]\n\nДенег в бонусе "#ogt"[%d$]\nДоната в бонусе"#ogt" [%d]\nLVL В бонусе "#ogt"[%d lvl]", ttext, bonus[1], bonus[2], bonus[3]);
		ShowPlayerDialog(playerid, 5621, DIALOG_STYLE_LIST, "Редактор бонуса",str,"Выбрать","Отмена");
		return true;
	}
в OnPlayerDialogResponse:

PHP:
	if(dialogid == 5621)
	{
	    if(response)
	    {
	        switch(listitem)
	        {
	            case 0:
	            {
	                if(bonus[0] == 0) bonus[0] = 1;
	                else bonus[0] = 0;
	                SaveBonus();
	                UpdateBonus();
	                OnPlayerCommandText(playerid, "/bonuspanel");
				}
				case 1:
				{
				    SPD(playerid, 5622, DIALOG_STYLE_INPUT, "{"#cWHITE"}Деньги",""#ogt"Введите новое кол-во денег бонуса","Ок","Отмена");
				}
				case 2:
				{
				    SPD(playerid, 5623, DIALOG_STYLE_INPUT, "{"#cWHITE"}Донат",""#ogt"Введите новое кол-во доната бонуса","Ок","Отмена");
				}
				case 3:
				{
				    SPD(playerid, 5624, DIALOG_STYLE_INPUT, "{"#cWHITE"}Уровень",""#ogt"Введите новый уровень в бонусе","Ок","Отмена");
				}
			}
		}
	}
	if(dialogid == 5622)
	{
	    if(response)
	    {
	        if(!strlen(inputtext)) return SPD(playerid, 5622, DIALOG_STYLE_INPUT, "{"#cWHITE"}Деньги",""#ogt"Введите новое кол-во денег бонуса","Ок","Отмена");
			new dengi = strval(inputtext);
			bonus[1] = dengi;
			OnPlayerCommandText(playerid, "/bonuspanel");
			SaveBonus();
			UpdateBonus();
		}
	}
	if(dialogid == 5623)
	{
	    if(response)
	    {
	        if(!strlen(inputtext)) return SPD(playerid, 5623, DIALOG_STYLE_INPUT, "{"#cWHITE"}Донат",""#ogt"Введите новое кол-во доната бонуса","Ок","Отмена");
			new donat = strval(inputtext);
			bonus[2] = donat;
			OnPlayerCommandText(playerid, "/bonuspanel");
			SaveBonus();
			UpdateBonus();
		}
	}
	if(dialogid == 5624)
	{
	    if(response)
	    {
	        if(!strlen(inputtext)) return SPD(playerid, 5624, DIALOG_STYLE_INPUT, "{"#cWHITE"}Уровень",""#ogt"Введите новый уровень в бонусе","Ок","Отмена");
			new lvl = strval(inputtext);
			bonus[3] = lvl;
			OnPlayerCommandText(playerid, "/bonuspanel");
			SaveBonus();
			UpdateBonus();
		}
	}
Делал я под свой мод! Так что изменяйте всё под себя!

Внимания! Всё я тестил на сервере, так что если у вас что-то не работает - виноваты уже вы.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу