Charsi 440 Опубликовано 18 Марта 2010 Радиус срабатывания рестриктора 2,а левел-ченджера - 0.01. Если радиус срабатывания левел-ченджера выставишь больше 2,то рестриктор не будет успевать срабатывать и вспышки не будет. Количество телепортов на локе определяется тут: lc_cnt = math.random(min_lc, min_lc+math.random(7,15)) "старые следы"... При заходе на локацию скрипт убирает объекты с секцией,содержащей lname.."_dynamic_lc_gonarh" Спейс-рестрикторы спавнятся с секцией lname.."_dynamic_lc_gonarh_restrictor" и успешно убираются. Левел-ченджеры спавнятся с секцией "level_changer" и потому не убираются. Следовательно,чтобы избавиться от телепортов-фантомов,их нужно спавнить не так: local obj = alife():create("level_changer", source_dt.pos, source_dt.lvid, source_dt.gvid) а вот так: local obj = alife():create(level.name().."_dynamic_lc_gonarh", source_dt.pos, source_dt.lvid, source_dt.gvid) Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Поделиться этим сообщением Ссылка на сообщение
Charsi 440 Опубликовано 25 Марта 2010 кол-во определяется номером левела(да еще умноженному на 2 кажется) Не верно.Минимальное количество телепортов на локации с именем lname равно удвоенному числу,которое берется из таблицы level_number,описанной в начале файла. local level_number={ l01_escape = 1, l02_garbage = 2, l03_agroprom = 3, l03u_agr_underground=4, l04_darkvalley=5, l04u_labx18=6, l05_bar=7, l06_rostok=8, l07_military=9, l08_yantar=10, l08u_brainlab=11, l10_radar=12, l10u_bunker=13, l11_pripyat=14 } Ни Болот, ни Госпиталя в ней нет,и динамических телепортов на этих локациях не будет. почему на локах ЧАЭС и ЧАЭС-2 отметки переходов не отображаются в пда? По той же причине - динамических телепортов там нет. Можно к метке с телепортом приписать название локации, куда он ведёт. [spoiler=немного читерства ] function spawn_random_lc(lname) local src = get_random_coordinates(lname) local dd = get_dest_data(lname) --пункт назначения local obj = create_lc(src, dd, 0.01, lname.."_dynamic_lc_gonarh") if obj then table.insert(array_lc, obj) level.map_add_object_spot(obj.id, "red_location", "Телепорт на локацию "..(game.translate_string(dd.lname)) ) end local custom_data = "[logic] \nactive = sr_idle \n[sr_idle] \non_actor_inside = %+teleport_show%\non_actor_outside = %-teleport_show%" spawn_restrictor(lname.."_dynamic_lc_gonarh_restrictor", src.pos, src.lvid, src.gvid, 2, custom_data) end Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Поделиться этим сообщением Ссылка на сообщение
Charsi 440 Опубликовано 26 Марта 2010 (изменено) strong,cейчас пришел на ЧАЭС и заспавнил телепорты.Они отображаются и на миникарте и на ПДА.Но их видно лишь частично,как и метку главного героя.Это глюк оригинальной игры.Как его решить - лучше спросить у картоделов. Struck,в пределах одной локации можно не заморачиваться с левелченджерами,а делать перенос скриптом. Делаешь массив векторов,указывающих куда можно телепортироваться.Для каждой локации будет свой подмассив.При попадании ГГ в локальный телепорт выбираешь случайный вектор из этого массива и переносишь куда надо. local massiv = { [l01_escape] = {vector1,vector2,vector3}, [l02_garbage] ={vector4,vector5} --и т.д. } local m = massiv[level.name()] --получаем подмаcсив векторов для текущего уровня if m then -- если есть локальные телепорты для текущей локации local vector = m[math.random(table.getn(m))] --выбираем случайный элемент из m db.actor:set_actor_position(vector) --переносим актора end Изменено 26 Марта 2010 пользователем Charsi Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Поделиться этим сообщением Ссылка на сообщение