В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
elect-team, опытный модмейкер, прости, но что же ты такие вопросы банальные задаешь? Ну, вот простейшая функция спавна внесквадного нпс:
Код
function spawn_my_npc() if not has_alife_info("info_1") then if has_alife_info("info_2") then local p=vector(),lv,gv p.x = p.y = p.z = lv = gv = alife():create("npc_id",p,lv,gv) give_info("info_1") end end end
Вызов можно через акшион в диалоге прописать. Или через любой другой скрипт. Это - один из пяти тысяч вариантов спавна. Но я считаю, лучше спавнить нпс через сквад. Но тут скрипты уже могут не играть особой роли...
Сообщение отредактировал FantomICW - Суббота, 29.06.2013, 16:02
Объясните пожалуйста, что вы имели в виду под lv и gv именно в этом выражении? Т.е. я не про вертексы, а про синтаксис. По всей видимости вы хотели объявить локальные переменные 'lv' и 'gv'?
Сообщение отредактировал Gun12 - Суббота, 29.06.2013, 17:46
Gun12, LaRento, скажу откровенно: я этой функцией последний раз пользовался год назад. Не я ее придумал, и локальные переменные в ней не разбирал. Само построение функции более приспособлено для новичков, чтобы они не запутались в координатах и остальном наполнении. Сам пользуюсь обычно функцией, которую привели выше.
Хорошо. Тогда речь пойдёт о множественном(параллельном) присваивании.
Как известно, каждую локальную переменную можно объявить(инициализировать) как :
Код
local x
Также можно сразу присвоить ей некое значение :
Код
local x = 1
Можно инициализировать несколько переменных таким образом :
Код
local x,y,z
Такой вариант объявления считается у программистов не очень хорошим тоном, за исключением случаев, когда необходимо (напр.) с помощью параллельного присваивания (об этом ниже), нужно поменять местами значения переменных.
При таком объявлении также могут быть инициализированы :
Код
local x,y,z = 1,2,3
Но гораздо более интересный пример будет выглядеть так :
Код
local a = 1 local b = 2 local c = 3
local x,y,z = a,b,c
Что тут происходит? При присваивании, lua сначала вычисляет все значения справа! от символа присваивания ('='), а за тем эти вычесленные значения присваивает переменным с именами, расположенными слева! соотвественно. Соответственно - значит, для данного примера, следующее : 1) Первой объявлена переменная с именем 'x' - ей присваивается первое вычисленное значение. Это значение переменной и именем 'a', т.е. 1 2) Второй объявлена переменная с именем 'y' - ей присваивается второе вычисленное значение. Это значение переменной и именем 'b', т.е. 2 3) Третьей объявлена переменная с именем 'z' - ей присваивается третье вычисленное значение. Это значение переменной и именем 'c', т.е. 3
Теперь давай разберём пример из поста :
Код
local p=vector(),lv,gv
Lua вычисляет значения справа : 1) vector() - эта функция возвращает объект 'userdata' 2) lv - Lua ищет значение переменной с именем 'lv'. Переменной с таким именем (образно говоря - выше по коду) нет 3) gv - то же самое
Затем первой (и единственной) переменной слева присваивается первое значение справа, т.е. 'userdata' vector. И когда lua доходит до строк :
Код
lv = gv =
то, поскольку никаких переменных с такими именами нет и не было, инициализируются переменные с именами 'lv' и 'gv'. И поскольку они не объявлены явно как локальные (посредством ключевого слова 'local'), то становятся глобальными.
Сообщение отредактировал Gun12 - Суббота, 29.06.2013, 19:21