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

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

@dsh так баг привращается в фичу:cool:

  • Согласен 1

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

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

UriZzz.gif

Ссылка на комментарий
3 часа назад, Баба ЯГА сказал(а):

где-то в скриптах есть коллбэк на взятие ГГ в руки физобъекта

Имя скрипта как бы намекает: bind_physic_object.script

Там ф-ия: generic_physics_binder:use_callback

Через неё без проблем отследишь поднятие дроп-ящика, в котором заведомо может  что-нибудь спаунится. А остальное... Не уверен, попробуй ковырнуть init, но думаю, выше упоминали правки движка не без причины.  

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

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

По физ-объектам - понял, спасибо, нет смысла, надо движок ковырять.

 

Есть ещё вопрос, получил через пакет данные по level_changer, там есть:

 

dest_position = userdata

dest_direction = userdata

 

Я пробовал так:  vector(t.dest_direction).x - но оно выдаёт всё по нулям...

пробовал так: t.dest_directiondirection().x - так вообще ошибку выдаёт...

как вместо userdata получить данные?..

 

shapes = table

t.shapes[1]: offset = userdata
t.shapes[1]: shtype = number
t.shapes[1]: v2 = userdata
t.shapes[1]: v3 = userdata
t.shapes[1]: v1 = userdata

 

Так-же там есть shapes - таблица, я её распарсил - но в ней тоже userdata...

 

Как получить данные в этих случаях из userdata?

 

1) хочу посмотреть как там всё устроено на переходах

2) нужно изменить точку перехода и сделать радиус метра два - не больше, пробовал так:

 

t.level_vertex_id = 397480
t.game_vertex_id = 1811
t.shapes = { { ["shtype"] = 0, ["center"] = vector():set( 0, 0, 0 ), ["radius"] = 2 } }

 

но ничего не вышло...

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий
07.04.2021 в 17:12, dsh сказал(а):

Это баг оригинального движка.

Насколько помню - это недозапись в огф модели актора в костюмах группировок, где таскание трупов\вещей забагованно. В СДК должен быть указательstalker_hero_captures.ltx.

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

@Баба ЯГА Вот некоторые модели исправляющие данный косяк, сделанные правда для себя. По моему к модам Лекс антигаз и Джекман армор. Если пригодиться конечно.

https://disk.yandex.ru/d/_MwdBMiNp9CvBw

 

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

Возможно ли получить в игре скриптово реальное время компьютера (не игровое время), как в Lua с помощью os.date()  ?

Если да, то можно пример для получения yy:MM:dd hh:mm:ss?  

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

@Баба ЯГА, а чем os.date() не устраивает?

Пример:

local date_str = os.date("%y:%m:%d %H:%M:%S")

 

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

Теги для os.date (PiL3):

 

%a  Сокращенное название дня недели (например, Wed)

%A  Полное название дня недели (например, Wednesday)

%b  Сокращенное название месяца (например, Sep)

%B  Полное название месяца(например, September)

%с  Дата и время(например, 09/16/98 23:48:10)

%d  День месяца (например, 16)[01-31]

%H  Час в 24-часовой системе (например, 23)[00-23]

%I  Час в 12-часовой системе (например, 11)[00-11]

%j  День года (например, 259) 1001-3661

%M  Минуты (например, 48)[00-59]

%m  Месяц (например, 09)[01-12]

%p  "am" или "рm"

%S  Секунды (10)[00-60]

%w  День недели (3)[0-6=Воскресенье-суббота]

%x  Дата (например, 09/16/98)

%X  Время (например, 23:48:10)

%y  Год как две цифры (например, 98)

%Y  Полный год (например, 1998)

%%  Знак %

 

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

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

@WinCap Я знаю как в Lua получать дату и время... Будь добр, прочитай ещё раз мой предыдущий вопрос, внимательно. Потом - сам проверь В ИГРЕ - то что ты рекомендуешь - и ты сам себе ответишь на свой вопрос: "... а чем os.date() не устраивает..." Если бы оно работало В ИГРЕ - я бы не спрашивал :facepalm:

Вопрос - актуален: 

 

Возможно ли получить в игре скриптово реальное время компьютера (не игровое время) -> как в Lua с помощью os.date()?  Если да, то можно пример для получения yy:MM:dd hh:mm:ss?

Для "быстрых" и невнимательных: os.date() в игре STALKER - не работает.

 

! Unknown command:  ..\gamedata\scripts\test.lua:101:_attempt_to_index_global_'os'_(a_nil_value)

 

Изменено пользователем Баба ЯГА
  • Не согласен 1

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

@Баба ЯГА Как это не работает? В OGSE таким образом главное меню подбирается в зависимости от реального времени суток.

 

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

function main_menu:InitBackground()
    local time = level.present() and level.get_time_hours() or tonumber(os.date("%H", os.time()))
    local night = time <= 8 or time >= 20
    self.bg_st:InitTexture(night and "ui\\ui_mm_night_back" or "ui\\ui_mm_main_back")
    local multiplier = 0.5625
    if screen_aspect_ratio > 2 then -- ultra-wide
        multiplier = 0.40
    end
    local tex_orig_w = screen_aspect_ratio * 1024 * multiplier
    local tex_orig_x_offs = (1024 - tex_orig_w) / 2
    self.bg_st:SetOriginalRect(tex_orig_x_offs, 0, tex_orig_w, 768);
end

 

Изменено пользователем I am Dead
Ссылка на комментарий

@I am Dead ну, может, в OGSE - уже и допилили движок и там есть такое, не спорю, у меня - нет (играю в Диетическую Солянку), кстати, в оригинале - тоже нет os. Вот по-этому и спрашиваю - может кто поможет (если, конечно, кто знает).

 

 

 @NikitosKnyaz 

12 часов назад, NikitosKnyaz сказал(а):

можно ли в ОП 2-1 через скрипт выдать и показать на карте все тайники существующие в зоне?!

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

Можно, вот так, например:


function find_all_tainik()
  local s_obj,cnt = nil, 0
	for i = 1, 65534 do
    s_obj = alife():object(i)
    if (s_obj) and (s_obj:section_name():find("inventory" , 1, true) or s_obj:section_name():find("_box" , 1, true))  then
		  cnt = cnt + 1
      get_console():execute( "load ::: ".."section: "..s_obj:section_name().." | name: "..s_obj:name().." | id: "..s_obj.id)
      if level.map_has_object_spot( s_obj.id, "treasure" ) == 0 then -- нет метки
        level.map_add_object_spot_ser( s_obj.id, "treasure", "Тайник"..s_obj:name() ) -- поставим свою
      end
    end
  end
  get_console():execute( "load ::: ".."Количество найденных тайников = "..cnt)
end

find_all_tainik()

 

 

 

Изменено пользователем Баба ЯГА

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

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

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

1. Как скриптово активировать диалог с нужным нпс?

2. Как активировать торговлю с этим нпс? (Например, после активации определённой фразы)

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

@ARTLantist, поскольку вопрос задан в теме "скриптование", то:

1. Функции npc:set_start_dialog("start_dialog") и npc:restore_default_start_dialog().

2. Функции npc:enable_trade() и npc:disable_trade().

Но, возможно, удастся обойтись стандартными средствами:

1. Теги has_info и dont_has_info для диалога или параметры meet_dialog и use в секции meet работы npc.

2. Параметр trade_enable в секции meet работы npc.

  • Нравится 1

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

Приветствую. Пару вопросов:

1)В игре есть метод начать неразрываемый диалог с НПС, однако существует хитрость: если нажать паузу, а затем Esc, то такой диалог всё-таки закроется. Как это поправить?

2) Есть такая функция:

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

if math.random(100) <= 50 then
    действие_1
elseif math.random(100) > 50 then
    действие_2
end

но срабатывает не всегда. Где ошибка?

Спасибо.

Изменено пользователем Jek@n
Ссылка на комментарий
43 минуты назад, Jek@n сказал(а):

Есть такая функция: ... Где ошибка?

Ошибка, как мне кажется, в elseif. В данном варианте вероятность срабатывания будет такой:

0% <-- действие_1 --> 50% <-- ничего_не_делать --> 75% <-- действие_2 --> 100%.

Нужно написать так:

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

if math.random(100) <= 50 then
    действие_1
else
    действие_2
end

 

 

  • Нравится 1
  • Согласен 2
  • Полезно 3

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

Ссылка на комментарий
4 часа назад, Jek@n сказал(а):

нажать паузу, а затем Esc, то такой диалог всё-таки закроется. Как это поправить?

Ну, самый простой способ: не нажимать на esc вовремя паузы.

Способ по сложнее: отследить начало диалога и на это время через скрипт разбиндить клавишу паузы, что бы не работала, пример - как это сделать, предостановить не могу, так как сам далеко от компа.

Ни чего больше, кроме правки движка, в голову не лезет.

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

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

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

UriZzz.gif

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

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

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

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

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

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

Войти

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

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

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