# HG changeset patch # User smaxx # Date 1285184848 -7200 # Node ID 60d9709f2d8e50e73aca6c1b3dbfccb06e862cb8 # Parent e4b7b30232fd7c800fa2fa11def6dcb5d1cfbf87 Engine: * New Lua script call: GetGearMessage(gear : integer) : integer - retrieves gear's "message" parameter (can be used with flags like gm_Left or gm_Attack (logic AND) to check for player input; untested!) diff -r e4b7b30232fd -r 60d9709f2d8e hedgewars/uScript.pas --- a/hedgewars/uScript.pas Wed Sep 22 01:09:40 2010 -0400 +++ b/hedgewars/uScript.pas Wed Sep 22 21:47:28 2010 +0200 @@ -246,6 +246,25 @@ lc_getgeartype:= 1 end; +function lc_getgearmessage(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetGearMessage!'); + lua_pushnil(L); // return value on stack (nil) + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + lua_pushinteger(L, gear^.message) + else + lua_pushnil(L); + end; + lc_getgearmessage:= 1 +end; + function lc_gethoglevel(L : Plua_State): LongInt; Cdecl; var gear : PGear; begin @@ -1019,6 +1038,23 @@ ScriptSetInteger('gfDisableGirders', gfDisableGirders); ScriptSetInteger('gfExplosives', gfExplosives); +ScriptSetInteger('gm_Left', gm_Left); +ScriptSetInteger('gm_Right', gm_Right); +ScriptSetInteger('gm_Up', gm_Up); +ScriptSetInteger('gm_Down', gm_Down); +ScriptSetInteger('gm_Switch', gm_Switch); +ScriptSetInteger('gm_Attack', gm_Attack); +ScriptSetInteger('gm_LJump', gm_LJump); +ScriptSetInteger('gm_HJump', gm_HJump); +ScriptSetInteger('gm_Destroy', gm_Destroy); +ScriptSetInteger('gm_Slot', gm_Slot); +ScriptSetInteger('gm_Weapon', gm_Weapon); +ScriptSetInteger('gm_Timer', gm_Timer); +ScriptSetInteger('gm_Animate', gm_Animate); +ScriptSetInteger('gm_Precise', gm_Precise); +ScriptSetInteger('gmAllStoppable', gmAllStoppable); + + // speech bubbles ScriptSetInteger('SAY_SAY', 1); ScriptSetInteger('SAY_THINK', 2); @@ -1080,6 +1116,7 @@ lua_register(luaState, 'HogTurnLeft', @lc_hogturnleft); lua_register(luaState, 'CampaignLock', @lc_campaignlock); lua_register(luaState, 'CampaignUnlock', @lc_campaignunlock); +lua_register(luaState, 'GearGetMessage', @lc_getgearmessage); ScriptClearStack; // just to be sure stack is empty