#include <amxmodx> #include <engine> #include <xs> new Float:g_fDelay[33] new g_ThermalOn[33] new sprite_blue new sprite_red new cvar_enable new cvar_maxdistance new cvar_updatedelay static const PLUGIN_NAME[] = "Thermal Imaging Goggle" static const PLUGIN_AUTHOR[] = "Cheap_Suit" static const PLUGIN_VERSION[] = "1.0" public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER) cvar_enable = register_cvar("amx_tig_enable", "1") cvar_maxdistance = register_cvar("amx_tig_distance", "1000") cvar_updatedelay = register_cvar("amx_tig_updatedelay", "0.2") register_event("NVGToggle", "Event_NVGToggle", "be") } public plugin_precache() { sprite_blue = precache_model("sprites/poison.spr") sprite_red = precache_model("sprites/explode1.spr") } public Event_NVGToggle(id) g_ThermalOn[id] = read_data(1) public client_PostThink(id) { if(!is_user_alive(id) || !g_ThermalOn[id] || !get_pcvar_num(cvar_enable)) return PLUGIN_CONTINUE if((g_fDelay[id] + get_pcvar_float(cvar_updatedelay)) > get_gametime()) return PLUGIN_CONTINUE g_fDelay[id] = get_gametime() new Float:fMyOrigin[3] entity_get_vector(id, EV_VEC_origin, fMyOrigin) new userteam = get_user_team(id) static Players[32], iNum get_players(Players, iNum, "a") for(new i = 0; i < iNum; ++i) if(id != Players[i]) { new target = Players[i] new Float:fTargetOrigin[3] entity_get_vector(target, EV_VEC_origin, fTargetOrigin) if((get_distance_f(fMyOrigin, fTargetOrigin) > get_pcvar_num(cvar_maxdistance)) || !is_in_viewcone(id, fTargetOrigin)) continue new Float:fMiddle[3], Float:fHitPoint[3] xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle) trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint) new Float:fWallOffset[3], Float:fDistanceToWall fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0 normalize(fMiddle, fWallOffset, fDistanceToWall) new Float:fSpriteOffset[3] xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset) new Float:fScale, Float:fDistanceToTarget = vector_distance(fMyOrigin, fTargetOrigin) if(fDistanceToWall > 100.0) fScale = 8.0 * (fDistanceToWall / fDistanceToTarget) else fScale = 2.0 if (userteam == 2 && get_user_team(target) == 2) te_sprite(id, fSpriteOffset, sprite_red, floatround(fScale), 125) else te_sprite(id, fSpriteOffset, sprite_blue, floatround(fScale), 125) } return PLUGIN_CONTINUE } stock te_sprite(id, Float:origin[3], sprite, scale, brightness) { message_begin(MSG_ONE, SVC_TEMPENTITY, _, id) write_byte(TE_SPRITE) write_coord(floatround(origin[0])) write_coord(floatround(origin[1])) write_coord(floatround(origin[2])) write_short(sprite) write_byte(scale) write_byte(brightness) message_end() } stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul) { new Float:fLen = xs_vec_len(fIn) xs_vec_copy(fIn, fOut) fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul }
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Znowu Termalne gogle :)
Temat rozp. Wizzardius, 11.07.2009 00:05
Brak odpowiedzi do tego tematu
#1
Napisano 11.07.2009 00:05
Mógłby mi ktoś przerobić ten plugin pod Zombie Plague żeby zombie widziały termalnie, ale żeby nie musiały miec na sobie noktowizora (bo na zombie plague, te gogle jakby nie odbieraja tej zombiackiej noktowizji ). A żeby CT z noktowizja czy bez - nie widzieli zadnych plam
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych