Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 22.07.2008, 01:51   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Вопрос LUA and BMAX - проблема

Смотри, имеем:
Тип. Хороший такой тип, большой такой.

Type TypeMonster
Field script:TLuaScriptEngine

Method Update()
script.CallFunction("Update", True)
End Method

Function Create_Monster:TypeMonster ()
Local Monster:TypeMonster=New TypeMonster
Monster.script = LoadScript("1.lua")
End Function

End type
вот в чем проблема. имеем функцию, к примеру, такую:

Function Move(X:Float Var, y:Float Var, Speed:Float Var, Ang:Int Var)
X = X + (Speed * Cos(Ang))
Y = Y + (Speed * Sin(Ang))
End Function
Ее исспользую в типе монстра. Но надо как-то сделать так, чтобы через, допустим, команду в файле луа - MoveMonster() эта функция запускалась, но(!) ... Monster.script.addFunction(Move, "Move") не помогает. Ему не нравяться все "X:Float Var, y:Float Var, Speed:Float Var, Ang:Int Var" . Как правильно сделать, чтобы через файл луа запускалась эта функция? могу через жопу сделать, но не охото. Надо правильно.


еще проблема в том чтобы все данные из типа передавались в эту функцию.
Move(X, Y, Speed, Ang)
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 01:53   #2
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: LUA and BMAX - проблема

Я вот как думаю. Можно сделать так - запускаем функцию, которая записывает в массив номера. а каждый номер соответствует функции.
То есть через луа, чтобы запустить функцию move, мы записываем в массив в ячейку 0 цифру 1. потом уже, пи обновленнии монстра смотри какие ячейки с 1, а какие нет. смотрим в ячейку 0 - опа! цифра 1, запускаем move. только так думаю. как по-другому я не знаю...
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 01:58   #3
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: LUA and BMAX - проблема

И как, допустим, возвратить жизни монстра в луа? Ведь там нужна функция, а чтобы обратиться из функции к определенному типу, нужно смотреть все объекты... это через жопу. а выносить все поля в переменные... тоже через жопу
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 02:06   #4
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: LUA and BMAX - проблема

Так переделал как я писал выше. Только за место функции Move сделал точно такой же метод. И сделал специально функцию , которая ничего не делает, кроме как при вызове ставит в массиве циферку 1. Вроде работает. Нормально. Но все равно хотелось бы услышать как правильно...

И как быть с возвращением значения поля из типа в луа?
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 02:17   #5
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: LUA and BMAX - проблема

Type TypeMonster
Field script:TLuaScriptEngine
Fiels X:int , Y:int, Speed:int, Ang:int

Method Update()
script.CallFunction("Update", True)
End Method

Method Move()
X = X + (Speed * Cos(Ang))
Y = Y + (Speed * Sin(Ang))
End Method

Function Create_Monster:TypeMonster ()
Local Monster:TypeMonster=New TypeMonster
Monster.script = LoadScript("1.lua")
End Function

End type
вот код примерный. как запустить Move из луа?

Последний раз редактировалось Данил, 22.07.2008 в 02:34.
(Offline)
 
Ответить с цитированием
Старый 22.07.2008, 10:39   #6
jimon
 
Сообщений: n/a
Ответ: LUA and BMAX - проблема

в LuaScript есть метод AddFunction

я делал так :
Function Lua_L%(LuaVM:Byte Ptr)
Local str1$ = Lua.GetStringParam(1) ;ето мои методы для получения принимающих параметров
Local str2$ = Lua.GetStringParam(2)
Test_Log(str1,str2)
Return 0
End Function

Lua.AddFunction(lua_L,"L")
и потом в Lua скрипте просто вызывал L("1","2")
я почему-то сильно не уверен что можно запустить метод типа из скрипта

исходник - http://jimon.org/downloads/mmorpg.rar
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Данил (22.07.2008)
Старый 22.07.2008, 13:22   #7
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: LUA and BMAX - проблема

блин, как-то запускал метод из скрипта, не помню даже как. По началу по-моему флаг использовал из луа, типа такого
 if(Lua.GetIntVar("doItbaby")) then self.method()
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Данил (22.07.2008)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
b3d,xors,bmax NitE Xors3D 11 06.10.2009 14:51
SFE for BMAX Genius Модули для BlitzMax 3 12.04.2008 00:18
PHP Скрипты и BMax johnk FAQ и уроки 6 18.05.2007 16:44
насчет Bmax johnk Blitz3D 4 18.01.2007 16:12


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com