Guest User

Dynamic Trucker Job by XStormiests

a guest
May 22nd, 2016
2,025
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 19.42 KB | None | 0 0
  1. ///================Trucker Job ==============================
  2. /*
  3.                      by XStormeist
  4.                      
  5. This system contains an unique approach, instead of making the points for the job myself, I wanted to give this oportunity.
  6. So what's all about? You can create the points where you need to go. Wich are saved in a SQL Database.
  7. You can also delete one if you don't like it.
  8.  
  9. It's a trucker job, but: you are the one that can choose where the player can starts the job from, what are the random points,
  10. that the player can go to.. all those things in-game, without even a single line of code, isn't that convienient?
  11. */
  12.  
  13. ///===== Includes =============
  14. #include <a_samp>
  15. #include <sscanf2>
  16. #include <a_npc>
  17. #include <zcmd>
  18. #include <a_npc>
  19.  
  20. //===== Defines ===============
  21. #define MAX_DELIVERY 100
  22.  
  23. #define DATABASE_NAME "JobPoints.db" // name of the database
  24. #define JOB_GETJOBMESSAGE "Congratiolations, %s you obtained the job. Use /delivery and choose a path." // the message you receive when you get the job
  25. #define JOB_QUITJOBMESSAGE "We're sorry for this missunderstanding, maybe you will come back, thanks for working with us %s" // the message you receive when you quit the job
  26. #define DELIV_AV_TIME 1 // how longer it takes for a delivery to become avaiable again!
  27.  
  28. #define DIALOG_DELIVERY 0
  29. #define DIALOG_DELIVERY_I 1
  30.  
  31. //Where to get the trailers from!
  32. #define TRAILER_GET_X 2033.7379
  33. #define TRAILER_GET_Y 1339.8678
  34. #define TRAILER_GET_Z 10.8203
  35.  
  36. // Where to get the job from
  37.  
  38. #define JOB_GET_X 2033.7379
  39. #define JOB_GET_Y 1339.8678
  40. #define JOB_GET_Z 10.8203
  41. //==>
  42.  
  43.  
  44. //Delivery Cars
  45. // Customize the locations to your liking.
  46. #define CAR1_X 2040.3250
  47. #define CAR1_Y 1325.5275
  48. #define CAR1_Z 10.6719
  49. #define CAR1_A 269.1425
  50.  
  51. #define CAR2_X -1
  52. #define CAR2_Y -1
  53. #define CAR2_Z -1
  54. #define CAR2_A -1
  55.  
  56. #define CAR3_X -1
  57. #define CAR3_Y -1
  58. #define CAR3_Z -1
  59. #define CAR3_A -1
  60.  
  61. #define CAR4_X -1
  62. #define CAR4_Y -1
  63. #define CAR4_Z -1
  64. #define CAR4_A -1
  65.  
  66. #define CAR5_X -1
  67. #define CAR5_Y -1
  68. #define CAR5_Z -1
  69. #define CAR5_A -1
  70.  
  71. #define CAR6_X -1
  72. #define CAR6_Y -1
  73. #define CAR6_Z -1
  74. #define CAR6_A -1
  75.  
  76. #define CAR7_X -1
  77. #define CAR7_Y -1
  78. #define CAR7_Z -1
  79. #define CAR7_A -1
  80.  
  81. #define CAR8_X -1
  82. #define CAR8_Y -1
  83. #define CAR8_Z -1
  84. #define CAR8_A -1
  85.  
  86. #define CAR9_X -1
  87. #define CAR9_Y -1
  88. #define CAR9_Z -1
  89. #define CAR9_A -1
  90.  
  91. #define CAR10_X -1
  92. #define CAR10_Y -1
  93. #define CAR10_Z -1
  94. #define CAR10_A -1
  95.  
  96. //====== Colors ===============
  97. #define COLOR_GREEN 0x0AFF26FF
  98. #define COLOR_RED 0xFF0000FF
  99. //======Variables =============
  100.  
  101. enum truckpoint
  102. {
  103.     DeliveryName[40],
  104.     DeliveryObjective[256],
  105.     DeliveryType,
  106.     Float:FPositionX,
  107.     Float:FPositionY,
  108.     Float:FPositionZ,
  109.     CashReward,
  110.     Exists
  111. }
  112. new P_Info[MAX_DELIVERY][truckpoint]; // I have no clue whatsover why I have called this P_Info..
  113.  
  114. new DB: truckpoints;
  115. new GetJob[MAX_PLAYERS] = {0, 0, ...};
  116. new CarJob[10];
  117. new Accepted[MAX_PLAYERS] = {0, 0, ...};
  118. new Trailer[MAX_PLAYERS] = {0, 0, ...};
  119. new points[MAX_PLAYERS][MAX_DELIVERY];
  120. new Available[MAX_PLAYERS][MAX_DELIVERY];
  121. new getTrailer[MAX_PLAYERS] = {0, 0, ...};
  122. //======Functions=============
  123. stock randomEx(minnum = cellmin, maxnum = cellmax) return random(maxnum - minnum + 1) + minnum; // Credits to Y_Less
  124.  
  125. stock CreateJobInfoGet()
  126. {
  127.     CreatePickup(1239, 0, JOB_GET_X, JOB_GET_Y, JOB_GET_Z, 0);
  128.     Create3DTextLabel("Use /gettruckerjob to get the Trucker Job, use /helptruckerjob for commands", COLOR_GREEN, JOB_GET_X, JOB_GET_Y, JOB_GET_Z, 50.0, 0, 0);
  129. }
  130.  
  131. stock IsPlayerInRangeOfJobPoint(playerid)
  132. {
  133.     if( IsPlayerInRangeOfPoint(playerid, 5.0, JOB_GET_X, JOB_GET_Y, JOB_GET_Z ) )
  134.             return true;
  135.     return false;
  136. }
  137.  
  138. stock IsJobCar(vehicleid)
  139. {
  140.     for(new i = 0; i < sizeof(CarJob); i++)
  141.         if(vehicleid == CarJob[i])
  142.             return true;
  143.     return false;
  144. }
  145.  
  146. stock ReturnJobCar(playerid)
  147. {
  148.     new vehicleid = GetPlayerVehicleID(playerid);
  149.     for(new i = 0; i < sizeof(CarJob); i++)
  150.         if(vehicleid == CarJob[i])
  151.             return i;
  152.     return false;
  153. }
  154.  
  155. stock TrailerType(deliverytype)
  156. {
  157.     if(deliverytype == 0)
  158.         return 435;
  159.     if(deliverytype == 1)
  160.         return 591;
  161.     if(deliverytype == 2)
  162.         return 584;
  163.     if(deliverytype == 3)
  164.         return 450;
  165.     return 591;
  166. }
  167.  
  168. stock CreateJobCars(modelid)
  169. {
  170.     CarJob[0] = CreateVehicle(modelid, CAR1_X, CAR1_Y, CAR1_Z, CAR1_A, random(255), random(255), 60*5, 0);
  171.     CarJob[1] = CreateVehicle(modelid, CAR2_X, CAR2_Y, CAR2_Z, CAR2_A, random(255), random(255), 60*5, 0);
  172.     CarJob[2] = CreateVehicle(modelid, CAR3_X, CAR3_Y, CAR3_Z, CAR3_A, random(255), random(255), 60*5, 0);
  173.     CarJob[3] = CreateVehicle(modelid, CAR4_X, CAR4_Y, CAR4_Z, CAR4_A, random(255), random(255), 60*5, 0);
  174.     CarJob[4] = CreateVehicle(modelid, CAR5_X, CAR5_Y, CAR5_Z, CAR5_A, random(255), random(255), 60*5, 0);
  175.     CarJob[5] = CreateVehicle(modelid, CAR6_X, CAR6_Y, CAR6_Z, CAR6_A, random(255), random(255), 60*5, 0);
  176.     CarJob[6] = CreateVehicle(modelid, CAR7_X, CAR7_Y, CAR7_Z, CAR7_A, random(255), random(255), 60*5, 0);
  177.     CarJob[7] = CreateVehicle(modelid, CAR8_X, CAR8_Y, CAR8_Z, CAR8_A, random(255), random(255), 60*5, 0);
  178.     CarJob[8] = CreateVehicle(modelid, CAR9_X, CAR9_Y, CAR9_Z, CAR9_A, random(255), random(255), 60*5, 0);
  179.     CarJob[9] = CreateVehicle(modelid, CAR10_X, CAR10_Y, CAR10_Z, CAR10_A, random(255), random(255), 60*5, 0);
  180. }
  181.  
  182. stock CreateTruckPoint(delivID,delivType ,delivName[], delivObj[], cashreward = 0, Float:posx = -1.0, Float:posy = -1.0, Float:posz = -1.0)
  183. {
  184.     new DBResult: dresult;
  185.     new query1[256];
  186.     format(query1, sizeof(query1), "SELECT * FROM `TruckPoints` WHERE `DeliveryID` = '%i'", delivID, delivName);
  187.     dresult = db_query(truckpoints, query1);
  188.  
  189.     new query[1024];
  190.     format(query, sizeof(query), "INSERT INTO `TruckPoints` (`DeliveryID`, `DeliveryType`, `DeliveryObjective`, `DeliveryName`, `CashReward`, `FinalPositionX`, `FinalPositionY`, `FinalPositionZ`) VALUES('%d', '%d', '%s', '%s', '%d', '%f', '%f', '%f')", delivID, delivType, delivObj, delivName, cashreward, posx, posy, posz);
  191.    
  192.     if( !db_num_rows(dresult)  )
  193.         db_query(truckpoints, query);
  194.        
  195.     P_Info[delivID][DeliveryType] = delivType;
  196.     P_Info[delivID][CashReward] = cashreward;
  197.     P_Info[delivID][FPositionX] = posx;
  198.     P_Info[delivID][FPositionY] = posy;
  199.     P_Info[delivID][FPositionZ] = posz;
  200.     strmid(P_Info[delivID][DeliveryObjective], delivObj, 0, 9999, 9999);
  201.     strmid(P_Info[delivID][DeliveryName], delivName, 0, 9999, 9999);
  202.     P_Info[delivID][Exists] = 1;
  203.     return 1;
  204. }
  205.  
  206. stock LoadTruckPoints()
  207. {
  208.     new Field[1000], query[256];
  209.     new DBResult: tResult;
  210.     for(new i = 1; i <= MAX_DELIVERY; i++)
  211.     {
  212.         format(query, sizeof(query), "SELECT * FROM `TruckPoints` WHERE `DeliveryID` = '%i'", i);
  213.         tResult = db_query(truckpoints, query);
  214.         if( db_num_rows(tResult) )
  215.         {
  216.             db_get_field_assoc(tResult, "DeliveryType" , Field, 1000);
  217.             P_Info[i][DeliveryType] = strval(Field);
  218.             db_get_field_assoc(tResult, "DeliveryObjective" , Field, 1000);
  219.             strmid(P_Info[i][DeliveryObjective], Field, 0, sizeof(Field),9999);
  220.             db_get_field_assoc(tResult, "DeliveryName" , Field, 1000);
  221.             strmid(P_Info[i][DeliveryName], Field, 0, sizeof(Field), 9999);
  222.             db_get_field_assoc(tResult, "CashReward" , Field, 1000);
  223.             P_Info[i][CashReward] = strval(Field);
  224.             db_get_field_assoc(tResult, "FinalPositionX" , Field, 1000);
  225.             P_Info[i][FPositionX] = floatstr(Field);
  226.             db_get_field_assoc(tResult, "FinalPositionY" , Field, 1000);
  227.             P_Info[i][FPositionY] = floatstr(Field);
  228.             db_get_field_assoc(tResult, "FinalPositionZ" , Field, 1000);
  229.             P_Info[i][FPositionZ] = floatstr(Field);
  230.             P_Info[i][Exists] = 1;
  231.         }
  232.         else P_Info[i][Exists] = 0;
  233.     }
  234.     return 1;
  235. }
  236.  
  237. stock CountExistingPoints()
  238. {
  239.     new count = 0;
  240.     for(new i = 0; i < MAX_DELIVERY; i++)
  241.         if(P_Info[i][Exists] == 1)
  242.             count++;
  243.     return count;
  244. }
  245.  
  246. stock GetDistanceToPoint(playerid, Float:posx, Float:posy, Float:posz, &Float:distance)
  247. {
  248.    new Float: X, Float: Y, Float: Z;
  249.    GetPlayerPos(playerid, X, Y, Z);
  250.    distance = floatsqroot( (posx-X)*(posx-X)+(posy-Y)*(posy-Y)+(posz-Z)*(posz-Z) );
  251.    return 1;
  252. }
  253.  
  254. //======Publics/Callbacks and Timers ==========
  255. forward DelivAgain(playerid);
  256. public DelivAgain(playerid)
  257. {
  258.     new deliv = GetPVarInt(playerid, "delivery_id");
  259.     new string[256];
  260.     format(string, sizeof(string), "Delivery ID %d is available again! you can take it again!", deliv);
  261.     SendClientMessage(playerid, COLOR_GREEN, string);
  262.     Available[playerid][deliv] = 1;
  263.     return 1;
  264. }
  265. //====== Filterscript =========
  266.  
  267.  
  268. public OnFilterScriptInit()
  269. {
  270.     CreateJobInfoGet();
  271.     CreateJobCars(515);
  272.     //Creating database
  273.     truckpoints = db_open(DATABASE_NAME);
  274.     db_query(truckpoints, "CREATE TABLE IF NOT EXISTS `TruckPoints` (`DeliveryID`,`DeliveryType`, `DeliveryObjective`, `DeliveryName` , `CashReward`, `FinalPositionX`, `FinalPositionY`, `FinalPositionZ`)");
  275.     db_query(truckpoints, "CREATE TABLE IF NOT EXISTS `Truckers` (`TruckerName`)");
  276.     //others
  277.     LoadTruckPoints();
  278.     return 1;
  279. }
  280.  
  281. public OnFilterScriptExit()
  282. {
  283.    db_close(truckpoints);
  284.    return 1;
  285. }
  286.  
  287. public OnPlayerConnect(playerid)
  288. {
  289.     for(new i = 0; i < MAX_DELIVERY; i++)
  290.         Available[playerid][i] = 1;
  291.     GetJob[playerid] = 0;
  292.     return 1;
  293. }
  294.  
  295. public OnPlayerDisconnect(playerid, reason)
  296. {
  297.     getTrailer[playerid] = 0;
  298.     for(new i = 0; i < MAX_DELIVERY; i++)
  299.         Available[playerid][i] = 1;
  300.     GetJob[playerid] = 0;
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerExitVehicle(playerid, vehicleid)
  305. {
  306.     if(Accepted[playerid] == 1)
  307.     {
  308.         Accepted[playerid] = 0;
  309.         DisablePlayerCheckpoint(playerid);
  310.         SendClientMessage(playerid, COLOR_RED, "You abandoned the job!");
  311.     }
  312.     return 1;
  313. }
  314.  
  315. public OnPlayerDeath(playerid, killerid, reason)
  316. {
  317.     if(Accepted[playerid] == 1)
  318.     {
  319.         Accepted[playerid] = 0;
  320.         DisablePlayerCheckpoint(playerid);
  321.         SendClientMessage(playerid, COLOR_RED, "Mission failed!");
  322.     }
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerEnterCheckpoint(playerid)
  327. {
  328.     if(GetJob[playerid] == 1)
  329.     {
  330.         GetJob[playerid] = 0;
  331.         DisablePlayerCheckpoint(playerid);
  332.     }
  333.     if(Accepted[playerid] == 1)
  334.     {
  335.         new deliv = GetPVarInt(playerid, "delivery_id");
  336.         new vehicleid = GetPlayerVehicleID(playerid);
  337.         new trailer = GetVehicleTrailer(vehicleid);
  338.         if(IsPlayerInAnyVehicle(playerid))
  339.         {
  340.             if(IsJobCar(vehicleid))
  341.             {
  342.                 if(IsTrailerAttachedToVehicle(vehicleid) && trailer == Trailer[playerid])
  343.                 {
  344.                     Accepted[playerid] = 0;
  345.                
  346.                     new string[512];
  347.                     new money = randomEx( P_Info[deliv][CashReward]/4, P_Info[deliv][CashReward] );
  348.                     format(string, sizeof(string), "You have received $%d for completing %s delivery !", money);
  349.                     SendClientMessage(playerid, COLOR_GREEN, string);
  350.                     DisablePlayerCheckpoint(playerid);
  351.                     DestroyVehicle(Trailer[playerid]);
  352.                     GivePlayerMoney(playerid, money);
  353.                     Available[playerid][deliv] = 0;
  354.        
  355.                     SetTimerEx("DelivAgain", 1000*60*DELIV_AV_TIME, false, "i", playerid);
  356.                     format(string, sizeof(string), "Delivery ID %i is no longer available, please wait %d min(s) to take it again", deliv, DELIV_AV_TIME);
  357.                     SendClientMessage(playerid, COLOR_GREEN, string);
  358.  
  359.                 }
  360.             }
  361.         }
  362.     }
  363.     if(getTrailer[playerid] == 1)
  364.     {
  365.         new deliv = GetPVarInt(playerid, "delivery_id");
  366.         new vehicleid = GetPlayerVehicleID(playerid);
  367.         if(IsPlayerInAnyVehicle(playerid))
  368.         {
  369.             if(IsJobCar(vehicleid))
  370.             {
  371.                 new Float: X, Float: Y, Float: Z;
  372.                 GetVehiclePos(vehicleid, X, Y, Z);
  373.                 TogglePlayerControllable(playerid, false);
  374.                 Trailer[playerid] = CreateVehicle(TrailerType(P_Info[deliv][DeliveryType]), X-1, Y, Z, 0, random(255), random(255), 1000*60*2);
  375.                 AttachTrailerToVehicle(Trailer[playerid], CarJob[ReturnJobCar(vehicleid)]);
  376.                 TogglePlayerControllable(playerid, true);
  377.                 Accepted[playerid] = 1;
  378.                 getTrailer[playerid] = 0;
  379.                 SendClientMessage(playerid, COLOR_GREEN, "Now, go to the point marked on the radar and make the delivery!");
  380.                 SetPlayerCheckpoint(playerid, P_Info[deliv][FPositionX], P_Info[deliv][FPositionY], P_Info[deliv][FPositionZ], 5);
  381.             }
  382.         }
  383.     }
  384.     return 1;
  385. }
  386.  
  387. public OnPlayerStateChange(playerid, newstate, oldstate)
  388. {
  389.     if(newstate == PLAYER_STATE_DRIVER)
  390.     {
  391.         new vehicle = GetPlayerVehicleID(playerid);
  392.         if(IsJobCar(vehicle))
  393.         {
  394.             new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name));
  395.             new DBResult: dquery; new query[256];
  396.             format(query, sizeof(query), "SELECT * FROM `Truckers` WHERE `TruckerName` = '%s'", name);
  397.             dquery = db_query(truckpoints, query);
  398.             if(!db_num_rows(dquery))
  399.             {
  400.                 SendClientMessage(playerid, COLOR_RED, "You are not allowed to use this vehicle!, only truckers can use this vehicle!");
  401.                 RemovePlayerFromVehicle(playerid);
  402.             }
  403.         }
  404.     }
  405.     return 1;
  406. }
  407.  
  408. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  409. {
  410.     if( dialogid == DIALOG_DELIVERY )
  411.     {
  412.         if(response)
  413.         {
  414.             new deliv = SetPVarInt(playerid, "delivery_id", listitem*0 + points[playerid][listitem]);
  415.             new string[256], str[1024];
  416.             format(string, sizeof(string), "Delivery Name: %s\n", P_Info[deliv][DeliveryName]);
  417.             strcat(str, string);
  418.             format(string, sizeof(string), "Delivery Objective: %s\n", P_Info[deliv][DeliveryObjective]);
  419.             strcat(str, string);
  420.             format(string, sizeof(string), "Delivery Reward: up to %d$\n", P_Info[deliv][CashReward] );
  421.             strcat(str, string);
  422.             new Float: X, Float: Y, Float: Z, Float: distance;
  423.             GetPlayerPos(playerid, X, Y, Z);
  424.             GetDistanceToPoint(playerid, P_Info[deliv][FPositionX], P_Info[deliv][FPositionY], P_Info[deliv][FPositionZ], distance);
  425.             format(string, sizeof(string), "Delivery Distance: %.0f\n", distance);
  426.             strcat(str, string);
  427.             ShowPlayerDialog(playerid, DIALOG_DELIVERY_I, DIALOG_STYLE_MSGBOX, "Delivery", str, "Accept", "Back");
  428.         }
  429.     }
  430.     if(dialogid == DIALOG_DELIVERY_I)
  431.     {
  432.         if(response)
  433.         {
  434.             new vehicleid = GetPlayerVehicleID(playerid);
  435.             if(IsPlayerInAnyVehicle(playerid))
  436.             {
  437.                 if(IsJobCar(vehicleid))
  438.                 {
  439.                     new deliv = GetPVarInt(playerid, "delivery_id");
  440.                     new Float: X, Float: Y, Float: Z, Float: distance;
  441.                     GetPlayerPos(playerid, X, Y, Z);
  442.                     GetDistanceToPoint(playerid, P_Info[deliv][FPositionX], P_Info[deliv][FPositionY], P_Info[deliv][FPositionZ], distance);
  443.                     if(distance > 1000)
  444.                     {
  445.                         getTrailer[playerid] = 1;
  446.                         SetPlayerCheckpoint(playerid, TRAILER_GET_X, TRAILER_GET_Y, TRAILER_GET_Z, 5);
  447.                         SendClientMessage(playerid, COLOR_GREEN, "Go to the checkpoint marked on the radar to get the trailer!");
  448.                     }
  449.                     else SendClientMessage(playerid, COLOR_RED, "Distance too short, take something that's at least 1 km long!");
  450.                 }
  451.                 else SendClientMessage(playerid, COLOR_RED, "You can't do that if you're not in a Trucker car");
  452.             }
  453.             else SendClientMessage(playerid, COLOR_RED, "You can't do that while on-foot!");
  454.  
  455.         }
  456.     }
  457.     return 0;
  458. }
  459.  
  460. /// Commands
  461.  
  462. CMD:gettruckerjob(playerid, params[])
  463. {
  464.     if(IsPlayerInRangeOfJobPoint(playerid))
  465.     {
  466.         new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name));
  467.         new string[256];
  468.         new DBResult: dquery; new query[256];
  469.         format(query, sizeof(query), "SELECT * FROM `Truckers` WHERE `TruckerName` = '%s'", name);
  470.         dquery = db_query(truckpoints, query);
  471.         if(!db_num_rows(dquery))
  472.         {
  473.             format(string, sizeof(string), JOB_GETJOBMESSAGE, name);
  474.             SendClientMessage(playerid, COLOR_GREEN, string);
  475.             format(query, sizeof(query), "INSERT INTO `Truckers` (`TruckerName` ) VALUES('%s')", name);
  476.             db_query(truckpoints, query);
  477.         }
  478.         else
  479.         {
  480.             SendClientMessage(playerid, COLOR_RED, "Sorry, but you already have this job.");
  481.         }
  482.     }
  483.     else
  484.     {
  485.         SendClientMessage(playerid, COLOR_RED, "You need to be at the Trucker Job point to take the job!");
  486.         SetPlayerCheckpoint(playerid, JOB_GET_X, JOB_GET_Y, JOB_GET_Z, 10);
  487.         GetJob[playerid] = 1;
  488.     }
  489.     return 1;
  490. }
  491.  
  492. CMD:quittruckerjob(playerid,params[])
  493. {
  494.     new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name));
  495.     new string[256];
  496.     new DBResult: dquery; new query[256];
  497.     format(query, sizeof(query), "SELECT * FROM `Truckers` WHERE `TruckerName` = '%s'", name);
  498.     dquery = db_query(truckpoints, query);
  499.     if(!db_num_rows(dquery))
  500.     {
  501.         SendClientMessage(playerid, COLOR_RED, "We're sorry, but you don't have this job in order to quit!");
  502.     }
  503.     else
  504.     {
  505.         format(string, sizeof(string), JOB_QUITJOBMESSAGE, name);
  506.         SendClientMessage(playerid, COLOR_GREEN, string);
  507.         format(query, sizeof(query), "DELETE FROM `Truckers` WHERE `TruckerName` = '%s'", name);
  508.         db_query(truckpoints, query);
  509.     }
  510.     return 1;
  511. }
  512.  
  513. CMD:delivery(playerid, params[])
  514. {
  515.     if(Accepted[playerid] == 1)
  516.         return SendClientMessage(playerid, COLOR_RED, "You already accepted a Delivery, use /canceldelivery to take another one!");
  517.     new take = 0;
  518.     new vehicleid = GetPlayerVehicleID(playerid);
  519.     if(!IsPlayerInAnyVehicle(playerid))
  520.         return SendClientMessage(playerid, COLOR_RED, "You can't use this command on-foot!");
  521.     if(!IsJobCar(vehicleid))
  522.         return SendClientMessage(playerid, COLOR_RED, "You must be in a Trucker car to use this command!");
  523.     if(CountExistingPoints() == 0)
  524.         return SendClientMessage(playerid, COLOR_RED, "Sorry, but there are no available routes for delivery!");
  525.     new str[1024], string[1024];
  526.     strcat(str, "Delivery IDs\n");
  527.     for(new i = 0; i < MAX_DELIVERY; i++)
  528.     {
  529.         if(P_Info[i][Exists] && Available[playerid][i])
  530.         {
  531.             points[playerid][take] = i;
  532.             take++;
  533.             format(string, sizeof(string), "%d\n",  i);
  534.             strcat(str, string);
  535.         }
  536.     }
  537.     if(take > 0)
  538.         ShowPlayerDialog(playerid, DIALOG_DELIVERY, DIALOG_STYLE_TABLIST_HEADERS, "Deliveries", str, "Select", "Cancel");
  539.     else
  540.         SendClientMessage(playerid, COLOR_RED, "Sorry but there are no available routes for delivery!");
  541.     return 1;
  542. }
  543.  
  544. CMD:canceldelivery(playerid, params[])
  545. {
  546.     if(Accepted[playerid] == 1)
  547.     {
  548.         new vehicleid = GetPlayerVehicleID(playerid);
  549.         DisablePlayerCheckpoint(playerid);
  550.         if(IsTrailerAttachedToVehicle(vehicleid))
  551.             DestroyVehicle(Trailer[playerid]);
  552.         SendClientMessage(playerid, COLOR_RED, "You have abandoned your delivery!");
  553.     }
  554.     return 1;
  555. }
  556.  
  557.  
  558. CMD:helptruckerjob(playerid, params[])
  559. {
  560.     SendClientMessage(playerid, COLOR_RED, "=======Commands======");
  561.     SendClientMessage(playerid, COLOR_GREEN, "/quittruckerjob, /gettruckerjob, /delivery, /canceldelivery");
  562.     if(IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_RED, "RCON Admins only: /createtruckpoint");
  563.     SendClientMessage(playerid, COLOR_RED, "====================");
  564.     return 1;
  565. }
  566.  
  567.  
  568. //admin only
  569. CMD:createtruckpoint(playerid, params[])
  570. {
  571.     new deliveryname[256], deliverytype ,deliveryobjective[512], cashreward;
  572.     new Float: X, Float: Y, Float: Z;
  573.     GetPlayerPos(playerid, X, Y, Z);
  574.     if(!IsPlayerAdmin(playerid))
  575.         return SendClientMessage(playerid, COLOR_RED, "Only RCON Admins can use this command!");
  576.     if(sscanf(params, "s[256]s[256]D(1000)D(1)", deliveryname, deliveryobjective, cashreward, deliverytype))
  577.         return SendClientMessage(playerid, COLOR_RED, "Use: /createtruckpoint [deliveryname] [deliveryobjective] [cashreward] [deliverytype]");
  578.     CreateTruckPoint(1+CountExistingPoints(), deliverytype, deliveryobjective, deliveryname, cashreward, X, Y, Z);
  579.     SendClientMessage(playerid, COLOR_GREEN, "You have created a truck point!");
  580.     return 1;
  581. }
Advertisement
Add Comment
Please, Sign In to add comment