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/
Shennondoah 130 Опубликовано 24 Июня 2020 Поделиться Опубликовано 24 Июня 2020 (изменено) 20 часов назад, Zander_driver сказал: Заполучить любым удобным образом ссылку на объект-тайник, взять его позицию, взять позицию актора, померить расстояние. От этого расстояния вычислить интервал писка, и воспроизводить звук писка с этим интервалом. Запускать скрипт при наличии "прибора" в инвентаре или там где надо... Все это вполне делается в Lua-скриптах. Разложить задачу на составляющие, и делать каждый из ингредиентов) Если какой-то ингредиент вызывает затруднения, то спрашивать уже по нему. Как то так. Получилось более-менее, спасибо Сделал 4 состояния, медленный, средний, чаще и частый писк, прям как в DL получилось, только вот пищит постоянно, как сделать проверку вот на наличие приборчика в инвентаре? А, всё, допетрил, сделал Чуть неправильно прописал. Изменено 24 Июня 2020 пользователем Shennondoah Оц тоц перевертоц, бабушка здорова, Оц тоц перевертоц кушает компот. Оц тоц перевертоц и мечтает снова Оц тоц перевертоц пережить налет! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1337683
Demosfen 142 Опубликовано 24 Июня 2020 Поделиться Опубликовано 24 Июня 2020 Добрый день, решили адаптировать Бартер из НС 2016 с gui интерфейсом, взяли скрипт "ui_barter_menu" адаптировали его под себя, добавили активацию скрипта через диалог, запускаем игру а он почему то начинает работать самостоятельно, хотя как я понял должен работать только при вызове функции из диалога, есть у кого какие мысли на этот счет? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1337743
phalcor 60 Опубликовано 26 Июня 2020 Поделиться Опубликовано 26 Июня 2020 Вот такой, казалось бы, простой вопрос: труп Крысюка после ухода/возврата на локацию становится невидимым (оффлайн). (У меня он в исключении у уборщика, потому цел). Следующая комбинация не переводит его в он-лайн: local sim = alife() sim:set_switch_online (id, true) sim:set_switch_offline (id, false) А вообще это возможно? Чтобы он стал нормальным, видимым трупиком? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1337923
Norman Eisenherz 354 Опубликовано 27 Июня 2020 Поделиться Опубликовано 27 Июня 2020 (изменено) Здрасьте. [ЧН 1.5.10] Проверка типа заряженных патронов с условием "если в руках оружие". Пока в руках бинокль, нож, болт или ничего, проверка срабатывает каждый раз и, как ожидается, сигналит "no_wpn". После переключения на пистолет проверка срабатывает 1–2 раза (иногда выдает "левое" значение вроде "219" или "17") и дальше молчит. Триггер проверки – callback "use_object". Повторяющиеся вычисления через actor_binder:update(delta) с такой проверкой тоже останавливаются. Spoiler function use_check(obj) if obj:section() == "bandage" then local item = db.actor:active_item() if isWeapon(item) and item:section() ~= "wpn_knife" then local sobj = alife():object( item:id() ) local pk = net_packet() sobj:STATE_Write(pk) local size = pk:w_tell() pk:r_seek(size -2) local ammo_type = pk:r_u8() +1 news_manager.send_tip(db.actor, "loaded: " .. ammo_type) else news_manager.send_tip(db.actor, "no_wpn") end end end Сдвиг -2 от конца STATE-пакета опирается на данные из [m_netpk.script]: Spoiler function net_cse_alife_item_weapon:__init(obj,mode) … self.st_props = { … { name = 'ammo_type', type = 'u8', default = 0 }, { name = 'cse_alife_item_weapon__unk1', type = 'u8', default = 0, ver = 6 } --/ CS&SCoP Изменено 27 Июня 2020 пользователем Norman Eisenherz 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338237
abramcumner 1 230 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @Norman Eisenherz, на самом деле совсем не смешно. Что выдает артосовский m_netpk.script? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338267
WinCap 323 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @Norman Eisenherz, я уже не помню про ЧН, может там как в ЗП, нужно pk:w_begin(0) добавлять? 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338301
Norman Eisenherz 354 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @abramcumner при подключенном модуле игра вылетает уже на стадии "Сервер: старт" (хоть с сейва, хоть новая). Подключал согласно инструкции: [scripts\_g.script] function start_game_callback() … m_netpk.attach() -- новая строка end Файл [_g.script] чистый, в папке [gamedata] только он и [m_netpk.script]. Spoiler Expression : fatal error Function : CScriptEngine::lua_error File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp Line : 180 Description : <no expression> Arguments : LUA error: ...\common\stalker clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil) Проблемная строка – замена пробелов на пустое место. Ошибка при формировании сообщения об ошибке. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338303
abramcumner 1 230 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 5 минут назад, Norman Eisenherz сказал: Arguments : LUA error: ...\common\stalker clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil) Это специальный вылет же. 975 строка - функция abort в ЧН. Что выше в логе? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338306
Norman Eisenherz 354 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @abramcumner Неподключенный конфиг… [m_netpk] выдает результат правильно при каждом обращении. В чем ошибка моего кода? Такой код точно работает в ТЧ; в ЧН отличие STATE-пакета оружия в одном новом параметре u8, то есть сдвиг еще -1 от конца. Методы класса net_packet не изменились. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338325
Zander_driver 10 348 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 (изменено) @Norman Eisenherz, А таки для чего делать свои костыли, когда есть готовый исправно работающий инструмент? Поневоле вспоминается анекдот про "шашечки или ехать". 23 минуты назад, Norman Eisenherz сказал: Черный ящик это И что? Под капотом работающего агрегата копаются только тогда, когда категорически не устраивает, как он работает. Вот только, что может не устраивать в модулях Артоса, решительно не понятно. Ну, кроме морально-устаревшей самой по себе идеи, делать что-либо через нет-пакеты... Но от нее-то вы отказываться не хотите. Изменено 28 Июня 2020 пользователем Zander_driver 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338326
Norman Eisenherz 354 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @Zander_driver Черный ящик это. Опять же, базовые методы, вокруг которых не требуется строить 20 дополнительных проверок – не костыли. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338330
abramcumner 1 230 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @Norman Eisenherz, первое правило велосипедиста: педалишь свой велосипед - сверяй с проверенным. По ошибке: 1. обрати внимание на пост @WinCap,в ЧН/ЗП конструктор net_packet не иницилизирует позиции чтения/записи. Надо делать w_seek 2. Я бы все-таки проверял класс объекта при разборе нет-пакета. cse_alife_weapon по-моему только нож использует. Ну и да, библиотека Artos`а учитывает все это и еще кучу другого. 3 часа назад, Norman Eisenherz сказал: Опять же, базовые методы, вокруг которых не требуется строить 20 дополнительных проверок – не костыли. Ну как не костыли. Не работают же эти базовые методы Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338391
Norman Eisenherz 354 Опубликовано 28 Июня 2020 Поделиться Опубликовано 28 Июня 2020 @abramcumner WinCap точнее написал: w_begin(0). Начальная позиция "гуляет" (интересно, какое в этом удобство), вот и работала проверка через раз. Это не костыли – это различия версий, о которых можно узнать только из вот таких обсуждений, потому что в справочнике сказано: "созданный пакет по умолчанию имеет позиции чтения и записи, установленные в 0". 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338397
Expropriator 2 119 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 (изменено) Вопрос по скрипту ОГСМ ogsm_rt_manager.script. В игре, с локациями ЧН, вылета не было. Вылет идёт по спавну в алспавн мертвого сталкера на новой локации. --Регистрация целей для тасков типа kill_stalker function CRandomTask:register_target(obj) if IsStalker(obj) thenfor k,v in pairs(self.task_id_by_type["kill_stalker"]) do -- !!! ТУТ ВЫЛЕТ !!! if obj.alive ~= nil and obj:alive() == true and obj:profile_name() == self.task_info[v].target then if self.task_info[v].target_objects == nil then self.task_info[v].target_objects = {} end table.insert(self.task_info[v].target_objects, obj.id) end end end end Может перечисление локаций ЧН сделать, типа такого? if level.name() == "agroprom_underground" then Или куда то надо новую локацию прописать или трупы? Кто шарит в ОГСМ ( кроме Kirgudu)? А там еще ака Bak намутил rx_wmgr.script . Короче, для нового уровня - ОГСМ - это Ж... Изменено 2 Июля 2020 пользователем Expropriator Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338970
Zander_driver 10 348 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 12 минут назад, Expropriator сказал: ТУТ ВЫЛЕТ А какой вылет, это военная тайна? Может там достаточно проверку if type() == 'table' воткнуть, и всего делов... 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338979
Expropriator 2 119 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 (изменено) Без ОГСМ всё работает. @Zander_driver, [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : ..\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: ...orovka_beta2\gamedata\scripts\ogsm_rt_manager.script:978: bad argument #1 to 'pairs' (table expected, got nil) Спавню нпс на новой локации из профиля ОГСМ. Или я вообще туплю. Тут в ЧН же можно спавнить нпс через алспавн напрямую? Это же не ЗП, что бы через респавн. Изменено 2 Июля 2020 пользователем Expropriator Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338980
Kirgudu 1 342 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 (изменено) 3 часа назад, Expropriator сказал: Кто шарит в ОГСМ ( кроме Kirgudu)? А я тебе не подойду вместо Kirgudu? Не было там никакой привязки к локациям, насколько я помню. К смартам - да, но не в заданиях типа "kill_stalker". Проверь, что ты не почистил ненароком конфиг misc\rt_manager.ltx При первом после загрузки обращении к менеджеру (например, как раз из se_stalker.on_register()) там считывалось содержимое секции list, затем по каждой строке этой секции читались уже свойства заданий и записывались в массив self.task_info. Далее делался перебор этого массива и в зависимости от значения свойства type добавлялось значение в один из массивов task_id_by_type[type]. Пустым он мог оказаться только в том случае, если из конфига не получено ни одного задания нужного типа. Изменено 2 Июля 2020 пользователем Kirgudu 1 1 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1338998
Expropriator 2 119 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 @Kirgudu, я так понял, что у меня незаходят стартовые скрипты. В начале должно быть потемнение и музыка в голове, а уж после пойдёт правильная гаме. Странно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1339000
Kirgudu 1 342 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 @Expropriator, ну, тут уж только тебе ведомо, что ты там со стартом накуролесил. Впрочем, на правильную инициализацию менеджера заданий это влиять всё равно не должно. Там главное, чтобы вызов любого метода менеджера из другого модуля шёл только через получение синглтона инициализированного экземпляра менеджера, например: ogsm_rt_manager.get_rt_manager():register_target(self) Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1339002
Expropriator 2 119 Опубликовано 2 Июля 2020 Поделиться Опубликовано 2 Июля 2020 (изменено) @Kirgudu, ничего понять не могу, Ладно, сперва вернусь к истокам, к нормальному алспавну и локациям. Может у меня алспавн баганутый получается? И кстати, я не внедряю ЧН локации в общий спавн, может причина, что нет смартов и другого спавна? Изменено 2 Июля 2020 пользователем Expropriator Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/520/#findComment-1339003
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти