www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Вы не поверите, но LUA Wrapper для Blitz3D (http://forum.boolean.name/showthread.php?t=15493)

Randomize 16.09.2011 01:44

Вы не поверите, но LUA Wrapper для Blitz3D
 
Вложений: 1
Никто не ждал такого поворота. Немцы такие Немцы. Запилили целый враппер Lua. Вот это да!

Соус: http://www.blitzforum.de/forum/viewtopic.php?t=30995
Долго втуплял как жеж оно работает и в итоге немного понял.
Работает через очень хитро закрученную задницу, но работает :D
Значит что в архиве:
Цитата:

Lua_Wrapper.dll - Главная DLL
Lua_Wrapper.decls - ну тут понятно
Lua_Include.bb - вызывать Include в самом самом начале файла
Lua.bb - мой тестик (зря его я так назвал)
script.txt - скриптик к моему тестику :3
Внимание! Класс опастности 9 из 10.
Для неподготовленного новичка эта штука не подходит. Копипастой тут всё не сделаешь.

Все справки что у нас есть: http://www.blitzforum.de/forum/viewtopic.php?t=30995
Переводить лучше на английский, а то на русском не ясно ни зги.

Спасибо за внимание. И да, не оффтопим особо, ок?

Blitz3D Lua wrapper script download engine torrent b3d hight speed decls premium without sms ну ты выдал нахнагель дядька марк не прогадал

ffinder 16.09.2011 17:17

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
так по немецки я почти не понимаю, а твой пример еще не посмотрел, есть непонятное:
1. можно ли из луа-кода вызывать функции блица?
2. можно ли из блица вызывать луа-код?

Черный крыс 16.09.2011 21:13

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Ндя...Вот только зачем скриповичку скриптовичок ???

ffinder 16.09.2011 21:31

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от Diablo1909 (Сообщение 202501)
Ндя...Вот только зачем скриповичку скриптовичок ???

лол, где ты у блица скриптовый язык увидел?

Randomize 16.09.2011 21:41

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Diablo наверное считает, что Blitz3D не компилится (ну в смысле полноценно)
Типа внутри exe исходник и интерпретатор.

Черный крыс 17.09.2011 05:07

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Не совсем так...
Blitz3D переводит исходный текст в машинный код... но извините меня, это каждый нормальный скрипт-движок умеет.
Blitz3D - это скриптовичок. В ексе он не пакует свой транслятор и виртуальную машину, а отсюда вытекает невозможность компилить исходники на лету.

А что такого удивительного в том что ЛУА завраплен в Б3Д ??? Скачал исходники ЛУА написал ДЛЛ с интерфейсными функциями по стандарту C_call, обьявил эти функции в decls и вперед писать скрипты...

С таким же успехом можно саму ЛУА заврапить в ЛУУ.

ИМХО - абсолютно бесполезный враппер. Внутри яичка должен быть желток, а тут получается внутри яйца еще одно яйцо...

IGR 17.09.2011 06:36

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от ffinder (Сообщение 202487)
так по немецки я почти не понимаю, а твой пример еще не посмотрел, есть непонятное:
1. можно ли из луа-кода вызывать функции блица?
2. можно ли из блица вызывать луа-код?

это врядли !!
Враппер же..

Randomize 17.09.2011 07:22

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от ffinder (Сообщение 202487)
так по немецки я почти не понимаю, а твой пример еще не посмотрел, есть непонятное:
1. можно ли из луа-кода вызывать функции блица?

Да

Цитата:

Сообщение от ffinder (Сообщение 202487)
2. можно ли из блица вызывать луа-код?

Да

Любой вызов происходит и туда и обратно, но через хитровыкрученый зад.

Цитата:

Сообщение от Diablo1909 (Сообщение 202511)
желток, а тут получается внутри яйца еще одно яйцо...

Да ты за###. Нахрен скрипты вообще нужны? Чтоб левел дизайнеры, просто дизайнеры и прочие товарищи не лезли в работу программиста. Пускай дизайнер в своей папочке настраивает партиклы, пускай художник в своей папочке назначает шрифты, цвета для контролов. Или ты предлагаешь каждый раз пересобирать ради этого exe? Крутой подход. Вот скажи своему дизайнеру (а он есть?) поставить себе вижуал студию чтоб цвет кнопочек менять. И как он на тебя посмотрит? Ему лучше тупым блокнотом открывать луашки.

radiobutton 17.09.2011 08:21

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Код:

Function Lua_UserFunction()
        L = Lua_GetCurrentState()

        FuncName$ = Lua_ToString( L, 1 )

        Select FuncName$
        Case "Print"
                Print Lua_ToString( L, 2 )
        End Select
 End Function

Непойму чем это отличается от того, что если бы ты сам разложил строчку "print "Hello World"" на составляющие. ?

Randomize 17.09.2011 08:39

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от radiobutton (Сообщение 202521)
Код:

Function Lua_UserFunction()
        L = Lua_GetCurrentState()

        FuncName$ = Lua_ToString( L, 1 )

        Select FuncName$
        Case "Print"
                Print Lua_ToString( L, 2 )
        End Select
 End Function

Непойму чем это отличается от того, что если бы ты сам разложил строчку "print "Hello World"" на составляющие. ?

Ннна линейкой по пальцам! Бегом читать про Lua.
Хотя ладно, давай я тебе разжую. Допустим у нас есть такой луа код:
PHP код:

x1 150
y2 
350
265
x1 
cos(a) * 33
x2 
sin(a) * 33
CallFunction
"Print""Position: "+x1+","+x2 

Парсерка твоя не отвалится?
Понял к чему я веду? Дак вот Lua - это скриптовый язык со всем вытекающим. На нём можно писать в прямом смысле слова.

ffinder 17.09.2011 08:44

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от Diablo1909 (Сообщение 202511)
Blitz3D переводит исходный текст в машинный код... но извините меня, это каждый нормальный скрипт-движок умеет.
Blitz3D - это скриптовичок. В ексе он не пакует свой транслятор и виртуальную машину, а отсюда вытекает невозможность компилить исходники на лету.

какую виртуальную машину, бро? они нужны для исполнения байт-кода, а в блице3д ты сам признаешь - код уже машинный.
короче, выдыхай.

Цитата:

Сообщение от Diablo1909 (Сообщение 202511)
Внутри яичка должен быть желток

внутри яичка, (мы рассматриваем яичко в норме, без патологий), должна быть строма и паренхима. если там желток, то это - птичье яйцо.

radiobutton 17.09.2011 08:46

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от Randomize (Сообщение 202524)
Ннна линейкой по пальцам! Бегом читать про Lua.
Хотя ладно, давай я тебе разжую. Допустим у нас есть такой луа код:
PHP код:

x1 150
y2 
350
265
x1 
cos(a) * 33
x2 
sin(a) * 33
CallFunction
"Print""Position: "+x1+","+x2 

Парсерка твоя не отвалится?
Понял к чему я веду? Дак вот Lua - это скриптовый язык со всем вытекающим. На нём можно писать в прямом смысле слова.

а..
я просто попробовал
CallFunction( "a=175")
и в блице создал переменную a.
и она не изменилась. =)

Надеюсь этот скриптовый язык работает с такой же скоростью, как если бы писать команды на блице.

Randomize 17.09.2011 08:51

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Ещё семпл:
PHP код:

Include "Lua_Include.bb"

Local L LuaL_NewState()
LuaL_OpenLibs(L)
Lua_InitInterface(L"CallFunction")

Local Status LuaL_LoadFile(L"Beispiel.lua")
If 
Status Then RuntimeError("Error while loading script!" Chr(10) + Lua_ToString(L1))

Status Lua_PCall(L000) ;WichtigScript vor den Funktionsaufrufen mindestens einmal ausfьhrendamit die Funktionsnamen registriert werden
If Status Then RuntimeError("Error while executing script!" Chr(10) + Lua_ToString(L1))


Lua_GetGlobal(L"TestFunktion1") ;Funktion auf den Stack bringen
Lua_PushNumber
(L42) ;Erstes  Argument auf den Stack
Lua_PushNumber
(L25) ;Zweites Argument auf den Stack

Lua_PCall
(L210) ;Die erste Funktion mit zwei Argumenten aufrufen und nur einen Rьckgabewert akzeptieren

Local ReturnValue 
Lua_ToNumber(L, -1) ;Rьckgabewert vom Stack holen

Print("TestFunktion1(42, 25): " ReturnValue)

Lua_Pop(L1) ;Rьckgabewert lцschen und Stack in den Originalzustand zurьckfьhren




Lua_GetGlobal
(L"TestFunktion2")
Lua_PCall(L0LUA_MULRET0) ;Zweite Funktion ohne Argumente aufrufen und beliebig viele Rьckgabewerte akzeptieren

;Rьckgabewerte sind in "direct order" auf dem Stackd.hletzter Rьckgabewert liegt zuoberst
Local ReturnValue3
# = Lua_ToNumber(L, -1)
Local ReturnValue2$ = Lua_ToString(L, -2)
Local ReturnValue1  Lua_ToNumber(L, -3)

Print(
"TestFunktion2(): " ReturnValue1 ", " ReturnValue2 ", " ReturnValue3)

Lua_Pop(L3) ;Rьckgabewerte lцschen und Stack in den Originalzustand zurьckfьhren

Lua_Close
(L)
WaitKey()
End

Function Lua_UserFunction()
End Function 

Beispiel.lua
PHP код:

function TestFunktion1(AB
   return 

end 

function TestFunktion2() 
   return 
1337"Hello World!"3.1415926 
end 

Сори за неметску жзяцлю. И почему они не пишут по английски...

И чего я так пыжусь по поводу этого луа? Он же мне нафиг не нужен. Откуда эта ответственность за эту тему...

impersonalis 17.09.2011 10:45

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Цитата:

Сообщение от Diablo1909 (Сообщение 202511)
Не совсем так...
Blitz3D переводит исходный текст в машинный код... но извините меня, это каждый нормальный скрипт-движок умеет.
Blitz3D - это скриптовичок. В ексе он не пакует свой транслятор и виртуальную машину, а отсюда вытекает невозможность компилить исходники на лету.

А что такого удивительного в том что ЛУА завраплен в Б3Д ??? Скачал исходники ЛУА написал ДЛЛ с интерфейсными функциями по стандарту C_call, обьявил эти функции в decls и вперед писать скрипты...

С таким же успехом можно саму ЛУА заврапить в ЛУУ.

ИМХО - абсолютно бесполезный враппер. Внутри яичка должен быть желток, а тут получается внутри яйца еще одно яйцо...

Попахивает полной мешаниной из терминов.

IgorOK 18.09.2011 21:17

Ответ: Вы не поверите, но LUA Wrapper для Blitz3D
 
Это конечно круто, но поздновато. Я уж для себя свой скриптовик написал.:-D


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

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