/* AMX Mod X * TripMine Laser Customizer * * http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community * * This file is provided as is (no warranties) */ #include #include #include #define PLUGIN "TripMine TeamColor" #define VERSION "0.1.1" #define AUTHOR "Gauss, PomanoB, KORD_12.7" new Array: g_Colors, g_CvarTripmineRender, g_CvarLaserColor, g_CvarLaserBrightness, g_IsRandomRGB, g_BrightCached, 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", "200") g_CvarTripmineRender = register_cvar("tripmine_render", "1") g_Colors = ArrayCreate(3) } 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) } public plugin_end() { ArrayDestroy(g_Colors) } public fw_TripmineSpawnPost(ent) { if(pev_valid(ent)) { new rgb[3] if(g_IsRandomRGB) { new id = pev(ent, pev_owner) if(pev_valid(id)) { new team = get_user_team(id) if(team==0) rgb = {0,255,0} if(team==1) rgb = {0,0,255} if(team==2) rgb = {255,0,0} } 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")) { static rgb[3]; ArrayGetArray(g_Colors, ent2, rgb) set_es(es, ES_RenderColor, rgb) set_es(es, ES_RenderAmt, g_BrightCached) set_es(es, ES_Body, 0) return FMRES_HANDLED } } } } return FMRES_IGNORED } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ fbidis\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang5121\\ f0\\ fs16 \n\\ par } */