« Previous entry | Next entry » Browse > Bad code

Skip to comments (3) lua module
Posted by Futaba on Jun 22 2009 @ 22:18  :: 644 unique visits

{Текущий этап -
функция GEtPos - проблема с указателем на GLscene1















}
unit LuaEngine;

interface
uses GLScene, lua, lualib, lauxlib, Dialogs,sysutils;

type
TGLuaEngine = class
private

public
constructor Create(Owner: TObject);
function luaExec(Str: PAnsiChar):boolean;
function PushScene(Scene: TGLSCene):boolean;
end;


var luaVM:Plua_State;
SceneObjects: TGLScene;

implementation

function TGLuaEngine.luaExec(Str: PAnsiChar):boolean;
begin
 try
   lua_dofile(luaVM,Str);//Выполняем то что передано в строке
   Result:=true;
 except
   Result:=false;
 end;

end;

function TGLuaEngine.PushScene(Scene: TGLScene):boolean;
begin
try
SceneObjects:=Scene;
except
Exit;
end;
end;

function kill_player(lua_VM:Plua_State):Integer; cdecl; //ЭТО ПРОСТО ТЕСТ ФУНКЦИЯ
var O_name: string;
X, Y: single;
begin
///O_name:=lua_tostring(lua_VM, 1); //Принимаем первый аргумент
X:=lua_tonumber(lua_VM, 1); //Принимаем второй аргумент
Y:=lua_tonumber(lua_VM, 2); //Принимаем третий аргумент
///Form1.GLScene1.FindSceneObject(O_name).Position.X:=X; //Устанавливаем объекту позицию по Х
///Form1.GLScene1.FindSceneObject(O_name).Position.Z:=Z; //Устанавливаем объекту позицию по Z
ShowMessage('Lua Func is complited with: ' +floattostr(X)+', ' + floattostr(Y) );
//lua_pushnumber(luaVM, 0.005); //Отправляем в стек lua значение
Result:= 1; //Помечаем, что был отправлен в стек только 1 результат
end;

function GetPos(lua_VM:Plua_State):Integer; cdecl;
var O_name: string;
X, Y, Z: single;
begin
O_name:=lua_tostring(lua_VM, 1); //Принимаем первый аргумент
//X:=lua_tonumber(lua_VM, 2); //Принимаем второй аргумент
//Y:=lua_tonumber(lua_VM, 3); //Принимаем третий аргумент
//Z:=lua_tonumber(lua_VM, 4); //Принимаем fourth аргумент
try
X:=SceneObjects.FindSceneObject(O_name).Position.X; //Устанавливаем объекту позицию по Х
Y:=SceneObjects.FindSceneObject(O_name).Position.Y; //Устанавливаем объекту позицию по Х
Z:=SceneObjects.FindSceneObject(O_name).Position.Z; //Устанавливаем объекту позицию по Х
except
ShowMessage('Object not found!');
end;
///Form1.GLScene1.FindSceneObject(O_name).Position.Z:=Z; //Устанавливаем объекту позицию по Z

ShowMessage(O_name + ': ' +floattostr(X)+', ' + floattostr(Y)+', ' + floattostr(Z) );
//lua_pushnumber(luaVM, 0.005); //Отправляем в стек lua значение
Result:= 1; //Помечаем, что был отправлен в стек только 1 результат
end;

constructor TGLuaEngine.Create(Owner: TObject);
begin
   luaVM:=lua_open;
 if (lua_open=nil)then Showmessage('Ошибка запуска Lua!');
   luaL_openlibs(luaVM);
   //registering lua functions
   lua_register(luaVM, pchar('kill_player'), kill_player);
   lua_register(luaVM, pchar('GetPos'), GetPos);
   end;



end.

3 comments posted so far
Add your own »

1. On Jul 14 2009 @ 03:57 guest wrote:

buy wow gold
my wow power leveling
buy wow gold
good wow power leveling
BUY wow gold
my wow power leveling
CHEAP rs gold
cheap wow power leveling
CHEAPEST lotro gold
MY aion gold
buy wow gold
cheap wow gold
CHEAPEST wow gold

3. On Jan 05 2010 @ 15:23 uggbaileybutton wrote:

bailey button uggs

-ugg boots cheap

ugg boots uk

ugg classic

Add a new comment

Name:
Password: (leave empty for anonymous comment)
 
View formatting tags Comment: