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

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


Svoboда

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

Вопросики вылезли. Последний раз скрипты редактировал лет 8 назад. Помогите кто может.

Делал для ЗП магазинный гранатомёт с отъёмным магазином на основе wpn_rg6. Отключил  tri_state_reload и добавил anm_reload, что бы X-Ray не ругался. Вроде заработало, но по исчерпанию 1-го магазина переставал стрелять, несмотря на перезарядку.

Тогда сделал маленький квадратик в инвентарь, что бы можно было положить в быстрый слот (F1-F4) и на его использование повесил скрипт, который удаляет оружие из игры и тут же выдаёт такое-же только новое. Помогло. Но счастье было не полным.

Не срабатывает очистка магазина. Заполнение неполным количеством зарядов. 

При удалении оружия из активного слота, оно исчезает почти мгновенно. Хотелось бы помедленнее, но попытка запустить анимацию тоже не сработала.

Подскажите, где накосячил?

Скрытый текст

  local n_act_slot  = db.actor:active_slot()
  local sm_act_item = db.actor:item_in_slot(n_act_slot)
-- --> wpn_fn2000_nimble (based on rg6) <=---------------------------------------
  if sm_act_item and ("wpn_fn2000_nimble"==sm_act_item:section()) then	-- Условие срабатывания
     local cur_ammo_mag = sm_act_item:get_ammo_in_magazine() 
           cur_ammo_mag = 4 -- для теста
	 local cond = sm_act_item:condition()
	 local oItem = db.actor:object(sm_act_item:section())

-- db.actor:hide_weapon() -- Прячет и Запрещает доставать оружие(слишком быстро)
-- db.actor:active_item:play_hud_animation(system_ini():"wpn_rg6m_hud","anm_hide",true)
--  ^-- почему не работает ???

	alife():release(alife():object(oItem:id()),true)
	alife():create("wpn_fn2000_nimble", vector(), 0, 0, db.actor:id())
	
sm_act_item = db.actor:item_in_slot(n_act_slot)
	sm_act_item:unload_magazine() -- <- не работает :-( почему?
	db.actor:item_in_slot(n_act_slot):set_ammo_elapsed(7) -- <- тоже не работает.

 

Заранее спасибо.

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


Ссылка на сообщение
1 час назад, naxac сказал:

это следует делать через level.client_spawn_manager

по этому поводу, гугель выдал пример:

level.client_spawn_manager():add(obj.id, 0, spawn_callback, "доп_аргумент")

аргументы метода:
obj.id -- это айди объекта на который ставим каллбек
0 -- это айди эктора - нафиг не нужно, но нужно 
spawn_callback -- имя функции которая вызовется при переходе объекта в онлайн
"доп_аргумент" -- дополнительный аргумент для функции spawn_callback, 
	- что хотим то и передаем, если оно конечно надо, 
	либо вообще ничего не пишем.

-- сюда ставим вызов нужного нам действия при переходе объекта в онлайн
Код:
function spawn_callback(arg, iId, gObj)
news_manager.send_tip(db.actor, "Каллбек на переход в онлайн вызван", 0, "trader", 10000)
-- снимаем каллбек, чтобы он не вызывался каждый раз когда объект снова окажется в онлайне
level.client_spawn_manager():remove(iId, 0)  
end

принимаемые параметры:
arg - тот самый дополнительный аргумент
iId - айди объекта на который поставлен каллбек
gObj -- клиентская юзердата объекта на который поставлен каллбек

если у меня будет:

level.client_spawn_manager():add(obj.id, 0, set_ammo_elapsed, cur_ammo_mag)

мне надо будет "снимать каллбек"? И что писать вместо iId ?

P.S. спасибо за быстрый ответ.

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


Ссылка на сообщение
4 часа назад, aromatizer сказал:

Эта штука называется XM29 OICW.

Чегой-то это какой-то неправильный OICW. Сколько не смотрю, вылитый fn2000 :)  И гранатомёт однозарядный. И судя по всему, он вообще для ТЧ. Совсем не подходит. К тому-же сделать в движке сталкера магазинный автомат + магазинный гранатомёт (два в одном оружии)  будет малореально. Или движек править, или скриптами обвесить, что-бы каждый чих перехватывали и обрабатывали. Ну для чистого ЗП может и получится, а что-бы потом засунуть это в какой-нибудь понравившийся мод, работы будет почти столько-же.

 

@НаноБот, у меня не РПГ-7. У меня несуществующий магазинный гранатомёт на ВОГ-25. Сначала, думал быстренько сделать прикольную стрелялду, а то со временем, много гранат накапливается. А когда полезли ограничения движка, стало как-то жалко бросать.

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


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

Продолжаю мучить гранатомёт.  Почти всё заработало кроме анимации.

db.actor:item_in_slot(n_act_slot):play_hud_animation("lancew_rg6m_holster", true)

даёт ошибку

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : d:\stalker3\gamedata\scripts\multitool.script:24: attempt to call method 'play_hud_animation' (a nil value)

подскажите как исправить?

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


Ссылка на сообщение
4 часа назад, Zagolski сказал:

Ф-ции play_hud_animation не существует

Извиняюсь. Встретил упоминание, поискал в гугле, скопипастил. Там был вроде-как пример использования.

А есть что-нибудь работающее для проигрывания анимаций для худа в ЧН/ЗП ?

 

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


Ссылка на сообщение
31 минуту назад, Mr.Srears сказал:

может, кто-нибудь дать примерный набросок скрипта с проигрованием анимации у ствола?

Мне тут неделю назад популярно объяснили, что такого не существует. А то-что выдаёт поисковик, это хотелки, обращённые к тем, кто пытается править движек. И делает всякие Х-Ray экстеншины. Пытается делать...

Хотя, в каком-то моде видел, как из аптечки шприц вкалывали. Такой анимки в оригинале не было. Вроде сами добавили. Но что при этом исправли - большой вопрос.

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


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

У беретты, сиг-220, ЮСП-45 и Р99 по дефолту самого начала класс WP_LR300. У пм, пб, кольта и ДЕ - WP_PM. У HPSA - свой WP_HPSA.

Добавь себе однорукий пп2000 и не мучайся ду..., гхм, я хотел сказать, ещё можно добавить АПС из свежих модов. Или ОЦ-33.

 

  • Спасибо 1

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


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

Подскажите как в скрипте поставить/убрать на автомат прицел в чистом ЗП ?

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


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

У меня тоже вопросик. По ЗП. Нашел на сталкерине:

function set_ammo_elapsed(number) 
void set_ammo_elapsed(int ammo_elapsed)
заряжает магазин количеством патронов, равным ammo_elapsed. Размер магазина игнорируется.

 

function unload_magazine()
void unload_magazine()
разряжает магазин оружия. Оружие должно быть в инвентаре/руках объекта CAI_Stalker. Патроны из ствола пропадают. Аргументов не принимает.
 

А как это должно выглядеть в самом скрипте? Можно примерчик кода. А то, до сих пор в основном использовал функции которые получают значения, а не задают. И вообще, это было в 18-ом году. Сам удивился.

 

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


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

Upd:

Почему не срабатывает?
  local wpn  = db.actor:active_item()  
  local update_ammo = 5
    wpn:set_ammo_elapsed(update_ammo)

  • Смешно 1

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


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

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