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

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

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

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

Мануал Динамическая система рангов

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

BeceJIblu*

Ученик
Приветствую всех. В этом мануале мы с вами рассмотрем динамическую систему рангов. Ну что, начнём!

В начало мода:


PHP:
#include <mxINI>
#include <zcmd>
#include <sscanf>

forward LoadRangs();

#define netyranga "Без ранга"

new logged[MAX_PLAYERS];

В public OnPlayerConnect(playerid):

PHP:
logged[playerid] = 0;
В public OnPlayerDisconnect(playerid, reason):

PHP:
logged[playerid] = 0;
В public OnPlayerSpawn(playerid):

PHP:
logged[playerid] = 1;
В public OnGameModeInit():

PHP:
LoadRangs();
В конец мода:

PHP:
public LoadRangs()
{
	for(new fr = 1; fr < 11; fr++)
	{
		new rangs[19];
		format(rangs, sizeof(rangs), "rangs/%d.ini", fr);
		new iniFile = ini_createFile(rangs);
		{
			ini_setString(iniFile, "1", netyranga);
			ini_setString(iniFile, "2", netyranga);
			ini_setString(iniFile, "3", netyranga);
			ini_setString(iniFile, "4", netyranga);
			ini_setString(iniFile, "5", netyranga);
			ini_setString(iniFile, "6", netyranga);
			ini_setString(iniFile, "7", netyranga);
			ini_setString(iniFile, "8", netyranga);
			ini_setString(iniFile, "9", netyranga);
			ini_setString(iniFile, "10", netyranga);
			ini_closeFile(iniFile);
			printf("Динамические ранги загружены");
		}
	}
	return 1;
}
Теперь сами команды:

PHP:
CMD:editrank(playerid, params[])
{
	new string[125], namerank[50], file[50];
	if(logged[playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFAA, "Зайдите на сервер!");
	if(PlayerInfo[playerid][pLeader] < 1) return SendClientMessage(playerid, COLOR_GREY, "Вы не лидер!");
	if(sscanf(params, "ds", params[0], namerank)) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /editrank [Ранг] [Название ранга]");
	if(params[0] < 1 || params[0] > 10) return SendClientMessage(playerid, COLOR_GREY, "Неверное значение. Количество рангов от 1 до 10");
	format(file, sizeof(file), "rangs/%d.ini", PlayerInfo[playerid][pLeader]);
	new iniFile = ini_openFile(file);
	{
		switch(params[0])
		{
			case 1: ini_setString(iniFile, "1", namerank);
			case 2: ini_setString(iniFile, "2", namerank);
			case 3: ini_setString(iniFile, "3", namerank);
			case 4: ini_setString(iniFile, "4", namerank);
			case 5: ini_setString(iniFile, "5", namerank);
			case 6: ini_setString(iniFile, "6", namerank);
			case 7: ini_setString(iniFile, "7", namerank);
			case 8: ini_setString(iniFile, "8", namerank);
			case 9: ini_setString(iniFile, "9", namerank);
			case 10: ini_setString(iniFile, "10", namerank);
		}
		ini_closeFile(iniFile);
	}
	format(string, sizeof(string), "Название %d ранга было изменено на %s", params[0], namerank);
	SendClientMessage(playerid, 0xFFFFFFAA, string);
	return 1;
}
PHP:
CMD:f(playerid, params[])
{
	new string[200], rrank[4], file[50], returnString[50];
	if(sscanf(params, "s", params[0])) SendClientMessage(playerid, 0xFFFFFFAA, "Используйте: /f [Текст]");
	if(PlayerInfo[playerid][pMember] == 0 || PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_GRAD2, "Вы нигде не состоите!");
	if(PlayerInfo[playerid][pLeader] > 1 || PlayerInfo[playerid][pMember] > 1 && PlayerInfo[playerid][pLeader] < 19 || PlayerInfo[playerid][pMember] < 19 && PlayerInfo[playerid][pRank] > 0)
	{
		new leader = PlayerInfo[playerid][pLeader];
		new member = PlayerInfo[playerid][pMember];
		new PlayerName[MAX_PLAYER_NAME];
		GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
		if(PlayerInfo[playerid][pRank] >= 1)
		{
			if(leader) format(file, sizeof(file), "rangs/%d.ini", leader);
			else if(member) format(file, sizeof(file), "rangs/%d.ini", member);
			format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]);
			new iniFile = ini_openFile(file);
			ini_getString(iniFile, rrank, returnString);
			ini_closeFile(iniFile);
		}
		if(PlayerInfo[playerid][pRank] < 1) { format(string, sizeof(string), "[F] Новичек %s: %s", PlayerName, params[0]); }
		else { format(string, sizeof(string), "[F] %s %s: %s", returnString, PlayerName, params[0]); }
		if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); }
		else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); }
	}
	return 1;
}
Ну вот и всё. Плюс системы заключается в том, что лидеры могут изменять название рангов прямо из игры. Удобно и быстро.

Всем спасибо, с вами был BeceJIblu*.
Автор: BeceJIblu*​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу