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

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


Svoboда

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

16 минут назад, naxac сказал(а):

эти функции вызываются в биндерах неписей и монстров.

Да... это понятно... Это был наводящий вопрос.

16 минут назад, naxac сказал(а):

В скрипте используются заполняемые этими функциями таблицы.

Я на это и хотел обратить внимание вопрошающего. Кроме monster_stock ни одна таблица не используется.

И вообще... Функция update_friends_and_target тот ещё "шедевр".

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

Помогите со скриптом.

 

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

	self.name = "actor_ID"	
	
	local file = ini_file(getFS():update_path("$app_data_root$", "launcher.ltx"))
	
	if file and file:section_exist("logins") then
		self.name = file:r_string("logins", "display_name")
	end

 

 

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

Абсолютные пути в ini_file работают?

Нет, конечно, не работают!:facepalm: Совсем про это забыл. Спасибо, что напомнили.

 

@Prophet2002 Если нужно прочитать ini-файл НЕ из папки config, придется прибегнуть к хитрости:

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


	-- Открытие файла из стандартных папок игры:
	local fs = getFS():r_open("$app_data_root$", "launcher.ltx")

	-- Создание "виртуального" ini-файла из строки:
	local file = create_ini_file(fs:r_stringZ())

	if file and file:section_exist("logins") then
		self.name = file:r_string("logins", "display_name")
	end

 

Напомню, что в файле fsgame.ltx можно добавить своё описание пути никак не связанное с игрой. Например:

$c_games$ = false| false| c:\Games\

Изменено пользователем WinCap
  • Полезно 3

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@_Sk8_AsTeR_, например так:

[walker1@truba1] 
on_signal = test | {-inf_vizov_test_odin_raz} %+inf_vizov_test_odin_raz =test%

on_info = {+povod_pereiti_v_druguyu_sekciyu} walker@next %-inf_vizov_test_odin_raz%

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


Ссылка на сообщение
07.06.2021 в 17:47, _Sk8_AsTeR_ сказал(а):

Все НПС, проигрывая анимацию о барной стойки, стоят чуть дальше чем нужно и опираются о пустоту. Если их напугать, то они возвращаются на место и проигрывают анимацию уже как положено.

Есть какие-нибудь мысли, как это пофиксить?

Скорее всего, проблема в скриптах.

Попробуй откатить к начальной версии все скрипты связанные с движением и положением НПС, те которые сам правил или адаптировал/переносил из других модов.

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@_Sk8_AsTeR_, а функции save_obj/load_obj из xr_gulag используются где-нибудь?

В них какой-то "непорядок" - сохраняются 3 переменные, а загружаются только 2.

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@Colder, в вашем скрипте:

1. Функция BodyAllclose - что это за переменная id?

2. Функция get_items_from_box - переменная box откуда?

  • Нравится 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

И, да - ремарк в качестве основной схемы - это моветон.

Много раз встречал подобное утверждение и до сих пор не знаю, что значит "основная/активная схема"? Объясните, пожалуйста.

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@phalcor, может так:

local kn_ini = ini_file("weapons\\upgrade.ltx")

 

P.S. Ищи примеры кода в папке "scripts", там всё есть.

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@phalcor, нужно выбрать "вышестоящий" файл, тот в котором подключен upgrade.ltx. Рискну предположить, что это:

local kn_ini = ini_file("weapons.ltx")

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

вот только функция всегда выдаёт "true"

Это естественно. После прочтения ini-файла, наследуемые параметры копируются в конечную секцию, и присутствую в ней в полном составе.

 

7 минут назад, phalcor сказал:

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

Здесь возможен только "костыль". Если точно знать имя конечной секции, а также имя наследуемой, то можно прочитать параметр дважды - из одной и из другой секции. Если параметр различается, значит, он был переопределен. По другому никак.

 

 

Изменено пользователем WinCap
  • Согласен 2
  • Полезно 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

есть ли способ прочитать в переменную parent-секцию

Нет.

Если это действительно необходимо для реализации какой-то мега крутой идеи, то можно вручную составить таблицу наследований секций:

local tbl = {
  ["wpn_ak74_m1"] = "wpn_ak74",
  и т.д.
}

 

Изменено пользователем WinCap
  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@Jekyll, как-то так:

local gvid = определенный_m_game_vertex_id

local level_name = alife():level_name(game_graph():vertex(gvid):level_id())

if level_name == level.name() then

  • Полезно 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

досрочный выход из цикла iterate предусмотрен?

В стандартном методе "iterate_inventory" точно нет, а в неизвестном "iterate_inventory_simple" - всё может быть.

Попробуй вернуть что-нибудь из функции, например "true".

 

Скрытый текст
local i=0
db.actor:iterate_inventory_simple(function(item)
	i=i+1
	if item then
		return true
	end
end)
log("iter="..i)

 

  • Согласен 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@Norman Eisenherz, попробуй добавить в trade_manager.script такую функцию:

function get_trade_ini(id)
	if trade_manager[id] then
		return trade_manager[id].config
	end
	return
end

 

и потом используй в своем коде:

local npc = level_object_by_sid(3)
local trade_ini = trade_manager.get_trade_ini(npc:id())
if trade_ini then
	local str = trade_ini:r_string("supplies_start", "wpn_groza_m1")
end

 

  • Согласен 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@Labadal, а зачем в функциях actor_binder:save/load использовать pstor? У них же есть свой net_paket?

 

В функции function actor_binder:save(packet):

   packet:w_float(en.energy)

В функции function actor_binder:load(reader):

   en.energy = reader:r_float()

 

Разместить в конце функций, начать новую игру.

Изменено пользователем WinCap
  • Спасибо 1
  • Согласен 1
  • Полезно 2

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

возникла такая проблема

Дело в том, что таблица item_table не очищается после добавления оружия в List.

Скрипт вообще написан не правильно. Внутри db.actor:iterate_inventory() нужно только заполнять таблицу item_table, а выводить её содержимое в List нужно после неё.

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

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

@Colder, прочитанную из конфигов строку можно разбить на отдельные части функцией parse_nums, например так:

local fm = sys_ini:r_string(wpn:section(), "fire_modes")
local fm_t = parse_nums(fm)

После этого в fm_t будет находиться таблица с отдельными режимами стрельбы.

 

P.S. Только это будут просто считанные из конфигов доступные режимы, а не текущий режим стрельбы.

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

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


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

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