Advertisement
B-Matt

B-Matt's skates!

Jan 24th, 2016
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.12 KB | None | 0 0
  1. #include <YSI\y_hooks>
  2.  
  3. /*
  4.     ##     ##    ###    ########   ######  
  5.     ##     ##   ## ##   ##     ## ##    ##
  6.     ##     ##  ##   ##  ##     ## ##      
  7.     ##     ## ##     ## ########   ######  
  8.      ##   ##  ######### ##   ##         ##
  9.       ## ##   ##     ## ##    ##  ##    ##
  10.        ###    ##     ## ##     ##  ######  
  11. */
  12. new
  13.     Bit1: r_SkateArmed      <MAX_PLAYERS> = { Bit1:false, ...},
  14.     Bit1: r_SkateActive     <MAX_PLAYERS> = { Bit1:false, ...},
  15.     Bit16: r_SkateObjectId  <MAX_PLAYERS> = { Bit16:0, ...},
  16.     skateBoard[ MAX_PLAYERS ] = { INVALID_OBJECT_ID, ... };
  17.  
  18. /*
  19.     ##     ##  #######   #######  ##    ##  ######  
  20.     ##     ## ##     ## ##     ## ##   ##  ##    ##
  21.     ##     ## ##     ## ##     ## ##  ##   ##      
  22.     ######### ##     ## ##     ## #####     ######  
  23.     ##     ## ##     ## ##     ## ##  ##         ##
  24.     ##     ## ##     ## ##     ## ##   ##  ##    ##
  25.     ##     ##  #######   #######  ##    ##  ######  
  26. */
  27. hook OnPlayerDisconnect(playerid, reason)
  28. {
  29.     Bit1_Set(r_SkateArmed, playerid, false);
  30.     Bit1_Set(r_SkateActive, playerid, false);
  31.     Bit16_Set(r_SkateObjectId, playerid, 0);
  32.    
  33.     if( IsValidDynamicObject(skateBoard[playerid]) || skateBoard[playerid] != INVALID_OBJECT_ID ) {
  34.         DestroyDynamicObject(skateBoard[ playerid ]);
  35.         skateBoard[ playerid ] = INVALID_OBJECT_ID;
  36.     }
  37.     return 1;
  38. }
  39.  
  40. hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  41. {
  42.     /*if ((newkeys & KEY_SPRINT) && (newkeys & KEY_YES)) {
  43.         if( Bit1_Get( r_SkateActive, playerid ) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT )
  44.             ApplyAnimation(playerid, "SKATE","skate_sprint",4.1,1,1,1,1,1,1);
  45.     }
  46.     else */
  47.     if( ( newkeys & KEY_SPRINT ) ) {
  48.         if( Bit1_Get( r_SkateActive, playerid ) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT )
  49.             ApplyAnimation(playerid, "SKATE","skate_run",4.1,1,1,1,1,1,1);
  50.     }
  51.    
  52.     if( ( oldkeys & KEY_SPRINT ) ) {
  53.         if( Bit1_Get( r_SkateActive, playerid ) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT )
  54.             ApplyAnimation(playerid, "CARRY","crry_prtial",4.0,0,0,0,0,0);
  55.     }
  56.     if( ( newkeys & KEY_YES ) && !(oldkeys & KEY_YES) ) {
  57.         if( Bit1_Get( r_SkateActive, playerid ) && Bit16_Get(r_SkateObjectId, playerid) ) {
  58.             if( IsValidDynamicObject(skateBoard[ playerid ]) ) {
  59.                 DestroyDynamicObject(skateBoard[ playerid ]);
  60.                 skateBoard[ playerid ] = INVALID_OBJECT_ID;
  61.             }
  62.             ClearAnimations(playerid, 1);
  63.             ApplyAnimation(playerid, "CARRY","null",0,0,0,0,0,0,0);
  64.             ApplyAnimation(playerid, "SKATE","null",0,0,0,0,0,0,0);
  65.             ApplyAnimation(playerid, "CARRY","crry_prtial",4.0,0,0,0,0,0);
  66.            
  67.             SetPlayerArmedWeapon(playerid,0);
  68.             new
  69.                 index = Bit16_Get(r_SkateObjectId, playerid);
  70.             SetPlayerAttachedObject(playerid, index, PlayerObject[playerid][index][poModelid], PlayerObject[playerid][index][poBoneId],PlayerObject[playerid][index][poPosX],PlayerObject[playerid][index][poPosY],PlayerObject[playerid][index][poPosZ],PlayerObject[playerid][index][poRotX],PlayerObject[playerid][index][poRotY],PlayerObject[playerid][index][poRotZ],PlayerObject[playerid][index][poScaleX],PlayerObject[playerid][index][poScaleY],PlayerObject[playerid][index][poScaleZ],PlayerObject[playerid][index][poColor1],PlayerObject[playerid][index][poColor2]);
  71.             Bit1_Set( r_SkateArmed, playerid, true );
  72.             Bit1_Set( r_SkateActive, playerid, false );
  73.             Bit16_Set(r_SkateObjectId, playerid, 0);
  74.         }
  75.         else if( Bit1_Get( r_SkateArmed, playerid ) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT ) {
  76.             new
  77.                 index = IsObjectAttached(playerid, 19878);
  78.             if( index == -1 ) return SendClientMessage(playerid, COLOR_RED, "[GRESKA]: Nemate prikacen objekt skejta!");
  79.             RemovePlayerAttachedObject(playerid, index);
  80.            
  81.             if( IsValidDynamicObject(skateBoard[ playerid ]) ) {
  82.                 DestroyDynamicObject(skateBoard[ playerid ]);
  83.                 skateBoard[ playerid ] = INVALID_OBJECT_ID;
  84.             }
  85.            
  86.             skateBoard[ playerid ] = CreateDynamicObject(19878,0,0,0,0,0,0);
  87.             AttachDynamicObjectToPlayer(skateBoard[ playerid ], playerid, -0.1678, 0.0086, -0.95, 0.0000, 0.0000, 90.0000);
  88.             Bit1_Set(r_SkateArmed, playerid, false);
  89.             Bit1_Set(r_SkateActive, playerid, true);
  90.             Bit16_Set(r_SkateObjectId, playerid, index);
  91.             va_SendClientMessage(playerid, COLOR_GREEN, "[INFO]: Sa tipkom ~k~~PED_SPRINT~ mozete voziti skejt!");
  92.         }
  93.     }
  94.     return 1;
  95. }
  96.  
  97. CMD:skate(playerid, params[])
  98. {
  99.     if( GetPlayerState(playerid) != PLAYER_STATE_ONFOOT ) return SendClientMessage(playerid, COLOR_RED, "[GRESKA]: Morate biti na nogama!");
  100.     if( IsObjectAttached(playerid, 19878) == -1 ) return SendClientMessage(playerid, COLOR_RED, "[GRESKA]: Morate imati prikacen skejt za sebe (/objects attach)!");
  101.     if( !Bit1_Get( r_SkateArmed, playerid ) ) {
  102.         va_SendClientMessage(playerid, COLOR_YELLOW, "[INFO]: Sa tipkom ~k~~CONVERSATION_YES~ mozete koristiti skejt!");
  103.         Bit1_Set(r_SkateArmed, playerid, true );
  104.     }
  105.     else if( Bit1_Get( r_SkateArmed, playerid ) || Bit1_Get( r_SkateActive, playerid ) ) {
  106.         va_SendClientMessage(playerid, COLOR_YELLOW, "[INFO]: Vise ne koristite skejt. Sa ponovnim unosom komande ga mozete opet koristiti!");
  107.         if( IsValidDynamicObject(skateBoard[ playerid ]) ) {
  108.             DestroyDynamicObject(skateBoard[ playerid ]);
  109.             skateBoard[ playerid ] = INVALID_OBJECT_ID;
  110.         }
  111.         ClearAnimations(playerid, 1);
  112.         ApplyAnimation(playerid, "CARRY","null",0,0,0,0,0,0,0);
  113.         ApplyAnimation(playerid, "SKATE","null",0,0,0,0,0,0,0);
  114.         ApplyAnimation(playerid, "CARRY","crry_prtial",4.0,0,0,0,0,0);
  115.        
  116.         SetPlayerArmedWeapon(playerid,0);
  117.         new
  118.             index = Bit16_Get(r_SkateObjectId, playerid);
  119.         SetPlayerAttachedObject(playerid, index, PlayerObject[playerid][index][poModelid], PlayerObject[playerid][index][poBoneId],PlayerObject[playerid][index][poPosX],PlayerObject[playerid][index][poPosY],PlayerObject[playerid][index][poPosZ],PlayerObject[playerid][index][poRotX],PlayerObject[playerid][index][poRotY],PlayerObject[playerid][index][poRotZ],PlayerObject[playerid][index][poScaleX],PlayerObject[playerid][index][poScaleY],PlayerObject[playerid][index][poScaleZ],PlayerObject[playerid][index][poColor1],PlayerObject[playerid][index][poColor2]);
  120.         Bit1_Set(r_SkateArmed, playerid, false);
  121.         Bit1_Set(r_SkateActive, playerid, false);
  122.         Bit16_Set(r_SkateObjectId, playerid, 0);
  123.     }
  124.     return 1;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement