|
09.03.2011, 13:43
|
#1
|
|
API.Script + API.ScriptLua + OpenSource
Приветствую!
Вобсчем наконец дошли руки до легендарной ЛУА. =) Всем известно что в модуле BRL.MaxLua Марк как всегда поленился, и многих фишек в нем нет. Пришлось мне взятся за доработку... =))) В архиве два модуля API.Script - этот модуль является интерфейсным (справочным). И API.ScriptLua - это драйвер интерфейсного модуля реализующий его функционал при помощи скрипт-движка PUB.Lua, В него перенесен модуль BRL.MaxLua c некоторыми изменениями. Основные улучшения : 1) Возможность динамической догрузки/перегрузки чунков (порций кода). 2) Возможность загружать прекомпилированные байт-скрипты. 3) Возможность "опускания" аргументов вызываемых функций из скрипта. 4) Обьектно ориентированный интерфейс.
Модули пока что только тестируются, просьба сообщать о найденных багах.
ЗЫ Модули поставляются с полной русской справкой. установка : 1) Скомпилить модули. 2) Перекомпилить документацию. 3) Примеры прилагаются.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
09.03.2011, 13:50
|
#2
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от Diablo1909
2) Возможность загружать прекомпилированные байт-скрипты.
|
Разве этого нету в pub.lua?
3) Возможность "опускания" аргументов вызываемых функций из скрипта. 4) Обьектно ориентированный интерфейс.
|
Что за "опускание"? В чём выражается объектно-ориентированность интерфейса?
|
(Offline)
|
|
09.03.2011, 14:14
|
#3
|
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от baton4ik
Разве этого нету в pub.lua?
Что за "опускание"? В чём выражается объектно-ориентированность интерфейса?
|
Этого нету в BRL.MAXLua. Или же ты собрался в игровой движок юзать прямые функции LUA? тогда удачи!
'опускание аргументов' - это когда необязательно указывать аргумент вызываемой функции, в этом случае при числах подставится 0, при строках "", и при обьекте lua_nil.
OO-interface, мне ли это обьяснять? GO TO google->wikipedia
|
|
|
09.03.2011, 14:23
|
#4
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от Diablo1909
Этого нету в BRL.MAXLua. Или же ты собрался в игровой движок юзать прямые функции LUA? тогда удачи!
'опускание аргументов' - это когда необязательно указывать аргумент вызываемой функции, в этом случае при числах подставится 0, при строках "", и при обьекте lua_nil.
OO-interface, мне ли это обьяснять? GO TO google->wikipedia
|
Я знаком с привязкой lua к bm и pub.lua является полнее BRL.MAXLua. Там уже есть часть введенных тобою в BRL.MAXLua функций. Возможность загружать прекомпилированные байт-скрипты, например. Про "опускание" понял, в pub.lua это, по-моему, тоже есть.
Насчёт интерфейса я имел в виду кое-что другое, ну да неважно.
|
(Offline)
|
|
09.03.2011, 14:27
|
#5
|
|
Ответ: API.Script + API.ScriptLua + OpenSource
А какой БМакс? я делал на 1.39, таких фючер в МаксЛуа в этой версии не было...
|
|
|
09.03.2011, 14:30
|
#6
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Тоже 1.39
Посмотри pub.lua
|
(Offline)
|
|
09.03.2011, 14:38
|
#7
|
|
Ответ: API.Script + API.ScriptLua + OpenSource
понял к чему ты клонишь...
Я же думаю что при двиготеле-строении проще записать так :
script:TScript = LoadScript("script.lua")
script.Execute("Init")
чем так :
lua_loadstring(LoadText("Script.lua").ToCString())
lua_ref(LUA_STATE...,...)
...
бла...бла...бла
Это п во первых.
Во вторых, в случае какой либо ошибки - ловить ее заипешся.
|
|
|
Сообщение было полезно следующим пользователям:
|
|
09.03.2011, 14:47
|
#8
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сложность запуска - мелочи жизни, я считаю. К тому же ты всё усложнил:
Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)
Отлов ошибок - это да, плюс.
|
(Offline)
|
|
09.03.2011, 14:54
|
#9
|
|
Ответ: API.Script + API.ScriptLua + OpenSource
А если файл скрипта лежит в PAK-архиве? То твой метод не подойдет.
|
|
|
09.03.2011, 15:05
|
#10
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
А предложенный тобой подойдёт. Никаких проблем
|
(Offline)
|
|
09.03.2011, 15:07
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от baton4ik
Сложность запуска - мелочи жизни, я считаю. ....
|
Не думаю что мелочи, как раз удобство и лаконичность кода - залог организованности кода и его читабельности, что улучшает производительность разработки и удобство поддержки в будущем.
|
(Offline)
|
|
09.03.2011, 15:11
|
#12
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от MoKa
Не думаю что мелочи, как раз удобство и лаконичность кода - залог организованности кода и его читабельности, что улучшает производительность разработки и удобство поддержки в будущем.
|
Согласен, однако тут речь идёт о небольшой разнице.
Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)
Разве сложно?
|
(Offline)
|
|
09.03.2011, 15:20
|
#13
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
Сообщение от baton4ik
Согласен, однако тут речь идёт о небольшой разнице.
Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)
Разве сложно?
|
Не читабелен вообще.
Для меня так:
Объявляем переменную LuaState с неопределённой кучей данных внутри.
Назначаем новый объект (состояния?).
Открываем библиотеки, зачем там стейты, хз.
Как понял, выполняет фаил, по пути, хз что с состоянием.
Тут же:
script:TScript = LoadScript("script.lua")
script.Execute("Init")
Всё эллементарно просто. Грузится скрипт из файла, и запускается функция Init.
|
(Offline)
|
|
09.03.2011, 15:28
|
#14
|
|
Ответ: API.Script + API.ScriptLua + OpenSource
2baton4ik сложности появятся когда кода будет побольше, чем 4 строчки.
|
|
|
09.03.2011, 15:33
|
#15
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: API.Script + API.ScriptLua + OpenSource
2MoKa, для меня читабелен. Ну да ладно, это уже Марка ругать надо.
2Diablo1909, http://forum.boolean.name/showthread.php?t=14085
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:56.
|