Скрипты |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Скрипты |
13.07.2009, 11:34
Сообщение
#221
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 |
FAQ Lua в X-Ray Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу: Код gamedata/scripts/lua_help.script Для получения файла надо распаковать игру. Можно скачать, в принципе Тут =>> Уроки Сообщение отредактировал RayTwitty - 09.06.2018, 20:23 -------------------- нарушение правил п. 7.2
|
 
|
|
|
|
14.11.2019, 18:09
Сообщение
#222
|
|
Pro gamer
Почти Игроман Репутация: 72 Группа: Участник Сообщений: 622 Регистрация: 05.11.2017 |
3) откуда растут ноги у скриптов сталкера? Какой скрипт вызывается самым первым? Что является началом работы скриптов? Я тоже задавался этим вопросом, но после анализа(возможно, плохого) исходников пришёл к выводу, что фактически ничего не является началом работы. Каждый скрипт уникален и не предполагает наличие соседей. При загрузки скрипта, чтобы не конфликтовали глобальные переменные, для содержимого(функций, глоб. переменных) создаётся отдельное пространство имён. Далее скрипт исполняется, при обращении к несуществующей на момент исполнения таблице, например, my_script, действия продолжаются рекурсивно. |
 
|
|
14.11.2019, 20:09
Сообщение
#223
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
2) как в луа работает система модулей и пакетов? В сталкерском луа вообще нет как таковых модулей и пакетов. Обращаемся сразу, никаких импортов, инклудов, запросов и т.д. С этим намного проще, чем в чистых языках. Сообщение отредактировал RayTwitty - 14.11.2019, 20:40 -------------------- |
 
|
|
14.11.2019, 20:41
Сообщение
#224
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Меня ещё удивил то факт, что можно обращаться к некоторым функциям, не указывая модуля, в котором они хранятся. Например, функция printf хранится в файле _g.script, а вызывать из других скриптов её можно так: printf(), а не так _g.printf(). Ещё видел другую функцию (не printf), которая так же использовалась.
-------------------- |
 
|
|
14.11.2019, 21:54
Сообщение
#225
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Меня ещё удивил то факт, что можно обращаться к некоторым функциям, не указывая модуля, в котором они хранятся. Это касается содержимого только _g скрипта. g - global -------------------- |
 
|
|
16.11.2019, 21:58
Сообщение
#226
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Продолжаю изучать луа. Кое что изучил, но всё равно не могу писать скрипты для сталкера. Какой способ изучения лучше всего выбрать, чтобы начать программировать для сталкера? Я пока думаю так:
1) читаю учебник "Программирование на языке Lua. Третье издание. (рус)" (ссылка в шапке данной темы), чтобы изучить чистый луа (без сталкеровских классов/функций) (или есть более полная/лучшая книга на русском?) 2) изучить стандартную библиотеку луа (на удивление она оказалась крошечной, по сравнению со стандартной библиотекой python) 3) как-то изучить сталкеровские функции/классы по lua_help.script Наверное, самое трудное - это 3 пункт. Так как информация в lua_help.script не многословная и в сети нету полной документации. Пока я остановился на первом пункте. И получилось сделать свой первый скрипт: Он считывает бинарные данные из dm файлов, помещает их в таблицу и печатает в консоль. Ещё пытался изучать скрипты от модов, но ничего не понял. Изучал nlc7 и удивился скриптам, а именно sak_dialog.script и sak.script. Эти скрипты имеют несколько тысяч строк кода. Один в 9 тысяч, другой в 11 тысяч. Как разработчики умудряются с такими скриптами работать? Я бы разделил бы их на куски по 100-500 строк. Наверняка диалоги можно было бы разбить по локациям. -------------------- |
 
|
|
17.11.2019, 11:47
Сообщение
#227
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Ещё пытался изучать скрипты от модов, но ничего не понял. А зачем моды, лучше с оригинала начать тогда. На АМК есть тема с разбором lua_help: В ней если не все описано, то очень многое. Цитата Изучал nlc7 и удивился скриптам, а именно sak_dialog.script и sak.script. Эти скрипты имеют несколько тысяч строк кода. Один в 9 тысяч, другой в 11 тысяч. Как разработчики умудряются с такими скриптами работать? Я бы разделил бы их на куски по 100-500 строк. Наверняка диалоги можно было бы разбить по локациям. Диалоги и так разбиты по локациям(config/gameplay/dialogs_*.xml), в скриптах вспомогательная обвязка. Из-за того, что в оригинале из диалога в скриптовую функцию нельзя передать аргументы, приходится плодить кучу функций, которые вызывают одну и ту же функцию, но с разными аргументами. А если делать какой-нибудь бартер/выбор награды/починку на диалогах, то количество скриптовых функций разрастается в геометрической прогрессии. Смысла разбивать диалоговые функции по разным файлам нет, и пишутся и читаются они наоборот: сначала диалог, потом функция. Точно также и функции для логики. |
 
|
|
17.11.2019, 14:10
Сообщение
#228
|
|
Pro gamer
Почти Игроман Репутация: 72 Группа: Участник Сообщений: 622 Регистрация: 05.11.2017 |
|
 
|
|
17.11.2019, 15:26
Сообщение
#229
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Pavel_Blend, может стоит сначала изучить файловую структуру игры? Не просто где конфиги и где скрипты, а более детально - диалоги, предметы, существа, UI, тексты и т.д. А по модам изучать смысла мало - как правило там лютый ахтунг, который только добавит вопросов.
-------------------- |
 
|
|
18.11.2019, 14:49
Сообщение
#230
|
|
Почти Игрок Репутация: 1 Группа: Участник Сообщений: 17 Награды: 1 Регистрация: 14.01.2013 |
Добрый день. Вопрос по поводу скриптов и аи-схем. Как определить, что НПС в определенный момент времени ведет огонь через менеджер состояний или другой метод?
|
 
|
|
18.11.2019, 23:50
Сообщение
#231
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Такой вопрос возник:
движок сталкера добавляет функции в луа, которые равноправны функциям из базовой библиотеки? То есть например, есть функции pairs, getmetatable, next, которые находятся в базовой библиотеке. И чтобы их вызвать, достаточно написать getmetatable(). Но есть функции, которые предоставляются другими библиотеками, доступ к которым осуществляется не просто find, а string.find или math.abs. То есть нужно писать имя библиотеки и ставить точку, после которой идёт имя функции. Так вот, движок сталкера добавляет функции в базовую библиотеку, и чтобы использовать эти функции, не нужно писать имя библиотеки и точку. Например, есть такие функции, как vector(). Я ведь всё правильно понял? Ну, что движок xray добавляет новые функции именно в базовую библиотеку. И ещё вопрос: есть ли у кого xml файл для Notepad++, который добавляет подсветку синтаксиса lua вместе со всеми сталкеровскими функциями? И чтобы сталкеровские функции были отличны по цвету от стандартных. Просто у меня не получается добавить новые ключевые слова в файл langs.xml. Notepad их просто игнорирует. Поэтому мне нужен отдельный xml файл с User Defined Language с описанием всего синтаксиса луа + сталкеровские функции. -------------------- |
 
|
|
18.11.2019, 23:58
Сообщение
#232
|
|
Pro gamer
Почти Игроман Репутация: 72 Группа: Участник Сообщений: 622 Регистрация: 05.11.2017 |
Ну, что движок xray добавляет новые функции именно в базовую библиотеку. Смысл верен, только всё немного не так: "регистрация" происходит не в "базовой библиотеке", а в глобальном пространстве имён "_G", т.е. вызывая string.find, ты фактически делаешь _G["string"].find. Луа проходится по таблице и ищет соответствующее пространство имён, в данном случае "string". |
 
|
|
19.11.2019, 00:02
Сообщение
#233
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
atanda, понятно. А для notepad++ ни кто не добавлял сталкеровские функции? Для новичков было бы удобнее. Так как большая часть кода в сталкере - это вызов функций, добавленных из движка.
-------------------- |
 
|
|
19.11.2019, 00:16
Сообщение
#234
|
|
Pro gamer
Почти Игроман Репутация: 72 Группа: Участник Сообщений: 622 Регистрация: 05.11.2017 |
|
 
|
|
19.11.2019, 00:16
Сообщение
#235
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Pavel_Blend,
Сообщение отредактировал abramcumner - 19.11.2019, 00:19 |
 
|
|
19.11.2019, 00:25
Сообщение
#236
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
abramcumner, по твоей ссылке есть только автозавершение и проверка синтаксиса. Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций.
-------------------- |
 
|
|
19.11.2019, 00:55
Сообщение
#237
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций. Такого вроде не существует. Единственное что я например делал, так это ассоциацию файлов .script с lua-синтаксисом (в оригинальном луа расширение .lua). Так вот, движок сталкера добавляет функции в базовую библиотеку, и чтобы использовать эти функции, не нужно писать имя библиотеки и точку. Например, есть такие функции, как vector(). Ну так самописный вектор они в глобальную загнали, поэтому нет никаких "библиотек". В луа/сталке тут более уместно пространства имен. Луа проходится по таблице и ищет соответствующее пространство имён, в данном случае "string". А еще, при однозначном определении типа, можно прям как в питоне вызывать напрямую)) Код local t = "lol"
t:find("kek") -------------------- |
 
|
|
19.11.2019, 08:28
Сообщение
#238
|
|
Pro gamer
Почти Игроман Репутация: 72 Группа: Участник Сообщений: 622 Регистрация: 05.11.2017 |
|
 
|
|
19.11.2019, 14:01
Сообщение
#239
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций. Такого вроде не существует. Единственное что я например делал, так это ассоциацию файлов .script с lua-синтаксисом (в оригинальном луа расширение .lua). а в каком текстовом редакторе есть возможность добавить новые ключевые слова в lua, чтобы они были произвольного цвета, отличного от цвета стандартных функций? И как получить список всех функций, которые добавил движок в луа сталкера? Я пробовал пройтись по значениям из _G таблицы, но в ней, помимо си++ функций есть обычные скрипты, стандартные луа функции и прочее. Единственный способ - это извлекать имена из lua_help.script? -------------------- |
 
|
|
19.11.2019, 21:29
Сообщение
#240
|
|
Продвинутый геймер Репутация: 51 Группа: Участник Сообщений: 489 Награды: 3 Регистрация: 12.11.2012 |
Получилось заставить Notepad++ читать более 4 наборов ключевых слов. Добавил ключевые слова из сталкеровского движка. Теперь они подсвечиваются розовым цветом. Но я не всё добавил. И так же добавилось кое-что лишнее. Например, функция printf. Она определена в файле _G.script и по идее не должна подсвечиваться розовым цветом. Как я узнал список ключевых слов: запустил игру и вызвал скрипт, который выводил в файл все ключи таблицы _G. Там много чего лишнего. А не добавились методы классов. На скриншоте видно, что слово object_binder подсвечено цветом, а net_spawn - нет. Нужно сделать подсветку метода net_spawn и всех других методов сталкеровских классов. Но вот как узнать список всех классов методов?
-------------------- |
 
|
|
19.11.2019, 23:06
Сообщение
#241
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Pavel_Blend, открой скрипт lua_help.script из оригинальной игры. Там будет всё то, что экспортируется из движка. Всё остальное создаётся напрямую в скриптах.
Ещё много полезного есть здесь - Сообщение отредактировал Shoкer - 19.11.2019, 23:09 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
Текстовая версия | Сейчас: 20.04.2024, 12:26 |