В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
Подробнее, чем написаны скрипты в ПТО всё равно не получится. Открываете папку скриптс, смотрите как это сделано, переносите к себе. Если что-то нужно, то дополняете или улучшаете.
Сообщение отредактировал 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
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:listbox", self.actor_info) self:Register(self.inflist, "listbox") self.infopole = xml:InitEditBox("actor_info:infopole", self.actor_info) end
function ui_actor_info:InitCallBacks() self:AddCallback("listbox", 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_text = 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
Но появились еще две проблемы - почему-то не работает кнопка - уже вроде проверял все. И можно как-то текст размещать в текстбоксе равномерно, то есть чтоб не посреди бокса был кусок текста, а чтоб он от начала текстбокса и с переходом на новую строку. Такое возможно?
Всем привет , подскажите в чем может быть проблема? Получаю вылет спустя ~ 5 мин игры. Почемуто переполняется стэк, но как узнать в чем причина? Логи чистые
Но далее ты не создал эту секцию "on_button_close_clicked".
Цитата_S_k_i_F_ ()
а чтоб он от начала текстбокса и с переходом на новую строку. Такое возможно?
Хм, то есть выравнивание текста по ширине? Не видел такого, но ведь текст в принципе переносится? Если нет, то в "infopole" (если это она, конечно, вызывает на экран текст) добавь эту переменную:
Код
complex_mode="1"
Сообщение отредактировал mmihaill - Вторник, 18.10.2016, 12:00
Но далее ты не создал эту секцию "on_button_close_clicked".
Не секцию, а метод и он присутствует в коде (если отбросить автозамену смайлов). Почему не работает непонятно: колбек зарегистрирован метод присутствует. _S_k_i_F_, Для выравнивания текста требуется создать внутри тега листбокса тег текста и вписать в него желаемые параметры в частности перенос по словам включается параметром complex_mode="1" (спс. mmihaill)
Цитатаxr_Sanya ()
Почемуто переполняется стэк, но как узнать в чем причина?
Переполняется из-за кривого скрипта, логики и тд. и тп. Как узнать - выворачивать все наизнанку в поисках проблемного кода.
Сообщение отредактировал denis2000 - Вторник, 18.10.2016, 14:01