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

[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. На сталкер-портале был, ничего существенного не нашел. Были ссылки, но датированные прошлогодним летом, соответственно - не рабочие! Да и вообще почему-то тема больше похожа на "моделирование", а не "анимирование". Может у кого есть тутор по внедрению новых "старых" анимаций.

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

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

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

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

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

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

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

Войти

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

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

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