и чем ты поправил код?
это уже параноя.
Люди это обычный /ahelp, незачем так глубоко входить в роль.
Вид для печати
Ну зачеееем?
Для чего switch?
Ну не тяжело же
А еще лучше массив юзать.PHP код:
switch(PlayerInfo[playerid][pAdmin])
{
case 1:
case 2:
case 3:
....
}
А если так?
Будет муторнее, но более оптимизированнее, разве не так?PHP код:
switch(PlayerInfo[playerid][pAdmin])
{
case 1:
case 1,2:
case 1..3:
case 1..4:
case 1..5:
}
Прошу прощения.
Действительно, сглупил.
Ну а если, к примеру, в case 3 вставить команды 1, 2 и 3 лвл'ов?
Я думаю switch будет в любом случае оптимизированнее проверок.
Или не?
Если понадобится изменить перечень команд для одного из уровней админки, в /ahelp придётся редактировать код сразу в нескольких местах вместо одного. Только зря потеряете время.
Массив тоже не вариант. У одного уровня админки может быть 2-3 команды, а у другого - список из нескольких строк (SCM). Эту проблему можно решить, сделав перечисление (enum) типа "уровень - строка" и в цикле перебирать все строки и показывать те, для которых уровень меньше или равен нужному. Но при таком подходе мало того, что цикл будет медленнее нескольких условий, так ещё и память будет расходоваться нерационально, т.к. в массиве размер всех строк должен быть одинаков.
На самом деле это не оптимизация, а скорее всего удобство. Чем копаться в SendClientMessange при добавление новой команды.
Пожалуй, если бы я писал сейчас мод я так и реализовал бы /ahelp:
PHP код:
const MAX_LEN_COMMANDS = 32;
const MAX_SERVER_COMMANDS = 5;
PHP код:
enum e_ADMIN_COMMANDS_INFO
{
e_name_admin_command[MAX_LEN_COMMANDS],
e_lvl_admin
}
static const admin_commands[MAX_SERVER_COMMANDS][e_ADMIN_COMMANDS_INFO] =
{
{ "/ahelp", 1 },
{ "/spec", 1 },
{ "/skick", 2 },
{ "/mute", 2 },
{ "/goto", 3 }
};
PHP код:
CMD:ahelp(playerid)
{
if(0 == PlayerInfo[playerid][pAdmin]) return 0;
for(new i = 0; i < MAX_SERVER_COMMANDS; i++)
{
if(admin_commands[i][e_lvl_admin] > PlayerInfo[playerid][pAdmin]) continue;
printf("Название команды: %s | Уровень админки: %d", admin_commands[i][e_name_admin_command], admin_commands[i][e_lvl_admin]);
}
}