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

[SoC] Ковыряемся в файлах


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

22 минуты назад, SWEAW сказал:

а есть где функция, моментально "перематывающая" игровое время на сколько нужно вперед?

Ищи функцию в схеме сна.

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

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

19 минут назад, Romann сказал:

в схеме сна.

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

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

main_sleep.script

 

...

 

function starter(scale) -- скрипт перемотки на нужное время
    local factor = scale * 2650 -- вычисление времени "пробуждения"
    game.start_tutorial("time_scaling") -- вызов функции перемотки
    level.set_time_factor(factor) -- собственно сама перемотка
end

 

function dreamer() -- отвечает за сны
    level.set_time_factor(basic_time_factor) --остановка перемотки.

...

Это функции от спального мешка. Сначала попытался просто подредачить starter:

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

function time() -- скрипт перемотки на нужное время
    local factor = 1 * 2650 -- вычисление времени "пробуждения"
    game.start_tutorial("time_scaling") -- вызов функции перемотки
    level.set_time_factor(factor) -- собственно сама перемотка
end

При смене локации время перематывалось бесконечно. Решил объединить с куском dreamer'а:

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

function time() -- скрипт перемотки на нужное время
    local factor = 1 * 2650 -- вычисление времени "пробуждения"
    game.start_tutorial("time_scaling") -- вызов функции перемотки
    level.set_time_factor(factor) -- собственно сама перемотка

    level.set_time_factor(basic_time_factor) --остановка перемотки.
end

Время остановилось вообще. После оставил от обоих функций только level.set_time или level.set_time_global с заменой переменной time_global() на нее же, но плюс час, но эти функции он не определяет.

  • Не нравится 1

@UnLoaded При вызове исходных функций без изменений и по отдельности происходит ровно то же самое, что и при "попытке писать скрипты наугад". Если бы функции из схемы сна работала и с переходом на локации, я бы наверное не лез в специальную тему, чтобы спросить, где эта самая функция находится, потому что она действительно самый очевидный вариант на проверку. Но т.к. она, очевидно, не подошла, и если этого не было понятно из исходной формулировки вопроса, то я перефразирую: есть ли где-то в файлах игры функция НЕ ИЗ СХЕМЫ СНА, мгновенно перематывающая время на нужный отрезок вперед или же сразу устанавливающая желаемое время? Если имелась в виду какая-то другая схема сна, которая есть в файлах, но не использовалась в оригинальной игре, то пожалуйста, уточните, о какой конкретно схеме идет речь, и где она находится. А если таковой в файлах игры нет вообще, то подскажите, где ее можно найти. Заранее спасибо.

Все-таки:

local set_current_time_t, set_current_time_f

function set_current_time_wait()
    if game.get_game_time() < set_current_time_t then return false end
    level.set_time_factor( set_current_time_f )
    set_current_time_f = false
    return true
end


function set_current_time( hour, min, sec )    -- починено, работает.
    game_time_time = game.get_game_time()    -- полное игровое время

    local new_time = game.CTime()    -- нужно выставить
    new_time:setHMS( hour, min, sec )

    local hh, mm, ss
    _, _, _, hh, mm, ss = game_time_time:get()    -- текущее время
    local c_time = game.CTime()
    c_time:setHMS( hh, mm, ss )

    if new_time == c_time then return    -- ничего не делаем
    elseif new_time < c_time then        -- следующие сутки
        new_time:setHMS( hour + 24, min, sec )
    end

    new_time:setHMS( 0, 0, new_time:diffSec( c_time ) )
    set_current_time_t = game_time_time + new_time

    if not set_current_time_f then set_current_time_f = level.get_time_factor() end

    level.set_time_factor( 10000 )
    level.add_call( set_current_time_wait, dummy_action )
end

чем именно не нравится такая перемотка ?

 

Да, при смене локации и вообще s/l таймфактор надо заново читать из конфига и выставлять. Или останаввливать перемотку из on_save() хотя-бы, к примеру, актора. Текущий сохраняется непосредственно в сэйве. По-другому - ни как.

 

  • Спасибо 1

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

  • Не нравится 1
1 час назад, SWEAW сказал:

есть ли где-то в файлах игры функция НЕ ИЗ СХЕМЫ СНА, мгновенно перематывающая время на нужный отрезок вперед или же сразу устанавливающая желаемое время?

Нет.

В ‎18‎.‎08‎.‎2017 в 11:08, UnLoaded сказал:

У меня поиском "stul" в содержимом геймдаты не находится. Откуда у Вас такое взялось ?

Такие анимации есть в R.M.A. и NLC 7. Взял скрипт анимаций оттуда. Но больше регистрационных файлов по этой анимки я  не находил.

Парни, не могу никак разобраться. Использую X-Ray extensions,  но задам вопрос здесь, так как в ту тему в последнее время очень мало кто заглядывает, на мой взгляд.

Оружие - допустим, арбалет.

Выстрел, стрела попала в НПС\монстра или упала на геометрию уровня. Как мне вычислить этого самого НПС\монстра или координаты места, куда упала стрела если промазал? Если кто подскажет готовую функцию или более-менее похожий вариант исполнения - благодарности не будет границ :) . Конечная цель - заспавнить стрелу в НПС\монстра или подобрать её с геометрии. То есть просто подобрать стрелу, так как их ограниченное количество

 

Подозреваю, что предмет моих изысканий функция RayPick. Но ни описания, ни хотя бы примера использования не смог найти. Из файла помощи в теме  ничего полезного почерпнуть, увы, не смог.

 

 

 

3 часа назад, UnLoaded сказал:

Нет.

_g.script же... Другое дело, она там не рабочая была: обращалась к отсутствующей функции движка.

@SWEAW в x-ray extensions есть функция перемотки времени.

Quote

level.advance_game_time( dt_ms )

 

  • Полезно 1

@Marafon6540 вот пример использования raypick

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/bind_fot.script

см. function check_creatures()

А вот как там с геометрией работать - я не знаю.

  • Спасибо 1
  • Нравится 1

@Marafon6540 вот смотри тут

https://xray-engine.org/index.php?title=X-Ray_extensions

get_ray_pick_element() и get_tri_vertex1, get_tri_vertex2, get_tri_vertex3. Может это то, что тебе нужно.

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

@Marafon6540 ты хочешь реалистичный арбалет сделать? Я пытался, но у меня не вышло приаттачить стрелу к объектам, а так координату можно получить если подключить биндер к самой стреле, в там легко self.object:center() или position(). Только мне непонятно что тебе это даст.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

5 часов назад, НаноБот сказал:

ты хочешь реалистичный арбалет сделать?

Да нет, просто хочу подобрать стрелу после выстрела - их всего пяток штук на всю игру.

 

В 21.08.2017 в 02:29, dsh сказал:

вот пример использования

@dsh , а как там просмотреть комментарии  в файле? Сам код читается, а вот комменты какими-то иероглифами выводится.

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

@Marafon6540 скачать к себе. Комментарии-то в 1251, а GitHub в utf-8, вот и показывает кракозябры.

Товарищи, подскажите, пожалуйста, возможна ли установка измененной геймдаты на стимовскую версию сталкача? В руководстве к ТЧ в стиме есть список поддерживаемых модов, которые точно можно установить, но насчет других изменений там, к сожалению, ни слова.

@SWEAW думаю, да. Я билды True Stalker тестил на стиме. Работают идеально, как и на игре с диска. Это ЗП, да (как же я надоел вам с этим ЗП), но и на ТЧ я некоторые моды ставил. Тоже пашут. Так что меняй, не переживай. 

Ранее был известен под ником BoBaH_671.

@BoBaH_671  Я бы и рад не переживать, да только я уже попробовал, и при запуске после заставки THQ безлоговый вылет с прекращением работы XR_3DA.exe :(

@SWEAW ты бы сказал, что делал. :)

Моды работают, а какая-то мелкая права не работает? Смешно же.

Ранее был известен под ником BoBaH_671.

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

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

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

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

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

Войти

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

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

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