Termalne google
Wizzardius
10.07.2009
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.
#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 }
mgr inż. Pavulon
10.07.2009
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ć ?
Wizzardius
10.07.2009
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ż?
mgr inż. Pavulon
10.07.2009
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.
Abes Mapper
10.07.2009
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
mgr inż. Pavulon
10.07.2009
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)