Guest User

iScreenFader 1.6

a guest
Jul 5th, 2012
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.57 KB | None | 0 0
  1. /*
  2.  
  3.         iScreenFader 1.6
  4.         pabaigta 2012m. Liepos 5d. 12:11
  5.  
  6.         Autorius: InstincT
  7.         Keisti kreditus draudžiama! Pakeitęs kreditus autoriumi netapsi!
  8.  
  9.         funkcijos
  10.             FadeScreenForPlayer( playerid, mode, color = 0x0FF, steps = -1 )
  11.             playerid - žaidėjo ID
  12.             mode - užtemdymo rėžimas. Jų yra du tipai:
  13.                 FADE_IN - užtemdyti(po truputį padaryti ekraną juodą)
  14.                 FADE_OUT - atitemdyti(po truputį padaryti ekraną matomą)
  15.             **color - spalva
  16.             **steps - skaičius, kokia reikšme bus mažinamas fsSteps kintamasis
  17.  
  18.             FadePlayerPos( playerid, color = 0x0FF, Float:fsPosX, Float:fsPosY, Float:fsPosZ, Float:fsPosA = -1.0, fsInt = -1, fsVW = -1, fsClearAnims = false, fsCamera = false, steps = -1 )
  19.             playerid - žaidėjo ID
  20.             **color - spalva
  21.             fsPosX - koordinatė X
  22.             fsPosY - koordinatė Y
  23.             fsPosZ - koordinatė Z
  24.             **fsPosA - pasisukimo laipsniai
  25.             **fsInt - interioras
  26.             **fsVW - virtual worldas
  27.             **fsClearAnims - ar užtamsinus ekraną įvykdyti funkciją ClearAnimations
  28.             **fsCamera - ar užtamsinus ekraną įvykdyti funkciją SetCameraBehindPlayer
  29.             **steps - skaičius, kokia reikšme bus mažinamas fsSteps kintamasis
  30.  
  31.             FadeSkinForPlayer( playerid, skinID, color = 0x0FF steps = -1 )
  32.             playerid - žaidėjo ID
  33.             skinID - skino ID
  34.             **color - spalva
  35.             **steps - skaičius, kokia reikšme bus mažinamas fsSteps kintamasis
  36.  
  37.             iScreenFader_Kokybe( id );
  38.             id - kokybės ID. Galimi du variantai:
  39.                 FADE_KOKYBE_GERA - gera kokybė, timer'io intervalas yra 20, fsSteps kintamojo mažinimas 4
  40.                 FADE_KOKYBE_BLOGA - vidutiniška kokybė, timer'io intervalas 100, fsSteps kintamojo mažinimas 20
  41.  
  42.             ** - PARAMETRAS NEBŪTINAS! Norint jį praleisti funkcijos kvietime, vietoj parametro rašykit _
  43.  
  44.         callbackai
  45.             OnFadeComplete( playerid, mode, color )
  46.                 playerid - žaidėjo ID
  47.                 mode - užtemdymo rėžimas
  48.                 color - užtemdyta/atitemdyta spalva
  49.  
  50.         changelogas
  51.             2012m. Birželio 12d.:
  52.                 - išleista
  53.             2012m. Birželio 13d.:
  54.                 - padaryti pranešimai bei vykdymo nutraukimai, kurių dėka bus išvengiamas netaisyklingas funkcijų naudojimas,
  55.                 - naudojami PlayerTextDraw'ai vietoje globalių TextDraw'ų,
  56.                 - viskas turėtų veikti dvigubai greičiau, pakeistas timer'io intervalas iš 5 į 10, taip pat kintamasis fsSteps mažinamas dviem vienetais
  57.                 - naujos funkcijos:
  58.                         FadePlayerPos, FadePlayerSkin
  59.             2012m. Birželio 14d.:
  60.                 - pridėta galimybė kontroliuoti spalvas visose funkcijose. Parametras nėra būtinas, spalva pagal nutylėjimą - juoda(0x0FF).
  61.                 - OnFadeComplete callback'ui pridėtas spalvos parametras
  62.                 - viskas turėtų veikti dar dvigubai greičiau, pakeistas timer'io intervalas iš 5 į 10, taip pat kintamasis fsSteps mažinamas keturiais vienetais
  63.                 - funkcijai FadePlayerPos pridėta galimybė užtamsinus ekraną įvykdyti funkciją SetCameraBehindPlayer bei ClearAnimations
  64.                 - ištaisyta klaida, dėl kurios galėjo neatitemdyti ekrano.
  65.                 - ištaisyta klaida, dėl kurios informaciniuose pranešimuose konsolėje nerodydavo žaidėjo ID
  66.                 - naujos funkcijos:
  67.                         iScreenFader_Kokybe - pakeisti užtemdymo/atitemdymo kokybę.
  68.             2012m. Birželio 20d.:
  69.                 - ištaisyta klaida, dėl kurios panaudojus FadePlayerPos funkciją, o paskui kitą užtemdymo funkciją vėl žaidėjo pozicija buvo nustatoma į prieš tai naudotosios funkcijos FadePlayerPos nustatytą poziciją.
  70.             2012m. Birželio 21d.:
  71.                 - ištaisyta klaida, dėl kurios pirmą kartą po serverio įjungimo panaudojus ne FadePlayerPos funkciją, galėjo užtamsinus ekraną žaidėjus nukelti į neteisingą poziciją. Tas pats ir su interior'u bei virtual world'u.
  72.             2012m. Birželio 23d.:
  73.                 - naudojamas vienas vienintelis globalus TextDraw'as, vietoje kiekvienam žaidėjui kuriamo atskirai PlayerTextDraw'o.
  74.             2012m. Liepos 5d.:
  75.                 - pridėta galimybė visose tamsinimo/atitamsinimo funkcijose kontroliuoti, kokiu skaičiu bus mažinamas fsSteps kintamasis.
  76.                 - OnFadeComplete callback'ui pridėtas parametras steps, nurodantis kokiu skaičiu žaidėjui buvo mažinamas kintamasis fsSteps.
  77. */
  78.  
  79.  
  80. #define FADE_IN 1
  81. #define FADE_OUT 2
  82.  
  83.  
  84. forward OnFadeComplete( playerid, mode, color, steps );
  85.  
  86.  
  87. enum fadeScreenEnumas
  88. {
  89.     fsTimer,
  90.     fsSteps,
  91.     fsMode,
  92.     fsColor,
  93.     fsMazinimasSteps,
  94.     Float:fsPos[ 4 ],
  95.     fsInterior,
  96.     fsVirtualWorld,
  97.     fsSkin,
  98.     fsClearAnimations,
  99.     fsCameraBehindPlayer
  100. }
  101.  
  102. #define FADE_KOKYBE_GERA 1
  103. #define FADE_KOKYBE_BLOGA 2
  104.  
  105. new
  106.     fadeScreen[ MAX_PLAYERS ][ fadeScreenEnumas ],
  107.     Text:fsTextDraw,
  108.     bool:fsTD_sukurtas,
  109.     fadeKokybe_intervalas = 20,
  110.     fadeKokybe_mazinimas = 4
  111. ;
  112.  
  113. stock iScreenFader_Kokybe( id )
  114. {
  115.     if( id != FADE_KOKYBE_GERA && id != FADE_KOKYBE_BLOGA ) return print( "KLAIDA iScreenFader naudojime! iScreenFader_Kokybe funkcijoje naudjama netinkama reikšmė." );
  116.     if( id == FADE_KOKYBE_GERA )
  117.     {
  118.         fadeKokybe_intervalas = 20;
  119.         fadeKokybe_mazinimas = 4;
  120.     }
  121.     else
  122.     {
  123.         fadeKokybe_intervalas = 100;
  124.         fadeKokybe_mazinimas = 20;
  125.     }
  126.     return 1;
  127. }
  128.  
  129. stock FadeScreenForPlayer( playerid, mode, color = 0x0FF, steps = -1 )
  130. {
  131.     if( mode != FADE_IN && mode != FADE_OUT ) return printf( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer žaidėjui %d mode buvo netinkamas.", playerid );
  132.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return printf( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą.", playerid );
  133.     if( steps == 0 ) return printf( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer funkcijoje žaidėjui %d parametras steps buvo 0!", playerid );
  134.     fadeScreen[ playerid ][ fsSteps ] = 255;
  135.     fadeScreen[ playerid ][ fsMazinimasSteps ] = ( steps == -1 ) ? ( fadeKokybe_mazinimas ) : ( steps );
  136.     fadeScreen[ playerid ][ fsMode ] = mode;
  137.     fadeScreen[ playerid ][ fsColor ] = color;
  138.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  139.     return 1;
  140. }
  141.  
  142. stock FadePlayerPos( playerid, color = 0x0FF, Float:fsPosX, Float:fsPosY, Float:fsPosZ, Float:fsPosA = -1.0, fsInt = -1, fsVW = -1, fsClearAnims = true, fsCamera = false, steps = -1 )
  143. {
  144.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return printf( "KLAIDA iScreenFader naudojime! FadePlayerPos funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą.", playerid );
  145.     if( steps == 0 ) return printf( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer funkcijoje žaidėjui %d parametras steps buvo 0!", playerid );
  146.     fadeScreen[ playerid ][ fsSteps ] = 255;
  147.     fadeScreen[ playerid ][ fsMazinimasSteps ] = ( steps == -1 ) ? ( fadeKokybe_mazinimas ) : ( steps );
  148.     fadeScreen[ playerid ][ fsMode ] = FADE_IN;
  149.     fadeScreen[ playerid ][ fsColor ] = color;
  150.     fadeScreen[ playerid ][ fsPos ][ 0 ] = fsPosX + 1.0;
  151.     fadeScreen[ playerid ][ fsPos ][ 1 ] = fsPosY + 1.0;
  152.     fadeScreen[ playerid ][ fsPos ][ 2 ] = fsPosZ + 1.0;
  153.     fadeScreen[ playerid ][ fsPos ][ 3 ] = fsPosA + 1.0;
  154.     fadeScreen[ playerid ][ fsInterior ] = fsInt + 1;
  155.     fadeScreen[ playerid ][ fsVirtualWorld ] = fsVW + 1;
  156.     fadeScreen[ playerid ][ fsClearAnimations ] = fsClearAnims;
  157.     fadeScreen[ playerid ][ fsCameraBehindPlayer ] = fsCamera;
  158.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  159.     return 1;
  160. }
  161.  
  162. stock FadePlayerSkin( playerid, skinID, color = 0x0FF, steps = -1 )
  163. {
  164.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return printf( "KLAIDA iScreenFader naudojime! FadePlayerSkin funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą.", playerid );
  165.     if( steps == 0 ) return printf( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer funkcijoje žaidėjui %d parametras steps buvo 0!", playerid );
  166.     fadeScreen[ playerid ][ fsSteps ] = 255;
  167.     fadeScreen[ playerid ][ fsMazinimasSteps ] = ( steps == -1 ) ? ( fadeKokybe_mazinimas ) : ( steps );
  168.     fadeScreen[ playerid ][ fsMode ] = FADE_IN;
  169.     fadeScreen[ playerid ][ fsColor ] = color;
  170.     fadeScreen[ playerid ][ fsSkin ] = skinID + 1;
  171.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  172.     return 1;
  173. }
  174.  
  175. forward FadeScreen( playerid );
  176. public FadeScreen( playerid )
  177. {
  178.     if( !fsTD_sukurtas )
  179.     {
  180.         fsTextDraw = TextDrawCreate( -159.000000, -288.000000, "iScreenFader by InstincT" );
  181.         TextDrawBackgroundColor( fsTextDraw, 255 );
  182.         TextDrawFont( fsTextDraw, 0 );
  183.         TextDrawLetterSize( fsTextDraw, 0.270000, 88.999687 );
  184.         TextDrawColor( fsTextDraw, -1 );
  185.         TextDrawSetOutline( fsTextDraw, 0 );
  186.         TextDrawSetProportional( fsTextDraw, 1 );
  187.         TextDrawSetShadow( fsTextDraw, 1 );
  188.         TextDrawUseBox( fsTextDraw, 1 );
  189.         TextDrawBoxColor( fsTextDraw, 255 );
  190.         TextDrawTextSize( fsTextDraw, 848.000000, 2.000000 );
  191.         fsTD_sukurtas = true;
  192.     }
  193.     TextDrawBoxColor( fsTextDraw, GetFadeColor( fadeScreen[ playerid ][ fsSteps ], fadeScreen[ playerid ][ fsMode ], fadeScreen[ playerid ][ fsColor ] ) );
  194.     TextDrawShowForPlayer( playerid, fsTextDraw );
  195.     fadeScreen[ playerid ][ fsSteps ] -= fadeScreen[ playerid ][ fsMazinimasSteps ];
  196.     if( fadeScreen[ playerid ][ fsSteps ] <= 0 )
  197.     {
  198.         KillTimer( fadeScreen[ playerid ][ fsTimer ] );
  199.         if( fadeScreen[ playerid ][ fsMode ] == FADE_OUT )
  200.         {
  201.             TextDrawHideForPlayer( playerid, fsTextDraw );
  202.         }
  203.         else
  204.         {
  205.             if( fadeScreen[ playerid ][ fsPos ][ 0 ] != 0.0 && fadeScreen[ playerid ][ fsPos ][ 1 ] != 0.0 && fadeScreen[ playerid ][ fsPos ][ 2 ] != 0.0 )
  206.             {
  207.                 SetPlayerPos( playerid, fadeScreen[ playerid ][ fsPos ][ 0 ] - 1.0, fadeScreen[ playerid ][ fsPos ][ 1 ] - 1.0, fadeScreen[ playerid ][ fsPos ][ 2 ] - 1.0 );
  208.                 fadeScreen[ playerid ][ fsPos ][ 0 ] = 0.0;
  209.                 fadeScreen[ playerid ][ fsPos ][ 1 ] = 0.0;
  210.                 fadeScreen[ playerid ][ fsPos ][ 2 ] = 0.0;
  211.  
  212.                 if( fadeScreen[ playerid ][ fsPos ][ 3 ] != 0.0 )
  213.                 {
  214.                     SetPlayerFacingAngle( playerid, fadeScreen[ playerid ][ fsPos ][ 3 ] - 1.0 );
  215.                     fadeScreen[ playerid ][ fsPos ][ 3 ] = 0.0;
  216.                 }
  217.                 if( fadeScreen[ playerid ][ fsInterior ] != 0 )
  218.                 {
  219.                     SetPlayerInterior( playerid, fadeScreen[ playerid ][ fsInterior ] - 1 );
  220.                     fadeScreen[ playerid ][ fsInterior ] = 0;
  221.                 }
  222.                 if( fadeScreen[ playerid ][ fsVirtualWorld ] != 0 )
  223.                 {
  224.                     SetPlayerVirtualWorld( playerid, fadeScreen[ playerid ][ fsVirtualWorld ] - 1 );
  225.                     fadeScreen[ playerid ][ fsVirtualWorld ] = 0;
  226.                 }
  227.                 FadeScreenForPlayer( playerid, FADE_OUT, fadeScreen[ playerid ][ fsColor ], fadeScreen[ playerid ][ fsMazinimasSteps ] );
  228.             }
  229.             if( fadeScreen[ playerid ][ fsSkin ] != 0 )
  230.             {
  231.                 SetPlayerSkin( playerid, fadeScreen[ playerid ][ fsSkin ] - 1 );
  232.                 fadeScreen[ playerid ][ fsSkin ] = 0;
  233.                 FadeScreenForPlayer( playerid, FADE_OUT, fadeScreen[ playerid ][ fsColor ], fadeScreen[ playerid ][ fsMazinimasSteps ] );
  234.             }
  235.             if( fadeScreen[ playerid ][ fsClearAnimations ] )
  236.             {
  237.                 fadeScreen[ playerid ][ fsClearAnimations ] = false;
  238.                 ClearAnimations( playerid );
  239.             }
  240.             if( fadeScreen[ playerid ][ fsCameraBehindPlayer ] )
  241.             {
  242.                 fadeScreen[ playerid ][ fsCameraBehindPlayer ] = false;
  243.                 SetCameraBehindPlayer( playerid );
  244.             }
  245.         }
  246.         CallRemoteFunction( "OnFadeComplete", "ddx", playerid, fadeScreen[ playerid ][ fsMode ], fadeScreen[ playerid ][ fsColor ], fadeScreen[ playerid ][ fsMazinimasSteps ] );
  247.         return 1;
  248.     }
  249.     return 1;
  250. }
  251.  
  252. stock GetFadeColor( steps, mode, color )
  253. {
  254.     new
  255.         alpha,
  256.         rgb[ 3 ],
  257.         hex
  258.     ;
  259.     if( mode == FADE_IN ) alpha = 255 - steps;
  260.     else alpha = 255 - ( 255 - steps );
  261.  
  262.     // ačiū 0x5A656578(a.k.a. Zeex)!
  263.     rgb[ 0 ] = ( color & 0xFF000000 ) >>> 24;
  264.     rgb[ 1 ] = ( color & 0x00FF0000 ) >>> 16;
  265.     rgb[ 2 ] = ( color & 0x0000FF00 ) >>> 8;
  266.  
  267.     hex |= ( rgb[ 0 ] & 0xFF ) << 24;
  268.     hex |= ( rgb[ 1 ] & 0xFF ) << 16;
  269.     hex |= ( rgb[ 2 ] & 0xFF ) << 8;
  270.     hex |= ( alpha & 0xFF );
  271.     return hex;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment