poniedziałek, 18 czerwca 2012

Motion Tracking Icons [Wersja legalna]

Witajcie, na pewno każdy z was zna tzw. patenty z Bf'a czy Cod'a gdzie na ekranie gracza są widoczne ikonki np. pokazujące gdzie znajduje się flaga, czy też jakiś cel.

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)
{  
    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();
}
 jak z niego skorzystać ? bo okazuje się że tu jest z góry ustalona reguła

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