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

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


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

Уважаемые товарищи, а подскажите - есть ли в ТЧ возможность получить название материала, назначенного статическому  объекту (стены, крыши, плиты всякие)?

Для ОГСР, как понимаю, для этого изменен код ray_query в движке, там получается.

В ТЧ работает ray_pick, и наличие статики определить можно  - но вот как получить присвоенный этой статике материал? Или я сильно много хочу, и это никак?

След от кругов на воде - это тоже след (с)

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

народ, вопросец - кто нить пробовал на ТЧ исправить ранги ботов, чтобы формула расчёта коэффициента точности при повышении ранга НПС работала корректно (насколько мне известно, формула расчёта полагает макс_ранг НПС 100, как в ЗП). Насколько сложно будет поменять ранги под ЗП?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

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

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

@Okichi , не совсем уверен, что именно искомое, но попробуй здесь посмотреть, что-то такое подобное @НаноБот делал в своё время, возможно какие-то разумные мысли возникнут. Оно, правда, на XRE реализовано.

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

@Капрал Хикс то что формула заныкана в движок - это я и так знаю

вопрос в другом - где прописаны показатели повышения ранга НПС в момент их привязки к смарту?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

где

Да там же в движке, судя по всему. По слову rank искать в исходниках.

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

Работает во частях трилогии.

Можно рабочий пример? Именно чтобы было

08.10.2024 в 16:25, Balavnik сказал:

выносить секцию [spawn] в ltx-файл

Все части не интересны. Интересно для ТЧ. Оригинального или модиф. И какая тогда модификация?

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

@topdog , 

11 часов назад, h0N0r сказал:

Можно выносить кастомдату любых объектов

Кастом-дата - это часть данных объекта, где и пишутся секции spawn, logic и прочие. Прописывая инклуд в кастом дате, ты создаёшь из неё ссылку на файл, в котором ты и можешь теперь написать всё, что тебе надо, то есть, spawn, logic, spawner, и т.д. Единственное, не знаю, этот инклуд читается игрой относительно папки spawns, или относительно папки config(s).

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Привет, всем.

Использую таймеры из набора lua_helper+m_netpk+m_timers+se_stor_(Artos)

Кто соображает, как работать с циклическим таймером?

Вот из readme:

start_multi_timer(3*60, nil, {tip = {nil, "tip_MG"}, log = "tip_MG"},true) --/ 120 game-minutes + tip + log + cyclical

Как указывать игровое время? 3*60 = 120 минут игрового времени? Или тут ошибка/опечатка?


 

Вопрос о повторяющимся проигрыванием схемы снимается. Всему виной путаница с временем в описании.

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

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

UriZzz.gif

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

Где хранится информация о загрузочных экранах локации? Как сделать меняющиеся intro?

Добавлено  Купер,

Перемещено.

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

Как указывать игровое время? 3*60 = 120 минут игрового времени? Или тут ошибка/опечатка?

Опечатка. Первым параметром в данной функции идут игровые секунды, поэтому 3*60 - это 3 (три) игровые минуты.


 

10 часов назад, UriZzz сказал:

Но почему схема проигрывается дважды?

Таймер start_game_timer( XXX, "m_amk_weather.blowout_main" ) с разными значениями тайминга XXX запускается и в blowout_start() и в самой blowout_main() - тут не может быть пересечений? Больше ни за что взгляд не цепляется. Ну разве что сам выброс может длиться суммарно почти 30 минут, и тогда следующее срабатывание мультитаймера практически накладывается на конец выброса.

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

 

Update: Ну да, так и есть, если я правильно подсчитал. Все шаги выброса срабатывают у тебя последовательно и без пропусков, при этом сумма таймеров в шагах с 1 по 6 даёт ровно 30 игровых минут. Ровно столько, через сколько срабатывает мультитаймер запуска следующего выбора.

  • Спасибо 1
  • Нравится 2
Ссылка на комментарий
15 часов назад, Balavnik сказал:

Где хранится информация о загрузочных экранах локации?

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

x_ray.cpp.

void CApplication::Level_Set(u32 L)
{
    if (L>=Levels.size())    return;
    Level_Current = L;
    FS.get_path    ("$level$")->_set    (Levels[L].folder);
    string_path                    temp;
    string_path                    temp2;
    strconcat                    (sizeof(temp),temp,"intro\\intro_",Levels[L].folder);
    temp[xr_strlen(temp)-1] = 0;
    if (FS.exist(temp2, "$game_textures$", temp, ".dds"))
        hLevelLogo.create    ("font", temp);
    else
        hLevelLogo.create    ("font", "intro\\intro_no_start_picture");
    CheckCopyProtection        ();
}

 

15 часов назад, Balavnik сказал:

Как сделать меняющиеся intro?

Один из самых простых вариантов здесь. Суть идеи: вместо одной статической картинки используются динамические (в виде .seq элементов). Рабочие ссылки и возможные "подводные камни" там же в теме.

  • Полезно 1
Ссылка на комментарий
1 час назад, Купер сказал:

Похоже, вычитывается непосредственно движком при загрузке уровня.

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

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

@Капрал Хикс , размер - да. Тоже движком. Там даже в теме есть об этом. Собственно, оно же не зря в "старичке" XRE появилось и дальше пошло :biggrin::

Скрытый текст
;============================================
;==========ПОЛНОЭКРАННЫЕ ЗАСТАВКИ============
;=============FULLSCREEN INTROS==============
;============================================
		;0x004D8F24 16
		;0x0041302A 5
		;0x0041399B 5
		;0x004135F4 5
		;0x00413610 6		

 

  • Полезно 1
Ссылка на комментарий
12 часов назад, Kirgudu сказал:

Ну да, так и есть, если я правильно подсчитал. Все шаги выброса срабатывают у тебя последовательно и без пропусков, при этом сумма таймеров в шагах с 1 по 6 даёт ровно 30 игровых минут. Ровно столько, через сколько срабатывает мультитаймер запуска следующего выбора.

Именно так. Меня ввёл в заблуждение пример использования циклического таймера. Сейчас всё в норме, вроде.

  • Нравится 2

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

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

UriZzz.gif

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

колееги, есть вопросец

 

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

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

if gulag_type == "gen_vnz_lager" then
        return npc_community == "monolith"
    end

есть ли возможность по одному поршню менять группировку, которая может заселять лагерь, а после возвращать прежнюю?

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

В какой момент Толик выводится в онлайн? В gulag_escape конкретного места не нашёл.

Осенний каламбур. Сентябрь - лето.

img.php?nick=Balavnik&sert=2&text=t6

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

@Balavnik

Скрытый текст
--* работы
    if type == "esc_corps" then       
        t = { section = "logic@esc_corps_wounded",
            idle = 4,
            prior = 10, state = {0},
            online = false,
            in_rest = "", out_rest = "",
            predicate = function(obj_info)
                            return obj_info.name == "esc_vagon_wounded"
                        end
        }
        table.insert(sj, t)
        t = { section = "logic@esc_corps_wounded",
            idle = 0,
            prior = 10, state = {1},
            online = true,
            in_rest = "", out_rest = "",
            predicate = function(obj_info)
                            return obj_info.name == "esc_vagon_wounded"
                        end
        }
        table.insert(sj, t)
    end

--* состояние
    if type == "esc_corps" then
        return function(gulag)
            if has_alife_info("tutorial_wounded_start") then
                return 1
            else
                return 0
            end
        end
    end

 

  • Полезно 4
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

×
×
  • Создать...