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

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

Вешать на циклическую проверку в апдейте, и ждать, когда этот самый local repair_kit = db.actor:object("repair_kit_weapon") появится.

 

Ну, чтоб не тормозило, я себе сварганил табличку функций, куда нужные добавляются, а после срабатывания - убираются.

local tasks_list = {}	-- имя, группа( 50, 200, 1000, 5000 ), функция --

local t50, t200, t1000, t5000 = {}, {}, {}, {}		-- группы { строка для wathdog, функция }
local t50n, t200n, t1000n, t5000n = 0, 0, 0, 0		-- функций в группе
local t50i, t200i, t1000i, t5000i = 1, 1, 1, 1		-- текущая функция в группе
local t50t, t200t, t1000t, t5000t = 0, 0, 0, 0		-- время следующего обновления
local t50q, t200q, t1000q, t5000q = 50, 200, 1000, 5000	-- через сколько обновлять


function task_add( tname, tgroup, f )
	if ( tgroup or 200 ) == 200 then t200n = t200n + 1; table_insert( t200, { f, tname } )
	elseif tgroup == 1000 then t1000n = t1000n + 1; table_insert( t1000, { f, tname } )
	elseif tgroup == 5000 then t5000n = t5000n + 1; table_insert( t5000, { f, tname } )
	elseif tgroup == 50 then t50n = t50n + 1; table_insert( t50, { f, tname } )
	end
end

function task_del( tname, tgroup )
	-- log( "info", "task_delete, task: [%s], gp: %s", tname, ( tgroup or "any" ) )
	if tgroup or 200 == 200 then
		for i = 1, t200n do
			if t200[i][2] == tname then
				t200n = t200n - 1; table_remove( t200, i ); return
	end	end	end
	if tgroup or 1000 == 1000 then
		for i = 1, t1000n do
			if t1000[i][2] == tname then
				t1000n = t1000n - 1; table_remove( t1000, i ); return
	end	end	end
	if tgroup or 5000 == 5000 then
		for i = 1, t5000n do
			if t5000[i][2] == tname then
				t5000n = t5000n - 1; table_remove( t5000, i ); return
	end	end	end
	for i = 1, t50n do
		if t50[i][2] == tname then t50n = t50n - 1; table_remove( t50, i ) end
	end
end

и

function actor_binder:update( delta )
...
	if t200i == 0 then	-- ни чем не заняты ?
		if global_time_ms >= t200t then t200t, t200i = global_time_ms + t200q, 1
			-- kostri_update()	-- используем этот цикл под что-нибудь полезное
		end
	else
		gp_fn =  t200[t200i]	-- выполняем последовательно что там еще есть
		if gp_fn then t200i, amk.oau_watchdog = t200i + 1, gp_fn[2]; gp_fn[1]()
		else t200i = 0		-- и используем остаток

	end	end

 

Ссылка на комментарий

А чё за global_time_ms?

Expression : fatal error

Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...e.r. - hardcore\gamedata\scripts\bind_stalker.script:204: attempt to perform arithmetic on global 'global_time_ms' (a nil value)

 

Таймер вроде как работает т.к. при изменении global_time_ms на time_global() не вылетает, но тайм глобал в минутах или как? Я написал 20 и в итоге ждать пришлось, так и не дождался. А что такое global_time_ms игра получается не знает.

Изменено пользователем Full Noob
  • Не нравится 1
Ссылка на комментарий

А это чтобы 2 раза не вставать.

local global_time_ms = time_global(), ну или типа того...

 

Проверок-то 4 штуки, на 50, 200, 1000 и 5000ms, да и внутри не по разу используется.

Ссылка на комментарий

У меня почемуто через тайм_глобал не работает) Я сделал так:

local need_to_repair_weapon = nil

local repairconditionfornew = 0
local repairprocess = 0

 

function actor_binder:use_obj(obj)
if obj:section()=="repair_kit_weapon" then
repairconditionfornew = obj:condition()
alife():create("repair_kit_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
need_to_repair_weapon = 20
repairprocess = 1
end
end

 

if repairprocess==1 then
need_to_repair_weapon = need_to_repair_weapon-1
if need_to_repair_weapon<1 then
hm_repair.action_repair(repairconditionfornew)
need_to_repair_weapon = 0
repairprocess = 0
end
end

 



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

Изменено пользователем Full Noob
Ссылка на комментарий

Блин решил попробовать сделать ремкомплект оружием которое нельзя поместить в слот и который используется на K, но как его использовать на К? Видел в солянке ДМХ были как в зп так называемые ГОРЯЧИЕ КЛАВИШИ на юз аптеки консервы антирада и бинта вроде на F1-F4, вот мне также надо только с ремкомплектом. Почитал про назначение скриптам горячих кнопок там походу только через меню работать будет, да и не понятно даже что надо писать что не надо. Написал в актор_биндер.апдейт:

if DIK_keys.DIK_K==1 then
	if db.actor:object("repair_kit_weapon") then
		hm_repair.action_repair()
	end
end

в итоге когда я достаю оружие у меня треск потому что сразу автоматом срабатывает ремкомплект как будто я нажимаю постоянно К. Может объясните что как писать прально )

  • Не нравится 1
Ссылка на комментарий

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

Не то, видать, читал. Почитай это: Назначение скриптам горячих кнопок. Часть 3.

А по поводу состояния предмета - если он у тебя на классе антирада, то помимо скриптового "obj:set_condition...", нужно писать кондишен в объект через нет_пэкет,

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

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

Ссылка на комментарий
@Full Noob, лишнего в статье нет ничего. Если тебе нужно только нажатия отлавливать, делай по первому варианту - и всё.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Заранее извиняюсь, если было - ткните куда копать. Как скриптово узнать, что открыта вкладка КПК "Карта"? Дано: прикручиваю к своей сборке установку своих меток на карте в КПК из адддона Shadows'а 0.6 к РМА... Так вот, всё работает, но эти кнопки установки-удаления меток рисуются поверх всех окон и вкладок КПК... Ранее уже сталкивался с подобным, решения не нашёл. Заранее спасибо всем.

Ссылка на комментарий

@Капрал Хикс, вроде при открытии каждой вкладки выдается свой поршень, но вот где именно и с правками ли движка - не знаю.

  • Нравится 1
Ссылка на комментарий

Ребята, подскажите, если знаете:

Как скриптово реализовать отключения звука (чтоб вообще тишина была)?

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

Ссылка на комментарий

J.A.A., погляди в bind_stalker.script функции use_inventory_item(obj) и anabiotic_callback2() - в этих функциях при сне\приёме анабиотика включается\выключается звук.

Примерно это будет выглядеть так:

--Выключение звука
_G.mus_vol = get_console():get_float("snd_volume_music")
_G.amb_vol = get_console():get_float("snd_volume_eff")
get_console():execute("snd_volume_music 0")
get_console():execute("snd_volume_eff 0")
--Ворачиваем всё обратно
get_console():execute("snd_volume_music "..tostring(_G.mus_vol))
get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))
_G.amb_vol = 0
_G.mus_vol = 0

 

 

Изменено пользователем Сталкер Лом

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

Ссылка на комментарий

Вот у меня тут вопросик опять по ремкомплекту возник: как отрисовать на худе что-либо? Мне нужно отрисовать на худе иконку ремкомплекта и его состояние(если он имеется в наличии). Возомжно ли это? Просто он у меня будет спрятан в слоте 4 и посмотреть состояние можно будет только в ящике т.к по непонятной причине если самому запихнуть предмет из инвентаря в слот 4 то игра вылетает без лога, что не даёт просто возвращать его в рюкзак на юзе. Из за этого и пришлось ему юз на K прикручивать.

Ссылка на комментарий

Рано я возрадовался... Все инфопоршни вкладок в КПК, кроме ui_pda, не работают. Похоже, без движковых правок тут всё же не обойтись. А жаль...

Ссылка на комментарий

Поставить лог на actor_binder:info_callback(), и посмотреть, что реально когда выдается.

Ссылка на комментарий

Проверил через мобилу модмейкера от Singapur22 выдачу нужного мне поршня ui_pda_map_global - не выдаётся он. ui_pda - выдаётся исправно, тот нет. P.S. В Shadows Addon кнопки меток кстати тоже поверх всех вкладок и окон висят.

Ссылка на комментарий

! Cannot find saved game ~ z_mod: Инициализация z_uprising...

! Cannot find saved game ~ z_uprising: передали предустановки.
! Cannot find saved game ~ z_mod:on_item_take: поимели detector_simple
! Cannot find saved game ~ z_mod:on_item_take: поимели device_torch
! Cannot find saved game ~ z_mod:on_item_take: поимели novice_outfit
! Cannot find saved game ~ z_mod:on_item_take: поимели wpn_binoc
! Cannot find saved game ~ z_mod:on_item_take: поимели device_pda
! Cannot find saved game ~ z_uprising: ЛОГирование ВКЛючено.
! Cannot find saved game ~ z_uprising: ОК!
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_kill_gunslinger
! Cannot find saved game ~ z_mod:on_info: инфопорш storyline_actor_start
! Cannot find saved game ~ z_mod:on_info: инфопорш global_dialogs
! Cannot find saved game ~ z_mod:on_info: инфопорш level_changer_icons
! Cannot find saved game ~ z_mod:on_item_take: поимели bolt
Intro start 8633
* MEMORY USAGE: 311336 K
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_hello_played
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_experienced
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_tutorial_chosen
! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_can_leave
! Cannot find saved game ~ z_mod:on_info: инфопорш tutorial_wounded_start
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body_hide
- Disconnect
! Cannot find saved game ~ z_mod:on_item_drop: дропнули bolt
! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_pda
! Cannot find saved game ~ z_mod:on_item_drop: дропнули wpn_binoc
! Cannot find saved game ~ z_mod:on_item_drop: дропнули novice_outfit
! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_torch
! Cannot find saved game ~ z_mod:on_item_drop: дропнули detector_simple
- Destroying level

 

 

+

! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_events
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_contacts
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_ranking
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_actor_info
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_encyclopedia
! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_hide
 

@Капрал Хикс, кстати, да. Через раз появляются.


! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_map_local ещё.
Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать.

Изменено пользователем k01jan
Ссылка на комментарий

Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать.

Выдается только в первый раз потому, что в последующие разы она уже есть у ГГ. Можно при получении инфопорции дизейблить ее, тогда она будет выдаваться и во второй раз, и в третий. Или в декларацию инфопорций прописать дизейбл остальных.
  • Нравится 1
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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