Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама



**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 100руб/мес, Текстовая 50руб/мес.
Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 32

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

  1. #1
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

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

    /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
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  2. 14 пользователя(ей) сказали cпасибо:
    #ball (03.11.2014)#Vito (02.09.2014)$continue$ (03.11.2014)Brendan (11.01.2016)Dima_Turkow (02.09.2014)Flime (03.09.2014)Londlem (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
    Сообщений
    6
    Репутация:
    17 ±
    Блин в комментах обосрали(((


  4. 9 пользователя(ей) сказали cпасибо:
    $continue$ (04.03.2016)Anton Styazhkin (03.03.2016)Jonick (20.05.2016)Londlem (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
    Сообщений
    25
    Репутация:
    5 ±
    То чувство, когда ты только что прочитал эти комментарии и увидел их на портале.

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

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

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

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

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

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

    Steve Pavlina

  8. #6
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,458
    Репутация:
    2021 ±
    Я просто оставлю это здесь: http://pro-pawn.ru/showthread.php?12773
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

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

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


    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
    Адрес
    Улан-Удэ
    Сообщений
    192
    Репутация:
    37 ±
    Так говоришь, будто жалобу на дудвансах пишешь.

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

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

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

 

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

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

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

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

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

Ваши права

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