Все посты %s в %S - AMK Team
Перейти к контенту

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


Svoboда

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

59 минут назад, mole venomous сказал:

Как определить у ГГ наличие подходящих к активному стволу патронов?

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

local active_item = db.actor:item_in_slot(db.actor:active_slot())
if active_item then
	if system_ini():line_exist(active_item:section(), "ammo_class") then
	local active_ammo = system_ini():r_string(active_item:section(), "ammo_class")
		if active_ammo then
			active_ammo = string.gsub(active_ammo,"[,]"," ")
			for k, v in string.gmatch(active_ammo, "[%p0-z]+") do
				if not db.actor:object(k) then 
					alife():create(k, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) 
					db.actor:give_game_news("Для: %c[255,255,50,50]"..game.translate_string(system_ini():r_string(active_item:section(), "inv_name")).."%c[default] выданы боеприпасы: %c[255,10,250,100]"..game.translate_string(system_ini():r_string(k, "inv_name")).."%c[default]", "ui\\ui_iconsTotal", Frect():set(0,517,83,47), 0, 3000)
				end
			end
		end	
	end
end

 

Пользуйся

  • Спасибо 1
  • Полезно 2

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


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

@naxac,  что-то, как-то, не очень работает!

 
FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : .\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...es\stalker_shoc_10006\gamedata\scripts\xr_box.script:184: attempt to index global 'netpk' (a nil value)
 

stack trace:

0023:1001CCC1 xrCore.dll, xrDebug::backend()
0023:10034D88 xrCore.dll, IReaderBase<CStreamReader>::`vftable'()
0023:10034D78 xrCore.dll, IReaderBase<CStreamReader>::`vftable'()

 

  • Смешно 1

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


Ссылка на сообщение
6 минут назад, Zander_driver сказал:

Подключить надо. Артосовский модуль.

:shok2: 

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

Но ИМХО - использовать этого исполина, ради одной скромной фичи - это как заводить Японский Беспилотный ЖПС Турбовинтовой с Вертикальным взлётом Комбайн - ради одного колоска

  • Смешно 3

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


Ссылка на сообщение
44 минуты назад, Graff46 сказал:

можно ли тест перенести или урезать?

 А перенос стоки заюзать не?

\\n

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


Ссылка на сообщение
1 минуту назад, Graff46 сказал:

но тогда текст становится многострочным, и не реагируют на клик нижние строки

текст и не будет реагировать, реагирует статик - попробуй его увеличить

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


Ссылка на сообщение
12 минут назад, mole venomous сказал:

прямая скриптовая проверка, в зуме ли оружие (ТЧ 1.0006)?

В ванильной версии, ЕМНИП только через кривые костыли, но это не точно :crazy2:

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

function scopeUsed()
local fov = device().fov
	if fov < 37 then
	return true
	else
	return false
	end
end

 

для разного оружия - значение FOV разное, нужно проверять и сравнивать

  • Спасибо 2
  • Согласен 1
  • Полезно 2

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


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

@phalcor, смотри в  system.ltx

 

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


;*****************************************
; ГЕНЕРАТОРЫ ИМЕН
;*****************************************
[stalker_names_stalker]
name_cnt		= 102
last_name_cnt	= 599

[stalker_names_bandit]
name_cnt		= 36
last_name_cnt	= 180

[stalker_names_science]
name_cnt		= 14
last_name_cnt	= 27

[stalker_names_private]
name_cnt		= 1
last_name_cnt	= 200

[stalker_names_sergeant]
name_cnt		= 1
last_name_cnt	= 200

[stalker_names_lieutenant]
name_cnt		= 1
last_name_cnt	= 200

[stalker_names_captain]
name_cnt		= 1
last_name_cnt	= 200

 

 

  • Полезно 2

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


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

Я так понимаю, список "препятствий" динамический,

Вот тут ошибочка, нпс ходят по "нодам" - клеткам расставленным в сдк, а они статические, и предметы заспавленые  скриптом  - "динамические" они не видят в упор

  • Согласен 2

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


Ссылка на сообщение
15.08.2020 в 15:36, mdm64 сказал:

как реализовать (и есть ли мануал?) замедление или полную остановку игрового времени во время диалогов с неписями

Я так понимаю - хотите фичу а-ля Фоллаут?

при диалогах и открытии инвентаря - все и всё вокруг замирают и ожидают действия игрока?

15.08.2020 в 15:58, Zander_driver сказал:

level.set_time_factor,

Это остановит только течение времени - смену дня и ночи и погодных циклов,

а вот НПС и зверушки как бегали и стреляли/кусались так и будут

  • Согласен 2
  • Полезно 1

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


Ссылка на сообщение
6 часов назад, mdm64 сказал:

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

 

В игре есть парные info_portion: ui_inventory/ui_inventory_hideui_talk/ui_talk_hide,

которые отлавливаются при - открытии/закрытии - инвентаря и диалога соответственно,

написать Function() [и поставить её на апдейт] которая будет менять time_factor от 1 до 10,

в нужное время - это убережёт от выбросов, голода, жажды, и смерти от старости - во время чтения длинных диалогов,

но от зверушек и злобных нпс не спасёт.

  • Нравится 2
  • Согласен 2
  • Полезно 1

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


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

@mdm64, попробуй этот код сунуть в файл bind_stalker.script в function actor_binder:update(delta) 

   в самый конец функции перед заключительным end

if db.actor:has_info("ui_inventory") or db.actor:has_info("ui_talk") then
	level.set_time_factor(1)
elseif db.actor:has_info("ui_inventory_hide") or db.actor:has_info("ui_talk_hide") then
	level.set_time_factor(10)
end

 

  • Нравится 1
  • Согласен 1
  • Полезно 3

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


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

Подскажите пж в чем проблема.

Имхо перестарался ты с проверками - попробуй вот так

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

--// ОДЕВАЕМ КОСТЮМ
function has_outfit()
	outfit_general_pp()
	level.add_cam_effector("camera_effects\\item_use.anm",8010,false,"")
	level.add_pp_effector("surge_fade.ppe", 10, false)
	local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
	snd:play(db.actor, 0, sound_object.s2d)
	db.actor:disable_info_portion("no_outfit")
	db.actor:give_info_portion("outfit_actor")
end
--// СНИМАЕМ КОСТЮМ
function no_outfit()
	outfit_general_pp()
	level.add_cam_effector("camera_effects\\item_use.anm",8020,false,"")
	level.add_pp_effector("surge_fade.ppe", 10, false)
	local snd = xr_sound.get_safe_sound_object([[interface\inv_outfit]])
	snd:play(db.actor, 0, sound_object.s2d)
	db.actor:disable_info_portion("outfit_actor")
	db.actor:give_info_portion("no_outfit")
end

--// тут вызываем
function actor_update_anim()
	if db.actor:item_in_slot(6) ~= nil
		if not db.actor:has_info("outfit_actor") then
			has_outfit()
		end
	else 
		if not db.actor:has_info("no_outfit") then
			no_outfit()
		end
	end
end

 

 

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


Ссылка на сообщение
1 минуту назад, Libery сказал:

attempt to index global 'actor_effects' (a nil value)

Ну в том куске кода что ты писал нет actor_effects, ищи в остальных своих файлах, я не экстрасенс.

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


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

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


Ссылка на сообщение
4 минуты назад, Libery сказал:

можно ли как то проверить заражен ли ГГ радиацией или нет

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

	if db.actor.radiation > 0.1 then
		return true
	end

 

 

5 минут назад, Libery сказал:

что бы через каждые 5 мин воспроизводился звук.

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

local timer1 = 0

function start_sound()
	local timer2 = time_global()
	if timer1 < timer2 then
    	-- тут вставить воспроизведение звука
		timer1 = timer2 + 300000
    end
end

 

 

  • Нравится 1

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


Ссылка на сообщение
8 часов назад, otani-san сказал:

Прошу помощи скриптёров.

Привет, тебе нужно изменить пару строк в файле rgr.script 

ищи 374 строку      --Ставим кондишн броников с трупов, пока рандомно

и вот это:

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

  if select_string=="dead_otf" then
    local dead_otf
		dead_otf = level.object_by_id(tonumber(params_string))
		dead_otf:set_condition((math.random(65)+25)/100)
	end

 

 

меняй на это:

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

	if select_string == "dead_otf" then
		local dead_otf = level.object_by_id(tonumber(params_string))
		if dead_otf then
			dead_otf:set_condition((math.random(65)+25)/100)
		end
	end

 

 

  • Спасибо 1

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


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

local sect = obj:section()
    local name = tostring(system_ini():r_string(obj:section(),"inv_name_short"))

obj:section() Это что и откуда? мне не понятно и движку тоже, вот он и ругается

 

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

function start_repair_out(cond,num)
	local itm = db.actor:item_in_slot(num)
	local kit = kits[num]
	local s = cond-2
	local sect = itm:section()
	local name = tostring(system_ini():r_string(sect,"inv_name_short"))

	if itm ~= nil then
		axr_effects_data.devices_anim()
		alife():release(alife():object(itm:id()), true)
		axr_sounds.play_sound([[item_sounds\inv_repair_sewing]])
		send_tip("%c[d_green]"..game.translate_string("st_dis_text_7").." "..game.translate_string(tostring(name)))
		create_repkit(kit..s)
	else
		send_tip("[d_red]Разбор невозможен!\\nОтсутствует объект для разбора!")
		create_repkit(kit..cond)
	end

 

так попробуй

  • Спасибо 1

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


Ссылка на сообщение
7 часов назад, AndrewMor сказал(а):

Прямо дистанционное собирательство.

Таки давно уже есть, Гравиган v2.0, удобнейшая вещь скажу я вам, для извлечения артов и трупов нпс - из труднодоступных мест :yes4: пользуйтесь

  • Согласен 1

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


Ссылка на сообщение
18 часов назад, AndrewMor сказал(а):

Кстати, там из скриптов только bind_ggun.script. Как же его тогда игра увидит?

А что, ещё что-то нужно?

Попробуй это запустить - как есть и заспавни - "wpn_gravigun

  • Согласен 1

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


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

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