Ja zapragnąłem coś takiego w cs'ie lecz taki fjuczer posiadał tylko Metahook z którego nie korzystam
Na całe szczęście znalazłem plugin który posiada stocki na legalne [Działa też na steam] wyświetlanie takich ikonek, trochę do dupy ale działa :D
Stocki stworzył Sontung0 autor pierwszych części CSO-NST natomiast Cypis któremu bardzo dziękuję za pomoc nieco kod skrócił :)
stock create_icon_origin(id, ent, sprite)jak z niego skorzystać ? bo okazuje się że tu jest z góry ustalona reguła
{
if(!pev_valid(ent))
return;
new Float:entOrigin[3], Float:Origin[3];
pev(ent, pev_origin, entOrigin)
pev(id, pev_origin, Origin);
if(!is_in_viewcone(id, entOrigin))
return;
new Float:fHitPoint[3], Float:fDisToWall;
trace_line(-1, Origin, entOrigin, fHitPoint);
xs_vec_sub(entOrigin, Origin, entOrigin);
xs_vec_div_scalar(entOrigin, vector_length(entOrigin), entOrigin);
xs_vec_mul_scalar(entOrigin, (fDisToWall=(vector_distance(Origin, fHitPoint)-10.0)), entOrigin);
xs_vec_add(entOrigin, Origin, entOrigin);
te_sprite(id, entOrigin, sprite, clamp(floatround(0.01*fDisToWall), 1, 3), 25);
}
stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, .player=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();
}
na początku kodu w zmiennych globalnych umieszczamy zmienną i stałą np.
new const icon_spr[] = "sprites/nazwa_sprite.spr"
new icon_id
Następnie w plugin_precache dodajemy
icon_id = engfunc(EngFunc_PrecacheModel, icon_spr)
Następnie w PostThink wywołuje nasz kod
create_icon_origin(id gracza, id enta, zmienna icon_id)
W ten sposób powinniście dostać efekt zbliżony do tego
Brak komentarzy:
Prześlij komentarz