diff -r 20ff80421736 -r e4e366013e9a hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Jun 16 00:46:11 2013 +0400 +++ b/hedgewars/uScript.pas Mon Jun 17 16:56:58 2013 +0200 @@ -83,7 +83,8 @@ SDLh, SysUtils, uIO, - uPhysFSLayer + uPhysFSLayer, + typinfo ; var luaState : Plua_State; @@ -1285,6 +1286,64 @@ lc_endgame:= 0 end; +function lc_sendstat(L : Plua_State) : LongInt; Cdecl; +var statInfo : TStatInfoType; +var i : LongInt; +var color : shortstring; +begin + statInfo := TStatInfoType(GetEnumValue(TypeInfo(TStatInfoType),lua_tostring(L, 1))); + if (lua_gettop(L) <> 2) and ((statInfo <> siPlayerKills) + and (statInfo <> siClanHealth)) then + begin + LuaError('Lua: Wrong number of parameters passed to SendStat! Expected 2 parameters.'); + end + else if (lua_gettop(L) <> 3) and ((statInfo = siPlayerKills) + or (statInfo = siClanHealth)) then + begin + LuaError('Lua: Wrong number of parameters passed to SendStat! Expected 3 parameters.'); + end + else + begin + if ((statInfo = siPlayerKills) or (statInfo = siClanHealth)) then + begin + // 3: team name + for i:= 0 to Pred(TeamsCount) do + begin + with TeamsArray[i]^ do + begin + if TeamName = lua_tostring(L, 3) then + begin + color := uUtils.IntToStr(Clan^.Color); + Break; + end + end + end; + if (statInfo = siPlayerKills) then + begin + SendStat(siPlayerKills, color + ' ' + + lua_tostring(L, 2) + ' ' + TeamsArray[i]^.TeamName); + end + else if (statInfo = siClanHealth) then + begin + SendStat(siClanHealth, color + ' ' + + lua_tostring(L, 2)); + end + end + else + begin + SendStat(statInfo,lua_tostring(L, 2)); + end; + end; + lc_sendstat:= 0 +end; + +function lc_sendhealthstatsoff(L : Plua_State) : LongInt; Cdecl; +begin + L:= L; // avoid compiler hint + uStats.SendHealthStatsOn := false; + lc_sendhealthstatsoff:= 0 +end; + function lc_findplace(L : Plua_State) : LongInt; Cdecl; var gear: PGear; fall: boolean; @@ -2382,6 +2441,8 @@ lua_register(luaState, _P'WriteLnToConsole', @lc_writelntoconsole); lua_register(luaState, _P'GetGearType', @lc_getgeartype); lua_register(luaState, _P'EndGame', @lc_endgame); +lua_register(luaState, _P'SendStat', @lc_sendstat); +lua_register(luaState, _P'SendHealthStatsOff', @lc_sendhealthstatsoff); lua_register(luaState, _P'FindPlace', @lc_findplace); lua_register(luaState, _P'SetGearPosition', @lc_setgearposition); lua_register(luaState, _P'GetGearPosition', @lc_getgearposition);