Advertisement
System32

S32_Rent

Feb 10th, 2012
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.75 KB | None | 0 0
  1. /*
  2.      ••••    •     •      ••••    •••••     •••••     ••     ••   •••••     •••••
  3.     •         •   •      •          •     •       • •   • •       •   •  •
  4.      ••••      • •        ••••      •     •••     •  • •  •   •••••     •
  5.          •      •             •     •     •       •   •   •       •    •
  6.      ••••        •          ••••      •     •••••   •       •   •••••   •••••
  7.  
  8.  * S32_Rent - Create rent vehicles with just one line!
  9.  * Copyright(c)System32
  10.  * This file is provided as is (no warranties)
  11.  
  12.  * Functions: 13
  13.  * Credits:
  14.      * System32 - Almost everything!
  15.      * Y_Less - y_hooks, y_timers & foreach!
  16.  * That is basically it, have fun with this include and easy scripting!
  17.  */
  18.  
  19. #include <a_samp>
  20. #include <YSI\y_timers>
  21. #include <YSI\y_hooks>
  22. #include <foreach>
  23.  
  24. #define MAX_RENT_VEHICLES 100
  25.  
  26. new Iterator: RentVehicles<MAX_RENT_VEHICLES>, rID, Float: Position[4], rvstring[128];
  27.  
  28. enum rInfo
  29. {
  30.     rModelID,
  31.     Float: rX,
  32.     Float: rY,
  33.     Float: rZ,
  34.     Float: rA,
  35.     rColor1,
  36.     rColor2,
  37.     rRespawnDelay,
  38.     rPrice,
  39.     rVehicle
  40. };
  41. new RentInfo[MAX_RENT_VEHICLES][rInfo];
  42.  
  43. /*
  44.  
  45.  • Function: CreateRentVehicle(modelid, Float: X, Float: Y, Float: Z, Float: A, Color1, Color2, Respawn_Delay, Price)
  46.  • Usage: Creating rent vehicle!
  47.  • Parameters:
  48.         modelid: ID of vehicle
  49.         X, Y, Z, A: position of vehicle
  50.         Color1, Color2: color of vehicle
  51.         Respawn_Delay: respawn delay of vehicle
  52.         Price: price which player must pay when he enter rent vehicle (and every minute)
  53.  • Example: CreateRentVehicle(411, 996.4219,-1856.0022,12.8203,276.0259, 3, 0, 60, 5000);
  54.  
  55. */
  56.  
  57. stock CreateRentVehicle(modelid, Float: X, Float: Y, Float: Z, Float: A, Color1, Color2, Respawn_Delay, Price)
  58. {
  59.     RentInfo[rID][rModelID] = modelid;
  60.     RentInfo[rID][rX] = X;
  61.     RentInfo[rID][rY] = Y;
  62.     RentInfo[rID][rZ] = Z;
  63.     RentInfo[rID][rA] = A;
  64.     RentInfo[rID][rColor1] = Color1;
  65.     RentInfo[rID][rColor2] = Color2;
  66.     RentInfo[rID][rRespawnDelay] = Respawn_Delay;
  67.     RentInfo[rID][rPrice] = Price;
  68.     RentInfo[rID][rVehicle] = CreateVehicle(RentInfo[rID][rModelID], RentInfo[rID][rX], RentInfo[rID][rY], RentInfo[rID][rZ], RentInfo[rID][rA], RentInfo[rID][rColor1], RentInfo[rID][rColor2], RentInfo[rID][rRespawnDelay]);
  69.     Iter_Add(RentVehicles, rID);
  70.     rID ++;
  71. }
  72.  
  73. /*
  74.  
  75.  • Function: DestroyRentVehicle(vehicleid)
  76.  • Usage: Destroying rent vehicle!
  77.  • Parameters:
  78.         vehicleid: ID of vehicle
  79.  • Example: DestroyRentVehicle(1);
  80.  
  81. */
  82.  
  83. stock DestroyRentVehicle(vehicleid)
  84. {
  85.     RentInfo[vehicleid][rModelID] = 0;
  86.     RentInfo[vehicleid][rX] = 0;
  87.     RentInfo[vehicleid][rY] = 0;
  88.     RentInfo[vehicleid][rZ] = 0;
  89.     RentInfo[vehicleid][rA] = 0;
  90.     RentInfo[vehicleid][rColor1] = 0;
  91.     RentInfo[vehicleid][rColor2] = 0;
  92.     RentInfo[vehicleid][rRespawnDelay] = 0;
  93.     RentInfo[vehicleid][rPrice] = 0;
  94.     DestroyVehicle(RentInfo[vehicleid][rVehicle]);
  95.     Iter_Remove(RentVehicles, vehicleid);
  96. }
  97.  
  98. /*
  99.  
  100.  • Function: GetTotalRentVehicles()
  101.  • Usage: Getting total created rent vehicles!
  102.  • Parameters:
  103.         vehicleid: ID of vehicle
  104.  • Example: printf("Total rent vehicles loaded: %d", GetTotalRentVehicle());
  105.  
  106. */
  107.  
  108. stock GetTotalRentVehicles() return Iter_Count(RentVehicles);
  109.  
  110. /*
  111.  
  112.  • Function: IsRentVehicle(vehicleid)
  113.  • Usage: Checking is vehicle rent vehicle!
  114.  • Parameters:
  115.         vehicleid: ID of vehicle
  116.  • Example: if(IsRentVehicle(1)) printf("Vehicle ID 1 is rent vehicle!");
  117.  
  118. */
  119.  
  120. stock IsRentVehicle(vehicleid)
  121. {
  122.     foreach(RentVehicles, rv)
  123.     {
  124.         if(vehicleid == RentInfo[rv][rVehicle]) return 1;
  125.     }
  126.     return 0;
  127. }
  128.  
  129. /*
  130.  
  131.  • Function: GetRentModelID(vehicleid)
  132.  • Usage: Getting vehicle model of rent vehicle!
  133.  • Parameters:
  134.         vehicleid: ID of vehicle
  135.  • Example: printf("Vehicle model of vehicle ID 1 is: %d", GetRentModelID(1));
  136.  
  137. */
  138.  
  139. stock GetRentModelID(vehicleid) return RentInfo[vehicleid][rModelID];
  140.  
  141. /*
  142.  
  143.  • Function: GetRentPos(vehicleid, &Float: X, &Float: Y, &Float: Z)
  144.  • Usage: Getting position of rent vehicle!
  145.  • Parameters:
  146.         vehicleid: ID of vehicle
  147.         X, Y, Z: Parameters in which variables will be stored values
  148.  • Example:
  149.  new Float: Position[3];
  150.  GetRentPos(1, Position[0], Position[1], Position[2]);
  151.  printf("X: %f Y: %f Z: %f", Position[0], Position[1], Position[2]);
  152.  
  153. */
  154.  
  155. stock GetRentPos(vehicleid, &Float: X, &Float: Y, &Float: Z)
  156. {
  157.     X = RentInfo[vehicleid][rX];
  158.     Y = RentInfo[vehicleid][rY];
  159.     Z = RentInfo[vehicleid][rZ];
  160. }
  161.  
  162. /*
  163.  
  164.  • Function: GetRentZAngle(vehicleid, &Float: A)
  165.  • Usage: Getting Z angle of rent vehicle!
  166.  • Parameters:
  167.         vehicleid: ID of vehicle
  168.         A: Parameter in which variable will be stored value
  169.  • Example:
  170.  new Float: Position[1];
  171.  GetRentZAngle(1, Position[0]);
  172.  printf("A: %f", Position[0]);
  173.  
  174. */
  175.  
  176. stock GetRentZAngle(vehicleid, &Float: A)
  177. {
  178.     A = RentInfo[vehicleid][rA];
  179. }
  180.  
  181. /*
  182.  
  183.  • Function: GetRentColor(vehicleid, &C1, &C2)
  184.  • Usage: Getting color 1 & color 2 of rent vehicle!
  185.  • Parameters:
  186.         vehicleid: ID of vehicle
  187.         C1, C2: Parameters in which variables will be stored values
  188.  • Example:
  189.  new Float: Color[2];
  190.  GetRentColor(vehicleid, Color[0], Color[1]):
  191.  printf("Color 1: %d Color 2: %d", Color[0], Color[1]);
  192.  
  193. */
  194.  
  195. stock GetRentColor(vehicleid, &C1, &C2)
  196. {
  197.     C1 = RentInfo[vehicleid][rColor1];
  198.     C2 = RentInfo[vehicleid][rColor2];
  199. }
  200.  
  201. /*
  202.  
  203.  • Function: GetRentRespawnDelay(vehicleid)
  204.  • Usage: Getting respawn delay of rent vehicle!
  205.  • Parameters:
  206.         vehicleid: ID of vehicle
  207.  • Example: printf("Respawn Delay: %d", GetRentRespawnDelay(1));
  208.  
  209. */
  210.  
  211. stock GetRentRespawnDelay(vehicleid) return RentInfo[vehicleid][rRespawnDelay];
  212.  
  213. /*
  214.  
  215.  • Function: GetRentPrice(vehicleid)
  216.  • Usage: Getting price of rent vehicle!
  217.  • Parameters:
  218.         vehicleid: ID of vehicle
  219.  • Example: printf("Price: %d", GetRentPrice(1));
  220.  
  221. */
  222.  
  223. stock GetRentPrice(vehicleid) return RentInfo[vehicleid][rPrice];
  224.  
  225. /*
  226.  
  227.  • Function: GetPlayerRentID(playerid)
  228.  • Usage: Getting ID of rent vehicle in which is player!
  229.  • Parameters:
  230.         playerid: ID of player
  231.  • Example: printf("ID: %d", GetPlayerRentID(playerid));
  232.  
  233. */
  234.  
  235. stock GetPlayerRentID(playerid)
  236. {
  237.     foreach(RentVehicles, rv)
  238.     {
  239.         if(IsPlayerInVehicle(playerid, RentInfo[rv][rVehicle])) return GetPlayerVehicleID(playerid);
  240.     }
  241.     return 0;
  242. }
  243.  
  244. /*
  245.  
  246.  • Function: IsPlayerInRentVehicle(playerid, vehicleid)
  247.  • Usage: Checking is player in specific rent vehicle!
  248.  • Parameters:
  249.         playerid: ID of player
  250.         vehicleid: ID of vehicle
  251.  • Example: if(IsPlayerInRentVehicle(playerid, 1)) SendClientMessage(playerid, -1, "You are in rent vehicle 1");
  252.  
  253. */
  254.  
  255. stock IsPlayerInRentVehicle(playerid, vehicleid)
  256. {
  257.     if(IsPlayerInVehicle(playerid, RentInfo[vehicleid][rVehicle])) return 1;
  258.     return 0;
  259. }
  260.  
  261. /*
  262.  
  263.  • Function: IsPlayerInAnyRentVehicle(playerid)
  264.  • Usage: Checking is player in any rent vehicle!
  265.  • Parameters:
  266.         playerid: ID of player
  267.  • Example: if(IsPlayerInAnyRentVehicle(playerid)) SendClientMessage(playerid, -1, "You are in some rent vehicle");
  268.  
  269. */
  270.  
  271. stock IsPlayerInAnyRentVehicle(playerid)
  272. {
  273.     foreach(RentVehicles, rv)
  274.     {
  275.         if(IsPlayerInVehicle(playerid, RentInfo[rv][rVehicle])) return 1;
  276.     }
  277.     return 0;
  278. }
  279.  
  280. Hook:RC1_OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  281. {
  282.     if(IsRentVehicle(vehicleid))
  283.     {
  284.         foreach(RentVehicles, rv)
  285.         {
  286.             if(vehicleid == RentInfo[rv][rVehicle])
  287.             {
  288.                 if(ispassenger) return 0;
  289.                 if(GetPlayerMoney(playerid) < RentInfo[rv][rPrice])
  290.                 {
  291.                     GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
  292.                     SetPlayerPos(playerid, Position[0], Position[1], Position[2]);
  293.                     GameTextForPlayer(playerid, "You don't have enough ~r~money~w~!", 5000, 5);
  294.                     return 1;
  295.                 }
  296.                 GivePlayerMoney(playerid, -RentInfo[rv][rPrice]);
  297.                 format(rvstring, sizeof(rvstring), "Rent price: -%d", RentInfo[rv][rPrice]);
  298.                 SendClientMessage(playerid, -1, rvstring);
  299.             }
  300.         }
  301.     }
  302.     return 1;
  303. }
  304.  
  305. task CheckRentVehicles[60000]()
  306. {
  307.     foreach(Player, i)
  308.     {
  309.         foreach(RentVehicles, rv)
  310.         {
  311.             if(IsPlayerInVehicle(i, RentInfo[rv][rVehicle]))
  312.             {
  313.                 if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  314.                 {
  315.                     if(GetPlayerMoney(i) < RentInfo[rv][rPrice])
  316.                     {
  317.                         RemovePlayerFromVehicle(i);
  318.                         GameTextForPlayer(i, "You don't have enough ~r~money~w~!", 5000, 5);
  319.                         return 1;
  320.                     }
  321.                     GivePlayerMoney(i, -RentInfo[rv][rPrice]);
  322.                     format(rvstring, sizeof(rvstring), "Rent price: -%d", RentInfo[rv][rPrice]);
  323.                     SendClientMessage(i, -1, rvstring);
  324.                 }
  325.             }
  326.         }
  327.     }
  328.     return 1;
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement