Русское сообщество по скриптингу

Создание entity( для начинающих )

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Re: Создание entity( для начинающих )

Сообщение sa1me » 17 янв 2017, 00:26

SUMY, это делается при создании объекта, а не в его think'е. )
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Создание entity( для начинающих )

Сообщение riva2014 » 30 июл 2017, 12:36

Как получить id того кто создал entity ?
Аватара пользователя
riva2014
 
Сообщения: 9
Зарегистрирован: 21 ноя 2014, 10:50
Откуда: Новосибирск
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.

Re: Создание entity( для начинающих )

Сообщение Subb98 » 30 июл 2017, 12:40

riva2014,

Engine:

Код: Выделить всё
new id entity_get_edict(entEV_ENT_owner); 

Fakemeta:

Код: Выделить всё
new id pev(entpev_owner); 

Reapi:

Код: Выделить всё
new id get_entvar(entvar_owner); 
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Создание entity( для начинающих )

Сообщение riva2014 » 30 июл 2017, 13:53

Engine:

Код: Выделить всё
new id = entity_get_edict(ent, EV_ENT_owner);


Почему то всегда возвращает id == 0

Код: Выделить всё
new attacer = entity_get_edict(iEntity, EV_ENT_owner); 
Аватара пользователя
riva2014
 
Сообщения: 9
Зарегистрирован: 21 ноя 2014, 10:50
Откуда: Новосибирск
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.

Re: Создание entity( для начинающих )

Сообщение Subb98 » 30 июл 2017, 13:57

riva2014, а вы установили нужного owner'а при создании entity?
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Создание entity( для начинающих )

Сообщение riva2014 » 30 июл 2017, 14:05

Subb98 писал(а):riva2014, а вы установили нужного owner'а при создании entity?


Будьте так добры , покажите примером .

Я уже нашел инфу что нужно задать , вопрос в том как это сделать правильно ?

Код: Выделить всё
entity_set_edict(iEntityEV_ENT_ownerid


После этого модель появляется , но всё действие с объектом пропало ...
Аватара пользователя
riva2014
 
Сообщения: 9
Зарегистрирован: 21 ноя 2014, 10:50
Откуда: Новосибирск
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.

Re: Создание entity( для начинающих )

Сообщение Subb98 » 30 июл 2017, 14:10

riva2014, вы нашли верный код. Если что-то пошло не так, значит, возможно, вы установили owner'а не там, где это нужно сделать. Без кода я вам ничего подсказать не смогу.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Создание entity( для начинающих )

Сообщение riva2014 » 30 июл 2017, 14:49

Subb98 писал(а):riva2014, вы нашли верный код. Если что-то пошло не так, значит, возможно, вы установили owner'а не там, где это нужно сделать. Без кода я вам ничего подсказать не смогу.


Я учусь на приведенном примере в этой статье .

Код: Выделить всё
public StartCreate(id)
{
        new iOrigin[3] //Создаем массив для хранение координат
        get_user_origin(id, iOrigin, 3) //Получаем координаты куда смотрит игрок
 
        new iEntity 
= create_entity("info_target") //Создаем объект info_target
        
        if
(!pev_valid(iEntity)) //Проверяем сущетсвует ли, если нет
                return PLUGIN_HANDLED //Заканчиваем. Дальше нам делать нечего
        
        new Float
:fOrigin[3] //Создаем массив для float коодинат
        IVecFVec(iOrigin, fOrigin) //Конвертируем координаты в дробные
        
        entity_set_edict
(iEntity, EV_ENT_owner, id);

        set_pev(iEntity, pev_origin, fOrigin) //Присваиваем координаты
        set_pev(iEntity, pev_classname, gClassname) //Присваиваем Classname
        set_pev(iEntity, pev_solid, SOLID_BBOX) //Делаем его непроходимым
        set_pev(iEntity, pev_movetype, MOVETYPE_NONE) //Не задаем тип движения, во всяком случаи пока
        set_pev(iEntity, pev_sequence, 0) //Выставляем № анимации при создании
        set_pev(iEntity, pev_framerate, 1.0) //Выставляем скорость анимации
        set_pev(iEntity, pev_nextthink, get_gametime() + 1.0) //Создаем запуск think
 
        engfunc
(EngFunc_SetModel, iEntity, gModel) //Присваиваем модель
        engfunc(EngFunc_SetSize, iEntity, Float:{-16.0, -16.0, -16.0}, Float:{16.0, 16.0, 16.0}) //Создаем бокс вокруг entity( для прикосновения и не только )
 
        return PLUGIN_HANDLED
}


Добавлено спустя 18 минут 13 секунд:
:-|

Кажется понял свою ошибку .
Для создания используется fakemeta , а я пихаю код от engine

Подскажите аналог entity_set_edict(iEntity, EV_ENT_owner, id) на fakemeta

Добавлено спустя 7 минут 37 секунд:
И всё равно что то делаю не так :(

Добавлено спустя 6 минут 44 секунды:
Просто не срабатывало после присваивании id создавшего .
Subb98 спасибо вам за помощь .
Аватара пользователя
riva2014
 
Сообщения: 9
Зарегистрирован: 21 ноя 2014, 10:50
Откуда: Новосибирск
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.

Re: Создание entity( для начинающих )

Сообщение артист666 » 30 июл 2017, 15:29

Там косяк есть с этим овнером, он должен быть установлен не то после movety не то после solid...
В общем ставь в самый низ, не ошибешься.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Создание entity( для начинающих )

Сообщение riva2014 » 30 июл 2017, 16:21

артист666 писал(а):Там косяк есть с этим овнером, он должен быть установлен не то после movety не то после solid...
В общем ставь в самый низ, не ошибешься.


Пробовал по разному ставить - в результате всё равно создавший entity не может прикоснуться к объекту .

Я вообще плохо понимаю суть всего этого , пытаюсь просто вникнуть каждый раз когда хочу что то сделать для своего сервера .

Мне кажется просто объекты не могут прикоснуться , если их id одинаковый .

Решил это явно бредовым способом , таким на который хватило фантазии . Зато работает так как нужно .

Код: Выделить всё

new iNewIndex 
= 40 + id;                              
entity_set_edict
(iEntity, EV_ENT_owner, iNewIndex);


Когда нужно , просто отнимаю 40 . Изначально хотел поставить 333 , но не передаёт ...
Аватара пользователя
riva2014
 
Сообщения: 9
Зарегистрирован: 21 ноя 2014, 10:50
Откуда: Новосибирск
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.

Пред.След.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10