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

Тема: /cc (ZCMD/DC_CMD)

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    /cc (ZCMD/DC_CMD)

    Думаю, не нужно объяснять, что делает эта команда - она есть в 90% всех модов.
    Для тех, кто думает, что обычный цикл for на 100 итераций никак не оптимизировать: вынужден вас огорчить...

    В обычном виде на каждой итерации цикла функции SendClientMessageToAll передаются одни и те же параметры, поэтому с помощью #emit передача параметров вынесена за пределы цикла - в теле цикла оставлен только сам вызов функции.
    И да, я смею называть это максимальной оптимизацией. Возможно, даже слишком.

    PHP код:
    CMD:cc(playeridparams[]) // by Daniel_Cortez \\ pro-pawn.ru
    {
        
    // проверка на админа (при необходимости замените на свою)
        
    if(PlayerInfo[playerid][pAdmin] != 0)
        {
            
    // объявить строковую константу и счётчик цикла
            
    static const str[] = "";
            new 
    100;

            
    // трюк, предотвращающий краш компилятора (баг sysreq.c)
            // (баг исправлен в патчах от Zeex, в компиляторах версий 0x030A и новее
            // обход бага не нужен, для чего и используется директива #if)
    #if __Pawn < 0x030A
            
    { if(== iSendClientMessageToAll(0str); }
    #endif

            // передать параметры для SendClientMessageToAll
            #emit    push.c        str
            #emit    push.c        0xFFFFFFFF
            #emit    push.c        8

            // вызвать функцию 100 раз
            
    do{
                
    #emit    sysreq.c    SendClientMessageToAll
            
    }while(--i);

            
    // освободить стековое пространство, зарезервированное под параметры
            #emit    stack        12
        
    }
        return 
    1;

    P.S.: Данная команда представляет собой всего лишь пример оптимизации с помощью #emit (в частности, пропуска передачи через стек одних и тех же аргументов функции при её многократном вызове). Этот приём, как и любой другой, связанный с #emit, имеет смысл только для оптимизации самых узких мест, влияющих на производительность сервера.

    Автор: Daniel_Cortez

    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось Daniel_Cortez; 14.08.2016 в 13:41. Причина: update
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 15 пользователя(ей) сказали cпасибо:
    #ball (03.11.2014) #Vito (02.09.2014) $continue$ (03.11.2014) Boulevard_Picard (24.07.2018) Brendan (11.01.2016) Dima_Turkow (02.09.2014) Flime (03.09.2014) L0ndl3m (02.09.2014) Nurick (02.09.2014) Processing (05.03.2016) Prolific (04.03.2016) Salvacore (02.09.2014) Spectrum (03.11.2014) vovandolg (14.08.2016) Тузик (31.08.2016)
  3. #2
    Аватар для Batka1337
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.10.2015
    Сообщений
    12
    Репутация:
    18 ±
    Блин в комментах обосрали(((


  4. 10 пользователя(ей) сказали cпасибо:
    $continue$ (04.03.2016) bullplex (11.11.2018) Desulaid (03.03.2016) Jonick (20.05.2016) L0ndl3m (03.03.2016) Seregamil (14.08.2016) seriu (02.07.2016) Unreal (19.05.2016) Иван Бубнов (03.03.2016) Тузик (16.11.2016)
  5. #3
    Аватар для middlematt
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.01.2016
    Сообщений
    40
    Репутация:
    7 ±
    То чувство, когда ты только что прочитал эти комментарии и увидел их на портале.

  6. #4
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от middlematt Посмотреть сообщение
    То чувство, когда ты только что прочитал эти комментарии и увидел их на портале.
    link go

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Batka1337 Посмотреть сообщение
    Блин в комментах обосрали(((

    Но его код ведь меньше((
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Я просто оставлю это здесь: http://pro-pawn.ru/showthread.php?12773
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Ну или:
      Открыть/закрыть


    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

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

    Статус
    Оффлайн
    Регистрация
    05.03.2016
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Я просто оставлю это здесь: http://pro-pawn.ru/showthread.php?12773
    Твоими фактами кидаться в табло "Супыр скрыптырам" буду. И док-ва есть и пояснения. Вообще класс.

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Так говоришь, будто жалобу на дудвансах пишешь.

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    И да, я смею называть это максимальной оптимизацией. Возможно, даже слишком.
    Код:
    new i = 100;
    to

    Код:
    new i[1 char];
    i{0} = 100;

 

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

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

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

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

Метки этой темы

Ваши права

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