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:
[pawn]native addPlayerSprite(id,Float:scale,Float:frameRate,szModel[],Float:fAngle, Float:fLen, Float:fTime,Float:fDistance , bool: bTransparent );[/pawn]
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.
[pawn]#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 );
}
[/pawn]
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
[pawn]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
spriteFixer.zip Download
A można tak zrobić aby było można dodać obrazek w png czy coś np żeby dodać sobie logo.
Przerób png na sprite
Da się wyświetlić określoną klatkę ?
tzn ?
Da się zrobić żeby ten sprite tak nie „latał” po ekranie kiedy gracz się porusza?
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?
Prawdopodobnie tym, że było to nagrywane na serwerze lokalnym. Na normalny serwerze dochodzi opóźnienie w komunikacji.