Advertisement
Guest User

zDivines Wheel Rotator

a guest
Apr 18th, 2013
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.49 KB | None | 0 0
  1. /*
  2. Script Title: Wheel Rotator
  3. Scripter: zDivine aka Mercenary
  4. Script Date: 20130418 (YYYYMMDD)
  5. Script Version: 1.0.0.0
  6.  
  7. */
  8.  
  9. #define FILTERSCRIPT
  10.  
  11. #include <a_samp> // Credits to SA-MP Team
  12. #include <sscanf2> // Credits to Y_Less
  13. #include <zcmd> // Credits to Zeex
  14. #include <YSI\y_colours> // Credits to Y_Less
  15.  
  16. #if defined FILTERSCRIPT
  17.  
  18. public OnFilterScriptInit()
  19. {
  20.     print("\n--------------------------------------");
  21.     print("    Wheel Rotator by zDivine loaded!    ");
  22.     print("--------------------------------------\n");
  23.     return 1;
  24. }
  25.  
  26. public OnFilterScriptExit()
  27. {
  28.     return 1;
  29. }
  30.  
  31. #endif
  32.  
  33. // Variables
  34. new bool:pWheelRotator[MAX_PLAYERS] = false; // Used to make sure it's enabled, to decrease faults.
  35. new iWheel[MAX_PLAYERS] = 0;
  36. new timerID;
  37.  
  38. // Settings
  39. #define MAX_VEHICLEWHEELS 5 // The max amount of wheels they can have rotating on their vehicle at once.
  40. #define WHEEL_CHANGE_TIMER 2000 // (In milliseconds) - The time in which the wheels change.
  41.  
  42. // Enums
  43. enum pvwInfo
  44. {
  45.     pvwWheelID
  46. }
  47. new PVWI[MAX_PLAYERS][MAX_VEHICLEWHEELS][pvwInfo];
  48.  
  49. // Stocks
  50. stock IsValidWheelID(wheelid)
  51. {
  52.     switch(wheelid)
  53.     {
  54.         case 1073, 1074: return 1;
  55.         case 1053: return 1;
  56.         case 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085: return 1;
  57.         case 1097, 1098: return 1;
  58.         case 1025: return 1;
  59.         default: return 0;
  60.     }
  61.     return 0;
  62. }
  63. stock GetFreeWheelSlot(playerid)
  64. {
  65.     for(new i = 0; i < MAX_VEHICLEWHEELS; i++)
  66.     {
  67.         if(PVWI[playerid][i][pvwWheelID] == 0) return i;
  68.     }
  69.     return -1;
  70. }
  71. stock GetWheelName(wheelid)
  72. {
  73.     new wText[24];
  74.     switch(wheelid)
  75.     {
  76.         case 1073: wText = "Shadow";
  77.         case 1074: wText = "Mega";
  78.         case 1053: wText = "Rimshine";
  79.         case 1076: wText = "Wires";
  80.         case 1077: wText = "Classic";
  81.         case 1078: wText = "Twist";
  82.         case 1079: wText = "Cutter";
  83.         case 1080: wText = "Switch";
  84.         case 1081: wText = "Grove";
  85.         case 1082: wText = "Import";
  86.         case 1083: wText = "Dollar";
  87.         case 1084: wText = "Trance";
  88.         case 1085: wText = "Atomic";
  89.         case 1096: wText = "Ahab";
  90.         case 1097: wText = "Virtual";
  91.         case 1098: wText = "Access";
  92.         case 1025: wText = "Offroad";
  93.         default: wText = "Unknown";
  94.     }
  95.     return wText;
  96. }
  97. stock GetWheelCount(playerid)
  98. {
  99.     new wheelcount;
  100.     for(new i = 0; i < MAX_VEHICLEWHEELS; i++)
  101.     {
  102.         if(PVWI[playerid][i][pvwWheelID] != 0)
  103.         {
  104.             wheelcount++;
  105.         }
  106.     }
  107.     return wheelcount;
  108. }
  109.  
  110. // Timers
  111. forward ChangeWheel();
  112. public ChangeWheel()
  113. {
  114.     for(new i = 0; i < MAX_PLAYERS; i++)
  115.     {
  116.         new iWheelCount = GetWheelCount(i);
  117.         if(iWheel[i] == MAX_VEHICLEWHEELS || iWheel[i] == iWheelCount) { iWheel[i] = 0; }
  118.         if(pWheelRotator[i] == true)
  119.         {
  120.             if(PVWI[i][iWheel[i]][pvwWheelID] != 0)
  121.             {
  122.                 if(IsPlayerInAnyVehicle(i))
  123.                 {
  124.                     AddVehicleComponent(GetPlayerVehicleID(i), PVWI[i][iWheel[i]][pvwWheelID]);
  125.                     iWheel[i]++;
  126.                 }
  127.             }
  128.         }
  129.     }
  130. }
  131.  
  132. // Commands
  133. CMD:wrhelp(playerid, params[])
  134. {
  135.     SendClientMessage(playerid, X11_WHITE, "WHEEL ROTATOR: /listwheels /addwheel /removewheel /enablewr /disablewr /wheellist");
  136.     return 1;
  137. }
  138.  
  139. CMD:listwheels(playerid, params[])
  140. {
  141.     SendClientMessage(playerid, X11_BLUE, "Listing current wheels...");
  142.     for(new i = 0; i < MAX_VEHICLEWHEELS; i++)
  143.     {
  144.         if(PVWI[playerid][i][pvwWheelID] != 0)
  145.         {
  146.             new string[128];
  147.             format(string, sizeof(string), "Wheel Slot: %d | Wheel ID: %d | Wheel Name: %s", i, PVWI[playerid][i][pvwWheelID], GetWheelName(PVWI[playerid][i][pvwWheelID]));
  148.             SendClientMessage(playerid, X11_WHITE, string);
  149.         }
  150.     }
  151.     return 1;
  152. }
  153.  
  154. CMD:enablewr(playerid, params[])
  155. {
  156.     pWheelRotator[playerid] = true;
  157.     SendClientMessage(playerid, X11_GREEN, "Wheel rotator enabled.");
  158.     timerID = SetTimer("ChangeWheel", WHEEL_CHANGE_TIMER, true);
  159.     return 1;
  160. }
  161.  
  162. CMD:disablewr(playerid, params[])
  163. {
  164.     pWheelRotator[playerid] = false;
  165.     SendClientMessage(playerid, X11_RED, "Wheel rotator disabled.");
  166.     KillTimer(timerID);
  167.     return 1;
  168. }
  169.  
  170. CMD:addwheel(playerid, params[])
  171. {
  172.     new wheelid, string[128];
  173.     if(sscanf(params, "d", wheelid))
  174.     {
  175.         SendClientMessage(playerid, X11_BLUE, "CMD: /addwheel [wheelid]");
  176.         SendClientMessage(playerid, X11_WHITE, "You can use /wheellist to get a full list of wheel ID's.");
  177.         return 1;
  178.     }
  179.    
  180.     if(IsValidWheelID(wheelid))
  181.     {
  182.         new wid = GetFreeWheelSlot(playerid);
  183.         if(wid == -1) return SendClientMessage(playerid, X11_RED, "ERROR: You cannot add anymore wheels to your rotator.");
  184.        
  185.         PVWI[playerid][wid][pvwWheelID] = wheelid;
  186.         format(string, sizeof(string), "You have added a new wheel to your wheel rotator. [Wheel ID: %d | Wheel Name: %s]", wheelid, GetWheelName(wheelid));
  187.         SendClientMessage(playerid, X11_ORANGE, string);
  188.     }
  189.     else
  190.     {
  191.         SendClientMessage(playerid, X11_RED, "ERROR: Invalid wheel ID. See /wheellist.");
  192.         return 1;
  193.     }
  194.     return 1;
  195. }
  196.  
  197. CMD:removewheel(playerid, params[])
  198. {
  199.     new wslot, string[128];
  200.     if(sscanf(params, "d", wslot))
  201.     {
  202.         SendClientMessage(playerid, X11_BLUE, "CMD: /removewheel ]slot]");
  203.         for(new i = 0; i < MAX_VEHICLEWHEELS; i++)
  204.         {
  205.             if(PVWI[playerid][i][pvwWheelID] != 0)
  206.             {
  207.                 format(string, sizeof(string), "Wheel Slot: %d | Wheel ID: %d | Wheel Name: %s", i, PVWI[playerid][i][pvwWheelID], GetWheelName(PVWI[playerid][i][pvwWheelID]));
  208.                 SendClientMessage(playerid, X11_WHITE, string);
  209.             }
  210.         }
  211.         return 1;
  212.     }
  213.    
  214.     if(wslot >= 0 && wslot < MAX_VEHICLEWHEELS)
  215.     {
  216.         if(PVWI[playerid][wslot][pvwWheelID] != 0)
  217.         {
  218.             PVWI[playerid][wslot][pvwWheelID] = 0;
  219.             format(string, sizeof(string), "Wheel slot %d was removed.", wslot);
  220.             SendClientMessage(playerid, X11_ORANGE, string);
  221.         }
  222.         else
  223.         {
  224.             SendClientMessage(playerid, X11_RED, "ERROR: That slot doesn't contain a wheel.");
  225.             return 1;
  226.         }
  227.     }
  228.     else
  229.     {
  230.         SendClientMessage(playerid, X11_RED, "ERROR: Invalid slot.");
  231.         return 1;
  232.     }
  233.     return 1;
  234. }
  235.  
  236. CMD:wheellist(playerid, params[])
  237. {
  238.     SendClientMessage(playerid, X11_BLUE, "Listing wheel names and ID's...");
  239.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Shadow | Wheel ID: 1073");
  240.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Mega | Wheel ID: 1074");
  241.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Rimshine | Wheel ID: 1053");
  242.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Wires | Wheel ID: 1076");
  243.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Classic | Wheel ID: 1077");
  244.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Twist | Wheel ID: 1078");
  245.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Cutter | Wheel ID: 1079");
  246.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Switch | Wheel ID: 1080");
  247.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Grove | Wheel ID: 1081");
  248.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Import | Wheel ID: 1082");
  249.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Dolllar | Wheel ID: 1083");
  250.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Trance | Wheel ID: 1084");
  251.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Atomic | Wheel ID: 1085");
  252.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Ahab | Wheel ID: 1096");
  253.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Virtual | Wheel ID: 1097");
  254.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Access | Wheel ID: 1098");
  255.     SendClientMessage(playerid, X11_WHITE, "Wheel Name: Offroad | Wheel ID: 1025");
  256.     SendClientMessage(playerid, X11_ORANGE, "You may need to scroll up to see the entire list.");
  257.     return 1;
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement