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

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

Ребята, а вот как бы сделать такую штуку, есть несколько уникальных тайников, при подходе к ним начинает пищать прибор, полученный нами при определенном задании, открывались бы тайники только с этим прибором, вот в чем фокус, не могу допетрить, как пищалку сделать, чтобы работала в режиме "горячо-холодно" т.е. чем ближе ГГ к тайнику, тем чаще писк? Навеяно Dying Light'ом и приборами Толги и Фатина, даже модельку дернул. Сделать к тайнику безопасную и невидимую аномалию думал, чтоб детектор определял только её, но мне надо, чтоб пикало из рюкзака, а не в руках. Платформа ЗП если что.

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

Оц тоц перевертоц, бабушка здорова,
Оц тоц перевертоц кушает компот.
Оц тоц перевертоц и мечтает снова
Оц тоц перевертоц пережить налет!

Ссылка на комментарий
14 минут назад, Shennondoah сказал:

как пищалку сделать, чтобы работала в режиме "горячо-холодно" т.е. чем ближе ГГ к тайнику, тем чаще писк?

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

От этого расстояния вычислить интервал писка, и воспроизводить звук писка с этим интервалом.

Запускать скрипт при наличии "прибора" в инвентаре или там где надо...

Все это вполне делается в Lua-скриптах. Разложить задачу на составляющие, и делать каждый из ингредиентов) Если какой-то ингредиент вызывает затруднения, то спрашивать уже по нему. Как то так.

  • Спасибо 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
20 часов назад, Zander_driver сказал:

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

От этого расстояния вычислить интервал писка, и воспроизводить звук писка с этим интервалом.

Запускать скрипт при наличии "прибора" в инвентаре или там где надо...

Все это вполне делается в Lua-скриптах. Разложить задачу на составляющие, и делать каждый из ингредиентов) Если какой-то ингредиент вызывает затруднения, то спрашивать уже по нему. Как то так.

Получилось более-менее, спасибо :drinks: Сделал 4 состояния, медленный, средний, чаще и частый писк, прям как в DL получилось, только вот пищит постоянно, как сделать проверку вот на наличие приборчика в инвентаре? А, всё, допетрил, сделал :mosking: Чуть неправильно прописал.

Изменено пользователем Shennondoah
Добавлено  Опричник,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

Устное предупреждение.

Оц тоц перевертоц, бабушка здорова,
Оц тоц перевертоц кушает компот.
Оц тоц перевертоц и мечтает снова
Оц тоц перевертоц пережить налет!

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

Добрый день, решили адаптировать Бартер из НС 2016 с gui интерфейсом, взяли скрипт "ui_barter_menu" адаптировали его под себя, добавили активацию скрипта через диалог, запускаем игру а он почему то начинает работать самостоятельно, хотя как я понял должен работать только при вызове функции из диалога, есть у кого какие мысли на этот счет?

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

Вот такой, казалось бы, простой вопрос: труп Крысюка после ухода/возврата на локацию становится невидимым (оффлайн). (У меня он в исключении у уборщика, потому цел).

Следующая комбинация не переводит его в он-лайн:

local sim = alife()
	sim:set_switch_online  (id, true)
	sim:set_switch_offline (id, false)

А вообще это возможно? Чтобы он стал нормальным, видимым трупиком?

 

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

Здрасьте.

 

[ЧН 1.5.10] Проверка типа заряженных патронов с условием "если в руках оружие". Пока в руках бинокль, нож, болт или ничего, проверка срабатывает каждый раз и, как ожидается, сигналит "no_wpn". После переключения на пистолет проверка срабатывает 1–2 раза (иногда выдает "левое" значение вроде "219" или "17") и дальше молчит. Триггер проверки – callback "use_object". Повторяющиеся вычисления через actor_binder:update(delta) с такой проверкой тоже останавливаются.

Spoiler

function use_check(obj)
	if obj:section() == "bandage" then
		local item = db.actor:active_item()
		if isWeapon(item) and item:section() ~= "wpn_knife" then
			local sobj = alife():object( item:id() )
			local pk = net_packet()

			sobj:STATE_Write(pk)
			local size = pk:w_tell()
			pk:r_seek(size -2)
			local ammo_type = pk:r_u8() +1

			news_manager.send_tip(db.actor, "loaded: " .. ammo_type)
		else
			news_manager.send_tip(db.actor, "no_wpn")
		end
	end
end

 

 

Сдвиг -2 от конца STATE-пакета опирается на данные из [m_netpk.script]:

Spoiler

function net_cse_alife_item_weapon:__init(obj,mode)

	self.st_props = {
		
		{ name = 'ammo_type',    type = 'u8',  default = 0 },
		{ name = 'cse_alife_item_weapon__unk1', type = 'u8', default = 0, ver = 6 } --/ CS&SCoP

 

 

Изменено пользователем Norman Eisenherz
  • Смешно 2

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

 @abramcumner при подключенном модуле игра вылетает уже на стадии "Сервер: старт" (хоть с сейва, хоть новая). Подключал согласно инструкции:

[scripts\_g.script]

function start_game_callback()

   m_netpk.attach() -- новая строка
end

 

Файл [_g.script] чистый, в папке [gamedata] только он и [m_netpk.script].

 

Spoiler

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
Line          : 180
Description   : <no expression>
Arguments     : LUA error: ...\common\stalker clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)

Проблемная строка – замена пробелов на пустое место. Ошибка при формировании сообщения об ошибке.

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
5 минут назад, Norman Eisenherz сказал:

Arguments : LUA error: ...\common\stalker clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)

Это специальный вылет же. 975 строка - функция abort в ЧН. Что выше в логе?

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

@abramcumner Неподключенный конфиг…

[m_netpk] выдает результат правильно при каждом обращении.

В чем ошибка моего кода? Такой код точно работает в ТЧ; в ЧН отличие STATE-пакета оружия в одном новом параметре u8, то есть сдвиг еще -1 от конца. Методы класса net_packet не изменились.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz, А таки для чего делать свои костыли, когда есть готовый исправно работающий инструмент?

Поневоле вспоминается анекдот про "шашечки или ехать".

23 минуты назад, Norman Eisenherz сказал:

Черный ящик это

И что?

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

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver Черный ящик это. Опять же, базовые методы, вокруг которых не требуется строить 20 дополнительных проверок – не костыли.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

 

@Norman Eisenherz, первое правило велосипедиста: педалишь свой велосипед - сверяй с проверенным.

По ошибке:

1. обрати внимание на пост @WinCap,в ЧН/ЗП конструктор net_packet не иницилизирует позиции чтения/записи. Надо делать w_seek

2. Я бы все-таки проверял класс объекта при разборе нет-пакета. cse_alife_weapon по-моему только нож использует.

Ну и да, библиотека Artos`а учитывает все это и еще кучу другого.

 

3 часа назад, Norman Eisenherz сказал:

Опять же, базовые методы, вокруг которых не требуется строить 20 дополнительных проверок – не костыли.

Ну как не костыли. Не работают же эти базовые методы :)

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

@abramcumner WinCap точнее написал: w_begin(0). Начальная позиция "гуляет" (интересно, какое в этом удобство), вот и работала проверка через раз. Это не костыли – это различия версий, о которых можно узнать только из вот таких обсуждений, потому что в справочнике сказано: "созданный пакет по умолчанию имеет позиции чтения и записи, установленные в 0".

  • Согласен 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Вопрос по скрипту ОГСМ ogsm_rt_manager.script. В игре, с локациями ЧН, вылета не было. Вылет идёт по спавну в алспавн мертвого сталкера на новой локации.

--Регистрация целей для тасков типа kill_stalker
function CRandomTask:register_target(obj)
if IsStalker(obj) then
for k,v in pairs(self.task_id_by_type["kill_stalker"]) do -- !!! ТУТ ВЫЛЕТ !!!
if obj.alive ~= nil and obj:alive() == true and
obj:profile_name() == self.task_info[v].target
then
if self.task_info[v].target_objects == nil then
self.task_info[v].target_objects = {}
end
table.insert(self.task_info[v].target_objects, obj.id)
end
end
end
end


Может перечисление локаций ЧН сделать, типа такого?
if level.name() == "agroprom_underground" then

Или куда то надо новую локацию прописать или трупы?

 

Кто шарит в ОГСМ ( кроме Kirgudu)?

 

А там еще ака Bak намутил rx_wmgr.script .

Короче, для нового уровня - ОГСМ - это Ж...

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
12 минут назад, Expropriator сказал:

ТУТ ВЫЛЕТ

А какой вылет, это военная тайна?

Может там достаточно проверку if type() == 'table' воткнуть, и всего делов...

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

c19ca8cbf9def90.jpg

 

Без ОГСМ всё работает.

 

 

@Zander_driver,
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : ..\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...orovka_beta2\gamedata\scripts\ogsm_rt_manager.script:978: bad argument #1 to 'pairs' (table expected, got nil)

 

Спавню нпс на новой локации из профиля ОГСМ.
 

Или я вообще туплю. Тут в ЧН же можно спавнить нпс через алспавн напрямую? Это же не ЗП, что бы через респавн.

 

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
3 часа назад, Expropriator сказал:

Кто шарит в ОГСМ ( кроме Kirgudu)?

А я тебе не подойду вместо Kirgudu? :crazy2:

Не было там никакой привязки к локациям, насколько я помню. К смартам - да, но не в заданиях типа "kill_stalker".
Проверь, что ты не почистил ненароком конфиг misc\rt_manager.ltx
При первом после загрузки обращении к менеджеру (например, как раз из se_stalker.on_register()) там считывалось содержимое секции list, затем по каждой строке этой секции читались уже свойства заданий и записывались в массив self.task_info. Далее делался перебор этого массива и в зависимости от значения свойства type добавлялось значение в один из массивов task_id_by_type[type]. Пустым он мог оказаться только в том случае, если из конфига не получено ни одного задания нужного типа.

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

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

Странно.

andreyholkin.gif

rod_cccp.gif

 

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

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

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

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

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

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

Войти

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

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

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