Sprites In Player HUD – Wyświetlanie sprites w hudzie gracza

Plugin znany z tego filmu Pozwala na wyświetlanie wcześniej przygotowanego sprites w dowolnej pozycji na ekranie gracza. Dodatkowo można ustawiać skalę sprites tzn powiększać / pomniejszać. Sam plugin działa na zasadzie obliczania pozycji względem ekranu gracza wykorzystując współrzędne biegunowe ( http://pl.wikipedia.org/wiki/Uk%C5%82ad_wsp%C3%B3%C5%82rz%C4%99dnych_biegunowych ) Główny plugin posiada odpowiednie API udostępnione przez natywy tzn.
  • addPlayerSprite
  • setSpriteFX
  • setSpriteRender
  • setSpriteColor
  • setSpriteSequence
  • setSpriteScale
  • setSpriteFrameRate
  • setSpriteAmount
  • setSpriteAngle
Pierwszy z nich służy do dodawania sprite Definicja:
native addPlayerSprite(id,Float:scale,Float:frameRate,szModel[],Float:fAngle, Float:fLen, Float:fTime,Float:fDistance , bool: bTransparent );
Kolejne natywy jako że obiekt w hudzie to pełnoprawny entity ( env_sprite ) , służą do zmiany ustawień entity. Przykładowy plugin którego efekt widać na filmie.
#include 
#include 

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "DarkGL"

native setSpriteRender( id , indexSprite , render );

native addPlayerSprite(id,Float:scale,Float:frameRate,szModel[],Float:fAngle, Float:fLen, Float:fTime,Float:fDistance , bool: bTransparent );

new gszModel[] = "sprites/slowdown3.spr";
new iIndex;

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test", "test");
register_clcmd("say /test2", "test2");
register_clcmd("say /test3", "test3");
}

public plugin_precache(){
precache_model(gszModel);
}

public test(id){
iIndex	=	addPlayerSprite(id,0.02,10.0,gszModel,20.0,10.0,9999.0, 13.0 , true )
}

public test2(id){
setSpriteRender( id , iIndex , kRenderTransAdd );
}

public test3(id){
setSpriteRender( id , iIndex , kRenderTransAlpha );
}
public fwAddToFullPack(es_handle, e, ENT, HOST, hostflags, player, set){
if(player || !pev_valid( ENT ) ) return FMRES_IGNORED;

new szClassName[ 64 ];

pev( ENT , pev_classname , szClassName , charsmax( szClassName ) );

if( !equal( szClassName , spriteClass ) ){
return FMRES_IGNORED;
}

for(new i=0;i#define="" sprites_per_player="" 3[="" a="" optymalizować="" plugin="" pod="" możemy="" max_players="" 33[="" dodatkowo="" bierze="" uwagę="" ustawienia="" tzn.="" komendy="" cl_bob="" cl_bobup.="" owocnego="" użytkowania="" ;)="" !="" na="" koniec="" jeszcze="" raz="" download.="" mam="" kilka="" pomysłów="" jak="" poprawić="" działanie="" pluginu.="" między="" innymi="" movetype_follow="" zaokrąglanie="" wyników="" obliczeń="" pozycji="" (="" aby="" wyglądało="" płynniej="" ).="" Download
spriteFixer.zip Download

Download
spriteFixer.zip Download

W paczce znajduje się plik sprite_test.amxx czyli skompilowany kod podany wyżej oraz główny kod czyli spriteFixer.amxx.

Sam sposób obliczania pozycji
 
public fwAddToFullPack(es_handle, e, ENT, HOST, hostflags, player, set){
if(player || !pev_valid( ENT ) ) return FMRES_IGNORED;

new szClassName[ 64 ];

pev( ENT , pev_classname , szClassName , charsmax( szClassName ) );

if( !equal( szClassName , spriteClass ) ){
return FMRES_IGNORED;
}

for(new i=0;i 
#define="" sprites_per_player="" 3[="" a="" optymalizować="" plugin="" pod="" możemy="" max_players="" 33[="" dodatkowo="" bierze="" uwagę="" ustawienia="" tzn.="" komendy="" cl_bob="" cl_bobup.="" owocnego="" użytkowania="" ;)="" !="" na="" koniec="" jeszcze="" raz="" download.="" mam="" kilka="" pomysłów="" jak="" poprawić="" działanie="" pluginu.="" między="" innymi="" movetype_follow="" zaokrąglanie="" wyników="" obliczeń="" pozycji="" (="" aby="" wyglądało="" płynniej="" ).="" Download
spriteFixer.zip Download
			

7 komentarzy o “Sprites In Player HUD – Wyświetlanie sprites w hudzie gracza

  1. A można tak zrobić aby było można dodać obrazek w png czy coś np żeby dodać sobie logo.

  2. Da się zrobić żeby ten sprite tak nie „latał” po ekranie kiedy gracz się porusza?

    1. Choć widze, że u Ciebie na filmie jest on w miarę stabilny i trzyma się w miejscu. U mnie, z jakiegoś powodu leci on za graczem, np kiedy idę do przodu to praktycznie całkowicie znika tak jakby zostając za plecami gracza :/
      Czym to może być spowodowane?

      1. Prawdopodobnie tym, że było to nagrywane na serwerze lokalnym. Na normalny serwerze dochodzi opóźnienie w komunikacji.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.