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 Ссылка на комментарий
Zander_driver 10 343 Опубликовано 12 Июля 2024 Поделиться Опубликовано 12 Июля 2024 4 часа назад, naxac сказал: Но это неточно Но это точно и правильно 1 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. Ссылка на комментарий
Это популярное сообщение. Prophet13 1 092 Опубликовано 13 Июля 2024 Это популярное сообщение. Поделиться Опубликовано 13 Июля 2024 (изменено) 13 часов назад, Balavnik сказал: об объекте и координатах, на которые наведён прицел? Про координаты только щас увидел, потому дополню другим примером: Скрытый текст local rq = level.get_current_ray_query() local dist = rq.range -- Дистанция до места, на которое навели прицел. if dist then -- Тут нужна проверка, ибо при наведении на скайбокс получим nil. local pos = vector():mad(device().cam_pos, device().cam_dir, dist) -- Позиция, куда наведен прицел. local lv = level.nearest_vertex_id(pos) -- Возвращает ближайший level_vertex_id к этой позиции. local gv = cross_table():vertex(lv):game_vertex_id() -- Для переданного level_vertex_id возвращает соответствующий ему game_vertex_id. --------- end local obj = rq.object -- Объект, на который наведен прицел, если есть. Изменено 13 Июля 2024 пользователем Prophet13 3 4 OP OGSR Ссылка на комментарий
Zander_driver 10 343 Опубликовано 13 Июля 2024 Поделиться Опубликовано 13 Июля 2024 @Balavnik К слову, этот метод работает и с демо-рекордом. 1 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. Ссылка на комментарий
Купер 2 992 Опубликовано 13 Июля 2024 Поделиться Опубликовано 13 Июля 2024 @Balavnik , + в дополнение несколько готовых "типовых" вариантов реализации для наглядности. Не под прямую копипасту, конечно, на предмет "подсмотреть": старичок XRE - тут, непосредственно сам OGSR - тут, например. 2 Ссылка на комментарий
Labadal 68 Опубликовано 27 Июля 2024 Поделиться Опубликовано 27 Июля 2024 У меня такой вопрос. Все мы знаем, что для различных уровней сложности прописаны свои значения в actor.ltx. Вопрос такой, можно ли как-то получить скриптово эти значения? Например: я хочу сделать некую систему достижений, и допустим там будет достижение "читер", которое выдастся, если эти параметры были изменены игроком. (то есть на сложности новичок у меня параметр burn_immunity = 0.3 [actor_immunities_gd_novice] burn_immunity = 0.3 но если игрок, играя на сложности новичок залет в файл и поставит значение, отличное от 0.3, то я хочу это отследить.) Вопрос в том - как и возможно ли вообще. Спасибо! God save Hatsune Miku! Ссылка на комментарий
Zander_driver 10 343 Опубликовано 27 Июля 2024 Поделиться Опубликовано 27 Июля 2024 2 минуты назад, Labadal сказал: Вопрос в том - как и возможно ли вообще. system_ltx позволяет читать любые параметры из конфигов подключенных к system.ltx. Actor тоже. 1 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. Ссылка на комментарий
Labadal 68 Опубликовано 27 Июля 2024 Поделиться Опубликовано 27 Июля 2024 @Zander_driver А есть какая-то документация по этому поводу? Понять бы как работает И еще такой вопрос, я, к примеру создал некую переменную. С самого начала игры она равна 0, но в какой-то момент станет равна 1. Можно ли сделать так, чтобы это значение "1", сохранялось в переменной, даже если я начну новую игру? God save Hatsune Miku! Ссылка на комментарий
CiberZold 143 Опубликовано 28 Июля 2024 Поделиться Опубликовано 28 Июля 2024 @Labadal в _g.script например делаешь такую функцию sys_ini = system_ini() function get_string( section, param, def_val, ini_file ) local ini = ini_file or sys_ini if ini:line_exist( section, param ) then return ini:r_string( section, param ) else return def_val end end потом в нужном тебе скрипте в любой функции вызываешь get_string( "секция", "значение", "дефолт значение" ) --- это будет строчка из системного конфиг файла, для игры он делится на секции, а не на файлы, на файлы разделяют люди для удобства, потому тебе надо найти секцию с иммунитетами актора это [actor_immunities_gd_novice] если тебе новичок нужен и в ней значение burn_immunity то есть чтоб играла прочитала это значение надо задать get_string( "actor_immunities_gd_noviceve", "burn_immunity", "0,3" ) 1 Ссылка на комментарий
naxac 2 477 Опубликовано 29 Июля 2024 Поделиться Опубликовано 29 Июля 2024 (изменено) 28.07.2024 в 04:06, Labadal сказал: чтобы это значение "1", сохранялось в переменной, даже если я начну новую игру? Можно записывать переменные в файл (пример). Только для этого нужно в скриптах иметь рабочее пространство имён io. Если же io нет, то можно использовать разные "костыли" - например, создать специальный файл, в названии которого сохранять нужные данные (пример). Изменено 29 Июля 2024 пользователем naxac добавил примеры 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Labadal 68 Опубликовано 29 Июля 2024 Поделиться Опубликовано 29 Июля 2024 (изменено) с чем связан этот вылет? Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...:\sdk\level_editor\gamedata\scripts\xr_walker.script:49: attempt to index field 'move_mgr' (a nil value) помню, что в СДК игрался. Если в xr_walker на 48 строке вписать: get_console():execute(self.object:name()) получаю в лог: Unknown command: esc_lager1 Что за esc_lager1? upd: esc_lager1 это имя секции нпс. Но как он связан со всем этим? тем более всё работало до того. Если удалить этого нпс, то в консоль кидает: Unknown command: start_game_callback_called Изменено 29 Июля 2024 пользователем Labadal God save Hatsune Miku! Ссылка на комментарий
naxac 2 477 Опубликовано 30 Июля 2024 Поделиться Опубликовано 30 Июля 2024 6 часов назад, Labadal сказал: помню, что в СДК игрался Доигрался - виснет логика у нпс. Попробуй откатить изменения. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Labadal 68 Опубликовано 30 Июля 2024 Поделиться Опубликовано 30 Июля 2024 @naxac Да в том то и дело, что ничего такого критического не делал. откатывал, тоже ничего. Буду копать дальше, благодарю upd: взял чистые локации, загрузил кордон в сдк, удалил там всех нпс, в итоге получаю: start_game_callback_called. Можно как-то определить, в чём именно проблема. Из-за чего логика виснет, и тд? God save Hatsune Miku! Ссылка на комментарий
CiberZold 143 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @Labadal ну так посмотри в _g.script какие функции вызываются этой функцией start_game_callback(), и уже их в свою очередь просмотри, что гадать то. по умолчанию там точно должны быть task_manager.clear_task_manager() и dialog_manager.fill_phrase_table() вот тут и могут крыться проблемы с нпс. Ссылка на комментарий
Labadal 68 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @CiberZold ну, я их даже закомментил, всё так же God save Hatsune Miku! Ссылка на комментарий
CiberZold 143 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 1 час назад, Labadal сказал: я их даже закомментил а ты чем редактишь скрипты? Блокнотом? он имеет свойства ломать кодировку скриптов, нужен нормальный редактор в котором скрипты сохранять в ANSI кодировке или Win 1251 если ты пишешь скрипты с кириллицей, например комменты. Ссылка на комментарий
Labadal 68 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @CiberZold ой, я не такой извращенец, чтоб в блокноте кодить)) Саблайм 3)) Ну или нотпад на крайний случай) @naxac@CiberZold Смотрите, какая забавная вещь получается. Взял сейчас чистый ТЧ. Запустил - играбельно. Распаковал кордон, залез, внес кое-какие правки, для теста. сделал build (без ошибок), сделал xrAi с ключами -f -g -m -s, тоже без ошибок. Запускаю игру - опять получаю безлоговый вылет, сам лог файл так же заканчивается этим: Сервер: Старт... ! Unknown command: start_game_callback_called Так что дело вряд-ли в повиснутой логике (ну либо сдк её ломает). С чем может быть связано? God save Hatsune Miku! Ссылка на комментарий
CiberZold 143 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @Labadal у тебя пишет ! Unknown command ,такое обычно выдаёт если вносились правки в движок, либо в скриптах ошибка. Ссылка на комментарий
Labadal 68 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @CiberZold Unknown command - обычно пишет, когда ты записи в лог отправляешь. В данном случае "start_game_callback_called" отправляется функцией: function start_game_callback() printf ("start_game_callback called") ←←← вот эта вот строка task_manager.clear_task_manager() treasure_manager.clear_treasure_manager() xr_sound.clear_all_sound_object() dialog_manager.fill_phrase_table() end @Купер для ясности - распаковал ОРИГИНАЛЬНУЮ локацию, добавил на карту ОДИН ЭКЗОСКЕЛЕТ, сбилдил заново и собрал с помощью xrAI. После чего ловлю безлоговый вылет. Не думаю, что это правка как-то сильно повлияла на происходящее. God save Hatsune Miku! Ссылка на комментарий
CiberZold 143 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 1 час назад, Labadal сказал: собрал с помощью xrAI значит коряво собрал локацию, логику смотри - по твоим словам - единственная манипуляция распаковал Кордон (кордон рабочий ), собрал обратно - вылет (значит коряво собрал, или ошибка в тексте сборщика или сам сборщик косячный). Ссылка на комментарий
Labadal 68 Опубликовано 31 Июля 2024 Поделиться Опубликовано 31 Июля 2024 @CiberZold В том-то и дело, что со сборщиком всё нормально. Раньше ведь всё было норм. God save Hatsune Miku! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти