Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для ALIT13
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.05.2014
    Сообщений
    346
    Репутация:
    2 ±

    Опьтимизация диологов

    Как оптимизировать такой диалог

    PHP код:
    case dYazik:
            {
                if(!
    response)
                {
                    switch(
    listitem)
                    {
                        case 
    0:
                        {
                            
    PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Английскии"));
                            
    SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Английский'"), PlayerInfo[playerid][pyazik] = 2;
                        }
                        case 
    1:
                        {
                            
    PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Китайскии"));
                            
    SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Китайский'"), PlayerInfo[playerid][pyazik] = 3;
                        }
                        case 
    2:
                        {
                            
    PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Испанскии"));
                            
    SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Испанский'"), PlayerInfo[playerid][pyazik] = 4;
                        }
                        case 
    3:
                        {
                            
    PlayerTextDrawSetString(playerid,register[playerid][14], TranslateText("Русскии"));
                            
    SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваш родной язык теперь:{FFFFFF} 'Русский'"), PlayerInfo[playerid][pyazik] = 5;
                        }
                    }
                   }
            } 

  2. #2
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    А что тут оптимизировать собственно?

    Если только break добавить.

    Или вы хотите код сократить?

    Можно так, например

    PHP код:
    case dYazik

        if (!
    response)
        {
            new 
    string[64];
            
            static const 
    languages[][] = {
                
    "Английский""Китайский""Испанский""Русский"
            
    };

            
    PlayerTextDrawSetString(playeridregister[playerid][14], TranslateText(languages[listitem]));

            
    format(stringsizeof(string), "Хорошо, ваш родной язык теперь:{FFFFFF} '%s'"languages[listitem]);
            
    SendClientMessage(playeridCOLOR_ORANGEstring);

            
    PlayerInfo[playerid][pyazik] = listitem 2;
        }

    Только это далеко не оптимизация, времени на это больше уйдет чем на ваш вариант

    Можно и без static const languages обойтись, передав название в inputtext.

    PHP код:
    case dYazik

        if (!
    response)
        {
            new 
    string[64];

            
    PlayerTextDrawSetString(playeridregister[playerid][14], TranslateText(inputtext));

            
    format(stringsizeof(string), "Хорошо, ваш родной язык теперь:{FFFFFF} '%s'"inputtext);
            
    SendClientMessage(playeridCOLOR_ORANGEstring);

            
    PlayerInfo[playerid][pyazik] = listitem 2;
        }

    Только в этом случае, ShowPlayerDialog должен такой вид иметь
    PHP код:
    ShowPlayerDialog(playeriddYazikDIALOG_STYLE_LIST"Язык""Английский\nКитайский\nИспанский\nРусский""Кнопка 1""Кнопка 2"); 
    Последний раз редактировалось pawnoholic; 26.02.2018 в 17:11.

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    К ответу выше добавлю, что если твой сервер страдает от лагов, то, в первую очередь, нужно переписывать алгоритмы систем, а не делать вот такие мелкие правки, которые, в лучшем случае, позволят выиграть пару тиков процессора. Подобным следует заниматься либо сразу при написании кода, либо уже когда прямо все системы написаны максимально хорошо, но из-за объёмов кода сервер всё равно подтормаживает в некоторые моменты. В остальных случаях это, чаще всего, просто потеря времени
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Ещё вместо TranslateText можно воспользоваться плагином rustext

 

 

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

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

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

Ваши права

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