В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
ColR_iT, наверное действительно день такой. makdm, я тридцать лет проработал грузчиком и только три года назад первый раз сел за компьютер. Поэтому рад, что появился ещё один кодер, есть шанс чему то научиться. Что касаемо конкретного случая RICKa, может такой вариант?
1.Один инфопоршень: <info_portion id="info_new"></info_portion> 2.Скрипт в xr_effects: function drop_weapon() db.actor:iterate_inventory(function (dummy, item) local item = db.actor:item_in_slot(1) if item ~= nil then db.actor:drop_item(item) end end, nil) db.actor:iterate_inventory(function (dummy, item) local item = db.actor:item_in_slot(2) if item ~= nil then db.actor:drop_item(item) end end, nil) end 3.Логика НПС: [logic] active = walker
[meet] meet_state = 10| wait@talk_hello meet_state_wpn = 10| threat@threat_weap victim = 10| actor victim_wpn = 10| actor use = true use_wpn = true
[danger_condition] ignore_distance = 0
Получилось следующее. 1)Подходим к НПС без активного оружия - можно говорить. 2)Подходим с оружием в руках - через 5 сек не убираем,получаем в морду и потом пулю. Убираем ствол в течении 5 сек происходит дроп стволов или ствола. 3)Подходим без оружия, но решаем достать его - в морду и пулю. 4)Говорим с НПС, получаем info_new ,подбираем оружие или что там дальше. Оптимальный вариант. Только скрипт грубовато выглядит(никак не научусь) и логику можно подправить по вкусу.
Сообщение отредактировал Arist - Среда, 23.01.2013, 22:08
Arist, так оружие выбрасывается принудительно, если оно в руках, а задумка была отследить выбрасывание именно самим игроком. makdm
Цитата (makdm)
это и есть реальная помощь начинающим модмейкерам
Ну и в чём же помощь? В "подсунутом под нос" готовом решении? А я считаю - это медвежья услуга... Во-первых, зачастую выходит так, что "начинающий" модмейкер не понимает готового решения и просто бездумно берёт и копирует. Не мне тебе говорить, что не функция пишется под конкретное действие (допускается некоторая универсальность, но я говорю о данном случае), но "начинающий" модмейкер этого не знает и пытается использовать функцию в похожих ситуациях, рассказывает о ней следующему "начинающему" модмейкеру, тот использует её в ещё одной похожей ситуации, но ещё отдалённей от истиной задачи и т.д. В итоге, функция написанная для одного используется там, где ей не место, и в последствие естественно перестаёт работать вообще. Во-вторых, при таком подходе напрочь отсутствует аспект самообучения. А что может быть лучше, чем самому сделать задуманное - от этого только плюсы: получил новые знания, которые всегда можно будет использовать, не прибегая к помощи посторонних; можно научить другого; всегда приятно, когда что-то делаешь сам. Мне всегда было легче один раз чему-то научить, чем сто раз потом писать одно и тоже. Жаль, что сейчас это кажется "выпендрёжем", а не то, как нужно делать, отвечая на вопрос в разделе "Помощь в моддинге"...
Майк, Для начала пиши нормальным цветом сообщение!! Во вторых Вот:
Файл sim_squad_scripted.script ~580 строка Замени: for i = 1,random_count do local random_id = math.random(1, #random_spawn) self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id) end на self:add_squad_member(random_spawn[1], base_spawn_position, base_lvi, base_gvi,random_id) for i = 2,random_count do local random_id = math.random(2, #random_spawn) self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id) end
В третьих: Пиши на что тебе нужно (патч, игра)?
Добавлено (23.01.2013, 22:52) --------------------------------------------- Майк, И пожалуйста не выражайся!!!
Файл sim_squad_scripted.script ~580 строка Замени: for i = 1,random_count do local random_id = math.random(1, #random_spawn) self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id) end на self:add_squad_member(random_spawn[1], base_spawn_position, base_lvi, base_gvi,random_id) for i = 2,random_count do local random_id = math.random(2, #random_spawn) self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id) end
это не обязательно. Майк, на счет цвета dmitry778 прав. а вот на счет лидера - если зп, то нпс нужно спавнить сквадами (создаешь нпс, создаешь смарт, добавляешь своего нпс в симуляцию, и привязываешь его к смарту. и еще - создай ковер (аллспавн), и его имя пропиши в логику нпс. а лучше всего сходи на stalker wiki, там очень много вкусностей и все понятно.
Люди чё за вылет та когда МИЛКУ запускаю и пытаюсь ваще любую модель вгрузить пишет неожиданное завершение работы программы уже переустановил винду даже на 32x а она все равно вот вчера все вгружалась все любая модель сегодня запускаю это д...ное окно вылазить мне уже матерится хочется помогите а решить проблему на всех сайтах лазил никто как будто с тако проблемой не сталкивался у всех прям работает чё делать?
Добавлено (24.01.2013, 08:43) --------------------------------------------- Вылетает и все хоть ты тресни б... нет слов просто я щас сума сойду
Добавлено (24.01.2013, 08:46) --------------------------------------------- Я нехочу XP ставить ну пажалуйста помогите я видел скины там где модели делались в семерке ничего не вылетало обидно блин только хотел начать учится и тут опять сталкнулся с этой .... что и с x64 но прикол та в чём по началу все работало а сегодня ниодна модель не грузится!!!!!
ins33, в общем, как и обещал, я разобрался с поворотом актора, к сожалению не математически, а экспериментально. Вот код:
Код
local dir = vector():set(X,Y,Z) db.actor:set_actor_direction(dir:getH())
Удалось выясни следующее: При значении координат: 0,0,0 - происходит разворот игрока строго на север; 1,0,0 - на запад; -1,0,0 - на восток; 0,0,-1 - на юг; 1,0,-1 - на юго-запад; -1,0,1 - северо-восток; 1,0,1 - северо-запад; -1,0,-1 - юго-восток.
ColR_iT, Кстати секция no_move = true работает на Чистом Небе это точно. Сам лично проверял, если у непися в логике нет данной секции от идет, но если ставишь стоит. Так что возможно данная секция не работоспособна в ТЧ и ЗП. Это я так для сверки...
Добавлено (24.01.2013, 16:01) --------------------------------------------- Тут задался вопросом, если есть аддоны для оружия такие как оптический прицел, подствольник и т.д. То можно же сделать и свой по образцу. Ну это всем понятно. Вся соль вопроса не в том, дела в том, что хочу реализовать адон магазин для оружия. Например для АК74 магизин сделать, а если его не поставить то оружие не будет стрелять. Как это реализовать? Знаю что для ЗП есть оружейный мод с данными аддонами, но попросту времени нету сказать, вот решил сам попробовать сделать.
BadQvik, не работает. Можешь не напрягаться с доказательствами - не докажешь всё равно. А вот проверить то, что он не работает - очень просто. Возьми и пропиши для параметра несуществующее значение, например так:
Код
no_move = lkjsakljf
Если будет вылет, то работает. Но могу тебя заверить вылета не будет. Рука-лицо (LaRento), если тебе всё равно, то чего ты кипятишься?
ins33, в общем, как и обещал, я разобрался с поворотом актора, к сожалению не математически, а экспериментально. Вот код: Код local dir = vector():set(X,Y,Z) db.actor:set_actor_direction(dir:getH()) Удалось выясни следующее: При значении координат: 0,0,0 - происходит разворот игрока строго на север; 1,0,0 - на запад; -1,0,0 - на восток; 0,0,-1 - на юг; 1,0,-1 - на юго-запад; -1,0,1 - северо-восток; 1,0,1 - северо-запад; -1,0,-1 - юго-восток.
Ты не совсем точен. Диапазон значений угла в радианах от -ПИ до +ПИ. ПИ - это 180 градусов. 90 градусов - это ПИ/2 или 1.57. Ad = Ar * 180 / пи Где Ad — угол в градусах, Ar — угол в радианах. То получается подставляя параметры взгляда получаемые при снятии координат согласно данной формуле можно понять направление в градусах? Получается, что если поставить параметры direction и upd:o_torso по нулям то ГГ смотрит строго на север, а если поставить в параметре upd:o_torso = 1,57, 0, 0 то ГГ повернется на 90-то градусов налево, = -1,57, 0, 0 то направо, параметр direction ни за что не отвечает.
ColR_iT, Я могу доказать легко. В S.T.A.L.K.E.R. CS я создал непися, который просто должен стоять возле стола и проигрывать анимации(допустим их две bar_head и bar_fas не важно) по идее после спавна непись должен идти куда ему захочется(гулять короче), но увы чудо я дописываю параметр no_move = true и он стоит на месте и играет анимации. Для примера привожу логику которую написал для нпс:
[logic] active = remark no_move = true
[remark] anim = bar_head on_timer = 30000|remark2
[remark2] anim = bar_fas on_timer = 30000|remark
Пишу от руки по памяти, так как не дома...Но все именно так! Что скажешь по этому поводу? Возможно, я и не отрицаю в ТЧ данная функция и не работает, а вот в ЧН работает еще как.