Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: /ahelp

  1. #11
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    Макросы не используются + код поправил.
    и чем ты поправил код?
    Цитата Сообщение от Valera_Trefilov Посмотреть сообщение
    PHP код:
    new CMD_TEXT[6][64] = {
    "/test""/test""/test""/test""/test"
    };

    if(
    strcmp(cmd"/ahelp"true) == 0)
    {
        new 
    stringf[64];
        for(new 
    i=1<= 5i++) 
        {
            if(
    PlayerInfo[playerid][pAdmin] < i) continue;
            else 
    format(stringf64"%i уровень: %s",i,CMD_TEXT[i]),SendClientMessage(playerid0xB8860BFFstringf);
            if(
    == 1SendClientMessage(playerid,0xFFFF00AA,"Доступные команды:");
        }
        return 
    1;

    Цитата Сообщение от Valera_Trefilov Посмотреть сообщение
    Вот немного переделал. как по мне проще команды в массив. а потом просто циклом вывести.
    немножко оптимизации просто

    PHP код:
    new CMD_TEXT[6][64] = {
    "/test""/test""/test""/test""/test"
    };

    if(
    strcmp(cmd"/ahelp"true) == 0)
    {
        new 
    stringf[64];
        for(new 
    i=1<= 5i++) 
        {
            if(
    == 1SendClientMessage(playerid,0xFFFF00AA,"Доступные команды:");
            if(
    PlayerInfo[playerid][pAdmin] == iformat(stringf64"%i уровень: %s",i,CMD_TEXT[i]),SendClientMessage(playerid0xB8860BFFstringf);
            else break;
        }
        return 
    1;

    это уже параноя.
    Люди это обычный /ahelp, незачем так глубоко входить в роль.

  2. #12
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    и чем ты поправил код?




    это уже параноя.
    Люди это обычный /ahelp, незачем так глубоко входить в роль.
    Ну владелец RLS так и скажет.

  3. #13
    Аватар для Alanchick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    Ну зачеееем?
    Для чего switch?
    Ну не тяжело же
    PHP код:
    switch(PlayerInfo[playerid][pAdmin])
    {
        case 
    1:
        case 
    2:
        case 
    3:
        ....

    А еще лучше массив юзать.
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  4. #14
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Alanchick Посмотреть сообщение
    Ну зачеееем?
    Для чего switch?
    Ну не тяжело же
    PHP код:
    switch(PlayerInfo[playerid][pAdmin])
    {
        case 
    1:
        case 
    2:
        case 
    3:
        ....

    А еще лучше массив юзать.
    Со switch будут показаны команды только для админов своего уровня, без предыдущих.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. #15
    Аватар для Alanchick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    А если так?
    PHP код:
    switch(PlayerInfo[playerid][pAdmin])
    {
        case 
    1:
        case 
    1,2:
        case 
    1..3:
        case 
    1..4:
        case 
    1..5:

    Будет муторнее, но более оптимизированнее, разве не так?
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  6. #16
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Alanchick Посмотреть сообщение
    А если так?
    PHP код:
    switch(PlayerInfo[playerid][pAdmin])
    {
        case 
    1:
        case 
    1,2:
        case 
    1..3:
        case 
    1..4:
        case 
    1..5:

    Будет муторнее, но более оптимизированнее, разве не так?
    Вы хоть проверяли этот код? И дело даже не в том, что нет действий после case, можете просто поставить "{}".
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. #17
    Аватар для Alanchick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    Прошу прощения.
    Действительно, сглупил.
    Ну а если, к примеру, в case 3 вставить команды 1, 2 и 3 лвл'ов?
    Я думаю switch будет в любом случае оптимизированнее проверок.
    Или не?
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  8. #18
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Alanchick Посмотреть сообщение
    Прошу прощения.
    Действительно, сглупил.
    Ну а если, к примеру, в case 3 вставить команды 1, 2 и 3 лвл'ов?
    Я думаю switch будет в любом случае оптимизированнее проверок.
    Или не?
    Если понадобится изменить перечень команд для одного из уровней админки, в /ahelp придётся редактировать код сразу в нескольких местах вместо одного. Только зря потеряете время.

    Массив тоже не вариант. У одного уровня админки может быть 2-3 команды, а у другого - список из нескольких строк (SCM). Эту проблему можно решить, сделав перечисление (enum) типа "уровень - строка" и в цикле перебирать все строки и показывать те, для которых уровень меньше или равен нужному. Но при таком подходе мало того, что цикл будет медленнее нескольких условий, так ещё и память будет расходоваться нерационально, т.к. в массиве размер всех строк должен быть одинаков.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. 2 пользователя(ей) сказали cпасибо:
    #enotik (06.01.2016) Alanchick (05.01.2016)
  10. #19
    Аватар для 123
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.02.2014
    Сообщений
    93
    Репутация:
    8 ±
    Цитата Сообщение от Valera_Trefilov Посмотреть сообщение
    PHP код:
    new CMD_TEXT[6][64] = {
    "/test""/test""/test""/test""/test"
    };

    if(
    strcmp(cmd"/ahelp"true) == 0)
    {
        new 
    stringf[64];
        for(new 
    i=1<= 5i++) 
        {
            if(
    PlayerInfo[playerid][pAdmin] < i) continue;
            else 
    format(stringf64"%i уровень: %s",i,CMD_TEXT[i]),SendClientMessage(playerid0xB8860BFFstringf);
            if(
    == 1SendClientMessage(playerid,0xFFFF00AA,"Доступные команды:");
        }
        return 
    1;

    То самое чувство, когда "оптимизировал" команду с помощью цикла, и считаешь себя богом скриптинга

  11. #20
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    На самом деле это не оптимизация, а скорее всего удобство. Чем копаться в 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"},
        { 
    "/spec"},
        { 
    "/skick"},
        { 
    "/mute"},
        { 
    "/goto"}
    }; 
    PHP код:
    CMD:ahelp(playerid)
    {
        if(
    == PlayerInfo[playerid][pAdmin]) return 0;
        for(new 
    0MAX_SERVER_COMMANDSi++)
        {
            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]);
        }

    Цитата Сообщение от 123 Посмотреть сообщение
    То самое чувство, когда "оптимизировал" команду с помощью цикла, и считаешь себя богом скриптинга
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

 

 
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •