Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 5
    Гостей: 2
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, robot Bot, crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Monstr™ Дата: 5-06-2012, 18:05 Просмотров: 3699

    TE_BEAMPOINTS - Луч между двумя точками

    Ну чтож, я начинаю подробное изложение сообщений SVC_TEMPENTITY.
    Первая по счету мессага называется TE_BEAMPOINTS.

    Рассмотрим само название:
    BEAM и POINTS - В переводе с английского Beam(Луч), Points(Точки).
    В итоге складываются слова - Луч между двумя точками, точки это координаты.

    /* Temp entity message types for message_begin() */
    #define    TE_BEAMPOINTS               0        // Beam effect between two points
    // write_byte(TE_BEAMPOINTS)
    // write_coord(startposition.x)
    // write_coord(startposition.y)
    // write_coord(startposition.z)
    // write_coord(endposition.x)
    // write_coord(endposition.y)
    // write_coord(endposition.z)
    // write_short(sprite index)
    // write_byte(starting frame)
    // write_byte(frame rate in 0.1's)
    // write_byte(life in 0.1's)
    // write_byte(line width in 0.1's)
    // write_byte(noise amplitude in 0.01's)
    // write_byte(red)
    // write_byte(green)
    // write_byte(blue)
    // write_byte(brightness)
    // write_byte(scroll speed in 0.1's)


    Синтаксис:
    Для того что бы создать сообщения нужно объявить по началу message_begin, а по окончанию message_end.

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "Messages[TE_BEAMPOINTS]"
    #define VERSION "0.1"
    #define AUTHOR "Mon[str]"


    enum _:AIM_ORIGIN
    {
        POINT_ONE,
        POINT_TWO
    };

    new g_iOrigin[AIM_ORIGIN][3];
    new g_iBeamSprite;

    public plugin_init()
    {
        register_plugin(PLUGIN, VERSION, AUTHOR);
        
        register_concmd("Menu_<TE_BEAMPOINTS>", "Menu_Beampoints");
        
        register_cvar("Amplitude", "0");
        register_cvar("Line", "0");
    }

    public plugin_precache()
        g_iBeamSprite = precache_model("sprites/laserbeam.spr");

    public Menu_Beampoints(id)
    {
        if(is_user_alive(id))
        {
            new iMenu = menu_create("TE_BEAMPOINTS", "menu");
            
            menu_additem(iMenu, "StartPoint", "1");
            menu_additem(iMenu, "EndPoint", "2");
            menu_addblank(iMenu, 0);
            menu_additem(iMenu, "Create_BeamPoints", "3");
            
            menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
            menu_display(id, iMenu, 0);
        }
    }

    public menu(id, iMenu, iItem)
    {
        if(iMenu == MENU_EXIT)
        {
            menu_destroy(iMenu);
            
            return 1;
        }
        
        new szData[6], szName[16], iAccess = 0, iCallback = 0;
        
        menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);

        new iKey = str_to_num(szData);
        
        switch(iKey)
        {
            case 1:
            {
                get_user_origin(id, g_iOrigin[POINT_ONE], 3);
                
                menu_display(id, iMenu, 0);
            }
            
            case 2:
            {
                get_user_origin(id, g_iOrigin[POINT_TWO], 3);
                
                menu_display(id, iMenu, 0);
            }
            
            case 3:
            {
                message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
                write_byte(TE_BEAMPOINTS);
                write_coord(g_iOrigin[POINT_ONE][0]);     //Стартовая точка x
                write_coord(g_iOrigin[POINT_ONE][1]);     //Стартовая точка y
                write_coord(g_iOrigin[POINT_ONE][2]);     //Стартовая точка z
                write_coord(g_iOrigin[POINT_TWO][0]);     //Конечная точка x
                write_coord(g_iOrigin[POINT_TWO][1]);     //Конечная точка y
                write_coord(g_iOrigin[POINT_TWO][2]);     //Конечная точка z
                write_short(g_iBeamSprite);         //Индекс спрайта
                write_byte(0);                 //Стартовый кадр
                write_byte(1);                 //Скорость анимации
                write_byte(3000);            //Время существования
                write_byte(get_cvar_num("Line"));     //Толщина луча
                write_byte(get_cvar_num("Amplitude"));     //Искажение
                write_byte(random(255));            //Цвет красный
                write_byte(random(255));            //Цвет зеленый
                write_byte(random(255));            //Цвет синий
                write_byte(1000);            //Яркость
                write_byte(0);                //...
                message_end();
                
                menu_display(id, iMenu, 0);
            }
        }
        
        return 1;
    }


    Описание:
    По началу было создано меню, в котором находится 3 пункта:
    1)Стартовая точка
    2)Конечная точка
    3)Создание сообщения

    Думаю про первые 2 объяснять ни чего не надо.
    Про 3 все написано в комментариях.

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    TE_BEAMPOINTS - Луч между двумя точками
    Explain

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Ничего не понял...
    MegaTroll

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Эээм... Мне показался странным тот факт, что байту скролл-спида не уделили должного внимания. "//..." какое то размытое описание wink
    Monstr™

    29.09.2011
    ICQ: 631967458
    Публикаций: 12
    Комментариев: 22
    Репутация: -  0  +

    Что именно не понятно?

    PS
    Видео снимал через fraps весело 3.5 гб.
    Потом сжал с помощью VirtualDubMod до 15 мб, видео стало более менее хорошего качества.
    Залил на youtube качество резко ухудшилось.
    Первый раз работаю с видео так что строго не судите, исправлюсь feel
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Наверное то , что описания всего 3 слова к большому коду....
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    write_byte(life in 0.1's) 


    Время существования в десятичных?

    Т.е. 1 секунда = write_byte(10) ?

    П.с. Бесконечное время существования - 0.
    Число одновременно отображаемых линий не может превышать 128.

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама