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

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


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

Спасибо за разьяснения, после правки телепорты-фантомы исчезли. Но непонятки с количеством телепортов

остались. Я еще раз говорю, я в програмировании ноль, но руководствуясь только логикой и остатками

английского я пришел к такому выводу. За количество телепортов на локе отвечают две строки в скрипте, вот

эти:

min_lc = level_number[lname]*2
lc_cnt = math.random(min_lc,min_lc+math.random(7,15))

Из первой строки ясно, что кол-во определяется номером левела(да еще умноженному на 2 кажется), а во второй к этому кол-ву прибавляется еще какое-то рандомное число. На начальных уровнях вроде все в порядке, но представте себе сколько спавнится телепортов на уровне Болото с порядковым номером 33 в MapPack-е. Но здесь хоть площадь локи позволяет, а на локе Госпиталь под номером 28 просто кошмар. Я немного переделал эти строки, вот так:

min_lc = 3
lc_cnt = math.random(min_lc,min_lc+math.random(5,10))

И количество телепортов пришло в более-менее сносное состояние.

И хочу задать еще пару вопросов. Что касается ТЧ, здесь все в порядке, все работает безупречно. Но я привинтил этот скрипт к сборке ЗП+MapPack. В принципе все работает как надо , только иногда вылетает в Винду вот с этими логами:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : 
D:\prog_repository\sources\trunk\xrServerEntities\scri
pt_storage.cpp
Line          : 748
Description   : ....r. - 
cop\gamedata\scripts\bind_level_changer.script:46: 
attempt to index field 's_obj' (a nil value)


Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : 
D:\prog_repository\sources\trunk\xrServerEntities\scri
pt_storage.cppLine          : 748
Description   : ....t.a.l.k.e.r. - 
cop\gamedata\scripts\xr_logic.script:1270: attempt to 
index local 'obj' (a nil value)

Насколько я понял затык идет из присутствия в ЗП файла bind_level_changer.script , их просто надо развести по

времени срабатывания. Как это сделать? И второй вопрос почему на локах ЧАЭС и ЧАЭС-2 отметки переходов не отображаются в пда? Как их включить?

ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!!
Ссылка на комментарий
кол-во определяется номером левела(да еще умноженному на 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

 

Ссылка на комментарий
Не верно.Минимальное количество телепортов на локации с именем lname равно удвоенному числу,которое берется из таблицы level_number,описанной в начале файла.

Ни Болот, ни Госпиталя в ней нет,и динамических телепортов на этих локациях не будет.

Уже есть. Я расширил таблицу на весь MapPack. И чем твой ответ отличается от моего вопроса, я кажется тоже самое и написал.

 

Цитата

почему на локах ЧАЭС и ЧАЭС-2 отметки переходов не отображаются в пда?

 

По той же причине - динамических телепортов там нет.

См. ответ выше, телепорты есть и их видно на миникарте, но не видно в ПДА, т.ч. вопрос остался.

Мне это нужно на момент отработки. Потом отметки от рестрикторов будут отключены.

Изменено пользователем strong
ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!!
Ссылка на комментарий

Gonarh, а можно так что бы телепорту прописать перекидывание в размерах одной локе??

 

Делать массив перекидываний и рандомно выдавать?

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

С этим вариантом скрипта не пробовал, а со старым вариантом у меня получалось.

Вот в этом месте

function get_random_coordinates(lname)
local gvn, gvx, lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname]
local min_dist = 100000

уменьшая значение local min_dist = 100000 до 1000 прыгал по телепортам на одной локе

ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!!
Ссылка на комментарий

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
Ссылка на комментарий

Классно получилось :вот путь который я "пролетел" Кордон-Агропром-Припять-Радар-Темная Долина-Кордон :ny_thumbsup: А на ЗП он работать будет?

Изменено пользователем Dabraleli
Ссылка на комментарий

Ссылка из поста http://www.amk-team.ru/forum/index.php?showtopic=7881&p=340018 умерла. Может кто обновить?

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

Я вообще животных люблю. Кто-то там кошек любит, или собак, а я всех люблю без разбора. Людей только не люблю. Надоели, блин. Носятся и бегают, орут друг на друга, суетятся, злые все какие-то!

 

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

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

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

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

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

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

Войти

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

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

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