Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт 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

Для получения файла надо распаковать игру. Можно скачать, в принципе smile.gif Тут =>>Ссылко<<=
Уроки

Пример создания непися скриптами ЛУА. Автор: меченый(стрелок)
Скриптинг на инсайде



Сообщение отредактировал RayTwitty - 09.06.2018, 20:23


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
15 страниц V  « < 10 11 12 13 14 > »   
Начать новую тему
Ответов
atanda
сообщение 14.11.2019, 18:09
Сообщение #222
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 14.11.2019, 17:07) *
3) откуда растут ноги у скриптов сталкера? Какой скрипт вызывается самым первым? Что является началом работы скриптов?

Я тоже задавался этим вопросом, но после анализа(возможно, плохого) исходников пришёл к выводу, что фактически ничего не является началом работы. Каждый скрипт уникален и не предполагает наличие соседей. При загрузки скрипта, чтобы не конфликтовали глобальные переменные, для содержимого(функций, глоб. переменных) создаётся отдельное пространство имён. Далее скрипт исполняется, при обращении к несуществующей на момент исполнения таблице, например, my_script, действия продолжаются рекурсивно.
Перейти в начало страницы
 
RayTwitty
сообщение 14.11.2019, 20:09
Сообщение #223


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Награды: 9
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 14.11.2019, 17:07) *
2) как в луа работает система модулей и пакетов?

В сталкерском луа вообще нет как таковых модулей и пакетов. Обращаемся сразу, никаких импортов, инклудов, запросов и т.д. С этим намного проще, чем в чистых языках.

Сообщение отредактировал RayTwitty - 14.11.2019, 20:40


--------------------
Перейти в начало страницы
 
Pavel_Blend
сообщение 14.11.2019, 20:41
Сообщение #224


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Меня ещё удивил то факт, что можно обращаться к некоторым функциям, не указывая модуля, в котором они хранятся. Например, функция printf хранится в файле _g.script, а вызывать из других скриптов её можно так: printf(), а не так _g.printf(). Ещё видел другую функцию (не printf), которая так же использовалась.


--------------------
Перейти в начало страницы
 
RayTwitty
сообщение 14.11.2019, 21:54
Сообщение #225


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Награды: 9
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 14.11.2019, 20:37) *
Меня ещё удивил то факт, что можно обращаться к некоторым функциям, не указывая модуля, в котором они хранятся.

Это касается содержимого только _g скрипта. g - global


--------------------
Перейти в начало страницы
 
Pavel_Blend
сообщение 16.11.2019, 21:58
Сообщение #226


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Продолжаю изучать луа. Кое что изучил, но всё равно не могу писать скрипты для сталкера. Какой способ изучения лучше всего выбрать, чтобы начать программировать для сталкера? Я пока думаю так:

1) читаю учебник "Программирование на языке Lua. Третье издание. (рус)" (ссылка в шапке данной темы), чтобы изучить чистый луа (без сталкеровских классов/функций) (или есть более полная/лучшая книга на русском?)

2) изучить стандартную библиотеку луа (на удивление она оказалась крошечной, по сравнению со стандартной библиотекой python)

3) как-то изучить сталкеровские функции/классы по lua_help.script

Наверное, самое трудное - это 3 пункт. Так как информация в lua_help.script не многословная и в сети нету полной документации.

Пока я остановился на первом пункте. И получилось сделать свой первый скрипт:
https://github.com/PavelBlend/stalker-lua-s...r/dm_reader.lua

Он считывает бинарные данные из dm файлов, помещает их в таблицу и печатает в консоль.

Ещё пытался изучать скрипты от модов, но ничего не понял. Изучал nlc7 и удивился скриптам, а именно sak_dialog.script и sak.script. Эти скрипты имеют несколько тысяч строк кода. Один в 9 тысяч, другой в 11 тысяч. Как разработчики умудряются с такими скриптами работать? Я бы разделил бы их на куски по 100-500 строк. Наверняка диалоги можно было бы разбить по локациям.


--------------------
Перейти в начало страницы
 
abramcumner
сообщение 17.11.2019, 11:47
Сообщение #227


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 16.11.2019, 21:54) *
Ещё пытался изучать скрипты от модов, но ничего не понял.

А зачем моды, лучше с оригинала начать тогда.
На АМК есть тема с разбором lua_help: https://www.amk-team.ru/forum/topic/7450-sp...iyam-i-klassam/
В ней если не все описано, то очень многое.

Цитата
Изучал nlc7 и удивился скриптам, а именно sak_dialog.script и sak.script. Эти скрипты имеют несколько тысяч строк кода. Один в 9 тысяч, другой в 11 тысяч. Как разработчики умудряются с такими скриптами работать? Я бы разделил бы их на куски по 100-500 строк. Наверняка диалоги можно было бы разбить по локациям.

Диалоги и так разбиты по локациям(config/gameplay/dialogs_*.xml), в скриптах вспомогательная обвязка. Из-за того, что в оригинале из диалога в скриптовую функцию нельзя передать аргументы, приходится плодить кучу функций, которые вызывают одну и ту же функцию, но с разными аргументами. А если делать какой-нибудь бартер/выбор награды/починку на диалогах, то количество скриптовых функций разрастается в геометрической прогрессии. Смысла разбивать диалоговые функции по разным файлам нет, и пишутся и читаются они наоборот: сначала диалог, потом функция. Точно также и функции для логики.

Перейти в начало страницы
 
atanda
сообщение 17.11.2019, 14:10
Сообщение #228
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 16.11.2019, 21:54) *
Изучал nlc7 и удивился скриптам, а именно sak_dialog.script и sak.script

Вполне возможно, что alpet'ом была написана на дельфях утилита для создания диалогов и в ней можно было бы писать экшены, а потом утилита сама записывала функции в файлик.
Перейти в начало страницы
 
RayTwitty
сообщение 17.11.2019, 15:26
Сообщение #229


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Награды: 9
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Pavel_Blend, может стоит сначала изучить файловую структуру игры? Не просто где конфиги и где скрипты, а более детально - диалоги, предметы, существа, UI, тексты и т.д. А по модам изучать смысла мало - как правило там лютый ахтунг, который только добавит вопросов.


--------------------
Перейти в начало страницы
 
Gaz24
сообщение 18.11.2019, 14:49
Сообщение #230


Почти Игрок
**

Репутация:   1  
Группа: Участник
Сообщений: 17
Награды: 1
Регистрация: 14.01.2013




Вставить ник Цитировать выделенное в форуму быстрого ответа


Добрый день. Вопрос по поводу скриптов и аи-схем. Как определить, что НПС в определенный момент времени ведет огонь через менеджер состояний или другой метод?
Перейти в начало страницы
 
Pavel_Blend
сообщение 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 с описанием всего синтаксиса луа + сталкеровские функции.


--------------------
Перейти в начало страницы
 
atanda
сообщение 18.11.2019, 23:58
Сообщение #232
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 18.11.2019, 23:46) *
Ну, что движок xray добавляет новые функции именно в базовую библиотеку.

Смысл верен, только всё немного не так: "регистрация" происходит не в "базовой библиотеке", а в глобальном пространстве имён "_G", т.е. вызывая string.find, ты фактически делаешь _G["string"].find. Луа проходится по таблице и ищет соответствующее пространство имён, в данном случае "string".
Перейти в начало страницы
 
Pavel_Blend
сообщение 19.11.2019, 00:02
Сообщение #233


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


atanda, понятно. А для notepad++ ни кто не добавлял сталкеровские функции? Для новичков было бы удобнее. Так как большая часть кода в сталкере - это вызов функций, добавленных из движка.


--------------------
Перейти в начало страницы
 
atanda
сообщение 19.11.2019, 00:16
Сообщение #234
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Примерно так:

или создавать свои файлы синтаксиса.
Перейти в начало страницы
 
abramcumner
сообщение 19.11.2019, 00:16
Сообщение #235


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Pavel_Blend, https://ap-pro.ru/forum/105-10388-1

Сообщение отредактировал abramcumner - 19.11.2019, 00:19
Перейти в начало страницы
 
Pavel_Blend
сообщение 19.11.2019, 00:25
Сообщение #236


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


abramcumner, по твоей ссылке есть только автозавершение и проверка синтаксиса. Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций.


--------------------
Перейти в начало страницы
 
RayTwitty
сообщение 19.11.2019, 00:55
Сообщение #237


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Награды: 9
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Pavel_Blend @ 19.11.2019, 00:21) *
Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций.

Такого вроде не существует. Единственное что я например делал, так это ассоциацию файлов .script с lua-синтаксисом (в оригинальном луа расширение .lua).

Цитата(Pavel_Blend @ 18.11.2019, 23:46) *
Так вот, движок сталкера добавляет функции в базовую библиотеку, и чтобы использовать эти функции, не нужно писать имя библиотеки и точку. Например, есть такие функции, как vector().

Ну так самописный вектор они в глобальную загнали, поэтому нет никаких "библиотек". В луа/сталке тут более уместно пространства имен.

Цитата(atanda @ 18.11.2019, 23:54) *
Луа проходится по таблице и ищет соответствующее пространство имён, в данном случае "string".

А еще, при однозначном определении типа, можно прям как в питоне вызывать напрямую))
Код
local t = "lol"
t:find("kek")


--------------------
Перейти в начало страницы
 
atanda
сообщение 19.11.2019, 08:28
Сообщение #238
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(RayTwitty @ 19.11.2019, 00:51) *
можно прям как в питоне вызывать напрямую

Это больше похоже на синтаксический сахар. rolleyes.gif
Перейти в начало страницы
 
Pavel_Blend
сообщение 19.11.2019, 14:01
Сообщение #239


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(RayTwitty @ 19.11.2019, 00:51) *
Цитата(Pavel_Blend @ 19.11.2019, 00:21) *
Мне нужна подсветка синтаксиса сталкеровских функций. Только нужно, чтобы цвет отличался от стандартных функций.

Такого вроде не существует. Единственное что я например делал, так это ассоциацию файлов .script с lua-синтаксисом (в оригинальном луа расширение .lua).

а в каком текстовом редакторе есть возможность добавить новые ключевые слова в lua, чтобы они были произвольного цвета, отличного от цвета стандартных функций? И как получить список всех функций, которые добавил движок в луа сталкера? Я пробовал пройтись по значениям из _G таблицы, но в ней, помимо си++ функций есть обычные скрипты, стандартные луа функции и прочее. Единственный способ - это извлекать имена из lua_help.script?


--------------------
Перейти в начало страницы
 
Pavel_Blend
сообщение 19.11.2019, 21:29
Сообщение #240


Продвинутый геймер
********

Репутация:   51  
Группа: Участник
Сообщений: 489
Награды: 3
Регистрация: 12.11.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Получилось заставить Notepad++ читать более 4 наборов ключевых слов. Добавил ключевые слова из сталкеровского движка. Теперь они подсвечиваются розовым цветом. Но я не всё добавил. И так же добавилось кое-что лишнее. Например, функция printf. Она определена в файле _G.script и по идее не должна подсвечиваться розовым цветом. Как я узнал список ключевых слов: запустил игру и вызвал скрипт, который выводил в файл все ключи таблицы _G. Там много чего лишнего. А не добавились методы классов. На скриншоте видно, что слово object_binder подсвечено цветом, а net_spawn - нет. Нужно сделать подсветку метода net_spawn и всех других методов сталкеровских классов. Но вот как узнать список всех классов методов?


--------------------
Перейти в начало страницы
 
Shoкer
сообщение 19.11.2019, 23:06
Сообщение #241


Кандидат Игровых Наук
******************

Репутация:   2153  
Группа: Участник
Сообщений: 3488
Награды: 4
Регистрация: 27.07.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Pavel_Blend, открой скрипт lua_help.script из оригинальной игры. Там будет всё то, что экспортируется из движка. Всё остальное создаётся напрямую в скриптах.
Ещё много полезного есть здесь - https://www.amk-team.ru/forum/topic/7450-sp...iyam-i-klassam/ , хотя писалось достаточно давно, ещё до исходников движка.

Сообщение отредактировал Shoкer - 19.11.2019, 23:09


--------------------
Мне просто нравятся синие буквы под сообщением.
Перейти в начало страницы
 

15 страниц V  « < 10 11 12 13 14 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.03.2024, 12:04