Guest User

Gas pumps

a guest
Sep 12th, 2015
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.54 KB | None | 0 0
  1. nearestPump(playerID) {
  2.     for(new i = 0; i < MAX_GAS_PUMPS; i++) if(pumpData[i][pumpID] != INVALID_PUMP_ID && IsPlayerInRangeOfPoint(playerID, 4.0, pumpData[i][pumpPos][0], pumpData[i][pumpPos][1], pumpData[i][pumpPos][2])) {
  3.         return i;
  4.     }
  5.     return INVALID_PUMP_ID;
  6. }
  7.  
  8. forward onLoadPump(bizID); public onLoadPump(bizID) {
  9.     static
  10.         rows,
  11.         fields,
  12.         localPumpID = -1;
  13.  
  14.     cache_get_data(rows, fields, g_iConnectionHandle[0]);
  15.  
  16.     for(new i = 0; i < rows; i++) if((localPumpID = getPumpFreeID()) != -1) {
  17.         pumpData[localPumpID][pumpBusinessID] = bizID;
  18.         pumpData[localPumpID][pumpID] = cache_get_field_content_int(i, "pumpID");
  19.         pumpData[localPumpID][pumpPos][0] = cache_get_field_content_float(i, "pumpPosX");
  20.         pumpData[localPumpID][pumpPos][1] = cache_get_field_content_float(i, "pumpPosY");
  21.         pumpData[localPumpID][pumpPos][2] = cache_get_field_content_float(i, "pumpPosZ");
  22.         pumpData[localPumpID][pumpPos][3] = cache_get_field_content_float(i, "pumpPosA");
  23.         pumpData[localPumpID][pumpFuel] = cache_get_field_content_int(i, "pumpFuel");
  24.    
  25.         pumpData[localPumpID][pumpObject] = CreateDynamicObject(1676, pumpData[localPumpID][pumpPos][0], pumpData[localPumpID][pumpPos][1], pumpData[localPumpID][pumpPos][2], 0.0, 0.0, pumpData[localPumpID][pumpPos][3]);
  26.         updatePump(localPumpID);
  27.     }
  28.     return 1;
  29. }
  30.  
  31.  
  32. getPumpFreeID() {
  33.     for(new i = 0; i < MAX_GAS_PUMPS; i++) if(pumpData[i][pumpID] != INVALID_PUMP_ID) {
  34.         return i;
  35.     }
  36.     return -1;
  37. }
  38.  
  39. stock isPumpOccupied(pumpid) {
  40.     foreach (Player, i) if(playerData[i][pRefill] != INVALID_VEHICLE_ID) {
  41.         if(playerData[i][pGasPump] == pumpid) return 1;
  42.     }
  43.     return 0;
  44. }
  45.  
  46. deletePump(localPumpID) {
  47.     if(localPumpID != -1 && pumpData[localPumpID][pumpID] != INVALID_PUMP_ID) {
  48.         new
  49.             szQuery[90];
  50.  
  51.         format(szQuery, sizeof szQuery, "DELETE FROM `pumps` WHERE `pumpBusinessID` = %i AND `pumpID` = %i", businessData[pumpData[localPumpID][pumpBusinessID]][businessID], pumpData[localPumpID][pumpID]);
  52.         mysql_function_query(g_iConnectionHandle[0], szQuery, false, "", "");
  53.  
  54.         if(IsValidDynamic3DTextLabel(pumpData[localPumpID][pumpText3D]))
  55.             DestroyDynamic3DTextLabel(pumpData[localPumpID][pumpText3D]);
  56.  
  57.         if(IsValidDynamicObject(pumpData[localPumpID][pumpObject]))
  58.             DestroyDynamicObject(pumpData[localPumpID][pumpObject]);
  59.  
  60.         foreach (Player, i) if(playerData[i][pGasPump] == localPumpID) {
  61.             stopRefilling(i);
  62.         }
  63.         pumpData[localPumpID][pumpFuel] = 0;
  64.         pumpData[localPumpID][pumpID] = INVALID_PUMP_ID;
  65.     }
  66.     return 1;
  67. }
  68.  
  69. createPump(playerID, bizID) {
  70.     static
  71.         Float: playerPos[4],
  72.         szQuery[64],
  73.         localPumpID = INVALID_PUMP_ID;
  74.  
  75.     if(GetPlayerPos(playerID, playerPos[0], playerPos[1], playerPos[2])) {
  76.         if((localPumpID = getPumpFreeID()) != -1) {
  77.             GetPlayerFacingAngle(playerID, playerPos[3]);
  78.            
  79.             playerPos[0] += 5.0 * floatsin(-playerPos[3], degrees);
  80.             playerPos[1] += 5.0 * floatcos(-playerPos[3], degrees);
  81.  
  82.             pumpData[localPumpID][pumpBusinessID] = bizID;
  83.             pumpData[localPumpID][pumpPos][0] = playerPos[0];
  84.             pumpData[localPumpID][pumpPos][1] = playerPos[1];
  85.             pumpData[localPumpID][pumpPos][2] = playerPos[2];
  86.             pumpData[localPumpID][pumpPos][3] = playerPos[3];
  87.             pumpData[localPumpID][pumpFuel] = 2000;
  88.             pumpData[localPumpID][pumpObject] = CreateDynamicObject(1676, playerPos[0], playerPos[1], playerPos[2], 0.0, 0.0, playerPos[3]);
  89.  
  90.             format(szQuery, sizeof szQuery, "INSERT INTO `pumps` (`pumpBusinessID`) VALUES(%i)", businessData[bizID][businessID]);
  91.             mysql_function_query(g_iConnectionHandle[0], szQuery, true, "onCreatePump", "i", localPumpID);
  92.             return localPumpID;
  93.         }
  94.     }
  95.     return INVALID_PUMP_ID;
  96. }
  97.  
  98. forward onCreatePump(localPumpID);
  99. public onCreatePump(localPumpID)
  100. {
  101.      pumpData[localPumpID][pumpID] = cache_insert_id();
  102.      savePump(localPumpID);
  103.      return 1;
  104. }
  105.  
  106. updatePump(localPumpID) {
  107.     if(localPumpID != -1 && pumpData[localPumpID][pumpID] != INVALID_PUMP_ID) {
  108.         static
  109.             string[128];
  110.  
  111.         format(string, sizeof(string), "[GAS PUMP: %i]\n{FFFFFF}Fuel Left: %i liters", localPumpID, pumpData[localPumpID][pumpFuel]);
  112.  
  113.         if(IsValidDynamic3DTextLabel(pumpData[localPumpID][pumpText3D]))
  114.             DestroyDynamic3DTextLabel(pumpData[localPumpID][pumpText3D]);
  115.  
  116.         if(IsValidDynamicObject(pumpData[localPumpID][pumpObject]))
  117.             DestroyDynamicObject(pumpData[localPumpID][pumpObject]);
  118.  
  119.         pumpData[localPumpID][pumpText3D] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, pumpData[localPumpID][pumpPos][0], pumpData[localPumpID][pumpPos][1], pumpData[localPumpID][pumpPos][2], 15.0);
  120.         pumpData[localPumpID][pumpObject] = CreateDynamicObject(1676, pumpData[localPumpID][pumpPos][0], pumpData[localPumpID][pumpPos][1], pumpData[localPumpID][pumpPos][2], 0.0, 0.0, pumpData[localPumpID][pumpPos][3]);
  121.     }
  122.     return 1;
  123. }
  124.  
  125. savePump(localPumpID) {
  126.     static
  127.         szQuery[256];
  128.  
  129.     format(szQuery, sizeof szQuery, "UPDATE `pumps` SET `pumpPosX` = '%.4f', `pumpPosY` = '%.4f', `pumpPosZ` = '%.4f', `pumpPosA` = '%.4f', `pumpFuel` = %i WHERE `pumpBusinessID` = %i AND `pumpID` = %i",
  130.         pumpData[localPumpID][pumpPos][0],
  131.         pumpData[localPumpID][pumpPos][1],
  132.         pumpData[localPumpID][pumpPos][2],
  133.         pumpData[localPumpID][pumpPos][3],
  134.         pumpData[localPumpID][pumpFuel],
  135.         businessData[pumpData[localPumpID][pumpBusinessID]][businessID],
  136.         pumpData[localPumpID][pumpID]
  137.     );
  138.     return mysql_function_query(g_iConnectionHandle[0], szQuery, false, "OnQueryFinish", "i", THREAD_NO_RESULT);
  139. }
  140.  
  141.  
  142. stock removeBusinessPumps(bizID) {
  143.     if(businessData[bizID][businessID] != INVALID_BUSINESS_ID && businessData[bizID][businessType] == 7) {
  144.         static
  145.             szQuery[32];
  146.  
  147.         foreach (Player, i) if(playerData[i][pRefill] != INVALID_VEHICLE_ID && playerData[i][pGasStation] == bizID) stopRefilling(i);
  148.  
  149.         for(new i = 0; i < MAX_GAS_PUMPS; i++) if(pumpData[i][pumpID] != INVALID_PUMP_ID && pumpData[i][pumpBusinessID] == bizID) {
  150.             DestroyDynamicObject(pumpData[i][pumpObject]);
  151.             DestroyDynamic3DTextLabel(pumpData[i][pumpText3D]);
  152.  
  153.             pumpData[i][pumpID] = INVALID_PUMP_ID;
  154.             pumpData[i][pumpFuel] = 0;
  155.         }
  156.         format(szQuery, sizeof szQuery, "DELETE FROM `pumps` WHERE `pumpBusinessID` = %i", businessData[bizID][businessID]);
  157.         mysql_function_query(g_iConnectionHandle[0], szQuery, false, "", "");
  158.     }
  159.     return 1;
  160. }
  161.  
  162. CMD:createpump(playerid, params[]) {
  163.     new
  164.         localPumpID,
  165.         bizID = INVALID_BUSINESS_ID;
  166.  
  167.     if(playerData[playerid][pAdmin] < 5)
  168.         return sendErrorMessage(playerid, "You are not authorised to use this command.");
  169.  
  170.     if(sscanf(params, "i", bizID))
  171.         return sendSyntaxMessage(playerid, "/createpump [businessid]");
  172.  
  173.     if((bizID < 0 || bizID >= MAX_BUSINESSES) || businessData[bizID][businessID] == INVALID_BUSINESS_ID)
  174.         return sendErrorMessage(playerid, "You specified an invalid business ID.");
  175.  
  176.     if(businessData[bizID][businessType] != 7)
  177.         return sendErrorMessage(playerid, "You specified a business that is not a Gas Station.");
  178.  
  179.     if(GetPlayerInterior(playerid) > 0 || GetPlayerVirtualWorld(playerid) > 0)
  180.         return sendErrorMessage(playerid, "You cannot place gas pumps inside interiors.");
  181.  
  182.     localPumpID = createPump(playerid, bizID);
  183.  
  184.     if(localPumpID == INVALID_PUMP_ID)
  185.         return sendErrorMessage(playerid, "You cannot create any more gas pumps for the specified business, you have reached the limit.");
  186.  
  187.     sendServerMessage(playerid, "You have successfully created gas pump ID: %i, type '/editpump' to edit.", localPumpID);
  188.     return 1;
  189. }
  190.  
  191. CMD:editpump(playerid, params[]) {
  192.     new
  193.         localPumpID;
  194.  
  195.     if(playerData[playerid][pAdmin] < 5)
  196.         return sendErrorMessage(playerid, "You are not authorised to use this command.");
  197.  
  198.     if(sscanf(params, "i", localPumpID))
  199.         return sendSyntaxMessage(playerid, "/editpump [pumpid]");
  200.  
  201.     if((localPumpID < 0 || localPumpID >= MAX_GAS_PUMPS) || pumpData[localPumpID][pumpID] == INVALID_PUMP_ID)
  202.         return sendErrorMessage(playerid, "You specified an invalid pump ID.");
  203.  
  204.     sendServerMessage(playerid, "You are editing pump ID %i.", localPumpID);
  205.  
  206.     playerData[playerid][pEditPump] = localPumpID;
  207.  
  208.     EditDynamicObject(playerid, pumpData[localPumpID][pumpObject]);
  209.     return 1;
  210. }
  211.  
  212. CMD:destroypump(playerid, params[]) {
  213.     new
  214.         localPumpID;
  215.  
  216.     if(playerData[playerid][pAdmin] < 5)
  217.         return sendErrorMessage(playerid, "You are not authorised to use this command.");
  218.  
  219.     if(sscanf(params, "i", localPumpID))
  220.         return sendSyntaxMessage(playerid, "/destroypump [pumpid]");
  221.  
  222.     if((localPumpID < 0 || localPumpID >= MAX_GAS_PUMPS) || pumpData[localPumpID][pumpID] == INVALID_PUMP_ID)
  223.         return sendErrorMessage(playerid, "You specified an invalid pump ID.");
  224.  
  225.     deletePump(localPumpID);
  226.    
  227.     sendServerMessage(playerid, "You have destroyed pump ID %i.", localPumpID);
  228.     return 1;
  229. }
  230.  
  231. CMD:setpump(playerid, params[]) {
  232.     new
  233.         localPumpID,
  234.         localpumpFuel;
  235.  
  236.     if(playerData[playerid][pAdmin] < 5)
  237.         return sendErrorMessage(playerid, "You are not authorised to use this command.");
  238.  
  239.     if(sscanf(params, "ii", localPumpID, localpumpFuel))
  240.         return sendSyntaxMessage(playerid, "/setpump [pumpid] [fuel amount]");
  241.  
  242.     if((localPumpID < 0 || localPumpID >= MAX_GAS_PUMPS) || pumpData[localPumpID][pumpID] == INVALID_PUMP_ID)
  243.         return sendErrorMessage(playerid, "You specified an invalid pump ID.");
  244.  
  245.     pumpData[localPumpID][pumpFuel] = localpumpFuel;
  246.  
  247.     updatePump(localPumpID);
  248.     savePump(localPumpID);
  249.  
  250.     sendServerMessage(playerid, "You have changed the fuel to %i in pump ID %i.", localpumpFuel, localPumpID);
  251.     return 1;
  252. }
Advertisement
Add Comment
Please, Sign In to add comment