[SoC] Ковыряемся в файлах - Страница 283 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

Как не странно делал тоже самое,а вылет :blink:

 

вот вылет:

 

Expression : !m_DefaultCharacters.empty()

Function : CSE_ALifeTraderAbstract::specific_character

File : D:\xray-svn\xr_3da\xrGame\xrServer_Objects_ALife_Monsters.cpp

Line : 332

Description : no default specific character set for class

Arguments : marsh_provodnik

 

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

SLIVA, по всей видимости у тебя игра не может найти соответствующий класс marsh_provodnik.

 

И у меня вопрос к публике. А возможно ли отследить с какой локации на какую переходит ГГ. На какой локации ГГ находиться сейчас - это я могу узнать, а вот на какой был до этой?

Изменено пользователем Куфзук
А возможно ли отследить с какой локации на какую переходит ГГ

Сделать в биндере игрока поле actor_on_level и в net_spawn поставить сравнение имени текущего уровня с именем уровня, записанного в этом поле. Если значения отличаются - записать это в какой-нибудь параметр. Может можно было бы сделать это через биндер для level_changer, но как именно пока не знаю.

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

Подскажите пожалуйста как омжно заспавнить телевизор. Радио получается а телевизор я не знаю как в спавне прописывать

TRAMP14, вот пример телевизора в баре:

[3455]

; cse_abstract properties

section_name = lights_hanging_lamp

name = bar_tv_01

position = 130.294647216797,-2.38456416130066,18.8145923614502

direction = 0,3.06333684921265,0

s_flags = 0x23

 

; cse_alife_object properties

game_vertex_id = 1168

distance = 0

level_vertex_id = 76465

object_flags = 0xfffffffa

 

; cse_visual properties

visual_name = physics\decor\tv_1

 

; cse_ph_skeleton properties

skeleton_name =

 

; cse_alife_object_hanging_lamp properties

main_brightness = 1

main_color_animator = tv light 1

main_range = 4

light_flags = 0xb57c

startup_animation =

lamp_fixed_bones = link

health = 100

main_virtual_size = 0.100000001490116

ambient_radius = 2

ambient_power = 0.200000002980232

main_bone = bone_lamp

main_cone_angle = 2.09439516067505

glow_texture = glow\glow_orange

glow_radius = 1

ambient_bone = bone_lamp

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

 

Полтергейст, а можно поподробнее, потому как я ни чего похожего actor_on_level не нашел. Где именно сохраняется имя предыдущего уровня?

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

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 в журнале смотри. Не помню у кого, но там есть.

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

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

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

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

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

Войти

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

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

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