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

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

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от ^_^ Посмотреть сообщение
    Итак, подсчитаем:
    1 вариант:
    Часто начал замечать такую дебильную тенденцию (в частности Про-Павн) максимально утруждать свой код и сваливать всю свою лень на препроцессор.
    PHP код:
    CMD:freeze(playeridparams[])
    {
        if(
    PInfo[playerid][pAdmin] < 1) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Вам недоступна данная команда.");
        
    extract params -> new player:getid; else return Message(playeridCOLOR_GREEN,"(Используйте): {669966}/freeze [ID Player]");//-4 байта из стека
        
    if(== IsPlayerConnected(getid)) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Игрока нет на сервере.");
        static const
            
    fmt_str1[] = "Администратор %s(%d) Вас заморозил."// + 36*4=144 байта
            
    fmt_str2[] = "Вы заморозили игрока %s(%d)."// + 28*4=112 байта
        
    const
            
    fmt1_size sizeof(fmt_str1) - MAX_PLAYER_NAME 3// 36 - 2 + 24 - 2 + 3 = 59;
            
    fmt2_size sizeof(fmt_str2) - MAX_PLAYER_NAME 3// 28 - 2 + 24 - 2 + 3 = 51;
        #if fmt1_size > fmt2_size
        
    const size fmt1_size;
        
    #else
        
    const size fmt2_size;
        
    #endif
        
    new msg[size];// + 59 * 4 = 236;
        
    format(msgsizeof(msg), fmt_str1Nick(playerid)), Message(getidCOLOR_REDmsg);
        
    format(msgsizeof(msg), fmt_str2Nick(getid)), Message(playeridCOLOR_REDmsg);
        return 
    TogglePlayerControllable(getidfalse);
    //Итого 144 + 112 + 144 = 462 
    Чёрд, да если верить таким отзывам, из-за меня на Pro-Pawn одни проблемы.

    Что ж, расставлю все точки над "i".
    Ещё в прошлом году я придумал такой трюк с подсчётом размера строки, чтобы, как многие из вас уже догадались, уменьшить используемый серверов объём стекового пространства.

    Цитата Сообщение от ^_^ Посмотреть сообщение
    SimplePawn
    Я думал, этой программой уже никто не пользуется.

    Да, у топикстартера в 1-м варианте код выглядит раздутым, и учитывая скудные возможности препроцессора в компиляторе Pawn, вряд ли с этим можно что-то сделать.
    Но в то же время такой код куда более универсален. Если нужно изменить содержимое форматной строки, придётся... всего лишь изменить это содержимое - остальную работу компилятор сделает сам, не нужно ничего пересчитывать.
    IMO, именно таким и должен быть качественный код.

    Если же полагаться на сторонние программы вроде SimplePawn, каждый раз придётся выискивать её, чтобы пересчитать всё заново.
    По сути всё сводится к "хочешь поменять текст? живо ищи калькулятор! или SimplePawn!" -_-
    Пожалуй, это и оказалось основной причиной прекращения дальнейшей разработки той программы.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. Пользователь сказал cпасибо:
    Rasta (26.08.2014)
  4. #13
    Аватар для Rasta
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.08.2014
    Сообщений
    32
    Репутация:
    22 ±
    Daniel_Cortez, Да ема е. Я уже почти все команды переписал...
    Да, у топикстартера в 1-м варианте код выглядит раздутым
    Мне это не очень важно, учитывая, если код качественный и обрабатывается быстрее.
    Теперь я вообще не понимаю, что всё таки лучше? Мнения расходятся...

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

    Статус
    Оффлайн
    Регистрация
    22.08.2014
    Сообщений
    32
    Репутация:
    22 ±
    Никто не ответит? Просто остановился на половине, а дальше не знаю как именно писать. Буду благодарен.

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    :D
    Тут твой выбор, есть 2 мнения, выбирай что ближе.(1)

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

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    331
    Репутация:
    47 ±
    Я в свое время предпочел такой вариант. Как предложил ^_^:
    PHP код:
    CMD:freeze(playeridparams[])
    {
        new 
    strcmd[59];//Вместо потерянной памяти из сегмента данных используем стек, при этом теряем 0 байтов
        
    if(PInfo[playerid][pAdmin] < 1) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Вам недоступна данная команда.");
        else if(
    sscanf(params"i"params[0])) return Message(playeridCOLOR_GREEN,"(Используйте): {669966}/freeze [ID Player]");
        else if(!
    IsPlayerConnected(params[0])) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Игрока нет на сервере.");
        
    format(strcmdsizeof(strcmd), "Администратор %s(%d) Вас заморозил."Nick(playerid));
        
    Message(params[0], COLOR_REDstrcmd);
        
    format(strcmdsizeof(strcmd), "Вы заморозили игрока %s(%d)."Nick(params[0]));
        
    Message(playeridCOLOR_REDstrcmd);
        return 
    TogglePlayerControllable(params[0], false);

    Просто, понятно и работает как часики. А гнаться за милисекундами, как уже говорилось много раз не стоит.
    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

    Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE

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

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от underwoker Посмотреть сообщение
    Я в свое время предпочел такой вариант. Как предложил ^_^:
    PHP код:
    CMD:freeze(playeridparams[])
    {
        new 
    strcmd[59];//Вместо потерянной памяти из сегмента данных используем стек, при этом теряем 0 байтов
        
    if(PInfo[playerid][pAdmin] < 1) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Вам недоступна данная команда.");
        else if(
    sscanf(params"i"params[0])) return Message(playeridCOLOR_GREEN,"(Используйте): {669966}/freeze [ID Player]");
        else if(!
    IsPlayerConnected(params[0])) return Message(playeridCOLOR_RED,"(Ошибка): {FF6666}Игрока нет на сервере.");
        
    format(strcmdsizeof(strcmd), "Администратор %s(%d) Вас заморозил."Nick(playerid));
        
    Message(params[0], COLOR_REDstrcmd);
        
    format(strcmdsizeof(strcmd), "Вы заморозили игрока %s(%d)."Nick(params[0]));
        
    Message(playeridCOLOR_REDstrcmd);
        return 
    TogglePlayerControllable(params[0], false);

    Просто, понятно и работает как часики. А гнаться за милисекундами, как уже говорилось много раз не стоит.
    Раз не погнался, два не погнался, и тут вдруг твой мод оказывается RLS'ом.

  9. #18
    Аватар для Rasta
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.08.2014
    Сообщений
    32
    Репутация:
    22 ±
    Раз не погнался, два не погнался, и тут вдруг твой мод оказывается RLS'ом.
    Подобного слогана придерживался.

    Я бы предпочёл 1-й способ, так как от начала с ним работаю.
    Суть не в этом.
    Если 1-й способ будет считаться медленнее 2-ого, но качественным и универсальным, то считается ли он эффективным?
    Или же всё в порядке, оба одинаковы и выбирать уже на свой вкус?
    Я так точного ответа и не услышал. Можете просто мне ответить, что считается лучшим вариантом?

    - - - Добавлено - - -

    Так как, после 3-ого поста, я переписал практически половину своего кода.
    Не очень-то увлекает меня переписывать код по-несколько раз. Просто, хочу точно закрепить у себя в голове что лучше и, в дальнейшем, придерживаться этих способов, естественно, до появления новых "продвинутых" :)

  10. #19
    Аватар для Rasta
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.08.2014
    Сообщений
    32
    Репутация:
    22 ±
    Вопрос не решён.
    Последний раз редактировалось Salvacore; 27.08.2014 в 05:05.

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

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

  12. Пользователь сказал cпасибо:
    Rasta (27.08.2014)
 

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

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

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

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

Ваши права

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