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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

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

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


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

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

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

 

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

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

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


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Только что, DibokDibokin сказал:

 local obj = id and db.storage[id] and db.storage[id].object

И чему тут будет равен obj ?

Сдается мне, тип будет boolean, а значение false, потому что в этой цепочке and-условий первым идет неопределенное id, если верить коду, равное nil.

Поэтому следующая проверка if (obj and... - по факту проверяет if (false and... - и далее уже ничего не выполняется. И до попытки найти поле id у объекта "false", код не добирается. А то вылетел бы.

 

Только что, DibokDibokin сказал:

Второй день сижу, пытаюсь.

Когда код творит что-то не то, что от него ожидается, полезно его снабдить выводами в лог интересующей информации. Пусть пишет, как у него дела, у кода этого. Тогда и дебаг быстрее делается.

Изменено пользователем Zander_driver
  • Спасибо 1
  • Нравится 1
  • Согласен 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

14.08.2020 в 00:52, Zander_driver сказал:

И чему тут будет равен obj ?

Вот ещё вариант:
 

local is_box = { 
    ["dynamics\\box\\box_wood_01"] = true,
    ["dynamics\\box\\box_metall_01"] = true,
    ["dynamics\\box\\box_paper"] = true,
}

function show_boxes()
    local sim = alife()
    for i=1,65534 do
        local se_obj = sim:object(i)
        if (se_obj and is_box[se_obj:get_visual_name()]) then
            level.map_add_object_spot_ser(se_obj.id, "название_метки")
        end
    end
end

 

Лог вылета:
 

FATAL ERROR
 
[error]Expression    : <no expression>
[error]Function      : CScriptEngine::lua_error
[error]File          : ..\xrServerEntities\script_engine.cpp
[error]Line          : 189
[error]Description   : fatal error
[error]Arguments     : LUA error: d:\stalker\gamedata\scripts\xr_show_box.script:11: attempt to call method 'get_visual_name' (a nil value)
 

stack trace:

0023:00773DCC xrCore.dll, xrDebug::fatal()
0023:054CEC1F xrGame.dll, CDialogHolder::UseIndicators()
0023:00453F6E xrEngine.exe, CInput::OnFrame()
0023:0040F2DA xrEngine.exe, CRenderDevice::message_loop()

Только что, DibokDibokin сказал:

get_visual_name

Такой метод есть у клиентских объектов, но у серверных его нет. О чем лог собственно, и сообщает.

  • Спасибо 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

@DibokDibokin, попробуй так:

 

local s_obj = alife():object(i)
if s_obj ~= nil then
    local c_obj = level.object_by_id(s_obj.id)

    if (c_obj and is_box[c_obj:get_visual_name()]) then

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

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

Доброго времени!

Думается, мой вопрос имеет прямое отношение к скриптам - как реализовать (и есть ли мануал?) замедление или полную остановку игрового времени во время диалогов с неписями, во время чтения различных найденных документов ?

@mdm64, level.set_time_factor, если правильно помню.

  • Согласен 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

15.08.2020 в 15:36, mdm64 сказал:

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

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

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

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

level.set_time_factor,

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

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

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

В shadows addon 0.8 реализовано замедление времени по горячей клавише, может есть смысл по ковырять аддон?

  • Сомнительно 1

 Моя нычка, Нычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

@Zander_driver, Да, он, вернее, требуется управление им.

@ted.80, Да, именно так. Просто в моём моде, который ещё верстается, есть довольно много больших диалогов и другой текстовой информации, во время которых (если игрок умеет читать) может произойти всё, что угодно - от выброса до нападения мутантов или враждебных сталкеров. Да и само время игры тратится по сути впустую, частенько будет получаться так - утром проснулся, похавал, поговорил с неписем или прочитал найденную инфу, и уже пора ужинать и баиньки... Конечно, несколько преувеличенно сказал, но суть именно такова.

Вот этого мне и нужно избежать.

@UriZzz, Честно говоря, пропустил эту фичу, аддон вроде как знакомый на слух. Ну, на крайняк придётся ковырнуть его, просто на это тоже требуется время, а чтобы разобраться в чужих скриптах, иногда немалое. Потому и задал вопрос, вдруг есть у кого нужное, уже выдернутое или просто есть.

2 часа назад, mdm64 сказал:

есть довольно много больших диалогов и другой текстовой информации

Предлагаю пару простых вариантов:

1. В gamedata/config/alife.ltx:  time_factor = 3 или меньше. Это уменьшит скорость течения времени в игре.

2. Ставить игру на паузу при чтении текстов. Соответственно, надпись "пауза" переместить так, чтобы не мешала.

  • Согласен 1

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

@aromatizer, Не лучший вариант. У меня обычно стоит time_factor = 10, и то потери игрового времени напрягают, а многие для себя ставят от 3 до 6.

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

  • Сомнительно 1
12 минут назад, mdm64 сказал:

каждый раз перемещать надпись "Пауза"

Зачем каждый раз?

  • Согласен 2

Здесь могла быть ваша реклама.

2 часа назад, mdm64 сказал:

У меня обычно стоит time_factor = 10, и то потери игрового времени напрягают

Не понял: переведи. А так-то time_factor = 10 предназначен для того, чтобы игрок быстрее бежал вперед, а не вдумчиво читал простыни текстов.) Думается мне, что оптимальное значение time_factor = 3.

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

@aromatizer, Да, для чтения 3-ка удобнее, слов нет. Но понимаешь, как-то контрреволюционно выглядит ситуация, когда ГГ за 3-10 минут выносит хорошо вооружённую многочисленную базу, тратя на переход из одного здания в другое несколько секунд. Не? :biggrin:

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

Изменено пользователем mdm64
  • Смешно 1

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

@ted.80, Благодарю! Я так понимаю, что при этом изменяется ход времени при открытии-закрытии инвентаря, верно?

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

Что-нибудь кроме этого нужно в другие места добавлять? Поршни парные они системные или их необходимо всё-таки прописывать, как и "обычные"?

Изменено пользователем mdm64
Только что, mdm64 сказал:

Поршни парные они системные или их необходимо всё-таки прописывать

Системные. Их движок выдает/забирает, прописывать никуда не требуется.

Только что, mdm64 сказал:

Что-нибудь кроме этого нужно в другие места добавлять?

Неа. @ted.80, абсолютно готовый код написал, "под ключ" :) бери-пользуйся.

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

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

@Zander_driver, Понял, благодарю за помощь! Кстати, уже попробовал с инвентарём - реально работает! Очень полезные поршни!

Кстати, а есть где почитать, может быть, есть ещё подобные парные или одиночные системные поршни? Или только эти?

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

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

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

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

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

Войти

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

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

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