Решил вырезать полностью сюжет(ТЧ) и возникли кое-какие вопросы: 1) Как вырезать облет камеры на локациях(На ДТ при нападении на научников и на Агропроме при нападении военных на группу Крота)? 2) Как вырезать некоторых сталкеров с локаций(пробовал в all.spawn удалять секции section_name = stalker, но при компиляции ошибка со ссылкой на данную секцию)?
Uyman358, "облет камеры" или cutscene присутствует как в файле спавна так и в level_spawn.ltx локации, на которой "отыгрывается" данный эффект. Вызов ее (сцены) происходит при попадании ГГ в спайс-рестриктор. Название cutscene для локи Агропром - agroprom_demo, а для локи Росток - rostok_camera.
Страховид, это объекты, которые в позапрошлом году переносили очень легко. А сейчас такой накро-вылет со смайликом. Ох, уж эти пысы. Это обычные меши (декор)
sasmeleuz, то есть ты, берёшь вот этот brkbl#0.ogf, из какогото ТЧешного левела и просто кипируеш в левел ЗПешный? Скорее всего причина именно в этом, эти ОГФки только в СДК раскладываться должны.
Добавлено (20.08.2012, 12:45) --------------------------------------------- Хотя нет, рохоже я путаю, эти brkbl#*.ogf, вроде как вообще при компиляции локации генерируются. Как-то, бьющееся стекло, разбивается на осколки, которыми и являются эти brkbl#*.ogf Вроде так.
6poHR777, Я в скриптах пока зелёный, и может чего лишнего добаввил, но я-бы так сделал
Code
local note = nil
function repair_outfit_start() if note and type(note) == "number" then if not level.object_by_id(note) then alife():create("repair_kit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end note = nil end if note and type(note) == "userdata" then note = note:id() else note = nil end end
function repair_outfit() local item_in_slot = db.actor:item_in_slot(6) if item_in_slot ~= nil and item_s6:condition() >=0.30 and item_s6:condition() ~=0.999 then item_in_slot:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) и Т.Д.
В конце добавь
Code
function use_repair(obj) if obj:section() == "repair_kit" then note = obj --если наша вещь, то запомнить его userdata end end
в function actor_binder:on_item_drop (obj) добавь repair.use_repair(obj) в function actor_binder:update(delta) repair.repair_outfit_start()
По анологии шомпол сделал, с функцией ремонта брони.
Факт в том, что всегда переносил эти вещи легко, а сейчас вылет этот. ЗЫ в сдк нехочется локацию декомпилировать, что бы потом всё снова компилировать (итак 10 штук на максах надо скомпилить)
sasmeleuz, как их вообще перенести можно. Если на локации есть стёкла, оконные например, которым назначен шейдер бьющегося стекла, xwindows кажется, то при компиляции СДК сама генерирует осколки, на которые будет разбито это стекло. Переносить их от куда то нибыло просто безсмысленно.
if note and type(note) == "number" then if not level.object_by_id(note) then if db.actor:object("key") then level.start_stop_menu(interfase.ui_repair(), true) --запускаем меню end alife():create("repair_kit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end note = nil end if note and type(note) == "userdata" then note = note:id() else note = nil end end
function DeleteItem(iId) --добавляем функцию удаления предмета из инвентаря if iId then local seObj=alife():object(iId) if seObj then alife():release(seObj,true) end end end
function repair_wpn_1() local item_in_slot = db.actor:item_in_slot(1) local maslo = db.actor:object("maslo") if item_in_slot ~= nil and item_in_slot:condition() < 0.7 and maslo then --# собственно само сообщение news_manager.send_tip(db.actor, "%c[255,0,255,0]Шомлп\\n%c[default]Ремонт невозможен.", 0, "trader", 10000) elseif item_in_slot ~= nil and item_in_slot:condition() > 0.7 and maslo then item_in_slot:set_condition(1) DeleteItem(maslo:id()) end end
function repair_wpn_2() local item_in_slot = db.actor:item_in_slot(2) local maslo = db.actor:object("maslo") if item_in_slot ~= nil and item_in_slot:condition() < 0.7 and maslo then --# собственно само сообщение news_manager.send_tip(db.actor, "%c[255,0,255,0]Шомлп\\n%c[default]Ремонт невозможен.", 0, "trader", 10000) elseif item_in_slot ~= nil and item_in_slot:condition() > 0.7 and maslo then item_in_slot:set_condition(1) DeleteItem(maslo:id()) end end
function repair_armora() local item_in_slot = db.actor:item_in_slot(6) local kevlar = db.actor:object("kevlar") if item_in_slot ~= nil and item_in_slot:condition() < 0.7 and kevlar then --# собственно само сообщение news_manager.send_tip(db.actor, "%c[255,0,255,0]Шомлп\\n%c[default]Ремонт невозможен.", 0, "trader", 10000) elseif item_in_slot ~= nil and item_in_slot:condition() > 0.7 and kevlar then item_in_slot:set_condition(1) DeleteItem(kevlar:id()) end end
--/ спавн предметов в инвентори function spawn_item_in_inv(section,npc) if npc == nil then npc = db.actor end return alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end
--функция вызываемая из дропа function use_repair(obj) if obj:section() == "repair_kit" then note = obj --если наша вещь, то запомнить его userdata end end
Как видишь запуск функций ремонта происходит через меню. И есть проверка наличия предмета.