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

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

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

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

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

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

Darge

Умник
Добрый день, я часто был свидетелем, когда ранг администратору давали с помощью switch/case или же if/else конструкций. И как вам не лень тратить время!? Я решил показать вам другой вариант, который будет работать аналогичным образом.

В самое начала добавим

PHP:
// Это простенькие define 'функции',
// которые облегчают мне написание одного и того же варианта кода =)
// Примеры я буду приводить с использованием этих функций.
	
	#define SendRankMessage(%4,%0,%3,%1,%2) \
	(  \
		%2=%1,  \
		strcat(%2,admin_ranks[player_admin[%0]-1]),  \
		SendClientMessage(%4,%3,%2)  \
	)
	#define admin_rank[%0]  \
		admin_ranks[player_admin[%0]-1]
		
// Здесь у нас пронумерованы ранги ВСЕ администраторов,
// подстраиваем под себя. Если что-то не понятно,
// изучаем массивы :3 

new admin_ranks[5][18] =
{
		"практикант",
		"модератор",
		"ст. модератор",
		"мл. администратор",
		"администратор"
},
// Абстрактный пример массива,
// в котором сохраняется уровень определенного администратора
player_admin[MAX_PLAYERS];
// 
// Другой пример, чтобы вы поняли что к чему.
//
// enum PlayerInfo
// { 
//     pAdmin
// }
// new pInfo[MAX_PLAYERS][PlayerInfo];
Пример использования с SendRankMessage. Суть функции - сразу оповестить игрока/администора с прикрепленным рангом или рангом определенного администратора к сообщению.

PHP:
public OnPlayerConnect(playerid)
// Размер ячеек я не считал!
// А вам я рекомендую их посчитать!
{
	player_admin[playerid] = 5;
	new str[128];
	SendRankMessage(playerid, playerid, -1, "Вы ", str);
	return 1;
}
Использования admin_rank на примере создания общего чата. Суть функции - лень писать много букаф, поэтому я все подставил по макрос с аргументом.

PHP:
public OnPlayerText(playerid, text[])
// Простой пример,
// хотя немного глупо, например,
// для ИРПИ сервера делать в чат сообщение,
// что ты есть администратор.
// А вот для какого-нибудь ДМ в самый раз :3
{
	new server_chat[128], player_name[MAX_PLAYERS][MAX_PLAYER_NAME];
	GetPlayerName(playerid, player_name[playerid], MAX_PLAYER_NAME);
	if(администрор[playerid] > 0)
	{
		format(server_chat, sizeof(server_chat), "%s (%s) говорит: %s", player_name[playerid], admin_rank[playerid], text);
	}
	else if(администрор[playerid] == 0)
	{
		format(server_chat, sizeof(server_chat), "%s говорит: %s", player_name[playerid], text);
	}
	SetPlayerChatBubble(playerid, text, цвет, 20.0, 10000);
	SendClientMessageToAll(цвет, server_chat);
	return 1;
}
Как видно из примеров, вся суть функций идет на получения ячейки массива и вывода ее содержимого, а так как я не установил пустую ячейку (администратора нулевого уровня нет), то из полученной ячейки отнимаем 1.
Я вас не призываю использовать мои def-функции (назовем их так), можете писать все 'чистым' кодом, просто много писать одно и то же мне не нравится. Или можете использовать старые добрые switch/case & if/else конструкции, кто как привык))0)0 Но я не вижу каких-нибудь причин, чтобы использовать их.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу