Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
ColR_iT 171 Опубликовано 15 Марта 2011 Поделиться Опубликовано 15 Марта 2011 (изменено) Stalker_AleX333, вот держи: >>Click Me<<возьмешь нужные, хотя для таких просьб - есть спецально отведенная тема. Полтергейст, у меня сейчас ничего не произошло, заспавнил двух новичков с одинаковым именем, ходят себе спокойно, даже на лицо разные. Изменено 15 Марта 2011 пользователем Куфзук Ссылка на комментарий
Полтергейст 37 Опубликовано 15 Марта 2011 Поделиться Опубликовано 15 Марта 2011 у меня сейчас ничего не произошло Уже нашёл кучу объектов с одинаковыми именами, например, тот же clmbl#0 есть на нескольких локациях. Походу это ляп разрабов. Кое-где так спешили, что забыли заменить level_prefix тем, чем надо. Ссылка на комментарий
_zero_cool_ 5 Опубликовано 15 Марта 2011 Поделиться Опубликовано 15 Марта 2011 Полтергейст clmbl#0 это объекты динамические!!! Они есть на всех локациях! А названия... ну одинаковые и что?... Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Марта 2011 Поделиться Опубликовано 15 Марта 2011 Dennis_Chikin, после кто-то неизвестный ворует патроны. 8( ... Но, блин, кто ??? Сам движок ? Движок ничего не удаляет. В этом легко убедиться, если создать сталкера без скриптовой обвязки. По идее все объекты удаляются в drop_manager. Но ты говоришь, что отключил. Значит ещё где-то осталось. Поищи "release" по коду. Нет так уж и много упоминаний. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) Полтергейст: Вопросик насчёт all.spawn: какие будут последствия, если у двух объектов одинаковое имя? ... Походу это ляп разрабов. Кое-где так спешили, что забыли ... Не делай поспешных выводов в очередной раз. Если просмотреть 'all.spawn', то можно заметить, что немало типов объектов в нем имеют одинаковые имена (костры, лампочки, ящики, ...). Задумайся сам, а требуется ли выдумывать имена для подобных объектов, если условие: "на одной локации только уникальные имена" - выполняется в любом случае для подобных объектов. Костры между локациями не перемещаются, ссылок на имена лампочек с разных карт не имеется, ящики, если и используются 'глобально', то только по story_id'ам, а не по именам ... Так ли уж обязательно задавать уникальные имена? :-) Так что разработчики просто с'экономили на именах и своем времени ... Иной вопрос для модмейкеров: заспавнить в тот же ящик к Сидорычу (с не уникальным именем для игры и без сид'а) - нужно немного 'попотеть' и пошевелить мозгами/познаниями. ;-) Изменено 16 Марта 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
=VENOM= 50 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 parsek123, хочешь сделать обычный тайник, ну, или именной - без разницы, они только названиями отличаются и способом наполнения шмотками? Тогда понадобится присвоить ему ("инвенторибоксу", название секции inventory_box) уникальный story_id. Присваиваем ящику "у Сидора" уникальный story_id, например, 5025 (можно и любой другой - главное, чтобы он был уникальным - иначе будут проблемы с запуском игры). Кроме этого, нужно добавить ящику "кустодату", в которой нужно указать, что этот ящик - тайник, иначе он не будет загружаться шмотками автоматически (зато его запросто можно будет отловить по story_id, и засунуть в него в любой момент всё, что угодно): [658] ; cse_abstract properties section_name = inventory_box name = level_prefix_inventory_box_0003 position = -247.503921508789,-24.7944984436035,-135.684509277344 direction = 0,2.67659902572632,0 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 594270 object_flags = 0xffffff3f custom_data = <<END [logic] cfg = scripts\treasure_inventory_box.ltx END story_id = 5025 ; cse_visual properties visual_name = physics\equipment_cache\equipment_box_01_case Далее, прописываем свеженький тайник в game_story_ids.ltx, примерно вот так: 5025 = "esc_secret_0025" Затем регистрируем его treasure_manager.ltx, вот так: В начале файла после названия секции esc_secret_0025 B конец файла добавляем его секцию: [esc_secret_0025] target = 5025 ;story_id тайника name = esc_secret_0025_name ;имя тайника description = esc_secret_0025_descr ;краткое описание тайника items = conserva, 3, grenade_f1, 2 ;в тайнике по умолчанию будут спониться 3 консервы и две гранаты Ф-1 condlist = {=npc_rank(novice)} 5 ;условие выдачи тайника community = military ;группировка непися, выдающего тайник Всё, тайник начнёт работать в автоматическом режиме. Если же нужно принудительно затарить этот тайник нужными шмотками - например, десятью бутылками водки, консервой и дробовиком, делаем это при помощи скрипта: local box = alife():story_object(5025) if box then for a=1, 10 do alife():create("vodka", box.position, box.m_level_vertex_id, box.m_game_vertex_id, box.id) end alife():create("conserva", box.position, box.m_level_vertex_id, box.m_game_vertex_id, box.id) alife():create("wpn_bm16", box.position, box.m_level_vertex_id, box.m_game_vertex_id, box.id) end Ссылка на комментарий
ColR_iT 171 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Artos, постой - постой. Ты хочешь сказать, что создание на одной локации двух объектов с одинаковым именем - чревато последствиями? Могу тогда сказать, что сразу они не возникают. Я спаунил двух НПС с одинаковым именем, у них вообще вся секция спавна была одинаковая, только координаты отличались, оба они были в поле зрения и ничего критичного не произошло. Ссылка на комментарий
Nevada47 414 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Имеется вот такая конструкция 1. Создаём файл new_hud_health.script в папке gamedata/scripts и пишем в него: Код local hud_name = "hud_health" -- записываем переменную function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end -- загружаем переменную function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end -- удаляем переменную function del_variable(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end -- координаты(параметры) x, y, width, height local pbg = {x=0,y=0,w=0,h=0} --/ bg local plv = {x=0,y=0,w=0,h=0} --/ lv local skl_w = -1 --/ текущая длина шкалы local wide = false --/ текущий режим экрана local color = 0 local change_color = false local change_wpn = false local hud_show = false function update(bShow) local hud = get_hud() local cs_bg = hud:GetCustomStatic("hud_health_bg") local cs_lv = hud:GetCustomStatic("hud_health_lv") if (load_variable("opt_hp",true) == false or bShow == false) then if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end return save_variable("opt_hp",false) end local hp = db.actor.health if (hp == nil or hp == 0) then if hud_show == false then --/ рамку можно не стирать при смене оружия if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end return end -- проверка смены режима экрана if wide ~= db.wide then wide = db.wide if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end cs_bg, cs_lv = nil, nil end local cur_hud = "hud_health_bg" if cs_bg == nil then hud:AddCustomStatic(cur_hud, true) cs_bg = hud:GetCustomStatic(cur_hud) local wnd = cs_bg:wnd() if wnd then pbg = read_params(cur_hud) wnd:SetWndPos(pbg.x,pbg.y) wnd:SetWidth (pbg.w) wnd:SetHeight(pbg.h) wnd:SetAutoDelete(true) end end cur_hud = "hud_health_lv" if cs_lv == nil then hud:AddCustomStatic(cur_hud, true) cs_lv = hud:GetCustomStatic(cur_hud) local wnd = cs_lv:wnd() if wnd ~= nil then plv = read_params(cur_hud) wnd:SetWndPos(pbg.x+plv.x,pbg.y+plv.y) wnd:SetWidth (skl_w) wnd:SetHeight(plv.h) wnd:SetAutoDelete(true) change_color = true --/ смена цвета end end if cs_lv ~= nil then local hp_w = math.floor(hp * plv.w) if hp_w ~= skl_w then if hp_w < 1 then skl_w = -1 else skl_w = hp_w end end local texture_c = get_texture(hp) local wnd = cs_lv:wnd() wnd:SetWidth(skl_w) --/ Set Level Condition wnd:InitTexture(texture_c) --/ Set ColorTexture wnd:SetText(string.format(math.floor(hp*100+0.0001)).."%") end end function read_params(cur_hud) local ltx = ini_file("scripts\\new_hud_health.ltx") local section = cur_hud if wide then section = section.."_wide" end if ltx and ltx:section_exist(section) then local p = {x=0,y=0,w=0,h=0} local result, idx, value, i for i=0, ltx:line_count(section)-1 do result, idx, value = ltx:r_line(section, i, "", "") if idx == "x" then p.x = tonumber(value) elseif idx == "y" then p.y = tonumber(value) elseif idx == "width" then p.w = tonumber(value) elseif idx == "height" then p.h = tonumber(value) end end return p end end function get_texture(hp) local textures = { [0] = "ui_mg_progress_efficiency_full", --/ зеленая [1] = "ui_hud_shk_car", --/ оранжевая [2] = "ui_hud_shk_health" --/ красная } local clr = 0 --/ current color if hp > 0.7 then clr = 0 elseif hp > 0.3 then clr = 1 elseif hp < 0.3 then clr = 2 end if color ~= clr then color = clr change_color = true else change_color = false end return textures end 2. Создаём файл new_hud_health.ltx в папке gamedata/config/scripts и пишем в него: Код [hud_health_bg] x = 860 y = 660 width = 155 height = 34 [hud_health_lv] x = 33 y = 5 width = 110 height = 10 [hud_health_bg_wide] x = 900 y = 660 width = 123 height = 34 [hud_health_lv_wide] x = 24 y = 5 width = 84 height = 10 3. В файле ui_custom_msgs.xml прописываем: Код <hud_health_bg x="0" y="0" width="1" height="1" stretch="1" complex_mode="1"> <texture>ui_hud_shkala_health</texture> </hud_health_bg> <hud_health_lv x="0" y="0" stretch="1" complex_mode="1"> <texture><!-- заглушка --></texture> <text x="85" y="0" font="arial_14" r="255" g="255" b="255" a="255" ttl="8" complex_mode="1"/> </hud_health_lv> 4. Открываем файл maingame.xml находим строчки: <static_health ....> ..... </static_health> и <progress_bar_health ...> .... </progress_bar_health> выделяем и заменяем на следущее: Код <static_health x="860" y="660" width="155" height="34"> <texture></texture> <auto_static x="5" y="10" width="19" height="18"> <texture></texture> </auto_static> </static_health> <progress_bar_health x="33" y="5" width="110" height="10" horz="1" min="0" max="100" pos="0"> <progress> <texture></texture> </progress> </progress_bar_health> 5. Открываем файл bind_stalker.script и пишем после: Код ..... level_tasks.add_lchanger_location() self.bCheckStart = false end следущее: new_hud_health.update() после этой строчки должно стоять end, проверьте С помощью её сделана цифровая шкала здоровья, т.е. перебираются цифры от 0 до 100 в процентах. Отсюда вопрос: Возможно ли применить эту систему для создания цифровой шкалы выносливости, брони, радиации и т.д? «Ну и жесть!» Сказал асфальтовый каток, оглянувшись назад на бывшую "копейку". Ссылка на комментарий
TRAMP14 1 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) Nevada47 я писал такой скрипт для показателей состояния брони и оружия + для здоровья. тоже в 0-100 и всё работало Правда у меня раз в 5 меньше скрипт был p/s/ Где такой урок нашёл? Изменено 16 Марта 2011 пользователем TRAMP14 Ссылка на комментарий
ColR_iT 171 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) Nevada47, как сказал TRAMP14, ты можешь применить данную "систему", чтобы вывести на экран состояние актора и предметов (броня, оружие). Например: db.actor.power -- выносливость db.actor.psy_health -- пси здоровье db.actor.radiation -- радиация db.actor:item_in_slot(6):condition() -- состояние брони db.actor:item_in_slot(2):condition() -- состояние оружия во втором слоте db.actor:item_in_slot(3):condition() -- состояние оружия в третьем слоте TRAMP14, а почему именно взял, может сам написал!? (Вопрос риторический) Изменено 16 Марта 2011 пользователем Куфзук Ссылка на комментарий
Malandrinus 615 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Куфзук, Я спаунил двух НПС с одинаковым именем, ... ничего критичного не произошло. Похоже, что системное имя - рудимент от билдов. И похоже, что в самом движке внутри это поле не используется. Да и нет нужды, поскольку и так есть уникальный id и назначаемый по желанию sid. В дополнительном текстовом идентификаторе просто нет нужды. И обратите внимание. В билдах была функция получения клиентского объекта по имени, а в релизе уже нет. И в ЗП с концами вырезали такую же из alife_simulator для серверных объектов. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
_Призрак_ 11 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) В ЗП есть некоторые отличия. Например в ЗП в схеме animpoint указывается не СИД смарт_кавера, а именно его имя Это так, на заметку Изменено 16 Марта 2011 пользователем _Призрак_ Freedom Ссылка на комментарий
Silver Raven 197 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Что значит сей вылет: FATAL ERROR [error]Expression : motion_ID.valid() [error]Function : CKinematicsAnimated::ID_Cycle [error]File : E:\stalker\sources\trunk\xr_3da\SkeletonAnimated.cpp [error]Line : 121 [error]Description : ! MODEL: can't find cycle: [error]Arguments : Чего это за ругань на модель? З.Ы. Появилось после добавления в алл.спавн вот этого: [12125] ; cse_abstract properties section_name = physic_destroyable_object name = labx8_physic_destroyable_object_0002 position = -83.050994873047,-15.810188293457,78.368743896484 direction = -2.5466479200986E-5,0,1 ; cse_alife_object properties game_vertex_id = 3838 distance = 0 level_vertex_id = 2815 object_flags = 0xffffff3a custom_data = <<END [drop_box] community = def_box items = ammo_5.56x45_ss190, 2, medkit, 2 END ; cse_visual properties visual_name = physics\box\box_wood_01 ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 [12126] ; cse_abstract properties section_name = physic_destroyable_object name = labx8_physic_destroyable_object_0003 position = -81.293601989746,-14.004913330078,77.134628295898 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3838 distance = 0 level_vertex_id = 3039 object_flags = 0xffffff3a custom_data = <<END [drop_box] community = small_box_science END ; cse_visual properties visual_name = physics\box\box_metall_01 ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 [12127] ; cse_abstract properties section_name = physic_object name = labx8_physic_object_0001 position = -81.293601989746,-19.004913330078,77.134628295898 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3838 distance = 0 level_vertex_id = 3039 object_flags = 0xffffff3a ; cse_visual properties visual_name = physics\stul\stul_1a ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 [12128] ; cse_abstract properties section_name = physic_object name = labx8_physic_object_0002 position = -44.67280960083,-20.554525375366,71.50284576416 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3850 distance = 0 level_vertex_id = 6757 object_flags = 0xffffff3a ; cse_visual properties visual_name = AleX_MOD\physics\box\box_karton_1 ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 5 [12129] ; cse_abstract properties section_name = zone_mincer name = labx8_zone_mincer_0001 position = -89.982894897461,-20.200975418091,79.161865234375 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3838 distance = 0 level_vertex_id = 1686 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:0ffset = 0,0,0 shape0:radius = 2.13479919433594 ; cse_alife_space_restrictor properties restrictor_type = 0 ; cse_alife_custom_zone properties max_power = 50 ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0x71cf ; se_zone_anom properties [12130] ; cse_abstract properties section_name = zone_ameba name = labx8_zone_ameba_0001 position = -77.063751220703,-15.979523658752,68.551933288574 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3848 distance = 0 level_vertex_id = 3828 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:0ffset = 0,0,0 shape0:radius = 2.13479919433594 ; cse_alife_space_restrictor properties restrictor_type = 0 ; cse_alife_custom_zone properties max_power = 1.09000005722046 ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0xbcd0 ; se_zone_anom properties [12131] ; cse_abstract properties section_name = zone_radioactive_weak name = labx8_zone_radioactive_weak_0001 position = -46.364807128906,-20.554525375366,66.397842407227 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3850 distance = 0 level_vertex_id = 6738 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:0ffset = 0,0,0 shape0:radius = 5.02820301055908 ; cse_alife_space_restrictor properties restrictor_type = 0 ; cse_alife_custom_zone properties max_power = 0.0299999993294477 ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0x828f [12132] ; cse_abstract properties section_name = zone_witches_galantine name = labx8_zone_witches_galantine_0001 position = -64.963333129883,-16.00484085083,58.421161651611 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 3850 distance = 0 level_vertex_id = 5616 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:0ffset = 0,0,0 shape0:radius = 3.53479919433594 ; cse_alife_space_restrictor properties restrictor_type = 0 ; cse_alife_custom_zone properties max_power = 500 ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0x6c0f ; se_zone_anom properties Вроде все верно... aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Nevada47 414 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 TRAMP14, p/s/ Где такой урок нашёл? Вот здесь Автор XMK «Ну и жесть!» Сказал асфальтовый каток, оглянувшись назад на бывшую "копейку". Ссылка на комментарий
Artos 99 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) Куфзук: Ты хочешь сказать, что создание на одной локации двух объектов с одинаковым именем - чревато последствиями? (немного оффтопика) Непривычная для меня манера на АМК-форуме почти каждый вопрос сопровождать 'последствиями'. Последствия всегда есть, когда что-то/где-то поисходит ... А вот 'чреватые' они или наоборот - все относительно. ;-) Кто-то последствия, наступающие порой после сэйса, называет катастрофой, а кто-то ... счастливыми. ;-) (к сути) Я сказал всего лишь то, что хотел и посчитал нужным. Понятие 'чреватость' я не употреблял. Имена могут быть и одинаковыми, к 'фатальным' последствиям это не приводит. Хотя создать такие объекты нужно тоже постараться, т.к. в том же all.spawn'e для одной локации нет причин это делать, самому модмейкеру сложнее разбираться что куда поставил. Простой скриптовой спавн назначает имя рандомно, добавляя суффиксом игровой идентификатор. Остается 'спавн по секции' ... Так чем же все таки 'чревато'? ... malandrinus, Похоже, что системное имя - рудимент от билдов. ... Да и нет нужды, поскольку и так есть уникальный id и назначаемый по желанию sid ... А я бы не назвал рудиментом и не нужным. Собственно выше есть ответ (читаем #6075: "Как превратить ящик Сидорыча в квестовый тайник"). Поясню на этом примере: А что делать, если нет желания или возможности ковырять all.spawn или присваивать sid нет-пакетами? Да и sid'ов в игре может быть в 2-раза меньше чем игровый id и на все про все может и не хватить (учитывая аппетиты модмейкеров и рост новых локаций). У меня в моде (Симбион) в этот ящик однократно спавнится книга. Сейчас ковыряюсь с новой схемой поведения неписей и в ящик у костра новичков (в деревне на Кордоне) захотелось заспавнить бутылку водки для проверки ... И все делается без ковыряния all.spawn'а и sid'ов а именно по имени и индексу локации. Другой пример: В Баре заспавнены на столы водка, хлеб, ... Сейчас они имеют уникальные имена типа: "bar_vodka_0000". В игре и Меченый может выпить и закусить, и при схеме собирательства кто по столам пошмонать. Так и остаются после этого столы пустыми. Чтобы пополнить запасы опять же или sid'ы присваивать или проверять по координатам наличие на столах предметов ... Вот тут то уникальные имена для локации и годятся(!), облегчая поиск и проверку наличия именно того, что хочешь. В общем 'чреваты' последствия или нет - решает модмейкер в каждом конкретном случае. Для кого-то нет никакой разницы, а для кого-то 'чревато' возникновением дополнительного гимороя при написании кодов. Изменено 16 Марта 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AKKK1 6 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Вот что интересно есть обьект(нпс) с уникальным именем в алл спавне escape_lager .... допустим новичек в гулаге escape_lager и соответствуюшей кастом датой типа escape_lager = true так вот при его гибели (через некоторое время) сработает респаун или будет найден и назначен на данную работу свободный нпс с работ с более низким приоритетом Так вот параметр escape_lager = true сохрантся для него ? и какие имена получают отреспауниные неписи? Ссылка на комментарий
Artos 99 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) AKKK1, ответ на поверхности: Как создается объект в игре? Как работает функция спавна? В топике " Скриптование и спаун" уже сегодня давал краткое пояснение, дополню: При создании новой игры движек начинает создавать объекты перечисленные в all.spawn'е, считавая и заданные параметры для каждого объекта, помимо тех, что заданы в его конфиг-секции (object:section_name). И т.к. задано и имя - то оно и присваивается сразу объекту. Как спавнятся объекты скриптом, т.е. по функции (ре)спавна? Создается дефолтный объект в соответствии с его конфиг-секцией: create("section_name",...) и движек назначает объекту имя, всегда добавляя к имени суффиксом идентификатор созданного объекта. И только потом можно объекту что-то добавить/изменить, но(!) уже НЕ его имя (которое в недоступной для прямых правок секции нет-пакета 'cse_abstract'). Т.о. респавненный объект не получит имя 'escape_lager', а получит именем типа 'escape_lager23456' и, если работа завязана на конкретном имени объекта (а таких немало) - она (работа) уже до конца игры не будет задействована в случае гибели и исчезновения/удаления неписи. В этом случае только спавн по заведомо известной секции из all.spawn'а можно 'воссоздать' объект с нужным именем. Штатный респавн подобным не занимается. Изменено 16 Марта 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Spezer 0 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) Помогите надеюсь по теме. Вообщем создаю новую группировку по уроку, раньше отлично получалось но сейчас мучает вот такой вылет: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...ng\stalker-soc\gamedata\scripts\death_manager.script:147: attempt to index field '?' (a nil value) Как я понял дело в death_manager но там я всё написал точно, перепроверил раз 10. Может кто знает в чём ошибка? И да вылет происходит где-то через 2 секунды от начала игры. Изменено 16 Марта 2011 пользователем Spezer С каждым днём, всё радостнее жить! Ссылка на комментарий
=VENOM= 50 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 Вот, если кому надо, функция, возвращающая серверный объект ("инвенторибокс", ящик для шмоток/тайник). На входе имя локации + имя желаемого ящика (как уже неоднократно отмечалось, на одной локации (а лучше на всех) очень сильно рекомендуется использовать уникальные имена для объектов). Это для оригинала ТЧ, а для расширенных модов в таблицу нужно внести имена и параметры подключенных дополнительных локаций. local game_vertexes={ l01_escape={0,251}, l02_garbage={252,415}, l03_agroprom={416,702}, l03u_agr_underground={703,810}, l04_darkvalley={811,1108}, l04u_labx18={1109,1167}, l05_bar={1168,1307}, l06_rostok={1308,1437}, l08_yantar={1438,1528}, l08u_brainlab={1529,1544}, l07_military={1545,1861}, l10_radar={1862,2116}, l11_pripyat={2117,2272}, l12_stancia={2273,2401}, l12u_sarcofag={2402,2466}, l12u_control_monolith={2467,2516}, l12_stancia_2={2517,2660}, l10u_bunker={2661,2791} } function get_invbox_by_level_and_name(level, name) local jb = game_vertexes[level][1] local ja = game_vertexes[level][2] for z=1,65535 do local obj = alife():object(z) if obj then if obj:clsid() == 83 then if obj.m_game_vertex_id <= ja and obj.m_game_vertex_id >= jb then if obj:name() == name then amk.send_tip2(obj:name(), nil, 10) return obj end end end end end end Ссылка на комментарий
Malandrinus 615 Опубликовано 16 Марта 2011 Поделиться Опубликовано 16 Марта 2011 (изменено) =VENOV=, для получения номера уровня по его вертексу лучше использовать класс CGameGraph. Тогда не надо знать точное количество и нумерацию на каждом уровне. Наверное, алгоритм твоей функции можно оставить как есть, но таблицу лучше инициализировать автоматически. В противном случае возникает привязка к конкретному набору скомпилированных локаций. Изменено 16 Марта 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти