Guest User

iScreenFader 1.2

a guest
Jun 14th, 2012
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.57 KB | None | 0 0
  1. /*
  2.  
  3.         iScreenFader 1.2
  4.         pabaigta 2012m. Birželio 14d. 10:47
  5.  
  6.         Autorius: InstincT
  7.         Keisti kreditus draudžiama! Pakeitęs kreditus autoriumi netapsi!
  8.  
  9.         funkcijos
  10.             FadeScreenForPlayer( playerid, mode, color = 0x0FF )
  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.  
  17.             FadePlayerPos( playerid, color = 0x0FF, Float:fsPosX, Float:fsPosY, Float:fsPosZ, Float:fsPosA = -1.0, fsInt = -1, fsVW = -1, fsClearAnims = false )
  18.             playerid - žaidėjo ID
  19.             **color - spalva
  20.             fsPosX - koordinatė X
  21.             fsPosY - koordinatė Y
  22.             fsPosZ - koordinatė Z
  23.             **fsPosA - pasisukimo laipsniai
  24.             **fsInt - interioras
  25.             **fsVW - virtual worldas
  26.             **fsClearAnims - ar užtamsinus ekraną įvykdyti funkciją ClearAnimations
  27.             **fsCamera - ar užtamsinus ekraną įvykdyti funkciją SetCameraBehindPlayer
  28.  
  29.             FadeSkinForPlayer( playerid, skinID, color = 0x0FF )
  30.             playerid - žaidėjo ID
  31.             skinID - skino ID
  32.             **color - spalva
  33.  
  34.             iScreenFader_Kokybe( id );
  35.             id - kokybės ID. Galimi du variantai:
  36.                 FADE_KOKYBE_GERA - gera kokybė, timer'io intervalas yra 20, fsSteps kintamojo mažinimas 4
  37.                 FADE_KOKYBE_BLOGA - vidutiniška kokybė, timer'io intervalas 100, fsSteps kintamojo mažinimas 20
  38.  
  39.             ** - PARAMETRAS NEBŪTINAS! Norint jį praleisti funkcijos kvietime, vietoj parametro rašykit _
  40.  
  41.         callbackai
  42.             OnFadeComplete( playerid, mode, color )
  43.                 playerid - žaidėjo ID
  44.                 mode - užtemdymo rėžimas
  45.                 color - užtemdyta/atitemdyta spalva
  46.  
  47.         changelogas
  48.             2012m. Birželio 12d.:
  49.                 - išleista
  50.             2012m. Birželio 13d.:
  51.                 - padaryti pranešimai bei vykdymo nutraukimai, kurių dėka bus išvengiamas netaisyklingas funkcijų naudojimas,
  52.                 - naudojami PlayerTextDraw'ai vietoje globalių TextDraw'ų,
  53.                 - viskas turėtų veikti dvigubai greičiau, pakeistas timer'io intervalas iš 5 į 10, taip pat kintamasis fsSteps mažinamas dviem vienetais
  54.                 - naujos funkcijos:
  55.                         FadePlayerPos, FadePlayerSkin
  56.             2012m. Birželio 14d.:
  57.                 - pridėta galimybė kontroliuoti spalvas visose funkcijose. Parametras nėra būtinas, spalva pagal nutylėjimą - juoda(0x0FF).
  58.                 - OnFadeComplete callback'ui pridėtas spalvos parametras
  59.                 - viskas turėtų veikti dar dvigubai greičiau, pakeistas timer'io intervalas iš 5 į 10, taip pat kintamasis fsSteps mažinamas keturiais vienetais
  60.                 - funkcijai FadePlayerPos pridėta galimybė užtamsinus ekraną įvykdyti funkciją SetCameraBehindPlayer bei ClearAnimations
  61.                 - ištaisyta klaida, dėl kurios galėjo neatitemdyti ekrano.
  62.                 - naujos funkcijos:
  63.                         iScreenFader_Kokybe - pakeisti užtemdymo/atitemdymo kokybę.
  64. */
  65.  
  66.  
  67. #define FADE_IN 1
  68. #define FADE_OUT 2
  69.  
  70.  
  71. forward OnFadeComplete( playerid, mode, color );
  72.  
  73.  
  74. enum fadeScreenEnumas
  75. {
  76.     fsTD_sukurtas,
  77.     PlayerText:fsTextDraw,
  78.     fsTimer,
  79.     fsSteps,
  80.     fsMode,
  81.     fsColor,
  82.  
  83.     Float:fsPos[ 4 ],
  84.     fsInterior,
  85.     fsVirtualWorld,
  86.     fsSkin,
  87.     fsClearAnimations,
  88.     fsCameraBehindPlayer
  89. }
  90.  
  91. #define FADE_KOKYBE_GERA 1
  92. #define FADE_KOKYBE_BLOGA 2
  93.  
  94. new
  95.     fadeScreen[ MAX_PLAYERS ][ fadeScreenEnumas ],
  96.     fadeKokybe_intervalas = 20,
  97.     fadeKokybe_mazinimas = 4
  98. ;
  99.  
  100. stock iScreenFader_Kokybe( id )
  101. {
  102.     if( id != FADE_KOKYBE_GERA && id != FADE_KOKYBE_BLOGA ) return print( "KLAIDA iScreenFader naudojime! iScreenFader_Kokybe funkcijoje naudjama netinkama reikšmė." );
  103.     if( id == FADE_KOKYBE_GERA )
  104.     {
  105.         fadeKokybe_intervalas = 20;
  106.         fadeKokybe_mazinimas = 4;
  107.     }
  108.     else
  109.     {
  110.         fadeKokybe_intervalas = 100;
  111.         fadeKokybe_mazinimas = 20;
  112.     }
  113.     return 1;
  114. }
  115.  
  116. stock FadeScreenForPlayer( playerid, mode, color = 0x0FF )
  117. {
  118.     if( mode != FADE_IN && mode != FADE_OUT ) return print( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer žaidėjui %d mode buvo netinkamas." );
  119.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return print( "KLAIDA iScreenFader naudojime! FadeScreenForPlayer funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą." );
  120.     fadeScreen[ playerid ][ fsSteps ] = 255;
  121.     fadeScreen[ playerid ][ fsMode ] = mode;
  122.     fadeScreen[ playerid ][ fsColor ] = color;
  123.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  124.     return 1;
  125. }
  126.  
  127. stock FadePlayerPos( playerid, color = 0x0FF, Float:fsPosX, Float:fsPosY, Float:fsPosZ, Float:fsPosA = -1.0, fsInt = -1, fsVW = -1, fsClearAnims = true, fsCamera = false )
  128. {
  129.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return print( "KLAIDA iScreenFader naudojime! FadePlayerPos funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą." );
  130.     fadeScreen[ playerid ][ fsSteps ] = 255;
  131.     fadeScreen[ playerid ][ fsMode ] = FADE_IN;
  132.     fadeScreen[ playerid ][ fsColor ] = color;
  133.     fadeScreen[ playerid ][ fsPos ][ 0 ] = fsPosX;
  134.     fadeScreen[ playerid ][ fsPos ][ 1 ] = fsPosY;
  135.     fadeScreen[ playerid ][ fsPos ][ 2 ] = fsPosZ;
  136.     fadeScreen[ playerid ][ fsPos ][ 3 ] = fsPosA;
  137.     fadeScreen[ playerid ][ fsInterior ] = fsInt;
  138.     fadeScreen[ playerid ][ fsVirtualWorld ] = fsVW;
  139.     fadeScreen[ playerid ][ fsClearAnimations ] = fsClearAnims;
  140.     fadeScreen[ playerid ][ fsCameraBehindPlayer ] = fsCamera;
  141.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  142.     return 1;
  143. }
  144.  
  145. stock FadePlayerSkin( playerid, skinID, color = 0x0FF )
  146. {
  147.     if( fadeScreen[ playerid ][ fsSteps ] > 0 ) return print( "KLAIDA iScreenFader naudojime! FadePlayerSkin funkcijoje žaidėjas %d jau naudoja ekrano tamsinimą." );
  148.     fadeScreen[ playerid ][ fsSteps ] = 255;
  149.     fadeScreen[ playerid ][ fsMode ] = FADE_IN;
  150.     fadeScreen[ playerid ][ fsColor ] = color;
  151.     fadeScreen[ playerid ][ fsSkin ] = skinID + 1;
  152.     fadeScreen[ playerid ][ fsTimer ] = SetTimerEx( "FadeScreen", fadeKokybe_intervalas, true, "d", playerid );
  153.     return 1;
  154. }
  155.  
  156. forward FadeScreen( playerid );
  157. public FadeScreen( playerid )
  158. {
  159.     if( !fadeScreen[ playerid ][ fsTD_sukurtas ] )
  160.     {
  161.         fadeScreen[ playerid ][ fsTextDraw ] = CreatePlayerTextDraw( playerid, -159.000000, -288.000000, "iScreenFader by InstincT" );
  162.         PlayerTextDrawBackgroundColor( playerid, fadeScreen[ playerid ][ fsTextDraw ], 255 );
  163.         PlayerTextDrawFont( playerid, fadeScreen[ playerid ][ fsTextDraw ], 0 );
  164.         PlayerTextDrawLetterSize( playerid, fadeScreen[ playerid ][ fsTextDraw ], 0.270000, 88.999687 );
  165.         PlayerTextDrawColor( playerid, fadeScreen[ playerid ][ fsTextDraw ], -1 );
  166.         PlayerTextDrawSetOutline( playerid, fadeScreen[ playerid ][ fsTextDraw ], 0 );
  167.         PlayerTextDrawSetProportional( playerid, fadeScreen[ playerid ][ fsTextDraw ], 1 );
  168.         PlayerTextDrawSetShadow( playerid, fadeScreen[ playerid ][ fsTextDraw ], 1 );
  169.         PlayerTextDrawUseBox( playerid, fadeScreen[ playerid ][ fsTextDraw ], 1 );
  170.         PlayerTextDrawBoxColor( playerid, fadeScreen[ playerid ][ fsTextDraw ], 255 );
  171.         PlayerTextDrawTextSize( playerid, fadeScreen[ playerid ][ fsTextDraw ], 848.000000, 2.000000 );
  172.         fadeScreen[ playerid ][ fsTD_sukurtas ] = true;
  173.     }
  174.     PlayerTextDrawBoxColor( playerid, fadeScreen[ playerid ][ fsTextDraw ],
  175.     GetFadeColor( fadeScreen[ playerid ][ fsSteps ], fadeScreen[ playerid ][ fsMode ], fadeScreen[ playerid ][ fsColor ] ) );
  176.     PlayerTextDrawShow( playerid, fadeScreen[ playerid ][ fsTextDraw ] );
  177.     fadeScreen[ playerid ][ fsSteps ] -= fadeKokybe_mazinimas;
  178.     if( fadeScreen[ playerid ][ fsSteps ] <= 0 )
  179.     {
  180.         KillTimer( fadeScreen[ playerid ][ fsTimer ] );
  181.         if( fadeScreen[ playerid ][ fsMode ] == FADE_OUT )
  182.         {
  183.             PlayerTextDrawHide( playerid, fadeScreen[ playerid ][ fsTextDraw ] );
  184.         }
  185.         else
  186.         {
  187.             if( fadeScreen[ playerid ][ fsPos ][ 0 ] != 0.0 && fadeScreen[ playerid ][ fsPos ][ 1 ] != -1.0 && fadeScreen[ playerid ][ fsPos ][ 2 ] != -1.0 )
  188.             {
  189.                 SetPlayerPos( playerid, fadeScreen[ playerid ][ fsPos ][ 0 ], fadeScreen[ playerid ][ fsPos ][ 1 ], fadeScreen[ playerid ][ fsPos ][ 2 ] );
  190.  
  191.                 if( fadeScreen[ playerid ][ fsPos ][ 3 ] != 0.0 ) SetPlayerFacingAngle( playerid, fadeScreen[ playerid ][ fsPos ][ 3 ] );
  192.                 if( fadeScreen[ playerid ][ fsInterior ] != -1.0 ) SetPlayerInterior( playerid, fadeScreen[ playerid ][ fsInterior ] );
  193.                 if( fadeScreen[ playerid ][ fsVirtualWorld ] != -1.0 ) SetPlayerVirtualWorld( playerid, fadeScreen[ playerid ][ fsVirtualWorld ] );
  194.                 FadeScreenForPlayer( playerid, FADE_OUT, fadeScreen[ playerid ][ fsColor ] );
  195.             }
  196.             if( fadeScreen[ playerid ][ fsSkin ] != 0 )
  197.             {
  198.                 SetPlayerSkin( playerid, fadeScreen[ playerid ][ fsSkin ] - 1 ); // -1, kadangi funkcijoje buvo +1. Tai reikalinga tam, kad būtų leidžiama nustatyti CJ skiną(ID 0)
  199.                 fadeScreen[ playerid ][ fsSkin] = 0;
  200.                 FadeScreenForPlayer( playerid, FADE_OUT, fadeScreen[ playerid ][ fsColor ] );
  201.             }
  202.             if( fadeScreen[ playerid ][ fsClearAnimations ] )
  203.             {
  204.                 fadeScreen[ playerid ][ fsClearAnimations ] = false;
  205.                 ClearAnimations( playerid );
  206.             }
  207.             if( fadeScreen[ playerid ][ fsCameraBehindPlayer ] )
  208.             {
  209.                 fadeScreen[ playerid ][ fsCameraBehindPlayer ] = false;
  210.                 SetCameraBehindPlayer( playerid );
  211.             }
  212.         }
  213.         CallRemoteFunction( "OnFadeComplete", "ddx", playerid, fadeScreen[ playerid ][ fsMode ], fadeScreen[ playerid ][ fsColor ] );
  214.         return 1;
  215.     }
  216.     return 1;
  217. }
  218.  
  219. stock GetFadeColor( steps, mode, color )
  220. {
  221.     new
  222.         alpha,
  223.         rgb[ 3 ],
  224.         hex
  225.     ;
  226.     if( mode == FADE_IN ) alpha = 255 - steps;
  227.     else alpha = 255 - ( 255 - steps );
  228.  
  229.     // ačiū 0x5A656578(a.k.a. Zeex)!
  230.     rgb[ 0 ] = ( color & 0xFF000000 ) >>> 24;
  231.     rgb[ 1 ] = ( color & 0x00FF0000 ) >>> 16;
  232.     rgb[ 2 ] = ( color & 0x0000FF00 ) >>> 8;
  233.  
  234.     hex |= ( rgb[ 0 ] & 0xFF ) << 24;
  235.     hex |= ( rgb[ 1 ] & 0xFF ) << 16;
  236.     hex |= ( rgb[ 2 ] & 0xFF ) << 8;
  237.     hex |= ( alpha & 0xFF );
  238.     return hex;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment