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

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


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

TRAMP14, вот это:

name = bar_tv_01

;свое имя напиши, например TRAMP14_telek.

 

position = 130.294647216797,-2.38456416130066,18.8145923614502

game_vertex_id = 1168

level_vertex_id = 76465

;Поставь соответствующие координаты.

Изменено пользователем Куфзук

Куфзук

Ранее посещенный ГГ уровень можно определить так:

При приближении к Lевел_чанджеру определяем текущий уровень и сохраняем с помощью pstor_store. Потом, после перехода на другую локацию, можно прочитать сохраненное имя уровня. Вот и все.

Изменено пользователем Stalk15
Stalk15, хорошо, а как мне тогда определить, что я в level_changere или пытаюся в него зайти?

Куфзук

Ну например так:

for k, v in pairs (db.storage) do
local object = level.object_by_id(k)
if object:section(или section_name) == "level_changer" then

Думаю, дальше сможешь проверить дистанцию до object. Только проверяй дистанцию на 1 метр или на 2. А то при переходе на другую локу ГГ вель будет не подалеку от левел_чанджера.

Куфзук, левелченджер сам определит, что ГГ внутри него, сохранит игру и загрузит ГГ на другой локации. Во время сохранения выполнится функция actor_binder:save(packet), в ней и нужно сохранять имя текущей локации - level.name(). При загрузке в actor_binder:net_spawn(data) сравнивай имя текущего уровня и того, что сохраняли.

Да будет то, что обычно. Чтобы сделать свое, нужно в самой модельке прописать нужный путь к seq файлу.

А можно какнить удалить все телевизоры чтобы толькоиз спавна а не конфиги не скрипты редать не пришлось?

Строгое предупреждение от администратора n6260
1. Пишите грамотно.

Сообщение от администратора n6260
2. Распаковываете алл_спавн, удаляете секции, компилируете обратно.
потому как я ни чего похожего actor_on_level не нашел

Там этого и нет, надо самому создать поле actor_on_level и приравнять его к level.name(). Сделать, чтобы этот параметр сохранялся. Потом в net_spawn() сравнивать actor_on_level с level.name().

Выглядит это примерно так:

 

function actor_binder:__init (obj) super(obj)

...

actor_on_level = nil

level_changing_from = nil

level_changing_to = nil

...

end

 

function actor_binder:net_spawn(data)

...

if actor_on_level == nil then

actor_on_level = level.name()

else

level_changing_from = actor_on_level

actor_on_level = level.name()

level_changing_to = actor_on_level

end

...

end

 

function actor_binder:save(packet)

...

packet:w_stringZ(actor_on_level)

...

end

 

function actor_binder:load(reader)

...

reader:r_stringZ(actor_on_level)

...

end

 

 

После этого можно будет запрашивать параметры level_changing_to и level_changing_from из любого скрипта. Можно это же сделать через биндер для самого level_changer'а, но это чуть сложнее. В функциях save/load всё должно быть в той же последовательности, то есть, если сохранение параметра actor_on_level идёт после сохранения какого-то другого параметра, то и в загрузке они должны идти в таком же порядке.

 

 

------

Сегодня мне удалось перенести state_mgr.script из ЗП в ТЧ. Всё работает, кроме раненых и анимаций сидения у костра. При попытке вылечить раненого игра вылетает (ругается, что передаю nil в state_mgr.set_state. А любители погрятся у костра просто стоят как столбы. Копал xr_kamp - ничего не нашёл. Кто-нибудь знает, как правильно вызвать смену анимации при лечении раненых и в схеме xr_kamp?

Изменено пользователем Полтергейст

Доброй ночи! Хочу задать вопрос касающийся анимаций НПС.

Где-то на форуме видел вопрос на тему как прописать нужному "чудику" нужную анимацию. Меня это зацепило и я полез в SDK глядеть на неиспользованный труд ПЫСов. Так вот собственно вопрос: а как правильно прописать новую анимацию для НПС в файлы state_lib.script и state_mgr_animation_list.script.

Вот "вырезки" из этих файлов:

wait_rac = {weapon = "strapped",
            movement = move.stand,
            mental = anim.free,
            bodystate = move.standing,
            animstate = "stand",
            animation = "raciya"
            }

и

raciya        = {    prop    = { maxidle = 1,
                                 sumidle = 1,
                                 rnd = 100 },
                into    = { [0]    = {"raciya_0_draw_0", {a="hand_radio"}, "raciya_0_draw_1"},
                            [1]    = {"raciya_1_draw_0", {a="hand_radio"}, "raciya_1_draw_1"},
                            [2]    = {"raciya_2_draw_0", {a="hand_radio"}, "raciya_2_draw_1"},
                            [3]    = {"raciya_3_draw_0", {a="hand_radio"}, "raciya_3_draw_1"},
                            [4]    = {"raciya_4_draw_0", {a="hand_radio"}, "raciya_4_draw_1"},
                            [8]    = {"raciya_8_draw_0", {a="hand_radio"}, "raciya_8_draw_1"},
                            [9]    = {"raciya_9_draw_0", {a="hand_radio"}, "raciya_9_draw_1"},
                            [10]= {"raciya_10_draw_0",{a="hand_radio"}, "raciya_10_draw_1"} },
                out     = { [0]    = {"raciya_0_hide_0", {d="hand_radio"}, "raciya_0_hide_1"},
                            [1]    = {"raciya_1_hide_0", {d="hand_radio"}, "raciya_1_hide_1"},
                            [2]    = {"raciya_2_hide_0", {d="hand_radio"}, "raciya_2_hide_1"},
                            [3]    = {"raciya_3_hide_0", {d="hand_radio"}, "raciya_3_hide_1"},
                            [4]    = {"raciya_4_hide_0", {d="hand_radio"}, "raciya_4_hide_1"},
                            [8]    = {"raciya_8_hide_0", {d="hand_radio"}, "raciya_8_hide_1"},
                            [9]    = {"raciya_9_hide_0", {d="hand_radio"}, "raciya_9_hide_1"},
                            [10]= {"raciya_10_hide_0",{d="hand_radio"}, "raciya_10_hide_1"} },
                idle     = { [0]    = "raciya_0_idle_0",
                            [1]    = "raciya_1_idle_0",
                            [2]    = "raciya_2_idle_0",
                            [3]    = "raciya_3_idle_0",
                            [4]    = "raciya_4_idle_0",
                            [8]    = "raciya_8_idle_0",
                            [9]    = "raciya_9_idle_0",
                            [10]= "raciya_10_idle_0" },
                rnd     = { [0]    = {"raciya_0_talk_0"},
                            [1]    = {"raciya_1_talk_0"},
                            [2]    = {"raciya_2_talk_0"},
                            [3]    = {"raciya_3_talk_0"},
                            [4]    = {"raciya_4_talk_0"},
                            [8]    = {"raciya_8_talk_0"},
                            [9]    = {"raciya_9_talk_0"},
                            [10]= {"raciya_10_talk_0"} } }

Как видно, в файле state_mgr_animation_list.script дело ведется непосредственно с файлами анимации (stalker_animation.ogf, bandits_animation.omf и тому подобные), а вот в файле state_lib.script задаются параметры непосредственно самой анимации, так сказать - готовой.

Так вот, кто нибудь знает назначение параметров этих файлов и какие значения они могут принимать?

Вот "вырезки" из этих файлов:

Подставьте перед элементами таблицы "state_mgr_".

Для первого элемента получится state_mgr_movement. И так далее.

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

Куфзук, Лучше всего эта тема освещена на с-портале(там соответствующая тема есть)

И еще набери в поиске"возвращение вырезаных анимаций"-самый подробный тутор из попадавшихся мне

 

Полтергейст, не совсем понял!

Меня интересуют параметры, например в:

wait_rac = {

weapon = "strapped",

movement = move.stand,

mental = anim.free,

bodystate = move.standing,

animstate = "stand",

animation = "raciya"

}

и

raciya = { prop = { maxidle = 1,

sumidle = 1,

rnd = 100 },

into = { [0] = {"raciya_0_draw_0", {a="hand_radio"}, "raciya_0_draw_1"},

[1] = {"raciya_1_draw_0", {a="hand_radio"}, "raciya_1_draw_1"},

[2] = {"raciya_2_draw_0", {a="hand_radio"}, "raciya_2_draw_1"},

[3] = {"raciya_3_draw_0", {a="hand_radio"}, "raciya_3_draw_1"},

[4] = {"raciya_4_draw_0", {a="hand_radio"}, "raciya_4_draw_1"},

[8] = {"raciya_8_draw_0", {a="hand_radio"}, "raciya_8_draw_1"},

[9] = {"raciya_9_draw_0", {a="hand_radio"}, "raciya_9_draw_1"},

[10]= {"raciya_10_draw_0",{a="hand_radio"}, "raciya_10_draw_1"} },

out = { [0] = {"raciya_0_hide_0", {d="hand_radio"}, "raciya_0_hide_1"},

[1] = {"raciya_1_hide_0", {d="hand_radio"}, "raciya_1_hide_1"},

[2] = {"raciya_2_hide_0", {d="hand_radio"}, "raciya_2_hide_1"},

[3] = {"raciya_3_hide_0", {d="hand_radio"}, "raciya_3_hide_1"},

[4] = {"raciya_4_hide_0", {d="hand_radio"}, "raciya_4_hide_1"},

[8] = {"raciya_8_hide_0", {d="hand_radio"}, "raciya_8_hide_1"},

[9] = {"raciya_9_hide_0", {d="hand_radio"}, "raciya_9_hide_1"},

[10]= {"raciya_10_hide_0",{d="hand_radio"}, "raciya_10_hide_1"} },

idle = { [0] = "raciya_0_idle_0",

[1] = "raciya_1_idle_0",

[2] = "raciya_2_idle_0",

[3] = "raciya_3_idle_0",

[4] = "raciya_4_idle_0",

[8] = "raciya_8_idle_0",

[9] = "raciya_9_idle_0",

[10]= "raciya_10_idle_0" },

rnd = { [0] = {"raciya_0_talk_0"},

[1] = {"raciya_1_talk_0"},

[2] = {"raciya_2_talk_0"},

[3] = {"raciya_3_talk_0"},

[4] = {"raciya_4_talk_0"},

[8] = {"raciya_8_talk_0"},

[9] = {"raciya_9_talk_0"},

[10]= {"raciya_10_talk_0"} } }

какие параметры они могут принимать?

По совету gruber. На сталкер-портале был, ничего существенного не нашел. Были ссылки, но датированные прошлогодним летом, соответственно - не рабочие! Да и вообще почему-то тема больше похожа на "моделирование", а не "анимирование". Может у кого есть тутор по внедрению новых "старых" анимаций.

З.Ы. прошу прощение за каламбур.

Куфзук У эрлика или у сингапура22 в журнале смотри. Не помню у кого, но там есть.

Мой архив

Сталкером не занимаюсь.

weapon = "none" --' Оружие убрано совсем; "strapped" - на спине, "unstrapped" - в руках

movement = move.stand, --' непись стоит на месте (ещё бывает move.walk - ходьба, move.run - бег)

mental = anim.free, --' Непись в свободном состоянии (ещё бывает anim.panic - шарахаться от всего недружески настроенного, anim.danger - напряжённое состояние)

bodystate = move.standing, --' Состояние тела: стоим ровно (ещё бывает move.crouch - присесть)

animstate = "stand", --' Состояние анимации - в ТЧ везде, кроме сидячих и спящих анимаций ставим "stand"

animation = "raciya" --' Имя анимации

 

Если подставить перед этими параметрами state_mgr_, то получим

state_mgr_weapon, state_mgr_movement, state_mgr_mental и т.д. - имена скриптов, для которых эти параметры задаются.

Изменено пользователем Полтергейст

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

Как сделать, чтобы проваливались при этом и удалялись из списка активных заданий не только это, но и все, что находятся в данный момент в ПДА игрока?

Стримы по STALKER и модам, twitch, ник SergGraduss. И группа ВК Бар "Ручная Химера. Для сталкеров. 
Анонсы стримов на АМК: https://www.amk-team.ru/forum/topic/14146-strimy-ot-serggraduss-ex-mutantt/

 

Куфзук, http://webfile.ru/5003472

Нашел у себя сохраненную страницу-открывать в браузере

gruber, во это спасибо, выручил однако! Столько людей на уши подная... :good2:

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

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

ЯДиск папка с крутым схроном!

Вопрос к оружейникам. Вот допустим добавляю новые стволы в Солянку. Ремингтон 870, по TTX самый мощный в игре, а полосочка "повреждение" у него чуть выше чем у АК74. Что интересно, при правке TTX стволов Солянки, с увеличением TTX, вырастает и полосочка. А вот в новых стволах нет. Так-же это и касается некоторых стволов Солянки, M4 SOPMOD, Израильская пушка (непомню название) и некоторых других. Кто подскажет, в чем секрет полосочки "повреждение"? Что вообще отвечает за ее отображение?

Пусть наша кровь станет в пасть им ядом смертельным! (с)

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

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

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

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

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

Войти

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

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

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