В данной теме вы можете задавать любые вопросы касательно 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, Я такой же скриптёр, как и ты. Причём программированием занимаюсь уже 30 лет! Только Тема называется "Вопросница". Т.е подразумевает, кто-то пишет вопрос, а кто-то даёт ответ. На вопрос - я дал три варианта скриптов, а сколько дал Ты? Кроме "Бла-бла-бла" - я ничего не увидел. Если здесь меряться " у кого круче" - то ты как старожил - "на Коне". А если реально, то "бла-бла-бла" погоды не делает. И кстати, по твоему предложению, сделать через bind.stalker проверку на . Сразу скажу, как программист, это плохая идея. "на колбеке актора on_item_drop проверяешь" - Ваши слова? Во-первых , если сцена отыгрывается всего лишь раз - зачем постоянная проверка на Биндере? Сцена закончится, а проверка останется. Тормоза в игре, Лаги ит.д. Причём необоснованные. Во-вторых, ГГ подходит к зоне , открывает рюкзак и делает on_item_drop. (выбросить предмет) И что? Оружие в руках, как и было, так и осталось. Решили проблему?
Я не хочу ни с кем ругаться и спорить. Это моё мнение. Но если это тема для помощи начинающим модмейкерам, то и надо писать предельно просто и понятливо. А не выпендриваться перед Сталкерами, какой я "крутой скриптёр".
ins33, воспользуйся вот этим скриптом, получишь более информативный лог при вылете: >>ClicK Me<<. makdm
Что-то сегодня день какой-то... одни споры. Я так же не хочу ничего тебе доказывать. Просто я знаю RICK (автора вопроса) и могу сказать - то что понятно тебе, не всегда то, что думает он (правда RICK? ) И всё же ... Согласись, что предложенные тобою варианты весьма ограничены в использовании. Есть ряд условий под которые эти скрипты нужно подгонять. Что предложил я? Алгоритм, под который автор может подстроится исходя из задачи. Нужен конкретное решение - пожалуйста: 1. В логику рестриктора пишем следующую логику:
, на которую он перейдёт при наличии инфопорции actor_enter_zone.
Функция CheckActorDropedWeapon будет выглядеть так:
Код
function CheckActorDropedWeapon () if db.actor:dont_has_info("weapon_droped") local activeItem = db.actor:active_item() level.add_call ( function () if db.actor:object(activeItem:section()) == nil then return true end return false end, function () db.actor:give_info_portion("weapon_droped") end ) end end
Сообщение отредактировал ColR_iT - Среда, 23.01.2013, 21:39
ColR_iT, с наилучшими пожеланиями. Поверь, я не хотел тебя обидеть, но то что ты сделал (изложил своё видение в скриптах) - это и есть реальная помощь начинающим модмейкерам! Пять баллов, брат! С уважением, makdm.
Скажите - как из простого НПС в зов припяти, сделать его главным (ну что бы он не говорил "Мое дело стрелять а разговаривай с главным..."). Вот как мне из него главного сделать. Диалог готов, но вот говорить козел не желает...
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 - юго-восток.