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/
Desertir 202 Опубликовано 11 Августа 2014 Поделиться Опубликовано 11 Августа 2014 @Nazgool, да, мы идем разными путями к одному и тому же. Я поэтому и спросил, зачем читать их динамически? Вопрос был не "Зачем список clsid'ов?", а "Зачем читать статические данные из скриптов?". Важен академический интерес? Хорошо, но ИМХО этот способ применять в конечном продукте я бы не стал. 2 причины, подключение X-Ray Extensions и мы все равно не видим список, визуально, да, для кода задача решена, но для программиста какие ключи писать не ясно. Да, можно вывести в лог или еще что-нибудь, но тогда придется их куда то записать. И лично моя причина, читать так чтото из длл - жесть, для этого и существует hex редакторы. Но ладно. Так еще то вопрос у меня был, что с clsid'ами объявленными в скриптах, а не в движке? Есть вариант (может работает, а может и нет, так что без кода), подмена функции метатаблицы __newindex на свою с вызовом старой, в своей написать добавление этого ключа в некую глобальную таблицу, только надо найти место, где переопределять это дело. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-869573
Charsi 441 Опубликовано 11 Августа 2014 Поделиться Опубликовано 11 Августа 2014 Проще всего посмотреть список ключей в исходниках движка. Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-869662
Andrey07071977 18 Опубликовано 11 Августа 2014 Поделиться Опубликовано 11 Августа 2014 Nazgool Сам по себе список не имеет ни какого смысла. Если уже охота попрактиковться в бинарных извращенях то составь табличку соответствий ключей к числовым констатам Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-869702
Nazgool 251 Опубликовано 12 Августа 2014 Поделиться Опубликовано 12 Августа 2014 (изменено) Andrey07071977 Не знаю что дальше хочешь делать, А почему я это написал? а дальше уже просто Я думаю составить таблицы соответствия из уже имеющегося списка ключей абсолютно не сложно. Если я ещё и это сделаю, то что останется вопрошающему? И ещё. Я никого не заставляю пользоваться этим. Одному это жесть, другому извращения. Это одна из техник! Изменено 12 Августа 2014 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-869865
Andrey07071977 18 Опубликовано 12 Августа 2014 Поделиться Опубликовано 12 Августа 2014 Nazgool, доведи дело до конца, неужели самому не интесно сделать полностью динамическое и функциональное заполнение таблички, как говориться on demand. Про извращения это была шутка вызванная восхищением твоей упертости Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-869933
Zander_driver 10 348 Опубликовано 13 Августа 2014 Поделиться Опубликовано 13 Августа 2014 Ну в моем конкретном случае составлять соответствие числовых значений - уже лишнее.Мне собственно требовалось написать аналог функций IsStalker, IsWeapon, ... etc из _g.script. и для тех объектов, которые мне нужны, надо было найти как их звать по клсиду) В случае скриптово-добавленных клсидов их можно просто в class_registrator-e посмотреть. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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/290/#findComment-870241
Andrey07071977 18 Опубликовано 14 Августа 2014 Поделиться Опубликовано 14 Августа 2014 Дело твое конечно, но не совсем понятна твоя цель - если ты хочешь написать аналог функций IsStalker, IsWeapon то тебе нужны именно числовые значения, если же просто по числу найти название, так это и так можно сделать по уже имеющимся табличкам. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870244
Nazgool 251 Опубликовано 14 Августа 2014 Поделиться Опубликовано 14 Августа 2014 (изменено) составь табличку соответствий ключей к числовым констатам А чего там составлять? Заменить в коде elseif #key>0 then if clsid[key] then t[#t+1] = key end на elseif #key>0 then local k = clsid[key] if k then t[key] = k t[k] = key end и получиться таблица вида : { строка = число, число = строка, ... } и так будет для каждого поля из clsid. Т.е. обращаться к ней можно будет и по строке и по номеру. сделать полностью динамическое и функциональное заполнение таблички Насколько я понял по условию, никакой динамики и не нужно. Просто необходим список и всё. Читать его один раз при загрузке - много времени не займёт. Вроде так? Изменено 14 Августа 2014 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870395
Zander_driver 10 348 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 Дело твое конечно, но не совсем понятна твоя цель - если ты хочешь написать аналог функций IsStalker, IsWeapon то тебе нужны именно числовые значения, если же просто по числу найти название, так это и так можно сделать по уже имеющимся табличкам. Учитывая что в моем моде клсиды добавляются так же и через скрипты, и, разработка еще в процессе - могут и еще новые классы добавиться. А числовые значения при этом смещаются. И да, экспериментальным путем выяснилось, что то, что мы добавляем в class_registrator-e, добавляется вовсе не в конец списка clsid. Я так понимаю добавленные следуют за своими родителями. А все последующие в списке - смещаются. И потому даже числовые значения классов, прописанных в движке, уже не соответствуют "имеющимся табличкам". Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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/290/#findComment-870606
Kondr48 314 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 Доброго времени суток Вопрос такой, товарищи модмейкеры, как сохранить некую переменную с числовым значением для определенного предмета? Допустим есть пять разных предметов одной секции, и вот у этих пяти предметов эта переменная может быть разной. Интересует процесс сохранения и загрузки такой переменной и что для этого нужно. (вроде называется сохранить в pstor предмета?) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870671
Zander_driver 10 348 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 , У инвентарных предметов нет пстора, насколько я помню. для них удобнее пользоваться кастом-датой их нет-пакета. см. модуль Артоса для работы с нет-пакетами, хотя ему вроде есть и другие аналоги. 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/290/#findComment-870693
Kondr48 314 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 Zander_driver, а чуть подробнее можно?) Потому как с такой темой столкнулся впервые и где этот модуль взять/посмотреть примеры работы, а тем более аналоги я даже не знаю) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870705
svarog2741 83 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 как запретить использование предмета без другого Ну например консервы без специального ножа не открыть ? НС - шлак, солянки - шлак. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870793
Zander_driver 10 348 Опубликовано 16 Августа 2014 Поделиться Опубликовано 16 Августа 2014 (изменено) Ну для этого надо 3 вещи. 1. отловить факт того, что предмет попытались использовать (use_collback, тут все просто)2. проверить наличие другого предмета. тоже все просто. if db.actor:object("ваш_консервный_нож") ~= nil then и так далее. 3. если второго предмета нет, то спавнить первый обратно. а если есть, то выполнять то, что должно свершиться от применения первого. И выполнять скриптово, потому что первый объект на самом деле был безвозвратно съеден в первом пункте и на этот факт никак не повлиять. Изменено 16 Августа 2014 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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/290/#findComment-870796
AndreySol 215 Опубликовано 17 Августа 2014 Поделиться Опубликовано 17 Августа 2014 (изменено) @Zander_driver, 1. отловить факт того, что предмет попытались использовать (use_collback, тут все просто) Может я не прав, но use_collback вроде извещает о том что уже было сделано, а не о попытке это сделать ? В результате вашим способом получится на мой взгляд коряво - к примеру, если съедание консервы прибавляет здоровья, то когда съели - здоровье прибавилось, затем оказалось что консервного ножа нет, вернули консерву обратно в инвентарь, а затем надо мудрить с отниманием той прибавки к здоровью, что дало съедание этой консервы. как запретить использование предмета без другого А если близко к тексту, именно "запретить" - то можно попытаться покопать в сторону фейковых объектов. Примерно так: все консервы, в момент открытия инвентаря, подменять на фейковые, созданные на родительской секции како-го либо предмета, который можно только выбросить. Открывашку же сделать как-раз "съедобной" (заменив текст подсказки на "Открыть..."), и при ее "съедании" - создавать скриптовое окно, в которое выводить список фейковых консерв, и после выбора нужной, удалять ее из инвентаря, спаунить вместо нее уже нормальную, съедобную консерву и соответственно открывашку обратно. В результате появится уже типа открытая консерва, которую можно съесть стандартно и получить нужный эффект, и готовый к дальнейшему использованию консервный нож. - вообще насчет консервы пример глуповат - имея нож как одно из оружий, не открыть им консерву... - для вскрытых банок можно текстурки использовать соответствующие, для пущей достоверности... - и сделать, чтоб содержимое вскрытой банки протухало по-быстрому, опять-же для пущей достоверности... И вообще - все это извращение... Изменено 17 Августа 2014 пользователем AndreySol 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870895
Zander_driver 10 348 Опубликовано 17 Августа 2014 Поделиться Опубликовано 17 Августа 2014 Может я не прав, но use_collback вроде извещает о том что уже было сделано, а не о попытке это сделать ? Да, о том что уже сделано. Если прочитать весь мой пост, становится ясно почему я назвал это "попыткой". @svarog2741, Все данные вам ответы, как мои так и Dennis_Chikin-a, относятся к Оригинальной игре. При достаточном желании и навыках работы с скриптами, реализовать чтобы именно так все выглядело для игрока - не сложно. Но метод непрост, и новичку маловероятно его осилить. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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/290/#findComment-870933
Dennis_Chikin 3 665 Опубликовано 17 Августа 2014 Поделиться Опубликовано 17 Августа 2014 (изменено) Ну, так уж "непрост"... Листнуть 4 страницы назад - не такое уж и непосильное дело. Да и на сталкер-вики сходить - не велик подвиг. Изменено 17 Августа 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-870939
Kondr48 314 Опубликовано 21 Августа 2014 Поделиться Опубликовано 21 Августа 2014 Раньше где-то на форуме я видел функцию, которая округляла число, например, до десятитысячных, найти что-то не могу ее, потому вопрос:Как можно округлять числа до десятитысячных, тысячных и сотых? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-871941
Charsi 441 Опубликовано 22 Августа 2014 Поделиться Опубликовано 22 Августа 2014 , можно округлить в помощью string.format, например, так: print(string.format("%.2f", math.pi)) --> 3.14 print(string.format("%.3f", math.pi)) --> 3.142 print(string.format("%.4f", math.pi)) --> 3.1416 1 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-872045
Kirgudu 1 338 Опубликовано 22 Августа 2014 Поделиться Опубликовано 22 Августа 2014 , или так: function round(num, idx) local coeff = 10^(idx or 0) return math.floor(num*coeff+0.5)/coeff end где num - округляемое число, idx - порядковый номер знака после запятой, до которого следует округлить, включая 0 для округления до целого.Но если необходимо предусмотреть округление в том числе и до какого-либо старшего знака в целой части, тогда нужна доработка. 1 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/290/#findComment-872072
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти