forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   C++ to Макс (http://forum.boolean.name/showthread.php?t=4468)

elmortem 16.09.2007 22:00

C++ to Макс
 
Есть такой вот кусок кода на С++ по созданию луа-библиотеки из набора функций.
Код:

luaL_Reg _gamelib[] = {
                {"new", le_game_new},
          {"quit", le_game_quit},
                {"trigger", le_game_trigger},
                {"quest", le_game_quest},
                {"setmod", le_game_setmod},
                {"pause", le_game_pause},
                {"addwall", le_game_addwall},
                {"speed", le_game_speed},
                {NULL, NULL}};

Не подскажете ли, как перевести его на Макс? Все мои попытки оказались тщетными... ):
Заранее спасибо.

dimanche13 16.09.2007 22:07

Re: C++ to Макс
 
не знаю, но может так...
Код:

Local _gamelib:luaL_Reg[] = [["new", le_game_new], ... ]

elmortem 16.09.2007 22:11

Re: C++ to Макс
 
Забыл уточнить. Сам тип описан как:
Код:

extern
  type lua_Reg
    field name:byte ptr                                        ' no ~0 expected
    field func:int(ls:byte ptr)
  end type
end extern

dimanche13
Это было первое, что я попробовал. У меня не заработало...

P.S. Харе уже отвечать типа "Может так, но я сам не знаю". Меньше флейма - больше инфы! (:

dimanche13 16.09.2007 22:35

Re: C++ to Макс
 
Цитата:

Сообщение от elmortem
P.S. Харе уже отвечать типа "Может так, но я сам не знаю". Меньше флейма - больше инфы! (:

Харе орать-то) Что мне в голову пришло, я и написал. Проверить-то негде

Код:

function luaL_register (lua_state:byte ptr, libname$z, l:lua_Reg ptr)

elmortem 16.09.2007 22:40

Re: C++ to Макс
 
Да я ж не ору, прошу. (:
А-то поиском потом столько хрени найти можно... (:

А функция, которую ты привёл как раз и принимает уже готовый массив. Но его сначала нужно создать и заполнить. Но у меня прога валится на доступе к нулевому элементу массива и показыват, что все элементы массива - нули. чзх? ):

elmortem 17.09.2007 02:15

Re: C++ to Макс
 
Плюнул на эту неблагодарную затею и портировал функцию регистрации своей луа-библиотеки на Макс. Так что скрипты пашут теперь в полную силу...
Типа тема закрыта. (:

dimanche13 17.09.2007 12:00

Re: C++ to Макс
 
Погоди плевать-то))) смотри:
Код:

Type TA
        Field name:String
        Field num:Int
End Type

Function Create:TA(name:String , num:Int)
        Local T:TA = New TA
        T.name = name
        T.num = num
        Return T
End Function       

Local array:TA[] = [ Create("A" , 1) , Create("B" , 2)]

во как я исхитрился.

elmortem 17.09.2007 12:34

Re: C++ to Макс
 
Там фишка в екстерне. Т.е. для екстерновых типов нужно писать свои new и delete. На С++. (:
А потом ещё лезут всякие косяки с памятью.
Мне стало проще написать свой класс CLuaReg, пихать его в TList, а затем отдавать в свою функцию регистрации луа-библиотеки, полностью портированную на Макс из исходников Lua.
Так что пофиг, всё работает. (:

dimanche13 17.09.2007 12:38

Re: C++ to Макс
 

Ну ты хитёр))) ты уже наверное половину ЛУА функций переделал...
стало быть тема закрыта. Когда будет новая версия?

elmortem 18.09.2007 23:34

Re: C++ to Макс
 
Да нет, пока вроде только одну функцию "экстернул" и одну портировал. (:
Луа вообще мне идеологически не нравится. Этот его долбаный стек - бррр... Быстро, конечно, но чертовски неудобно. ):

Завтра релиз моей шароварки, после релиза будет много работы. Так что с новой версий х3 когда теперь...


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

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