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

Динамические левел_ченджеры


Gonarh

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

Радиус срабатывания рестриктора 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)

Поделиться этим сообщением


Ссылка на сообщение
кол-во определяется номером левела(да еще умноженному на 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

 

Поделиться этим сообщением


Ссылка на сообщение

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

 

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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