forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Модули для BlitzMax (http://forum.boolean.name/forumdisplay.php?f=105)
-   -   API.Script + API.ScriptLua + OpenSource (http://forum.boolean.name/showthread.php?t=14385)

Черный крыс 09.03.2011 13:43

API.Script + API.ScriptLua + OpenSource
 
Вложений: 1
Приветствую!

Вобсчем наконец дошли руки до легендарной ЛУА. =) Всем известно что в модуле BRL.MaxLua Марк как всегда поленился, и многих фишек в нем нет. Пришлось мне взятся за доработку... =))) В архиве два модуля API.Script - этот модуль является интерфейсным (справочным). И API.ScriptLua - это драйвер интерфейсного модуля реализующий его функционал при помощи скрипт-движка PUB.Lua, В него перенесен модуль BRL.MaxLua c некоторыми изменениями. Основные улучшения : 1) Возможность динамической догрузки/перегрузки чунков (порций кода). 2) Возможность загружать прекомпилированные байт-скрипты. 3) Возможность "опускания" аргументов вызываемых функций из скрипта. 4) Обьектно ориентированный интерфейс.

Модули пока что только тестируются, просьба сообщать о найденных багах.

ЗЫ Модули поставляются с полной русской справкой. установка : 1) Скомпилить модули. 2) Перекомпилить документацию. 3) Примеры прилагаются.

baton4ik 09.03.2011 13:50

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от Diablo1909 (Сообщение 182044)
2) Возможность загружать прекомпилированные байт-скрипты.

Разве этого нету в pub.lua?

Цитата:

3) Возможность "опускания" аргументов вызываемых функций из скрипта. 4) Обьектно ориентированный интерфейс.
Что за "опускание"? В чём выражается объектно-ориентированность интерфейса?

Черный крыс 09.03.2011 14:14

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от baton4ik (Сообщение 182045)
Разве этого нету в pub.lua?



Что за "опускание"? В чём выражается объектно-ориентированность интерфейса?

Этого нету в BRL.MAXLua. Или же ты собрался в игровой движок юзать прямые функции LUA? тогда удачи!

'опускание аргументов' - это когда необязательно указывать аргумент вызываемой функции, в этом случае при числах подставится 0, при строках "", и при обьекте lua_nil.

OO-interface, мне ли это обьяснять? GO TO google->wikipedia

baton4ik 09.03.2011 14:23

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от Diablo1909 (Сообщение 182048)
Этого нету в BRL.MAXLua. Или же ты собрался в игровой движок юзать прямые функции LUA? тогда удачи!

'опускание аргументов' - это когда необязательно указывать аргумент вызываемой функции, в этом случае при числах подставится 0, при строках "", и при обьекте lua_nil.

OO-interface, мне ли это обьяснять? GO TO google->wikipedia

Я знаком с привязкой lua к bm и pub.lua является полнее BRL.MAXLua. Там уже есть часть введенных тобою в BRL.MAXLua функций. Возможность загружать прекомпилированные байт-скрипты, например. Про "опускание" понял, в pub.lua это, по-моему, тоже есть.
Насчёт интерфейса я имел в виду кое-что другое, ну да неважно.

Черный крыс 09.03.2011 14:27

Ответ: API.Script + API.ScriptLua + OpenSource
 
А какой БМакс? я делал на 1.39, таких фючер в МаксЛуа в этой версии не было...

baton4ik 09.03.2011 14:30

Ответ: API.Script + API.ScriptLua + OpenSource
 
Тоже 1.39
Посмотри pub.lua

Черный крыс 09.03.2011 14:38

Ответ: API.Script + API.ScriptLua + OpenSource
 
понял к чему ты клонишь...

Я же думаю что при двиготеле-строении проще записать так :

script:TScript = LoadScript("script.lua")

script.Execute("Init")

чем так :

lua_loadstring(LoadText("Script.lua").ToCString())
lua_ref(LUA_STATE...,...)
...
бла...бла...бла

Это п во первых.
Во вторых, в случае какой либо ошибки - ловить ее заипешся.

baton4ik 09.03.2011 14:47

Ответ: API.Script + API.ScriptLua + OpenSource
 
Сложность запуска - мелочи жизни, я считаю. К тому же ты всё усложнил:
Код:

Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)


Отлов ошибок - это да, плюс.

Черный крыс 09.03.2011 14:54

Ответ: API.Script + API.ScriptLua + OpenSource
 
А если файл скрипта лежит в PAK-архиве? То твой метод не подойдет.

baton4ik 09.03.2011 15:05

Ответ: API.Script + API.ScriptLua + OpenSource
 
А предложенный тобой подойдёт. Никаких проблем :)

moka 09.03.2011 15:07

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от baton4ik (Сообщение 182055)
Сложность запуска - мелочи жизни, я считаю. ....

Не думаю что мелочи, как раз удобство и лаконичность кода - залог организованности кода и его читабельности, что улучшает производительность разработки и удобство поддержки в будущем.

baton4ik 09.03.2011 15:11

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от MoKa (Сообщение 182061)
Не думаю что мелочи, как раз удобство и лаконичность кода - залог организованности кода и его читабельности, что улучшает производительность разработки и удобство поддержки в будущем.

Согласен, однако тут речь идёт о небольшой разнице.
Код:

Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)

Разве сложно?

moka 09.03.2011 15:20

Ответ: API.Script + API.ScriptLua + OpenSource
 
Цитата:

Сообщение от baton4ik (Сообщение 182063)
Согласен, однако тут речь идёт о небольшой разнице.
Код:

Global LuaState:Byte Ptr
LuaState = luaL_newstate()
luaL_openlibs(LuaState)
lua_dofile(LuaState, path)

Разве сложно?

Не читабелен вообще.
Для меня так:
Объявляем переменную LuaState с неопределённой кучей данных внутри.
Назначаем новый объект (состояния?).
Открываем библиотеки, зачем там стейты, хз.
Как понял, выполняет фаил, по пути, хз что с состоянием.

Тут же:
Код:

script:TScript = LoadScript("script.lua")
script.Execute("Init")

Всё эллементарно просто. Грузится скрипт из файла, и запускается функция Init.

Черный крыс 09.03.2011 15:28

Ответ: API.Script + API.ScriptLua + OpenSource
 
2baton4ik сложности появятся когда кода будет побольше, чем 4 строчки.

baton4ik 09.03.2011 15:33

Ответ: API.Script + API.ScriptLua + OpenSource
 
2MoKa, для меня читабелен. Ну да ладно, это уже Марка ругать надо.
2Diablo1909, http://forum.boolean.name/showthread.php?t=14085


Часовой пояс GMT +4, время: 11:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot