From bf75fbf690318d8a4b67c73564728579ff21f589 Mon Sep 17 00:00:00 2001 From: Marrub Date: Thu, 12 Mar 2015 05:00:45 -0400 Subject: [PATCH] why not --- dlls/gslua.cpp | 12 +++++++++++- dlls/gslua.h | 5 +++-- dlls/singleplay_gamerules.cpp | 17 +++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/dlls/gslua.cpp b/dlls/gslua.cpp index 7018349..89c3f98 100755 --- a/dlls/gslua.cpp +++ b/dlls/gslua.cpp @@ -281,12 +281,22 @@ struct PLAYER_s *PLAYER_New(CBasePlayer *pPlayer) luaL_getmetatable(g_L, "PLAYER_s"); lua_setmetatable(g_L, -2); - player->ply = pPlayer; player->pev = pPlayer->pev; return player; } +struct PLAYER_s *PLAYER_New(entvars_t *pev) +{ + struct PLAYER_s *player = (struct PLAYER_s *)lua_newuserdata(g_L, sizeof(struct PLAYER_s)); + luaL_getmetatable(g_L, "PLAYER_s"); + lua_setmetatable(g_L, -2); + + player->pev = pev; + + return player; +} + static struct PLAYER_s *PLAYER_Get(lua_State *L) { struct PLAYER_s *player; diff --git a/dlls/gslua.h b/dlls/gslua.h index dbc9057..5b2ea02 100755 --- a/dlls/gslua.h +++ b/dlls/gslua.h @@ -9,12 +9,12 @@ struct gsLuaRun_s { BOOL LRUN_CHLR_PLAYER_SPAWN = TRUE, - LRUN_CHLR_PLAYER_THINK = TRUE; + LRUN_CHLR_PLAYER_THINK = TRUE, + LRUN_CHLR_PLAYER_KILLED = TRUE; }; struct PLAYER_s { - CBasePlayer *ply; entvars_t *pev; }; @@ -23,6 +23,7 @@ extern BOOL g_bLuaInitialized; extern struct gsLuaRun_s g_gsLuaRun; struct PLAYER_s *PLAYER_New(CBasePlayer *pPlayer); +struct PLAYER_s *PLAYER_New(entvars_t *pev); void LuaInit(void); void LuaQuit(void); diff --git a/dlls/singleplay_gamerules.cpp b/dlls/singleplay_gamerules.cpp index fb7d849..bfd8d62 100644 --- a/dlls/singleplay_gamerules.cpp +++ b/dlls/singleplay_gamerules.cpp @@ -196,6 +196,23 @@ int CHalfLifeRules :: IPointsForKill( CBasePlayer *pAttacker, CBasePlayer *pKill //========================================================= void CHalfLifeRules :: PlayerKilled( CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor ) { + if(g_gsLuaRun.LRUN_CHLR_PLAYER_KILLED) + { + BOOL bRun; + bRun = LuaGet("GAME", LUA_TTABLE, FALSE, FALSE); + if(bRun) bRun = LuaGet("PlayerKilled", LUA_TFUNCTION, TRUE, FALSE); + if(bRun) + { + PLAYER_New(pVictim); + PLAYER_New(pKiller); + PLAYER_New(pInflictor); + LuaCall("GAME.PlayerKilled"); + } + else + { + g_gsLuaRun.LRUN_CHLR_PLAYER_KILLED = FALSE; + } + } } //=========================================================