#include <amxmodx> #include <engine> #include <xs> new Float:g_fDelay[33] new g_ThermalOn[33] new sprite_playerheat 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_playerheat = precache_model("sprites/poison.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) 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 te_sprite(id, fSpriteOffset, sprite_playerheat, 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
Termalne google
Temat rozp. Wizzardius, 10.07.2009 11:02
6 odpowiedzi w tym temacie
#1
Napisano 10.07.2009 11:02
Przerobi mi ktoś te google? Bo teraz Każdego Widzi sie na niebiesko, a ja chce żeby TT patrząc przez nie, widzi swoich (czyli TT) na czerwono a CT standardowo na niebiesko.
#2
Napisano 10.07.2009 11:28
sprite sprites/poison.spr to właśnie jest taka niebieska chmurka, więc jeżeli chciałbyś inny kolor to potrzebujesz innego sprite'a
poza tym tylko terro ma widzieć terro na czerwono czy ct też ma ich tak widzieć ?
poza tym tylko terro ma widzieć terro na czerwono czy ct też ma ich tak widzieć ?
#3
Napisano 10.07.2009 11:56
Coś mi sie zdaje że nie znajde czerwonego sprita Dobra to już nie chce przeróbek, ale powiedz mi czy ta niebieska plamka jest tylko na wrogach czy na swoich też?
#4
Napisano 10.07.2009 12:00
a ja już znalazłem dokładnie to samo, tylko inny kolor - explode1.sprCoś mi sie zdaje że nie znajde czerwonego sprita
Sprawdź ten kod(nie testowałem):
#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 }teoretycznie terro powinien widzieć swoich na czerwono, a CT na niebiesko, a CT wszystkich na niebiesko.
#5
Napisano 10.07.2009 12:57
W CT: terro na niebiesko, CT mają ten explode1.spr
W TT: terro na niebiesko, CT na niebiesko
W TT: terro na niebiesko, CT na niebiesko
#6
Napisano 10.07.2009 13:18
czyli do zamiany 2 na 1 w:W CT: terro na niebiesko, CT mają ten explode1.spr
W TT: terro na niebiesko, CT na niebiesko
if (userteam == 2 && get_user_team(target) == 2)ma być:
if (userteam == 1 && get_user_team(target) == 1)
#7
Napisano 10.07.2009 13:59
Dobra daje pomógł
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych