В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
Grey_Lord, Господи, это типовые квеста, а я про СЛОЖНЫЕ, в примере которого я разобрал в своём уроке. Совершенно разные вещи.
Добавлено (31.01.2013, 21:40) --------------------------------------------- Grey_Lord, И как там диалог то?
Добавлено (31.01.2013, 21:41) --------------------------------------------- Grey_Lord, Понятно, в чём дело. в Тегах <text> нельзя писать свой текст, так то конечно можно, но при слишком длинном будет вылет. Лучше указывай ID текста из string_table_dialogs_garbage и там уже прописывай свой текст, думаю, ты знаешь как.
Добавлено (31.01.2013, 21:42) --------------------------------------------- Grey_Lord, Знаю, моя ошибка в туторе. Я указывал, как пример, надо было уточнить этот нюанс. Ты извиняй, если будут вопросы , спрашивай.
local ammo_fake_types = {} local need_convert = false local need_init = true local need_update = false local before_update = true
function on_update() if before_update then before_update = false need_convert = true end if not need_update then return end if not inventory.belt_status then return end local sim = alife() local t = {} db.actor:iterate_inventory( function(npc, item) local sect=item:section() .. "_fake" if ammo_fake_types[sect] and inventory.belt_id[item:id()] == nil then t[sect] = get_ammo_size(item) + (t[sect] or 0) sim:release(sim:object(item:id()), true) end end , db.actor) for sec, num in pairs(t) do spawn_ammo_in_inv(sec, num) end need_update = false end
-- Перепаковываем еще и при обыске трупа или тайника function on_info(info_id) if info_id == "ui_trade" or info_id == "ui_car_body" then on_inventory_open() elseif info_id == "ui_trade_hide" or info_id == "ui_car_body_hide" then on_inventory_close() end end
function on_inventory_open() need_convert = false local t = {} local sim = alife() db.actor:iterate_inventory( function(npc, item) local sect=item:section() if ammo_fake_types[sect] then t[sect] = get_ammo_size(item) + (t[sect] or 0) sim:release(sim:object(item:id()), true) end end , db.actor) for s, num in pairs(t) do spawn_ammo_in_inv(string.sub(s,1,-6), num) end end
function on_inventory_close() need_convert = true need_update = true end
function on_item_take(item) if need_init then init() end local section = item:section() if ammo_types[section] and need_convert then local cnt = get_ammo_size(item) if cnt > 0 then local sim = alife() sim:release(sim:object(item:id()), true) spawn_ammo_in_inv(section.."_fake", cnt) end end end
function init() for k, v in pairs(ammo_types) do ammo_fake_types[k.."_fake"] = v end need_init = false end
-- Возвращает колличество патронов в пачке function get_ammo_size(obj) local se_obj = alife():object(obj:id()) if se_obj == nil then return 0 end local packet = net_packet() cse_alife_item_ammo.STATE_Write(se_obj, packet) packet:r_seek(packet:w_tell() - 2) return packet:r_u16() end
function spawn_ammo_in_inv(spawn_item,number,npc) if npc==nil then npc=db.actor end if number > 0 then return se_respawn.create_ammo(spawn_item, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id(), number) end end
valeras_98, пока LaRento, капризничает (), давай попробуем тебе помочь... Во-первых, скажи с какого мода/урока ты это делаешь. Во-вторых, ты куда-то прописывал функцию on_item_take, скажи куда, и покажи как.
LaRento, LaRento, Откуда я это должен знать???? Тем более, что у меня открыто штук 10 этих уроков. А твой урок на примере уже существующего нпс. Вот и приходиться с квадратной головой сидеть и делать всякую чушь. ---------------------------------------------------------------------------------------------------------
Цитата (LaRento)
Понятно, в чём дело. в Тегах <text> нельзя писать свой текст, так то конечно можно, но при слишком длинном будет вылет.
Вот как знал, ччерт! Всю жизнь делал скелет диалога, а уж потом в stable_dialogs писал раcшифровку. Я уж обрадовался меньше работы... Лучше будет в уроке сделать пометку, что длинный текст нельзя вписывать, чтоб потом бараны вроде меня не радовались облегченной жизни.
Сообщение отредактировал Grey_Lord - Четверг, 31.01.2013, 21:53
Grey_Lord, расслабься! Твой вылет из этого поста #2927, не из-за текста в структуре диалога. В случае, когда в скелет диалога пишется текст более 255 символов происходит вылет БЕЗ лога, всегда.
Grey_Lord, Создавая тот урок, я тогда ещё не знал про такое явление с текстом. Изменю завтра урок. Спасибо, что своим вылетов натолкнул меня на этом!
Добавлено (31.01.2013, 22:00) --------------------------------------------- Grey_Lord, Grey_Lord, нет, из-за текста, сократи его до 2 символов(к примеру), увидишь.
Grey_Lord, да, в другом. Ошибка уходит в корни движка, т.е. избавиться от неё вовсе не получится. Замечено, что она возникает, когда какому-либо объекту прописан неверный параметр. Ищи, что правил последним и внимательно проверяй на корректность значения для параметров.
Увидит он то, что ничего не измениться. Ещё раз - когда текст размером более 255 символов прописан в скелете диалога, происходит вылет БЕЗ ЛОГА, т.е. лог файл имеет нулевой размер, в нём нет не единой буквы!
Сообщение отредактировал ColR_iT - Четверг, 31.01.2013, 22:04