В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
MoDoStRoY, llle про это: amk.g_start_timer("kur",0,0,6)
Добавлено (23.03.2013, 17:02) --------------------------------------------- lllee, Сделай по подобию, только используй свой таймер:
local time_news = 0 function Name() -- вешай на апдейт local act = db.actor local time = time_global() if db.actor ~= nil and has_alife_info("поршень") and -- Выдай если покурили. * time_news < time then time_news = time + 50000 -- 1 мин. = 60000 действие -- например кашель и хит end end *-- советую выдать после выкуривания 3 сигарет, так реалистичней будет.
Добавлено (23.03.2013, 17:07) --------------------------------------------- Если юзнули сигарету, удаляй поршень, и запускай тамер из диалогов, который напомнит что надо покурить.
Добавлено (23.03.2013, 17:29) --------------------------------------------- lllee, В посте нет исправления! Этих ф-ции:
ocal iTimer local iLast
function StartBackTimer() if iLast then iTimer = time_global()+iLast --/ взводим таймер на остаток времени iLast else iTimer = time_global() + 900*1000 --/ 60 - это 1 минута, 900 - это 15 минут end end
function LoadBackTimer(iVal) iLast = iVal --// перезапуск таймера на остаток времени если мы выходили из игры if iLast then this.StartBackTimer() end end
function SaveBackTimer() --// запишем значение остатка времени return iLast end
Пропиши в скрипт с таймером.
Добавлено (23.03.2013, 17:53) --------------------------------------------- MoDoStRoY, И ещё момент: под рукой нет АМК, посмотри что в ф-ции amk.spawn_item_in_inv("vodka") Она тоже нужна. Но можно и на колбек повесить: В function actor_binder:use_callback(obj, who) прописать: if obj:section() =="*" then Действие. llle тут забирай пошень из таймера. И давай поршень на запуск таймера из Функций Диалогов.
Сообщение отредактировал ins33 - Суббота, 23.03.2013, 17:56
а какие ориг.файлы (ЗП) отвечают за зависимость, например той же еды? Хочу тоже сигаретную зависимость, но не хочу ставить амк.
Оффтоп...
Ну просто обожаю всеобщую ненависть мододелов этого ресурса к АМК. А вы вообще в курсе, что в оригинальных файлах ЗП есть скрипты от команды АМК? За которые они не копейки от Пысов не получили...Экскурсия в чернобыль не в счет)))
Речь в данном случае идёт о моде АМК, который ставится на ТЧ. От сюда и не желание его ставить на ЗП. Можно конечно просто взять нужные ф-ции из АМК, и это будет работать. И АМК все любят! Но не все об этом знают.
Зов Припяти Есть один вопрос на счет логики, конкретнее схемы meet. Если в use поставить use = self, то НПС сам юзнет игрока! но это происходит на большом расстоянии... ставил use = 3|self, так-с он вообще не кидал мне диалог... как сделат так, что-бы он юзал ГГ в 3-4 метрах? Второй вопрос по диалогам... на вики не нашел! есть в игре стартовые диалоги. Когда юзаешь НПС у него появляется его слова, ну у бармена "здравствуй сталкер! закупайся! есть все" надеюсь поняли. Так вот, как прописать этот диалог? он как раз нужен мне вместе с use = self!, что-бы первая фраза была НПС. Если есть урок, то скиньте ссылку.. Заранее спс!
Сообщение отредактировал FeLLoN - Суббота, 23.03.2013, 21:21
Добавлено (23.03.2013, 21:39) --------------------------------------------- А может тебе это надо: function name() local npc = level_object_by_sid(number) -- id nps db.actor:run_talk_dialog(npc) -- старт диалога. точнее открытие диалогового окна. end При вызове ф-ции появится диалоговое окно. Советую использовать рестриктор.
Добавлено (23.03.2013, 21:44) --------------------------------------------- Забыл добавить. Диалог должен быть прописан у нпс. Не забудь добавить условие, что бы окно не появлялось при повторном приближении к нпс.
_МстителЬ_, открою вам большую тайну. В ЗП все НПС входят в сквады. Даже Борода на Скадовске - это сквад. Сквады есть квестовые, а есть симуляционные. И какое количество сквадов вы хотите изменять? И в каких сквадах вы хотите изменять количество НПС?
makdm, хочу уменьшить количество обычных сквадов в игре и изменить количество сталкеров в сквадах допусти не 2 а 4. И добавить на Затон сквады ДОЛГа и Свободы. Скажите через какие файлыы можно это сделать.
Сообщение отредактировал _МстителЬ_ - Воскресенье, 24.03.2013, 11:39
ins33, Я наверно достал. Все со своей зависимостью. Посмотри пожалуйста. Сделал проверку выкуривания сигарет
local eat = nil
function use_med() if eat and type(eat) == 'number' then if not level.object_by_id( eat ) then kurevo.kur_item(oid, time) --в скрипт kurevo end eat = nil end
if eat and type(eat) == 'userdata' then eat = eat:id() else eat = nil end end
function drop_med(obj) local obj_sect = obj:section() if obj_sect == 'sigaret' then eat = obj end end
сам скрипт kurevo
snd = sound_object([[interface\inv_gaz]])
--\\ Проверяем нужно ли покурить. Вызывается каждые 6 игровых минут function test_for_need_kur() amk.save_variable("kur",amk.load_variable("kur",0)+1) amk.g_start_timer("kur",0,0,3) kur_reduce_health() end
--\\ Уменьшение здоровья, если долго не курил function kur_reduce_health() local tmp = amk.load_variable("kur",0) if tmp > 1 then if db.actor.health > 0.15 then db.actor.health = -0.15 end if not snd:playing() then snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) end end end
--\\ Курение function kur_item(oid, time) if alife():object(oid)==nil then local tmp = amk.load_variable("kur",0) - time*2 if tmp < 0 then tmp = 0 end amk.save_variable("kur", tmp) kur_reduce_health() end end
в bind_stalker прописал проверку кур.сигарет
function actor_binder:on_item_drop (obj) level_tasks.proceed(self.object) kurevo_prover.drop_med(obj)
и
end end -- end of addition arc.on_actor_update(delta) -- ARC end kurevo_prover.use_med() end Как модострой написал. Проблема: при выкуриваниии сигаретты пропадает кардиограмма. Установлен кардио мод. И не начинается следущая поверка на курение. Как бы все это дело правильно сделать.
Люди как можно открыть инвентарь с помощью скрипта? Может какой-то консольной командой?
Добавлено (24.03.2013, 12:27) --------------------------------------------- cxcxShaman, найди где пересекаются эти скрипты, кардиограмма и зависимость.