В данной теме вы можете задавать любые вопросы касательно 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, не, всё же я не вкурю как всегда. Вот строка: if(obj_id) then - то есть, если есть айди, тогда ставит метку на карту. Как сюда вписать инфопоршень, чтобы требовал и айди и инфопоршень?
Где: zz_rodnik_sim_1 - обязательное наименование смарта, camper - схема поведения (будет сидеть на точке, не шибко рваться в бой, есть ещё guard (просто стоит в точке, в бой вступает охотно) и sniper (думаю сам догадался), 1 - порядковый номер. Для way и look одинаков, со следующими двумя секциями увеличивается на один. Но если у тебя в первых двух секциях был camper, а во вторых ты выставил guard, тогда отсчёт вести нужно снова с единицы для guard, затем продолжая с двойки, если снова создать секции с camper. Если просрёшь номера, сталкер на точке стоять не будет.
Можешь ещё юзнуть анимацию для look, строка: p0:name = name00, ставим к ней |a=choose, где choose - название анимации. Вообще это не единственная "надстройка". Выглядит так: p0:name = name00|a=choose
Это собственно работы в смарте для рандома.
Для эксклюзива идём в логику смарта:
[smart_terrain] squad_id = 1 max_population = 3 У тебя. И пишем внизу:
[exclusive] произвольное наименование, например story_id !уникального! сталкера = локация/название файла с логикой для него
Далее создаём файл, что мы указали в эксклюзивной логике с названием секции, которую выше мы тоже указали. Так (если точки way и look): [logic@duty_guard1] active = walker
[walker] - тут думаю всё ясно path_walk = guard_1_walk path_look = guard_1_look
И для анимпоинта: [logic@duty_guard1] active = animpoint
[animpoint] cover_name = dolg_commander_plase - имя смарт-ковра avail_animations = animpoint_stay_ohrana - анимации в смарт-ковре
Теперь анимпоинты для рандомных сталкеров: Создаём в all.spawn анимпоинт с названием к примеру zz_rodnik_sim_1_camp_1 (название смарта, названием анимпоинта, порядковый номер)
Идём в логику смарта и точно так же создаём эксклюзивную секцию со строкой: [exclusive] zz_rodnik_sim_1_camp_work_1(название секции) = yantar(локация)\zz_rodnik_sim_1_smart_logic.ltx Создаём файл zz_rodnik_sim_1_smart_logic.ltx в папке yantar
В нём указываем наше название секции и анимпоинта: [logic@zz_rodnik_sim_1_camp_work_1] - название секции, что мы писали в эксклюзив active = animpoint@zz_rodnik_sim_1_camp_1 (название анимпоинта, ссылка на вторую секцию) prior = 45
[animpoint@zz_rodnik_sim_1_camp_1] cover_name = zz_rodnik_sim_1_camp_1 (везде название анимпоинта) avail_animations = animpoint_sit_low (анимация в анимпоинте-ковре)
Можешь ещё приписать use_camp = true, чтобы он травил шутки и байки, а если у костра, то turn_on_campfire = true. А можешь и не писать.
А вообще лучше юзать SDK, смотри уроки Непряхина, ничего сложного там нет.
Сообщение отредактировал Last_Dawn - Четверг, 08.09.2016, 09:32
makdm, да, я тупой - понимаю. Больше донимать вас не буду, но если ты про это and has_alife_info(v.info) то я уже выставлял, смотрел ещё куда в ars отсылка идёт, там такие две функции:
-- проверяем актора в зоне X (вызывается раз в 4 секунды) function ars_fill_primary_objects() for k,v in pairs(primary_objects_tbl) do local obj_id = get_story_object_id(v.target) if(obj_id and db.storage[obj_id] and db.storage[obj_id].object)then if (db.storage[obj_id].object:position():distance_to(db.actor:position())<35 and not has_alife_info(v.info)) then db.actor:give_info_portion(v.info) ars_cop.add_spot_on_map(obj_id,"primary_object",v.hint) ars_cop.send_tip("Отмечен новый объект на карте: "..game.translate_string(v.hint),nil,1,nil,"location") ars_achievements.map_objects_counter() if(ogsm_notepad)then ogsm_notepad.note_location_info() end end end end end
-- а эти вызываются из диалогов function ars_fill_primary_objects_dlg(info) for k,v in pairs(primary_objects_tbl) do local obj_id = get_story_object_id(v.target) if(obj_id)then if (info==v.info and not has_alife_info(v.info)) then db.actor:give_info_portion(info) ars_cop.add_spot_on_map(obj_id,"primary_object",v.hint) ars_cop.send_tip("Отмечен новый объект на карте: "..game.translate_string(v.hint),nil,1,nil,"location") ars_achievements.map_objects_counter() if(ogsm_notepad)then ogsm_notepad.note_location_info() end end end end end
Все манипуляции дают вылет и я тут честно говоря не могу увидеть, каким боком вообще замешаны инфопоршни, кроме их выдачи в тех функциях под спойлером. Но я так понял - это условия их получения, а что такое has_alife_info(v.info) - ??? Слово info конечно намекает, но вообщем ладно, спасибо за помощь. Вы ведь не должны всё за меня делать в конце концов.
Ну фонарь это же отдельный предмет, он ставится в слот, т.е. ему нужны текстуры. Или нет?
Ваша логика: Автомобиль отдельный объект, на нем можно ездить, ему ведь нужен воздух? И да и нет, конкретизируйте вопрос!
ЦитатаAlex_91zA ()
А анимация тоже ведь есть на фонарь из Мизери?
Не знаю, я никогда не смотрел этот мод. Если фонарь там приаттаченный объект, то никакой анимации ему не требуется. _S_k_i_F_, Не у всякого объекта есть такоой метод, о чем тебе и сообщает движек: attemp to call method "condition"
Сообщение отредактировал denis2000 - Четверг, 08.09.2016, 20:06
function cleaner_weapons() for i=1,65534 do local obj = alife():object(i) if obj~=nil and obj:section_name()~=nil then if string.find(obj:section_name(),"wpn_") then if obj:condition() <= 0.35 then alife():release(alife():object(obj),true) end end end end end
function cleaner_weapons() for i=1,65534 do local obj = alife():object(i) if obj~=nil and isWeapon(obj) then if obj:condition() <= 0.35 then alife():release(alife():object(obj),true) end end end end
Все равно тот же вылет
Код
Description : ....r. - Зов Припяти\gamedata\scripts\xr_effects.script:3534: attempt to call method 'condition' (a nil value)
Движковый метод condition() может быть вызван только для клиентского класса объекта, а вы его пытаетесь вызвать для серверного класса. Для серверного класса нужно читать нет-пакет оружия. И вот это :
Цитата_S_k_i_F_ ()
alife():release(alife():object(obj),true)
ну просто "швах".
Сообщение отредактировал makdm - Четверг, 08.09.2016, 20:51
_S_k_i_F_, Проверять нужно у клиентского типа объектов, например так:
Код
function cleaner_weapons() for i=1,65534 do local obj = alife():object(i) if obj~=nil and isWeapon(obj) then local wpn = level.object_by_id(obj.id) if wpn then if wpn:condition() <= 0.35 then alife():release(alife():object(obj.id),true) end end end end end
А если проверять у всех, то придется разбирать нетпакет, как уже сказали. Вы пытаетесь сварганить какую-то дичь! Может для начала, расскажите, что требуется?
Сообщение отредактировал denis2000 - Четверг, 08.09.2016, 21:30