В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
Добрый вечер. Продолжаю изучать схемы. Собственно вопрос: в большинстве схем в методе update имеется данная проверка:
Код
if xr_logic.try_switch_to_another_section(self.object, self.st, actor) then return true/false/or nothing end
Что делает данный метод я знаю - пытается переключить объект на другую схему, если хоть одно из условий переключения сработало.
Но что делает данный блок кода, точнее пытается сделать? Типа можно ли перейти во время апдейта активной схемы на другую схему и тем самым разрешает или запрещает?
buffy, Ну, если бы вы ориентировались не на имя функции, а на ее код, то вы бы поняли, что она не только проверяет возможность переключения, но и переключает на следующую секцию, при этом если переключение произошло возвращает true, следовательно приведенный вами код означает попробовать и переключиться на другую секцию логики, а если переключились выполнить код после then, то есть в данном случае просто завершить обработку колбека.
Сообщение отредактировал denis2000 - Пятница, 03.11.2017, 18:49
denis2000, кстати у меня ещё одна проблемка была, которую я к сожалению не понял: в свою схему добавил hit_callback. Но он почему-то не обрабатывается вообще. То есть при хите моего физ. объекта не происходит, то, что было указано в блоке метода.
Сообщение отредактировал buffy - Пятница, 03.11.2017, 19:14
Да, пожалуйста. Только всё это неправильно с точки зрения быстродействия работы скриптов. Здесь нужно понимать, что все костры, находящиеся на активной локации ( на которой находится ГГ ) не зависят от параметра switch_distance, а по - русски, всегда ОНЛАЙН. Поэтому достаточно в биндер костров ( bind_campfire.script ) добавить свою таблицу.
В самом верху файла пишите:
campfire_table = {}
Затем в методе net_spawn(server_object) пишите:
campfire_table[ self.object:id() ] = self.object
После этих добавлений ваша функция будет выглядеть так:
function campfire_distance() local actor_pos = db.actor:position() for k,v in pairs(bind_campfire.campfire_table) do if v:position():distance_to( actor_pos ) < 1.5 then log("campfire_distance true") return true end end log("campfire_distance false") return false end
Быстродействие - просто в разы. И никаких лишних телодвижений.
yobakun, вот все эти проверки в ваших функциях ну совсем лишнее.
Цитатаyobakun ()
if obj:section() == "c_matches" or obj:section() == "c_matches_old" or obj:section() == "c_ignition_set" then
Цитатаyobakun ()
if obj:section() == "c_matches" then
Цитатаyobakun ()
if obj:section() == "c_matches_old" then
Цитатаyobakun ()
if obj:section() == "c_ignition_set" then
Если вы учитесь писАть скрипы, то сразу старайтесь делать это правильно и с наименьшими затратами ресурсов компа на обработку ваших скриптов ( повышаем быстродействие ).
Почитайте, как это сделать без всяких проверок на секцию ( урок 75 ) :
В файл bind_stalker.script в метод function actor_binder:use_inventory_item(obj) пишем
xr_s.use_inventory_item( obj:section() ) -- здесь мы вызываем колбэк
В call of chernobyl такого нет, есть только вот это:
Код
Line 6: npc:bind_object(actor_binder(npc)) Line 10: class "actor_binder" (object_binder) Line 12: function actor_binder:__init (obj) super(obj) Line 13: db.actor_binder = self Line 27: function actor_binder:net_spawn(data) Line 73: function actor_binder:net_destroy() Line 149: function actor_binder:reinit() Line 208: function actor_binder:update(delta) Line 285: function actor_binder:save(packet)
denis2000, Это я знаю, но разве на схему для физ. объекта нельзя цеплять калбэк, вот, например, в той же схеме ph_idle, hit_callback работает нормально, а в моей схеме для физ. объекта ничего не работает. Сначала подумал, что может быть этот калбэк должен вызываться откуда нибудь из другого места, к примеру из xr_logic. Там посмотрел - есть строки отвечающие за hit_callback, но это совсем для других схем, на подобии ph_hit и ph_on_hit. А для ph_idle нет, и что же это тогда получается?..
И вот ещё настройка объекта в сдк:
Добавлено (04.11.2017, 14:56) --------------------------------------------- yobakun, с СоС не разбирался, но в своём первом посте ты писал вот это:
Цитатаyobakun ()
function on_game_start() RegisterScriptCallback("actor_on_item_use",item_use) end
Сообщение отредактировал buffy - Суббота, 04.11.2017, 14:41