Hali.
Ez a plugin mit csinál azon kívül, hogy lézer.
/* AMX Mod X
* TripMine Laser Customizer
*
*
* This file is provided as is (no warranties)
*/
#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>
#define PLUGIN "TripMine Laser Customizer"
#define VERSION "0.1.1"
#define AUTHOR "PomanoB, KORD_12.7"
new
Array: g_Colors,
g_CvarTripmineRender,
g_CvarLaserColor,
g_CvarLaserBrightness,
g_CvarLaserNoise,
g_IsRandomRGB,
g_BrightCached,
g_NoiseCached,
g_RGB[3]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("tripmine_custom", VERSION, FCVAR_SPONLY | FCVAR_SERVER | FCVAR_UNLOGGED)
register_forward(FM_AddToFullPack, "fwdAddToFullPack", 1)
RegisterHam(Ham_Spawn, "monster_tripmine", "fw_TripmineSpawnPost", 1)
g_CvarLaserColor = register_cvar("tripmine_laser_color", "random")
g_CvarLaserBrightness = register_cvar("tripmine_laser_brightness", "128")
g_CvarLaserNoise = register_cvar("tripmine_laser_noise", "1")
g_CvarTripmineRender = register_cvar("tripmine_render", "1")
g_Colors = ArrayCreate(8)
}
public plugin_cfg()
{
new color[16]
get_pcvar_string(g_CvarLaserColor, color, charsmax(color))
if(equali(color, "random"))
{
g_IsRandomRGB = 1
new i, maxEnt = global_get(glb_maxEntities)
for(i = 0; i < maxEnt; i++)
ArrayPushArray(g_Colors, {0, 0, 0})
}
else
{
g_IsRandomRGB = 0
new r[4], g[4], b[4]; trim(color)
parse(color, r, charsmax(r), g, charsmax(g), b, charsmax(b))
g_RGB[0] = str_to_num(r)
g_RGB[1] = str_to_num(g)
g_RGB[2] = str_to_num(b)
}
g_BrightCached = get_pcvar_num(g_CvarLaserBrightness)
g_NoiseCached = get_pcvar_num(g_CvarLaserNoise)
}
public plugin_end()
{
ArrayDestroy(g_Colors)
}
public fw_TripmineSpawnPost(ent)
{
if(pev_valid(ent))
{
new rgb[3]
if(g_IsRandomRGB)
{
rgb[0] = random_num(0, 255)
rgb[1] = random_num(0, 255)
rgb[2] = random_num(0, 255)
ArraySetArray(g_Colors, ent, rgb)
}
else
{
rgb[0] = g_RGB[0]
rgb[1] = g_RGB[1]
rgb[2] = g_RGB[2]
}
if(get_pcvar_num(g_CvarTripmineRender))
fm_set_rendering(ent, kRenderFxGlowShell, rgb[0], rgb[1], rgb[2], kRenderNormal, 16)
}
return HAM_IGNORED
}
public fwdAddToFullPack(es, e, ent, host, flags, player, set)
{
if(pev_valid(ent))
{
static classname[32]
pev(ent, pev_classname, classname, charsmax(classname))
if(equali(classname, "beam"))
{
static ent2
ent2 = pev(ent, pev_skin)
if(pev_valid(ent2))
{
pev(ent2, pev_classname, classname, charsmax(classname))
if(equali(classname, "monster_tripmine"))
{
if(g_IsRandomRGB)
{
static rgb[3]; ArrayGetArray(g_Colors, ent2, rgb)
set_es(es, ES_RenderColor, rgb)
}
else
set_es(es, ES_RenderColor, g_RGB)
set_es(es, ES_RenderAmt, g_BrightCached)
set_es(es, ES_Body, g_NoiseCached)
return FMRES_HANDLED
}
}
}
}
return FMRES_IGNORED
}