mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-15 01:11:25 +00:00
122 lines
2.2 KiB
C
122 lines
2.2 KiB
C
// lua library for weapons
|
|
|
|
#include "g_lua.h"
|
|
|
|
#ifdef G_LUA
|
|
|
|
/***
|
|
A module for everything converning weapons.
|
|
@module weapons
|
|
*/
|
|
|
|
#include "g_weapon.h"
|
|
|
|
/***
|
|
Get the forward vector.
|
|
@function GetForward
|
|
@return Forward vector.
|
|
*/
|
|
static int weapon_GetForward(lua_State *L) {
|
|
Lua_PushVector(L, forward);
|
|
|
|
return 1;
|
|
}
|
|
|
|
/***
|
|
Get the right vector.
|
|
@function GetRight.
|
|
@return Right vector.
|
|
*/
|
|
static int weapon_GetRight(lua_State *L) {
|
|
Lua_PushVector(L, right);
|
|
|
|
return 1;
|
|
}
|
|
|
|
/***
|
|
Get the up vector.
|
|
@function GetUp
|
|
@return Up vector.
|
|
*/
|
|
static int weapon_GetUp(lua_State *L) {
|
|
Lua_PushVector(L, up);
|
|
|
|
return 1;
|
|
}
|
|
|
|
/***
|
|
Get the muzzle point.
|
|
@function GetMuzzle
|
|
@return Muzzle point.
|
|
*/
|
|
static int weapon_GetMuzzle(lua_State *L) {
|
|
Lua_PushVector(L, muzzle);
|
|
|
|
return 1;
|
|
}
|
|
|
|
/***
|
|
Do damage to an entity.
|
|
@function Damage
|
|
@param target Target entity.
|
|
@param inflictor Inflicting entity. Can be nil.
|
|
@param attacker Attacking entity. Can be nil.
|
|
@param dir Direction for knockback. Can be nil.
|
|
@param point Point. Can be nil.
|
|
@param damage Ammount of damage.
|
|
@param dflags Damage flags.
|
|
@param mod Means of death.
|
|
@return Success or failure.
|
|
*/
|
|
static int weapon_Damage(lua_State *L) {
|
|
lent_t* lent;
|
|
gentity_t* target = NULL;
|
|
gentity_t* inflictor = NULL;
|
|
gentity_t* attacker = NULL;
|
|
vec_t *dir, *point;
|
|
int damage, dflags, mod;
|
|
|
|
lent = Lua_GetEntity(L, 1);
|
|
if(lent == NULL || lent->e == NULL) {
|
|
lua_pushboolean(L, qfalse);
|
|
return 0;
|
|
}
|
|
target = Lua_GetEntity(L, 1)->e;
|
|
|
|
lent = Lua_GetEntity(L, 2);
|
|
if(lent != NULL && lent->e != NULL) {
|
|
inflictor = lent->e;
|
|
}
|
|
|
|
lent = Lua_GetEntity(L, 3);
|
|
if(lent != NULL && lent->e != NULL) {
|
|
attacker = lent->e;
|
|
}
|
|
|
|
dir = Lua_GetVector(L, 4);
|
|
point = Lua_GetVector(L, 5);
|
|
damage = (int)luaL_checknumber(L, 6);
|
|
dflags = (int)luaL_checknumber(L, 7);
|
|
mod = (int)luaL_checknumber(L, 8);
|
|
|
|
G_Damage(target, inflictor, attacker, dir, point, damage, dflags, mod);
|
|
|
|
lua_pushboolean(L, qtrue);
|
|
return 0;
|
|
}
|
|
|
|
static const luaL_Reg lib_weapons[] = {
|
|
{ "GetForward", weapon_GetForward },
|
|
{ "GetRight", weapon_GetRight },
|
|
{ "GetUp", weapon_GetUp },
|
|
{ "GetMuzzle", weapon_GetMuzzle },
|
|
{ "Damage", weapon_Damage },
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
int Luaopen_Weapons(lua_State *L) {
|
|
luaL_register(L, "weapons", lib_weapons);
|
|
|
|
return 1;
|
|
}
|
|
#endif
|