Advertisement
EvanAbagail

Drivable Pumpkin 3.0

Nov 20th, 2014
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.30 KB | None | 0 0
  1. #include a_samp
  2. #include zcmd
  3. new bool: DrivingPumpkin[MAX_PLAYERS];
  4. new Pumpkin[MAX_PLAYERS] = INVALID_OBJECT_ID;
  5. new bool: AdminOnly = false;
  6. #define PUMPKIN_SPEED 5.0
  7. CMD:togadminonly(playerid, params[])
  8. {
  9.         if(IsPlayerAdmin(playerid))
  10.         {
  11.                 if(AdminOnly == true)
  12.                 {
  13.                         AdminOnly = false;
  14.                         SendClientMessage(playerid, -1, "You have unrestricted the pumpkin system.");
  15.                         return true;
  16.                 }
  17.                 else
  18.                 {
  19.                         AdminOnly = true;
  20.                         SendClientMessage(playerid, -1, "You have restricted the pumpkin system to administrators.");
  21.                         return true;
  22.                 }
  23.         }
  24.         return true;
  25. }
  26. stock HexToColor(hexcode)
  27. {
  28.     new tmp;
  29.     tmp = hexcode * 256 + 255;
  30.    
  31.     return tmp;
  32. }
  33.  
  34. CMD:pumpkincolor(playerid, params[])
  35. {
  36.     if(isnull(params)) return SendClientMessage(playerid, -1, "{FFFFFF}USAGE: /pumpkincolor [hex]");
  37.    
  38.     if(strlen(params) >= 6 && strlen(params) < 8)
  39.     {
  40.         if(DrivingPumpkin[playerid])
  41.         {
  42.              SetObjectMaterial(Pumpkin[playerid], 0, -1, "none", "none", HexToColor(hexcode));
  43.              
  44.              SendClientMessage(playerid, -1, "{99FF33}You have colored the pumpkin(new color: {"hexcode"}COLOR{FFFFFF}");
  45.              return 1;
  46.         }
  47.         else return SendClientMessage(playerid, -1, "{99FF33}You're not driving a {FFFFFF} pumpkin!");
  48.     }
  49.     else return SendClientMessage(playerid, -1, "{99FF33}ERROR: Invalid hexcode.");
  50. }
  51. CMD:createpumpkin(playerid, params[])
  52. {
  53.                 if(!IsPlayerAdmin(playerid) && AdminOnly == true)
  54.                 {
  55.                     SendClientMessage(playerid, -1, "This command has been restricted to administrators.");
  56.                     return true;
  57.                 }
  58.         if(DrivingPumpkin[playerid])
  59.         {
  60.             return SendClientMessage(playerid, -1, "You're already driving a pumpkin. Use /destroypumpkin to stop driving.");
  61.         }
  62.         ApplyAnimation(playerid, "FOOD", "FF_Sit_Eat2", 4.0, 1, 0, 0, 1, 0, 1);
  63.         new Float: X, Float: Y, Float: Z;
  64.         GetPlayerPos(playerid, X, Y, Z);
  65.         Pumpkin[playerid] = CreateObject(19320, X, Y, Z, 0.0, 0.0, 0.0);
  66.         DrivingPumpkin[playerid] = true;
  67.         TogglePlayerControllable(playerid, false); // - Manually controlled movements.
  68.         return 1;
  69. }
  70.  
  71. CMD:destroypumpkin(playerid, params[])
  72. {
  73.         if(DrivingPumpkin[playerid] == true)
  74.         {
  75.                 DestroyObject(Pumpkin[playerid]);
  76.                 DrivingPumpkin[playerid] = false;
  77.                 Pumpkin[playerid] = INVALID_OBJECT_ID;
  78.                 TogglePlayerControllable(playerid, true);
  79.                 SetCameraBehindPlayer(playerid);
  80.                 return true;
  81.         }
  82.         return 1;
  83. }
  84.  
  85. CMD:pumpkin(playerid, params[])
  86. {
  87.         if(isnull(params)) return true;
  88.         if(DrivingPumpkin[playerid] == false) return SendClientMessage(playerid, -1, "You're not driving a pumpkin.");
  89.         if(strcmp(params, "up", true) == 0)
  90.         {
  91.             new Float: pos[3];
  92.             GetObjectPos(Pumpkin[playerid], pos[0], pos[1], pos[2]);
  93.                 SetObjectPos(Pumpkin[playerid], pos[0], pos[1], pos[2]+1.0);
  94.         }
  95.         if(strcmp(params, "down", true) == 0)
  96.         {
  97.             new Float: pos[3];
  98.             GetObjectPos(Pumpkin[playerid], pos[0], pos[1], pos[2]);
  99.                 SetObjectPos(Pumpkin[playerid], pos[0], pos[1], pos[2]-1.0);
  100.         }
  101.         return 1;
  102. }
  103.  
  104. public OnFilterScriptExit()
  105. {
  106.         for (new i = 0; i != MAX_PLAYERS; ++i)
  107.         {
  108.                  if (IsPlayerConnected(i))
  109.              {
  110.                 if(DrivingPumpkin[i] == true)
  111.                 {
  112.                         DrivingPumpkin[i] = false;
  113.                         DestroyObject(Pumpkin[i]);
  114.                         Pumpkin[i] = -1;
  115.                         }
  116.                 }
  117.         }
  118. }
  119.  
  120. public OnPlayerDisconnect(playerid)
  121. {
  122.         if(DrivingPumpkin[playerid] == true)
  123.         {
  124.             DrivingPumpkin[playerid] = false;
  125.                 DestroyObject(Pumpkin[playerid]);
  126.                 Pumpkin[playerid] = -1;
  127.         }
  128.         return true;
  129. }
  130. public OnPlayerUpdate(playerid)
  131. {
  132.         if(DrivingPumpkin[playerid] == true)
  133.         {
  134.         new Keys,ud,lr;
  135.         GetPlayerKeys(playerid,Keys,ud,lr);
  136.         new objectid = Pumpkin[playerid];
  137.  
  138.                 new Float: pos[3];
  139.                 GetObjectPos(objectid, pos[0], pos[1], pos[2]);
  140.                 SetPlayerPos(playerid, pos[0], pos[1], pos[2]+0.5);
  141.             if(ud == KEY_UP)
  142.             {
  143.                 new Float: X, Float: Y, Float: Z;
  144.                 GetObjectPos(objectid, X, Y, Z);
  145.                         MoveObject(objectid, X, Y+2.0, Z, PUMPKIN_SPEED, 0.0, 0.0, 0.0);
  146.                         return true;
  147.                 }
  148.  
  149.             else if(ud == KEY_DOWN)
  150.             {
  151.                 new Float: X, Float: Y, Float: Z;
  152.                 GetObjectPos(objectid, X, Y, Z);
  153.                         MoveObject(objectid, X, Y-2.0, Z, PUMPKIN_SPEED, 0.0, 0.0, 0.0);
  154.                         return true;
  155.                 }
  156.  
  157.             if(lr == KEY_LEFT)
  158.             {
  159.                 new Float: X, Float: Y, Float: Z;
  160.                 GetObjectPos(objectid, X, Y, Z);
  161.                         MoveObject(objectid, X-2.0, Y, Z, PUMPKIN_SPEED, 0.0, 0.0, 0.0);
  162.                         return true;
  163.                 }
  164.             else if(lr == KEY_RIGHT)
  165.             {
  166.             new Float: X, Float: Y, Float: Z;
  167.                 GetObjectPos(objectid, X, Y, Z);
  168.                         MoveObject(objectid, X+2.0, Y, Z, PUMPKIN_SPEED, 0.0, 0.0, 0.0);
  169.                         return true;
  170.                 }
  171.         }
  172.     return 1;
  173. }
  174.  
  175. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  176. {
  177.     if(DrivingPumpkin[playerid] == true && newkeys & KEY_SECONDARY_ATTACK)
  178.     {
  179.         CallLocalFunction("cmd_destroypumpkin", "is", playerid, "nullstring");
  180.         return true;
  181.     }
  182.     return 1;
  183. }
  184.  
  185. public OnPlayerDeath(playerid, killerid, reason)
  186. {
  187.         if(DrivingPumpkin[playerid] == true)
  188.         {
  189.                 DestroyObject(Pumpkin[playerid]);
  190.                 Pumpkin[playerid] = -1;
  191.                 DrivingPumpkin[playerid] = false;
  192.                 return 1;
  193.         }
  194.         return true;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement