Sam nie korzystam z tej mocy ale może komuś się przyda
#include <xs>
robimy zmienna
new sprite_playerheat
do
public plugin_precache()
sprite_playerheat = precache_model("sprites/poison.spr");
do
plugin_init
set_task(0.5, "check_medic4", 0, "", 0, "b")
public check_medic4() { new Players[32], playerCount, a get_players(Players, playerCount, "ah") for (new i=0; i<playerCount; i++) { a = Players[i] if (player_class[a] !=klasa z wh) continue Predator_ThermalGoggles(a) } }
na koniec
public Predator_ThermalGoggles(id) { 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]) { if(get_user_team(id) == get_user_team(Players[i])) continue; new target = Players[i] new Float:fTargetOrigin[3] entity_get_vector(target, EV_VEC_origin, fTargetOrigin) if((get_distance_f(fMyOrigin, fTargetOrigin) >1000) || !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 }
P.S
if((get_distance_f(fMyOrigin, fTargetOrigin) >1000)
tym dostosowujemy zasięg wh .
http://steamcommunit...318/?tab=public
Załączone pliki
Użytkownik Stachu123 edytował ten post 24.09.2011 22:54