Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

добрый день, есть задача: свой обработчик взрыва гранаты (скриптовая граната по сути)

сам момент броска гранаты отлавливаю через on_item_drop, там запоминаю gren_id=obj:id()

и потом в actor_update проверяю alife:object(gren_id), таким образом отлавливаю момент когда граната перестаёт существовать (что отличает брошеную от просто дропнутой)

но как оказывается граната перестаёт существовать как alife-обьект ещё задолго до того, как взорвётся, поэтому узнать координаты КУДА она упала - не получается.

 

Т.е. задача - узнать координаты гранаты во время взрыва. Не обязательно, чтоб она вообще взрывалась штатным образом. Пробовал болт - на него on_drop не срабатывает.

 

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

 

PS: делаю для ЧН

Поделиться этим сообщением


Ссылка на сообщение

Bak

похоже на то. Может, есть способ отловить момент выстрела из любого оружия?

фактически ищу способ убить неубиенного кровососа в ЧН, так что подойдёт любой способ сделать кровососа в режиме невидимости убиенным, или каким-то чудом отключить ему невидимость вообще.

 

MIXATOR

в АМК моде есть оффлайновое заполнение тайников скриптами, для ЧН есть отдельный мод для этого же самого (на этом же форуме)

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

MIXATOR

для ЧН тут:

http://www.amk-team.ru/forum/index.php?showtopic=1772

автор сделал вырезку из АМК для ТЧ, соответственно, есть на что ориентироваться и что искать в скриптах АМК. Совсем пальцем в конкретные строчки не покажу.

Изменено пользователем Tonny

Поделиться этим сообщением


Ссылка на сообщение

попробую вопрос по-другому поставить, авось кто знает :)

может, кто подскажет как выполнить один из вариантов:

1. определить момент выстрела из оружия

2. определить точку попадения пули

3. определить координаты брошенной гранаты (перед взрывом) или болта

(дополнительно)

4. заставить кровососа в ЧН стать видимым и/или уязвимым.

5. (Кстати, невидимый кровосос является game_object?)

 

спасибо за внимание

Поделиться этим сообщением


Ссылка на сообщение

IQDDD

да, имею представление и использовал.

 

О коллбеках имею представление только о тех, которые встречались в каких-либо из модов, что мне попадались.

Но отловить момент выстрела кроме как в update актёра проверять количество патронов в магазине оружия в слотах - фантазии пока не хватило.

п.2. для меня не критичен, 1 и/или 3 - актуальнее (граната берестаёт быть алайф-обьектом задолго до взрыва, а на болт не реагирует on_item_drop)

а всё это нужно восновном для п.4 (раз кровосос неуязвим - сделать против него спец.оружие)

Поделиться этим сообщением


Ссылка на сообщение

подскажите пожалуйста, есть сталкер. У него вообще нет оружия.

Как это можно проверить для оффлайн-обьектов? или только если сталкер - gameobject (через итерацию инвентаря? или можно сразу проверить оружие в слотах 1 и 2 и если нет, то другого и не будет?) ?

 

так вот, у сталкера оружия нет, я спавню ему в инвентарь случайный автомат. Он возьмёт его в руки сам? далее - патроны, если я ему не заспавню патроны, то стрелять ему будет нечем? если заспавню, но они закончатся - тоже стрелять нечем будет?

(Неписи стреляют непрерывно, и у них вроде как не заканчивается, но подозреваю что есть какой-то ньюанс, который я упустил)

 

спасибо за внимание.

 

Сообщение от модератора n6260
Патронов у нпс должно быть больше чем на одну обойму. Хотя бы на один патрон. Иначе отстреляет обойму и все.

Строгое предупреждение от модератора n6260
Юзай заглавные буквы.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Подскажите пожалуйста следующее: в теме "Справочник по функциям и классам" указано, что можно работать со слотами НПС,

но код вида

local PistolSlot = obj:item_in_slot(1)

local AutomaticSlot = obj:item_in_slot(2)

не срабатывает, ругается на item_in_slot:

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : l:\stalker-cop\gamedata\scripts\ts_mod_cop.script:230: attempt to call method 'item_in_slot' (a nil value)

 

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

    for a=1,65534,1 do    -- полный перебор
        local obj = alife():object(a)
        if obj then
            
            if  IsStalker(obj) and obj ~= db.actor and obj:alive()  and is_object_online(obj) then    --только сталкеры, живые и с gamedata
                
                local PistolSlot = obj:item_in_slot(1)        --ругается :(
                local AutomaticSlot = obj:item_in_slot(2)
                
                if (PistolSlot and PistolSlot:id() == nil) and (AutomaticSlot and AutomaticSlot:id() == nil) then 
            
                -- тут спавним оружие и патроны
                end
            end
        end
    end

Спасибо за внимание.

PS: забыл указать версию: Зов Припяти, 1.6.02

Изменено пользователем Tonny

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

SkyLoader

Как раз была проблема в адаптпции под другого сталкера :)

 

malandrinus

Спасибо, понял, помогло.

 

Вопрос N3: Для серверных обьектов можно получить информацию о том, есть ли у них оружие?

Вопрос N4: Насколько понимаю, для функции alife():create всё равно - серверный обьект или клиентский, так как передаётся его id, которое одинаковое, так?

Вопрос N5: Можно ли перебрать клиентские обьекты менее ресурсоёмко, чем через перебор всех 65534 серверных? Т.е. не через for i = 1,65534 do ....

 

Спасибо за внимание.

Изменено пользователем Tonny

Поделиться этим сообщением


Ссылка на сообщение

Charsi

Понял. То, что надо, спасибо!

Строгое предупреждение от модератора n6260
Получите предупреждение за флуд.

Поделиться этим сообщением


Ссылка на сообщение

Подскажите, как в обьекте типа "оружие" (isWeapon(obj) == true) узнать список установленных у техников апгрейдов?

Не предустановленных в конфигах, а именно в процессе игры?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...