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

Скриптование


Svoboда

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

Вот решил немного преукрасить иконки сообщений от сталкеров, что выводятся на экран. Все иконки берутся из news_manager'a, либо можно из amk, добавляй-не добавляй... Но хочется сделать так, как в ЧН - иконка из character_profile персонажа.

 

Может кто-нибудь подсказать, как читать параметры из файлов конфигурации character_desc_....xml, которые содержат информацию о характеристике персонажа, в том чиле его иконка в диалогах?

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


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

Artos ну это естественно для ТЧ. Конечно, для каждой группировки я и сам могу сварганить скриптик, но хотелось бы создать иллюзию прихода сообщения лично от того персонажа, который его отправляет. Спасибо за подсказку.

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


Ссылка на сообщение
(изменено)

Прошу помощи! У меня не работает рандомная погода! Погода постоянная - предвыбросная, как написано в скрипте amk_mod. Я поковырялся и выяснил, что тупо не запускается game.start_tutorial("restore_sun"), т.е. функция, отвечающая за смену погоды на рандомную после перезагрузки.

 

Вызывал даже вручную, напрямую с помощью скрипта ui_main_menu - и после перезагрузки всё опять слетает на предвыбросную.

 

Очень прошу помощи! Уже сколько пытаюсь разобраться - и ничего не получается...

 

Просьба не привносить в моддинг и тем более в топике "Школа ..." принципы натурального обмена "ты мне - я тебе".

Есть что предложить другим -выкладываем в общий доступ. Есть вопросы, задаем их в соответствующем топике - и ждем ответы ...

--/Artos

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

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


Ссылка на сообщение
Artos, "большое тебе человеческое спасибо...", я и не знал, что можно вызвать через xml - смотрел в основном обычные туториалы в _g скрипте, и в конфигах по информации к энциклопедии...

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


Ссылка на сообщение
(изменено)

Нужна помощь! Пытаюсь заспавнить непися на вышке, что на Кордоне у блокпоста военных. Спавн делаю через all.spawn. Прописал ему даже свой гулаг - днём дежурит, ночью спит (или что-то в этом роде). Так вот, прописал, спавнится - но не работает именно его логика. Как только появляется - тут же слезает с вышки и гуляет по блокпосту. Такую же проблему увидел и у командира военных на блокпосте - вместо того, чтобы стоять и наблюдать за происходящим, он тоже гуляет по тому же маршруту.

 

В скрипте gulag_escape смотрел приоритеты - своему неписю поставил аж под 500 ед. (на всякий случай, чтоб не сбивали другие террэйны). И всё равно его что-то сбивает - вместо того, чтобы стоять на вышке, он тупо ходит по территории за блокпостом.

 

Кто может, подскажите пожалуйста, в чём беда?

 

Вот. На скрине проиллюстрированы предположительные точки, куда непись смотрит и откуда он смотрит (только днём). А ночью пока не нужно - если разберусь с днём, разберуюсь и с ночью. По гулагам - слишком много нужно писать, всё не поместится. Но уверяю - что бы я ни делал, даже простую ремарковскую логику прописывал ему - всё равно куда-то убегает.

e8a7ae90d8c7t.jpg

Вот точка, откуда непись смотрит (прописал в all.spawn):

[big_soldier_smart_walk1]

points = p0

p0:name = name00

p0:flags = 0x400

p0:position = -163.7255859375, -25.435829162598, -350.27590942383

p0:game_vertex_id = 31

p0:level_vertex_id = 85729

А вот точки, куда он смотрит:

[big_soldier_smart_look1]

points = p0,p1,p2

p0:name = name00|a=guard

p0:flags = 0x400

p0:position = -183.30322265625, -30.729475021362, -318.25082397461

p0:game_vertex_id = 36

p0:level_vertex_id = 67308

p0:links = p1(1)

 

p1:name = name01|t=15000|a=guard

p1:flags = 0x400

p1:position = -159.03273010254, -30.059520721436, -302.86755371094

p1:game_vertex_id = 34

p1:level_vertex_id = 90503

p1:links = p2(1)

 

p2:name = name02|t=10000|a=guard

p2:flags = 0x400

p2:position = -119.28175354004, -30.398241043091, -324.59219360352

p2:game_vertex_id = 100

p2:level_vertex_id = 134793

А это точки, где непись спит:

[big_soldier_sleeper_sleep]

points = p0, p1

p0:name = wp00

p0:position = -166.57637023926, -24.899848937988, -356.91793823242

p0:game_vertex_id = 31

p0:level_vertex_id = 83083

p0:links = p1(1)

 

p1:name = wp01

p1:position = -166.56726074219, -25.43902015686, -352.73843383789

p1:game_vertex_id = 83092

p1:level_vertex_id = 31

p1:links = p0(1)

Из gulag_escape.script:

if type == "big_soldier_smart" then

t = { section = "logic@big_soldier_smart",

idle = 0,

prior = 100, state = {0},

in_rest = "", out_rest = "",

position_threshold = 100,

predicate = function(obj_info)

return obj_info.profile_name == "big_soldier_profile"

end

}

table.insert(sj, t)

t = { section = "logic@big_soldier_sleeper",

idle = 0,

prior = 100, state = {1},

position_threshold = 100,

online = true,

in_rest = "", out_rest = "",

predicate = function(obj_info)

return obj_info.profile_name == "big_soldier_profile"

end

}

table.insert(sj, t)

 

if type == "big_soldier_smart" then

return function(gulag)

if level.get_time_hours() >= 6 and level.get_time_hours() <= 20 then

return 0 -- день

else

return 1 -- ночь

end

end

end

 

if gulag_type == "big_soldier_smart" then

return se_obj:profile_name() == "big_soldier_profile"

end

 

[logic@big_soldier_smart]

active = walker@big_soldier_walker

 

[walker@big_soldier_walker]

path_walk = walk1

path_look = look1

on_info = {+big_soldier_warning1 -big_soldier_warning1_given} remark@big_soldier_warning

 

[remark@big_soldier_warning]

anim = threat

snd = big_soldier_1

tips = big_soldier_1_radio

tips_sender = soldier_elite1

target = actor

on_signal = sound_end | walker@big_soldier_walker %+big_soldier_warning1_given%

 

[logic@big_soldier_sleeper]

active = sleeper@big_soldier_sleeper

 

[sleeper@big_soldier_sleeper]

path_main = sleep

wakeable = true

 

 

 

Это всё, что я сделал.

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

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


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

Всем доброго времени суток.

 

Я пытаюсь сейчас сделать свою модель поведения к "Теням Чернобыля". Хочу реализовать схему обыска трупа, как в ЗП (очень впечатлила работа этого скрипта в ЗП). В этой модели поведения есть два действия, которые непись должен проделать:

1) Непись идёт к назначенной точке

2) Непись проигрывает анимацию, стоя на этой точке

 

После этого непись бросает все дела с этим поведением и возвращается к своим обычным делам (посиделки у костра, охрана и др.).

 

Эвалуатор, где отмечаются условия и соответствующая точка назначения, у меня сделан. И второй эвалуатор, где отмечается условие, что непись находится у точки, тоже готов.

 

Вот теперь не могу разобраться с самими action'ами...

Для первого действия в action:initialize() я вписываю self.a.vertex_id = nil и self.a.vertex_position = nil - т.е. задаю пока нулевые значения (точка, куда направляю непися, и точка, куда непись будет смотреть во время проигрывания анимации), а также задаю параметры движения через state_mgr.set_state().

В action:execute() я "говорю" неписю, что нужно идти к назначенной точке (точка задаётся через id объекта, к которому непись должен подойти).

В action:finalize() просто говорю неписю, что нужно переходить ко второму действию, проигрыванию анимации на точке - ничего не пишу, просто action_base.finalize()

 

А вот ко второму действию у меня вопросы. Я не знаю, куда нужно вписать проигрывание анимации на точке всего один раз - пробую писать в initialize() - но это по-моему не то; пробую писать в execute() - эта функция отвечает за регулярное обновление действие, и непись стоит на точке и постоянно проигрывает одну и ту же анимацию, или просто стоит возле точки; а вот в finalize() - тоже желаемого эффекта не даёт, тем более хочу сюда вписать условия отмены действия (обнуление точки, высвобождение объекта от непися и т.д.)..

 

 

Кто поможет, как мне реализовать подобное в два действия:

1) Непись подходит к точке, выбранной в эвалуаторе;

2) Непись проигрывает анимацию на точке и бросает все дела с этим скриптом, возвращается к прежнему состоянию.

 

Пока я смог реализовать только первое действие, где непись только подходит к точке - я ориентировался по скрипту xr_kamp(этот скрипт один из самых правильных и стабильных).

 

 

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


Ссылка на сообщение
(изменено)

Artos, ставлю этот скрипт из ЗП на ТЧ - движок выдаёт неизлечимые ошибки типа "state_mgr.script C stack overflow" - переполняется какой-то стек, движок всё время норовит выдать что-то подобное.

 

А по поводу watcher_act - этот скрипт эффективен, но пока не удаётся сделать его эффектным - хотелось бы сделать все переходы анимаций не при помощи отдельных параметров, а через state_mgr.

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

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


Ссылка на сообщение
(изменено)

Всем доброго времени суток. На днях я столкнулся с проблемой считывания параметров NPC из XML-файла. Мне нужно считать параметр <bio>Краткая_биография</bio>.

Полазил в интернете, посмотрел различные шаблоны XML-парсинга на LUA, и функцию string.gfind. Так вот, шаблон для захвата я вроде бы составил (не уверен, что правильно):

function get_bio(npc)

local xml_npc_bio = string.gfind(" :( ", "(%w%p_)(*_bio)")

return xml_npc_bio

end

 

Хочу преобразовать исходное название шаблона "название_биографии_bio" в текст. Нужно для детальной информации...

 

То, что я отметил под смайликом :( - это место, где нужно начать поиск необходимого шаблона. Вот только где нужно начать поиск шаблона? Пробовал через npc:name(), через npc:id()..., но выскакивает ошибка, типа "нет функции".

 

Если кто разбирается в этом, помогите кто-нибудь, пожалуйста!

 

Мне почему-то казалось, что этот тег, не что иное, как рудимент.

ColR_iT

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

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


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

Всем доброго времени суток. По ходу разработки своего модика назрело ещё два вопроса:

 

1) Пробую заспавнить НПС через скрипт, используя функцию из скрипта amk:

function spawn_npc()
    local npc = alife():create("npc", vector():set(мои_координаты), левел_вертекс_айди, гейм_вертекс_айди)
    local tbl = amk.read_stalker_params(npc)
    if npc then
        tbl.sid = 8000
        amk.write_stalker_params(tbl, obj)
    end
end

 

 

Непись спавнится, но никакого story_id игра у непися не находит (нужно поставить метку на непися во время квеста). Ставил метку в описание задания через game_story_ids.ltx.

 

2) Возможно ли в Сталкере отменить какое-нибудь текущее задание, или строго выполнить\провалить? Если можно отменить, то как?

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


Ссылка на сообщение
panzyuza зачем мне ставить отметку на непися через другие функции, когда она ставится во время задания?

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


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

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

AMK-Team.ru

×
×
  • Создать...