Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Установка NPC для Магазина
GreenBytes Дата: Четверг, 12.12.2019, 09:26:55 | Сообщение # 1
Сообщений: 19
Репутация: 0 [ +/- ]
Добрый день. На карте установлен npc, или просто prop под видом npc.
Код
//-------------------------------------------------------------------------------------------------------
//  function: CreateShop
//   Location[3] - Вектор позиции
//-------------------------------------------------------------------------------------------------------
public CreateShop(float Location[3]) {
    //PrecacheModel("models/gman.mdl", true);
    int iEntity = CreateEntityByName("prop_dynamic"); //
    if (iEntity <= MaxClients) return;
    DispatchKeyValue(iEntity, "model", "models/fort/nite/raven_pm.mdl");
    DispatchKeyValue(iEntity, "solid", "6");
    DispatchKeyValue(iEntity, "RandomAnimation", "1");
    DispatchSpawn(iEntity);
    Location[2] = Location[2] - 65.0;
    TeleportEntity(iEntity, Location, NULL_VECTOR, NULL_VECTOR);
    ActivateEntity(iEntity);
    AcceptEntityInput(iEntity, "EnableCollision");
    
    HookSingleEntityOutput(iEntity, "OnTakeDamage", EntityOutput:OnShopUse);
}

public OnShopUse(const String:output[], caller, activator, Float:delay) {
    OnShowMyShop(activator, 0);
}

Дело в том что у prop_dynamic ( https://developer.valvesoftware.com/wiki/Prop_dynamic ) отсутствует событие OnPlayerUse.
Мне необходимо поставить статический объект на карту, когда человек подходит к объекту под видом npc нажимает кнопку E (+USE) то ему выходит меню магазина.

В данном коде использовал другое событие временно.

Почему именно prop_dynamic, npc или объект должен быть статичен, без жизней и передвижения гравипушкой. Пробовал использовать prop_physics, но модели от NPC просто не накладываются на этот объект.

Основной вопрос: Какую prop-модель использовать для нужного результата: Статическая модель под видом NPC с событием OnPlayerUse ?

Гости не могут скачивать файлы
 
_wS_ Дата: Четверг, 12.12.2019, 10:24:15 | Сообщение # 2
Сделать свой OnPlayerUse.
Запустить REPEAT таймер 0.2 сек например и проверять расстояние от npc к игрокам, если близко и держит E = OnPlayerUse.
GetVectorDistance, GetClientButtons(client) & IN_USE
Ну или триггер создать возле npc и ловить касание к нему, но мне кажется таймер лучше, т.к. проверки не такие частые.
 
GreenBytes Дата: Четверг, 12.12.2019, 11:19:01 | Сообщение # 3
Сообщений: 19
Репутация: 0 [ +/- ]
Ну так это уже костыли ... grust

Добавлено (12.12.2019, 11:21:53)
---------------------------------------------
Тогда вопрос к вам, есть такой триггер в игре на который наступаешь и выполняется событие ?
Если да, то можно ссылку на документацию ?

 
_wS_ Дата: Четверг, 12.12.2019, 13:20:06 | Сообщение # 4
Касание: trigger_multiple, trigger_once
Наступание: func_weight_button
 
GreenBytes Дата: Четверг, 12.12.2019, 18:35:20 | Сообщение # 5
Сообщений: 19
Репутация: 0 [ +/- ]
Есть какой -либо пример использования триггера ? Т.к я не могу координаты триггера задать.
 
_wS_ Дата: Четверг, 12.12.2019, 20:23:18 | Сообщение # 6
Тут есть инфа про mins maxs с картинками: https://forums.alliedmods.net/showthread.php?t=159752
Пример создания тригера: https://forums.alliedmods.net/showthread.php?t=129597
 
  • Страница 1 из 1
  • 1
Поиск: