Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
_Sk8_AsTeR_ 122 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 (изменено) @dsh, великолепно, всё работает! И позволь под конец еще понаглеть У тебя нет распаковщика\упаковщика подобного для all.spawn соли16 огср? Уж очень хочется поэкспериментировать с переносом той точки... Изменено 18 Августа 2020 пользователем _Sk8_AsTeR_ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345344
dsh 3 824 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 1 hour ago, _Sk8_AsTeR_ said: У тебя нет распаковщика\упаковщика подобного для all.spawn соли16 огср? Нету. Но я сомневаюсь, что там нужно что-то специальное. 1 hour ago, _Sk8_AsTeR_ said: Уж очень хочется поэкспериментировать с переносом той точки... Какой точки? AI переходы находятся в game.graph, не в all.spawn. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345356
_Sk8_AsTeR_ 122 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 (изменено) @dsh, Не, подвинуть хочу не точку АИ перехода (ибо вроде как в этом нет смысла), а координаты того смарта, в который неписи сбегаются свободные в оффлайне разных группировок, "bar_visitors" которая вчерашняя. Или я опять всё напутал? Вот в этом посте я вроде описал ситуацию. А game.graph я хотел поковырять еще для других целей, и для саморазвития Изменено 18 Августа 2020 пользователем _Sk8_AsTeR_ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345358
dsh 3 824 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 @_Sk8_AsTeR_, тебе на самом деле нужно убрать вот эту ситуацию 1 hour ago, _Sk8_AsTeR_ said: сбегаются свободные в оффлайне разных группировок В bar_visitors нужно принимать только дружественные группировки. Просто перечисли их в скрипте. Вот и все. Исправлять нужно причину, а не следствие. Немного теории. Позиция самого смарта никакой роли не играет. Неписи идут туда, куда им указывают пути назначенных им работ. Параметры этих путей в движке OGSR можно поменять черен конфиг. all.spawn для этого трогать не обязательно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345367
Muzafir 19 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 Подскажите, как можно выдать ГГ квест без диалога с кем-либо? Во всех уроках квесты активируются в диалоге. Мне нужно чтобы ГГ получал задание после перехода на локацию. Окружить точку перехода спейс-рестрикоторами или может какой-то способ потолковей есть? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345377
Zander_driver 10 348 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 Только что, Muzafir сказал: Мне нужно чтобы ГГ получал задание после перехода на локацию. В момент нет-спавна ГГ проверяй, на какой локации он загрузился. Если совпало с нужной локой - выдавай задание. Никаких рестрикторов для этого не надо. 4 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345391
UriZzz 1 004 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 (изменено) @Muzafir, как то так... Цитата function blablabla() local lname = level.name() if (lname == "название локации") then Функция получения квеста() end end Это дело вешается на кэллбэк net_spawn. Но нужны какие-то дополнительные условия, иначе квест будет даваться каждый раз когда будите заходить на локацию. Изменено 18 Августа 2020 пользователем UriZzz 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345392
_Sk8_AsTeR_ 122 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 @dsh, 2 часа назад, dsh сказал: нужно принимать только дружественные группировки Да я тут подумал что в таком случае пропадёт эта прикольная фишка, когда и территория бара не является абсолютно безопасным местом. Не зря же охрана стоит на блок-постах? Да и Долг начинает в мегафон так весело орать, что на территории бара враждебные элементы, прям здорово вышло! 2 часа назад, dsh сказал: Неписи идут туда, куда им указывают пути назначенных им работ Иными словами условные те же наёмники уже в оффлайне не просто приходят в определенную точку по координатам, а именно в оффлайне занимают место у костра(посиделки у костра ведь тоже работа?), а когда выходят в онлайн - появляются сразу у костра вместе с другими группировками и начинается пальба, да? Просто я думал, что они в онлайн выходят именно в определенной точке,(координаты которой указаны в соответствующей секции), и лишь только после выхода в онлайн начинают разбегаться по работам. И вот эту точку выхода в онлайн по моим скромным затеям я хотел попробовать вынести в другое место. Я ошибался, верно? 2 часа назад, dsh сказал: Параметры этих путей в движке OGSR можно поменять черен конфиг А подскажи пожалуйста, в какие конфиги глядеть? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345398
Muzafir 19 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 1 час назад, UriZzz сказал: then Функция получения квеста() Ты имеешь ввиду, здесь нужно выдать игроку инфопорцию, которая стартует квест? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345401
UriZzz 1 004 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 @Muzafir, ну да, функция, инфопоршинь, etc... 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345403
Muzafir 19 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 Ок, спасибо. В скриптах я новичок, но с этим понятно. Сейчас буду разбираться, как повесить коллбэк на net_spawn Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345405
Zander_driver 10 348 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 (изменено) Только что, Muzafir сказал: как повесить коллбэк на net_spawn Он по умолчанию и так уже повешен в оригинале. Просто добавь туда свой код и все. Изменено 18 Августа 2020 пользователем Zander_driver 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345409
dsh 3 824 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 (изменено) 2 hours ago, _Sk8_AsTeR_ said: Просто я думал, что они в онлайн выходят именно в определенной точке,(координаты которой указаны в соответствующей секции), и лишь только после выхода в онлайн начинают разбегаться по работам. Это зависит от того, как написана логика для их работ. Как напишешь, так и будет. 2 hours ago, _Sk8_AsTeR_ said: А подскажи пожалуйста, в какие конфиги глядеть? [engine_custom_spawn] waypoints_file = waypoints.ltx в system.ltx. В waypoints.ltx пути в том же формате, как в распакованом all.spawn. Изменено 18 Августа 2020 пользователем dsh 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345411
DibokDibokin 1 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 14.08.2020 в 03:51, WinCap сказал: @DibokDibokin, попробуй так: local s_obj = alife():object(i) if s_obj ~= nil then local c_obj = level.object_by_id(s_obj.id) if (c_obj and is_box[c_obj:get_visual_name()]) then Не помогло. При активации функции не появляются метки на мини-карте, а ПДА не открывается. Лечится только перезагрузкой сейва. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345419
WinCap 323 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 @DibokDibokin, проверь вызов функции на установку метки: level.map_add_object_spot_ser(c_obj.id, "тип_метки_из_map_spots.xml", "надпись_на_метке") Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345421
Muzafir 19 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 Всю голову сломал этими скриптами. Если я правильно понял, чтобы выдать ГГ задание сразу после перехода на локацию, то в файле bind_stalker.script нужно найти функцию function actor_binder:net_spawn(data) и в нее вставить такой кусок кода: if (level.name() == "simeiz") and -- название локации not has_alife_info("keep_base_defend") then -- и данная инфопорция (старт квеста) не выдавалась self.object:give_info_portion("keep_base_defend ") – выдать ее end 4 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345425
DibokDibokin 1 Опубликовано 18 Августа 2020 Поделиться Опубликовано 18 Августа 2020 @WinCap, тоже не сработало. function show_boxes() local s_obj = alife():object(i) if s_obj ~= nil then local c_obj = level.object_by_id(s_obj.id) if (c_obj and is_box[c_obj:get_visual_name()]) then level.map_add_object_spot_ser(c_obj.id, "warfare_stalker_spot", "box") end end end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345429
h0N0r 381 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @DibokDibokin, есть другой вариант, не по модели, а по секции [drop_box], Скрытый текст -- тестовые функции по клавише из главного меню function main_menu:OnKeyboard(dik, keyboard_action) --virtual function ... -- поставить отметку на объект с логикой drop_box (лут из коробки) if dik == DIK_keys.DIK_F1 then if (level.present() and db.actor ~= nil and db.actor:alive()) then local level_actor = game_graph():vertex(alife():actor().m_game_vertex_id):level_id() for a=1,65535,1 do local obj = alife():object(a) if obj and obj ~= nil then local level_obj = game_graph():vertex(obj.m_game_vertex_id):level_id() if level_obj == level_actor then -- отметки только на текущей карте local obj_name = obj:name() if (obj.parent_id and obj.parent_id == 65535) then local ini = obj:spawn_ini() if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true) then level.map_add_object_spot(obj.id, "obj_location", tostring(obj_name)) -- obj_location, ид метки из map_spots.xml --[[ <obj_location> <level_map spot="obj_location_spot"/> <mini_map spot="obj_location_spot"/> </obj_location> <obj_location_spot x="0" y="0" width="4" height="4" alignment="c" stretch="1"> <texture r="0" g="255" b="255">ui_minimap_point</texture> </obj_location_spot> ]]-- end end end end end end end -- удалить отметку if dik == DIK_keys.DIK_F2 then if (level.present() and db.actor ~= nil and db.actor:alive()) then for a=1,65535,1 do local obj = alife():object(a) if obj and obj ~= nil then if (obj.parent_id and obj.parent_id == 65535) then if (obj:spawn_ini() ~= nil and obj:spawn_ini():section_exist("drop_box") == true and level.map_has_object_spot(obj.id, "obj_location")) then level.map_remove_object_spot(obj.id, "obj_location", "") end end end end end end 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345431
Zander_driver 10 348 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 35 минут назад, DibokDibokin сказал: тоже не сработало. А вы свой же код хотя бы читаете? Пробежаться глазами по строчкам и прикинуть, что там происходит, не? В вашей функции, первая же строчка: 36 минут назад, DibokDibokin сказал: local s_obj = alife():object(i) Чему здесь равно i ? Не определено. Что вам вернет в s_obj - ничего. Я так понимаю, этот совет 14.08.2020 в 00:52, Zander_driver сказал: Когда код творит что-то не то, что от него ожидается, полезно его снабдить выводами в лог интересующей информации. Пусть пишет, как у него дела, у кода этого. Тогда и дебаг быстрее делается Решили игнорировать. Ваше право. Но тогда никакие "варианты" в скриптах не сработают, если только случайно. Любой код отладки требует, это нормально. Но отладки не будет без лога. И не будет понимания, что могло пойти не так, если не смотрели что код вообще делает, откуда в нем те или иные значения берутся. 1 3 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345432
mdm64 586 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 (изменено) Доброго времени! Задаю вопрос здесь, потому как тема по вылетам закрыта, а ошибка, судя по всему, связана со скриптами - через небольшое время после начала игры такой вылет: Скрытый текст FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : ..\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : .... world over world\gamedata\scripts\state_mgr.script:247: C stack overflow Понимаю, что ошибка где-то в анимках НПС, возможно даже, в скриптах логики неписей.Но все анимации вроде как стандартные, без изысков. И не пойму, ошибка в анимациях "обычных" неписей или квестовых, эксклюзивных, так сказать... И вдогонку - в gamedata\scripts есть набор файлов, отвечающих за анимациии НПС, может ли кто-то скинуть полный перечень файлов в этой (а если есть и в других) папках, отвечающих за эти анимации (файлы типа - smart_covers_animpoint_sit_low, smart_covers_loophole_animpoint_sit_low, state_mgr_animation и подобные им, это просто для примера). Потому как набор таких файлов в оригинале ЗП сильно отличается от аналогичного набора в исходниках СДК 0.7, в СДК он больше. Изменено 19 Августа 2020 пользователем mdm64 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/525/#findComment-1345446
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти