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

    Всего на сайте: 8
    Гостей: 2
    Пользователи: NAVIGATOR19
    Роботы: Yahoo Bot, Yandex Bot, Yandex Bot, crawl Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 21-10-2011, 11:48 Просмотров: 4515

    entity_set_model Функция устанавливает модель объекту

    Функция entity_set_model дает видимый результат, она устанавливает модель игровому объекту. То есть мы сможем посмотреть своими любознательными глазами на результат работы данной функции.

    Инфо из engine.inc:
    /* Sets the model of an Entity. */
    native entity_set_model(iIndex, const szModel[]);


    Синтаксис:
    entity_set_model ( entity, Model[] )

    • entity - id объекта
    • Model[] - Устанавливаемая модель

    Внимание: Все модели должны быть предварительно закеширвоаны с помощью функций plugin_precache и precache_model

    public plugin_precache() {
            precache_model("models/you_model.mdl")
    }


    Тип функции:
    Native

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

    #include <amxmodx>
    #include <amxmisc>
    #include <engine>

    #define PLUGIN "[engine.inc] entity_set_model"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    new g_Model[] = {"models/chick.mdl"}

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_clcmd("say /chick","add_chicken")
    }
    public plugin_precache(){
        precache_model(g_Model)
    }
    public add_chicken(id){
        
        new Ent = create_entity("info_target")
        
        if(is_valid_ent(Ent)){
            
            new Float:f_Origin[3]
            entity_get_vector(id, EV_VEC_origin, f_Origin)    
            f_Origin[0] += 50.0
            entity_set_origin(Ent, f_Origin)

            entity_set_model(Ent, g_Model)
        }
    }


    Описание:
    Как было описано в синтаксисе, для начала мы создаем массив и помещаем туда путь до используемой модели.
    И в функции plugin_precache кешируем ее.

    Затем при помощи команды say /chick, вызывается функция add_chicken, в которой мы:
    1. Создаем новый объект и получаем его id в новую переменную Ent
    2. Создаем условие где проверяем что объект создан и если все правильно продолжаем
    3. Получаем координаты игрока ( их можно получить разными способами, или в обще в ручную написать) Но так как мы рассматриваем модуль engine, то и функцию берем из этого же модуля entity_get_vector ( о ней в другой раз)
    4. Устанавливаем координаты нашему объекту entity_set_origin
    5. И в завершении устанавливаем модель и при выполнении команды на сервере - рядом с нами появится курица
    Но она будет в воздухе и не твердая, так же с ней ни чего не возможно сделать, так как у нее нет ни каких свойств.
    Что бы установить свойства объекту, необходимо использовать еще несколько разных функций, но это уже совсем другая история.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    entity_set_model Функция устанавливает модель объекту
    arwel

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

    А почему именно g_Model[], а не просто Model[] ?)
    Admin

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

    arwel
    По идее без разницы как называть массив.
    Но где то читал, что в больших плагинах, где много глобальных переменных
    ставят приставку g_ что означает "Глобальная переменная"

    Это как бы негласные правила этикета для кода.
    --------------------
    arwel

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

    А понятно. Спасибо :)
    Алексей

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

    С помощью этого можно заменить уже существующую модель? Допустим обычный игрок со стандартной моделью вводит команду в чат и модель меняется?
    Admin

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

    Нет, это только для созданных объектов.
    Самый Простой способ изменить модель:
    cs_set_user_model ( index, const model[] )
    да и единственный )

    Или же делать игрока не видимым, создавать на нем объект и там присваивать модель.
    Но это не так уж просто как кажется.
    --------------------
    Алексей

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

    Напишите какие свойства можно добавить entity, пожалуйста.
    Admin

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

    Их Очень много!
    Полный список тут:
    www.amxmodx.org
    --------------------
    Алексей

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

    Благодарю!
    артист

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

    А модель обязательно ставить?
    Вылетает просто wink
    артист

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

    А возможно создать объект, твёрдый, но без модели?
    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "worldspawn"))
    set_pev(ent, pev_mins, mins)
    set_pev(ent, pev_maxs, maxs)
    set_pev(ent, pev_solid, SOLID_SLIDEBOX)
    set_pev(ent, pev_movetype, MOVETYPE_NONE)
    fm_entity_set_origin(ent, origin)

    Я пробовал не присваивать, зависает напрочь...

    Или можно например квадратную модель, ящик, растянуть до границ объекта?
    Или сам объект покрыть текстурой...

    Информация

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

Реклама