В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
Ребят помогите. Я, скачал пак локаций из "Чистого Неба", для "Зова Припяти". Мне из этого пака нужна только локация "Болото", но сделал, что-то не так, и локация не появилась. Как нужно поставить локацию, чтобы всё заработало?
Сообщение отредактировал mafia50000 - Воскресенье, 16.10.2016, 16:04
Открою вам большую тайну. Спавнить вы можете по любым координатам. Движку по фигу есть там ноды или их там нет. Он это при спавне не проверяет. Проверка идёт только при назначении схемы логики. И то не во всех случаях. Учите матчасть, вопросов будет меньше.
Сообщение отредактировал makdm - Понедельник, 17.10.2016, 18:10
makdm, вы НЕ ПОНЯЛИ, а уже тыкаете меня носом в мат часть! Я спавню аномалии по рандомным координатам левел_вертиксов. Но их слишком мало на локациях. Я решил что лучше спавнить понодам. Я ЗНАЮчто можно спавнить по любым координатам, НО я не собираюсь ВРУЧНУЮпрописывать координаты аномалиям, я делаю спавн ДИНАМИЧЕСКИХаномалий.
Сообщение отредактировал FonSwong - Понедельник, 17.10.2016, 18:22
вы НЕ ПОНЯЛИ, а уже тыкаете меня носом в мат часть!
А вы и не пишите, что вы спавните и для чего. А я не телепат.
ЦитатаFonSwong ()
я делаю спавн ДИНАМИЧЕСКИХаномалий.
Вы изобретаете велосипед. В моде ПТО мы ещё 1,5 года назад сделали спавн аномалий по рандомным координатам локации и ни к каким нодам не привязывались. Причём во время выброса одни аномалии рассасывались, а после окончания выброса другие спавнились рандомно по новым координатам. Аномалии вообще к нодам ( к АИ-сетке ) не привязаны никак.
Подробнее, чем написаны скрипты в ПТО всё равно не получится. Открываете папку скриптс, смотрите как это сделано, переносите к себе. Если что-то нужно, то дополняете или улучшаете.
Сообщение отредактировал makdm - Понедельник, 17.10.2016, 19:26
Платформа ЗП. Эх давненько я сталкером не занимался, накопились вопросы...
1. Где activate_scheme у схемы companion? Сюдя по этому куску в xr_logic
... if db.storage[npc_id].stype == modules.stype_stalker then -- чтобы избежать дальнейшего движения по пути при установке рестрикторов utils.send_to_nearest_accessible_vertex(npc, npc:level_vertex_id())
Эти методы вызываются для установки начальных параметров первыми до вызова метода UPDATE при переключении на схему. В схеме companion параметры вынесены из класса в локальные переменные:
local desired_distance = 1.5 local min_distance = 1
local keep_state_min_time = 1000 -- переключившись в состояние (бег, ходьба, спринт), не переключаться в другое N ms
local dist_walk = 4 -- < dist_run local dist_run = 20 -- otherwise - sprint
local mt_stand = 0 local mt_walk = 1 local mt_run = 2 local mt_sprint = 3
поэтому вызов метода activate_scheme становится не нужным.
Цитатаcastle ()
Как я понял, у объекта cCar нет метода relation, как мне узнать что объект враг в усл схемы
Бронетранспортёры, стационарные пулемёты, вертолёты в Сталкере живут своей жизнью и ни к одной из группировок не относятся. Кого назначите врагом, того и будут "молотить". Скриптом можно отнести их к определённой группировке и дописАть это в логику, тогда при работе логики будет идти проверка на relation и принятие решения об атаке НПС. Всё это делать ручками.
Цитатаcastle ()
Какой функцией можно получить всех и даже на других локациях макс\мин level и game vertex на старте игры.
Код
local level = level.name() local gv_id = 0 local lv_id = 0 while game_graph():valid_vertex_id( gv_id ) do local level = alife():level_name( game_graph():vertex( gv_id ):level_id() ) if level == level_name then lv_id = game_graph():vertex( gv_id ):level_vertex_id() break end gv_id = gv_id + 1 end
Добавлено (17.10.2016, 22:42) --------------------------------------------- Вот если что весь скрипт и xml
Код
class "ui_actor_info" (CUIScriptWnd)
function ui_actor_info:__init() super() self:InitControls() self:InitCallBacks() self:Update() end
function ui_actor_info:__finalize() end
function ui_actor_info:InitControls() local xml = CScriptXmlInit() self:SetWndRect(Frect():set(0,0,1024,768)) xml:ParseFile("ui_actor_info.xml") self.actor_info = xml:InitStatic("actor_info",self) self.button_close = xml:Init3tButton ("actor_info:btn_close",self.actor_info) self:Register (self.button_close, "button_close") self.inflist = xml:InitListBox("actor_info:list_info", self.actor_info) self:Register(self.inflist, "list_info") self.infopole = xml:InitEditBox("actor_info:infopole", self.actor_info) end
function ui_actor_info:InitCallBacks() self:AddCallback("list_info", ui_events.LIST_ITEM_CLICKED, self.Element_clicked, self) self:AddCallback("button_close", ui_events.BUTTON_CLICKED, self.on_button_close_clicked, self) end
function ui_actor_info:Update() if not has_alife_info("actor_info_thoughts_title_0") then self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_0")) give_info("actor_info_thoughts_title_0") end if has_alife_info("tp_south_blokpost_napadenie_dragyn_2_dialog") and not has_alife_info("actor_info_thoughts_title_1") then self.inflist:AddTextItem(game.translate_string("actor_info_thoughts_title_1")) give_info("actor_info_thoughts_title_1") end end
function ui_actor_info:Element_clicked() if self.inflist:GetSize()==0 then return end self.item = self.inflist:GetSelectedItem() self.inflist = self.item:GetTextItem()
local ind = self.inflist:GetSelectedIndex() if ind == 0 then self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_0")) elseif ind == 1 then self.infopole:SetText(game.translate_string("actor_info_thoughts_descr_1")) end end
function ui_actor_info <img src="/.s/sm/23/surprised.gif" border="0" align="absmiddle" alt="surprised" /> n_button_close_clicked() self:HideDialog() for i=0,1 do disable_info("actor_info_thoughts_title_"..i) end end
function run_ui_actor_info(folder) folder:ShowDialog(true) end