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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

@Stalkersof как вариант функции из ПС.

  +++ (Показать)

 

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

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

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

Шпаргалка

Ссылка на комментарий
  11.12.2024 в 07:15, Marafon6540 сказал:

@Stalkersof как вариант функции из ПС.

Каллбеки on_belt и on_ruck должны быть активированы в бинд_сталкер.

Воспользовался подсказкой все работает. Но есть один косяк в ОГСР движке артефакт можно скинуть прям с пояса. Т.е такой вот косячок получается. Скрипт не сработает если артефакт скинуть с пояса а не перемещать в рюкзак. Никто не знает как это отследить что арт был сброшен с пояса.

Ссылка на комментарий
  11.12.2024 в 10:28, Norman Eisenherz сказал:

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

Так сам апдейт работает нормально? Выясни, проблема в апдейте или в твоем коде счетчика. Потом уже дальше разбираться.

 

  11.12.2024 в 11:47, Stalkersof сказал:

Скрипт не сработает если артефакт скинуть с пояса а не перемещать в рюкзак. Никто не знает как это отследить что арт был сброшен с пояса.

Ну так повесь вызов on_ruck на событие on_drop в том же биндере актора, будет при дропе еще уменьшаться вес. Впрочем, я не знаю зачем городить эти огороды, в ОГСР же по-любому должно в движке быть добавлено свойство арта на вес, неужели его там нет?

 

P.S.

https://github.com/OGSR/OGSR-Engine/wiki/Подробное-описание-изменений#new-properties-for-artifacts

:grin2:

 

  10.12.2024 в 04:11, Stalkersof сказал:

Что это за set_int_arg0(24) и такого метода не существует obj:get_hud_shared_str()

ОГСР движок

Конечно такого метода нет, разные движки же. В SA xray-extensions. В ОГСР должны быть свои новые методы для этого всего, читай доку по движку. Имя худ секции можно просто из конфига прочитать как строковой параметр, разницы нет.

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

Код типовой, в обычных апдейтах работает. Меню загрузки сейвов обновляется только один раз при создании окна.

  • Полезно 1

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

Шпаргалка

Ссылка на комментарий
  11.12.2024 в 14:21, RayTwitty сказал:

Ну так повесь вызов on_ruck на событие on_drop в том же биндере актора, будет при дропе еще уменьшаться вес. Впрочем, я не знаю зачем городить эти огороды, в ОГСР же по-любому должно в движке быть добавлено свойство арта на вес, неужели его там нет?

Да свойства артефактов на вес есть в движке там городить ничего не надо только в конфигах прописать два параметра. На on_drop так будет и из инвентаря при скидывании вес меняться, а надо именно с пояса, или я не прав. Мне это надо для индикатора переносимого веса. Сами арты то работают и так.

Изменено пользователем Stalkersof
Ссылка на комментарий
  10.12.2024 в 00:45, RayTwitty сказал:
-- впилить
elseif self.item:is_artefact() then
...
end

Впилил...

  тут (Показать)

Но!

Для артефакта скрипт почему-то ситуацию отрабатывает зеркально относительно стволов. Триггер на включение той или иной анимки срабатывает, когда арт  в слоте не активен. Т.е., получается арт в руках - ждём. Убрали из рук - и вот здесь пытаемся играть анимку. Это как понимать? :).

Ссылка на комментарий
  11.12.2024 в 15:26, Norman Eisenherz сказал:

Меню загрузки сейвов обновляется только один раз при создании окна.

Ну если load_dialog:Update() вызывается один раз, тогда никак:pardon:Хотя ЕМНИП в главном меню оно работало нормально, можно попробовать оттуда пробросить вызов.

 

  11.12.2024 в 15:44, Stalkersof сказал:

Мне это надо для индикатора переносимого веса.

Это который на худе типа как в ЗП? Так для него просто нужно получить текущий вес инвентаря и сравнить с db.actor:get_actor_max_weight() или db.actor:get_actor_max_walk_weight(). Зачем второй раз считать всю эту заморочь, если движок уже посчитал?)

 

  11.12.2024 в 19:04, Капрал Хикс сказал:

Убрали из рук - и вот здесь пытаемся играть анимку. Это как понимать?

Возможно стейты (номера) другие, скрипт работает для оружия и гранат/болта. Никогда эту фичу с артом не ковырял, может там другие стейты идут...

 

В методе is_idle_state попробуй замени if self.item:is_weapon() then на if self.item:is_weapon() or self.item:is_artefact() then. У арта айдл вроде тоже нулевой стейт.

  • Нравится 1
  • Полезно 2
Ссылка на комментарий
  12.12.2024 в 01:36, RayTwitty сказал:

Возможно стейты (номера) другие... У арта айдл вроде тоже нулевой стейт.

@RayTwitty , а где это определяется/каким образом посмотреть можно?

Ссылка на комментарий
  12.12.2024 в 01:36, RayTwitty сказал:

Это который на худе типа как в ЗП? Так для него просто нужно получить текущий вес инвентаря и сравнить с db.actor:get_actor_max_weight() или db.actor:get_actor_max_walk_weight(). Зачем второй раз считать всю эту заморочь, если движок уже посчитал?)

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

 

Да и методы:

db.actor:get_actor_max_weight()

или

db.actor:get_actor_max_walk_weight()

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

 

Пс. Есть метод для получения текущего веса в инвентаре.

db.actor:get_total_weight()

т.е. перебирать все предметы как делали раньше, нет необходимости.)))

Изменено пользователем Stalkersof
Ссылка на комментарий
  12.12.2024 в 01:36, RayTwitty сказал:

ЕМНИП в главном меню оно работало нормально

Нет, все равно одно обновление. Может, дело в движковом выводе окна – в простом скриптовом окне обновление постоянное.

  • Полезно 1

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

Шпаргалка

Ссылка на комментарий
  12.12.2024 в 01:36, RayTwitty сказал:

У арта айдл вроде тоже нулевой стейт.

Всё работает как нужно. Теперь ещё одна фишечка в копилку неиспользованных ранее.

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

Такой код не дает вывода в консоль, хотя в [_g.script] применяется именно log(str).

 

Если в старом варианте вывести не новую переменную, а сам счетчик time_global(), будет повтор одинакового значения – дело действительно в паузе и, если ее снять, при любом обращении к меню загрузки игра некоторое время будет жить своей жизнью, что нежелательно.

 

Можно бы сделать счетчик циклов в самом скрипте, но значение device().time_delta остается на 0, а аргумент delta, в отличие от биндеров объектов, для окна не существует – неясно, какая частота обновления окна.

 

Edit: направление было правильное, и какой-то неточный апдейт можно намутить. Соотношение циклов окна и счетчика в мс ~1:5, при загруженной игре ~1:50. Какие значения будут на другом ПК, предсказать сложно.

Изменено пользователем Norman Eisenherz
  • Полезно 1

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

Шпаргалка

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

@Norman Eisenherz у меня следующий код работает без проблем в главном меню:

function main_menu:Update()
	CUIScriptWnd.Update(self)

	log("main_menu:Update")
end

Как при выгруженной игре, так и при загруженном сейве апдейт не останавливается. Так что все должно быть норм.

 

  13.12.2024 в 10:15, Norman Eisenherz сказал:

Такой код не дает вывода в консоль, хотя в [_g.script] применяется именно log(str).

Подразумевалось, что этот баян (16 летней давности) уже известен и у тебя есть функция на замену для вывода данных (там же комментарий написан). Выводи любым способом, да хоть тем же get_console():execute("load ~~~ ВАШ ТЕКСТ"), как это делали бородатые дядьки АМК)

Изменено пользователем RayTwitty
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@Norman Eisenherz 3 дня выясняли что не так с апдейтом, почему он не работает, даже в игру полез проверять, как оказалось, что все работало, а дело совсем в другом :facepalm:Я же об этом еще в этом посте спрашивал...

 

Значит кури класс CRenderDevice - https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkcijam-i-klassam/?do=findComment&comment=272244

 

time_global()\device().time_global() в меню использовать смысла нет, пробуй другие счетчики, например device().frame, а дельта между кадрами device().f_time_delta (у меня тоже нулевая, но я дальше главменю не загружал).

 

Работу всего этого можно тестить с включенным vsync, залочит на 60 кадров, без него будет улетать на сотни-тысячи, разницу в показаниях видно будет сразу, "другой ПК" не нужен.

 

P.S. Вопрос риторический - зачем считать время (его мы не получим), если можно считать скорость и расстояние (скролла)? Единственное, как учесть FPS, но это см. выше.

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

Эксперимент с device() описан чуть выше.

 

  14.12.2024 в 23:39, RayTwitty сказал:

можно считать скорость и расстояние (скролла)

Их можно считать на уровне скриптов? Не просто править множителями до уровня "так пойдет"?

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

Шпаргалка

Ссылка на комментарий
  15.12.2024 в 10:15, Norman Eisenherz сказал:

Их можно считать на уровне скриптов? Не просто править множителями до уровня "так пойдет"?

Сам реализуешь же. На каждом апдейте сдвигаешь скролл на определенный шаг, по сути это и есть скорость. Расстояние - разница между текущим и предыдущим положением, хотя может это вообще не понадобится, зависит от того как напишешь.

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

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

Подсветка при выборе смещается с шагом, равным высоте элемента списка – можно регулировать только частоту переключения. Отношение 5:1 или 50:1 – как раз результат теста в игре, и множители подставлены на уровне ощущений.

 

Движок обычный, и начинку я могу только читать.

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

Шпаргалка

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

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

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

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

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

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

Войти

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

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

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