В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга.
Не флудить
Предварительно просматривайте раздел. Ответ на ваш вопрос может быть там.
В своем вопросе указывайте платформу моддинга - Тень Чернобыля, Чистое небо или Зов Припяти.
1. Какая стоит игра, с каким патчем? 2. Какой мод, версия мода? 3. Что правили своими ручками? 4. Конфиг компа. 5. Лог вылета и последние 25 строк (помещать под спойлер).
Структура папок и файлов в корневом каталоге игры:
...\S.T.A.L.K.E.R\gamedata\anims – папка содержит исполнительные файлы эффектов (например от ПНВ).
...\S.T.A.L.K.E.R\gamedata\config – папка содержит основные конфигурационные файлы (т. е. большинство настроек игры)
...\S.T.A.L.K.E.R\gamedata\meshes – содержит модели игровых предметов и персонажей...
...\S.T.A.L.K.E.R\gamedata\scripts – папка со скриптами (рабочими файлами содержащими в себе наборы функций) – основная папка, отвечающая за ответные действия игры и действия производимых игроком в игре.
...\S.T.A.L.K.E.R\gamedata\shaders – папка содержит в себе конфигурационные файлы шейдеров.
...\S.T.A.L.K.E.R\gamedata\sounds – здесь находятся все звуки игры (разложены по своим каталогам и папкам)
...\S.T.A.L.K.E.R\gamedata\spawns – содержит файл спавна – очень важный файл – не трогать без нужды!!!
...\S.T.A.L.K.E.R\gamedata\textures – содержит разложенные по каталогам и папкам текстуры используемые в игре.
Теперь разберем папки в каталоге «config»
...\S.T.A.L.K.E.R\gamedata\config\creatures - содержит массу конфигурационных файлов, в основном отвечающих за взаимодействие Главного героя игры (в дальнейшем ГГ) и прочего окружения в игре и ТТХ самого ГГ.
...\S.T.A.L.K.E.R\gamedata\config\gameplay – содержит конфиг. файлы персонажей игры (НПС) отвечающие за внешний вид, статус, снаряжение. Файлы: character_desc_ххх (где ххх – название локации) и character_desc_general (отвечает за зомбированного персонажа). Также содержит файлы диалогов и профилей НПС.
…\S.T.A.L.K.E.R\gamedata\config\misc – конфиг.файлы торговцев (папки с именами торговцев), артефактов, брони, квестовых предметов, уникальных предметов, файл отвечающий за награды за автозадания, файл эффектов (алкоголизма, ранения, ПНВ и прочих)...
…\S.T.A.L.K.E.R\gamedata\config\mp – среди прочих содержит важный файл mp_ranks – отвечающий за выпадение оружия и патронов из рук ГГ и НПС – без прописывания добавляемого в игру оружия в этот файл при выпадении нового оружия из рук ГГ\НПС будут следовать вылеты.
…\S.T.A.L.K.E.R\gamedata\config\text\rus – содержит файлы описаний всего и вся находящегося в игре (брони, артефактов, оружия, предметов и прочего).
…\S.T.A.L.K.E.R\gamedata\config\weapons – содержит конфиг.файлы оружия и боеприпасов используемых в игре.
…\S.T.A.L.K.E.R\gamedata\config\weathers – содержит конфиг.файлы настройки погоды на локациях.
Теперь немного подробнее о файлах.
...\S.T.A.L.K.E.R\gamedata\config\misc:
Папка shop_ххх (ххх – имя торговца) – содержит конфиг.файлы ассортимента торговца.
outfits – содержит секции конфигов костюмов.
artefacts - содержит секции конфигов артефактов.
items - содержит секции конфигов предметов.
monster_items - содержит секции конфигов частей монстров
postprocess - содержит секции конфигов пост. процессов (например: ПНВ).
quest_items - содержит секции конфигов квестовых предметов.
task_manager - содержит секции наград за автоквесты.
unique_items - содержит секции конфигов уникального оружия и костюмов.
У кого есть желание, создать FAQ по основным вопросам моддинга - обращаемся в ЛС.
antonnkz76, весь список функций содержится в файле xr_conditions.script. Советую изучить все функции, которые находятся в нём.
Теперь, по вашей проблеме. Количество аптечек проверяется функцией actor_has_item_count В качестве аргументов указать секцию предмета и количество. В вашем случае { =actor_has_item_count( medkit:10 ) }
function give_zat_medkits_quest() task_manager.get_task_manager():give_task("zat_medkits_quest") end
function gg_has_10_medkits() if db.actor:object("medkit", 10) then return true end return false end
function transfer_medkits_to_boroda(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "medkit", 10) end
Что не так?
Сообщение отредактировал antonnkz76 - Пятница, 30.05.2014, 21:26
Словил вылет, на чистом ТЧ 1.0006, который взорвал мне мозг.
! Cannot find saved game dec_counter '%s' ! Cannot find saved game error: object 'bar_arena_respawner29184': pick_section_from_condlist: function 'bar_arena_add_ammo' is not defined in xr_effects.script ! Cannot find saved game %s
На всякий заглянул в xr_effects.script, что бы убедиться, что там нет ф-ии bar_arena_add_ammo, и само собой, её там нет. Пошёл искать дальше, кто её вызывает. Нашёл в arena_respawn_custom_data.ltx
Стало понятно, что это нпс. Прошурстел all.spawn - пусто, нашёл в spawn_sections.ltx,
;---------DELME:only for presentation----------------------- [bar_arena_respawner]:stalker $spawn = "respawn\bar_arena_respawner" character_profile = bar_arena_respawner spec_rank = veteran community = bandit custom_data = scripts\arena_respawn_custom_data.ltx
На горизонте мелькнула надежда, что вот вот я докопаюсь до косячного нпс. Но не там то было, его нет в all.spavn-e и нет в скпиптах. Отсюда крик о помощи: Помогите найти, от куда идёт вызов ф-ии bar_arena_add_ammo? П.С. Это вопрос из разряда интересно знать. Мне не доводилось встречаться с таким глюком, да и вообще, в голове не укладывается, как ф-ия может вызваться "ни кем" Если, кто заинтересуется этим вопросом, буду рад услышать ваши умозаключения.
Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ...r. - call of pripyat\gamedata\scripts\dialogs.script:114: 'for' limit must be a number
Вот такой вот лог при активации функции: function zat_sich_edges_quest_done_2(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "wpn_bm16", 3) dialogs.relocate_money_to_actor(first_speaker, second_speaker, 1400) dialogs.relocate_item_section(second_speaker, "medkit", 3, "in") end
В общем поставил новые шейдеры воды,однако они оказались кривыми,но при этом вылез неведомый мне баг с иконками и инвентарем. Старые шейдеры вернул обратно,но ничего не изменилось. Конфиги отвечающие за инвентарь на всякий пожарный заменил оригинальными.Но ничего не изменилось,баг остался.Подскажите пожалуйста где может находится баг.
На Зов Припяти. У меня такой вопрос: При спавне сталкера или мутанта с помощью скрипта (не алл.спавн) нпс или мутант не стоит в заданной точке, а все время куда-то теряется. Как им прописать соблюдение координат??? Вот логика НПС:
Код
[logic] active = remark1 danger = danger_ignore invulnerable = true
function start_add_spawn()--\\ --\\ -- spawn_spider_one() end
function spawn_spider_one() local x= -19.160 local y= 15.660 local z= -320.138 local level_vertex= 681358 local game_vertex_id= 483 alife():create("spider_normal",vector():set(x,y,z),level_vertex,game_vertex_id) end
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
И как сделать чтобы спавн мутанта или НПС произошел токо при взятии квеста?
Сообщение отредактировал Asfagan - Воскресенье, 01.06.2014, 23:05
Asfagan, Сейчас мы все дружно достанем хрустальный шар и начнём гадать: Что за игра у вас установлена, какая секция Сталкера или мутанта нужна для спавна, какая логика им прописана и т.д.
Вообщем Ждите. Как только хрустальный шар нам всё подскажет, так сразу вам ответим.
Asfagan, 1) Зачем ты добавил эти ф-ии save_variable и load_variable , если ты их даже не вызываешь? 2) danger = danger_ignore прописывается в каждую секцию, в которой необходимо это условие.
[logic] active = remark1 danger = danger_ignore invulnerable = true
3) no_move = true Ну сколько можн6о об этом говорить?, ЭТО НЕ РАБОТАЕТ! А если даже в ЗП её добавили, то нпс будет стоять не двигаясь, а не стоять на одном месте. В remark-e если нпс уйдёт по своим делам, например сорвётся в бой, то он уже не вернётся на своё место, а останется в там, где будет закончена та работа, на которую его сорвал движок. Для твоей задачи используй схему к примеру walker.
[logic] active = walker@start danger = danger_ignore
[walker@start] path_walk = point_walk ; точка пути в котором нпс будет стоять path_look = point_look ; точка пути в которое нпс будет смотреть on_actor_dist_le = 3| remark@hello ; поставил 3, что-бы нпс успел встать, хотя думаю надо ставить 4-5 invulnerable = true danger = danger_ignore meet = meet_guide
[remark@hello] target = actor ; будет смотреть на актора invulnerable = true meet = meet_guide on_actor_dist_le = 4| walker@start danger = danger_ignore