В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга
• Не флудить • Предварительно просматривайте раздел, ведь ответ на ваш вопрос может быть там • В своем вопросе указывайте платформу моддинга — Тень Чернобыля, Чистое небо или Зов Припяти
1. Какая стоит игра, с каким патчем? 2. Какой мод, версия мода? 3. Что правили своими ручками? 4. Лог вылета и последние 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 - содержит секции конфигов уникального оружия и костюмов.
ins33, все это уже делал. Секции $spawn исправлены. В поисковике только один файл выдает именно с этим оружием. т.е. дубликата нету. LE все равно видит дубликат.
С помощью string.find получаю таблицу в которой есть строки с индексом delet. Затем table.remove(tbl, delet) пытаюсь очистить таблицу от всех строк delet и ловлю вылет bad argument #1 to 'foreach' (table expected, got table) -- вместо таблицы получена таблица
Подскажите, как очистить таблицу от строк с индексом delet? Или, как заполнить таблицу сразу исключая все вхождения delet?
ins33, если я правильно понял, то вот как надо удалять (на примере стекол)
Код
function del_breakable_obj() for i=1,65534 do local object = alife():object(i) if object and object:section_name() ~= nil then if string.find(object:section_name(),"breakable_object") then alife():release(alife():object(object.id), true) end end end end
_S_k_i_F_, Увы, это совсем не то. Мне надо из таблицы: a_*, а_*2, а_*_3, а_delet, а_*_delet, а_*_конец_таблицы удалить все вхождения в delet. Надо произвести действие только с: a_*, а_*2, а_*_3, а_*_конец_таблицы исключая а_delet, а_*_delet
В твоём примере должно было бы выглядеть так: if string.find(object:section_name(),"breakable_") then --> breakable_object_a, breakable_object_*, breakable_object_delet
function del_breakable_obj() for i=1,65534 do local object = alife():object(i) local table = {a_*, а_*2, а_*_3, а_delet, а_*_delet} if object and object:section_name() ~= nil then if table.find(object:section_name(),"_delet") or table.find(object:section_name(),"_delet_") then alife():release(alife():object(object.id), true) end end end end
_S_k_i_F_, Конечно же это вариант, да и скорей всего так бы и поступил бы, если в таблице: a_*, а_*2, а_*_3, а_delet, а_*_delet, а_*_конец_таблицы было меньше * чем delet, и их было бы меньше пару десятков. И в добавок, тут я узнаю новое. Да и код будет более универсален. П.С. Удалить из таблицы ~= release
Цитатаins33 ()
Надо произвести действие только с: a_*, а_*2, а_*_3, а_*_конец_таблицы исключая а_delet, а_*_delet
string.find (s, pattern [, init [, plain]])
Ищет первое вхождение шаблона pattern в строку s. Если поиск успешен, то find возвращает индексы s где найдено совпадение с шаблоном, т.е. где начинается и кончается; иначе возвращает nil. Третий, необязательный числовой параметр init указывает откуда начинать поиск; по умолчанию он равен 1, также он может быть отрицательным. Значение true в четвертом, необязательном параметре plain выключает возможность поиска по шаблону, в этом случае производится поиск подстроки как есть, т.е. считается, что она не содержит «шаблонных» ("magic") симолов. Помните, что если указан параметр plain, то параметр init должен быть указан тоже.
Если шаблон содержит захваты (captures) и поиск успешен, то захваченные значения также возвращаются, сразу после двух индексов.
ins33, а откуда вы взяли эту таблицу? Получается, что вы сначала заполнили таблицу, а затем героически пытаетесь её почистить. Не проще ли сразу делать проверку при записи в таблицу?
Сообщение отредактировал makdm - Вторник, 21.06.2016, 22:51
Это в идеале! Ещё бы найти, как сделать такую проверку. Пытался в init передать -"delete", тоже не получилось. string.find (s, pattern , init) Направьте в нужное русло.
Сообщение отредактировал ins33 - Вторник, 21.06.2016, 23:04