1
0

PPC_MissionsAssistance.inc 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. // This timer is created every time a player changes his class to assistance
  2. forward Assistance_CheckPlayers(playerid);
  3. public Assistance_CheckPlayers(playerid)
  4. {
  5. // Scan through all players
  6. for (new PlayerToCheck; PlayerToCheck < MAX_PLAYERS; PlayerToCheck++)
  7. {
  8. // check if this player is connected
  9. if (IsPlayerConnected(PlayerToCheck))
  10. {
  11. //Check if that player needs assistance
  12. if (APlayerData[PlayerToCheck][AssistanceNeeded] == true)
  13. SetPlayerMarkerForPlayer(playerid, PlayerToCheck, 0xFF0000FF); // Make that player red to the assistance-player
  14. else
  15. {
  16. // Reset the playercolor based on the player's class
  17. switch (APlayerData[PlayerToCheck][PlayerClass])
  18. {
  19. case ClassTruckDriver: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassTruckDriver);
  20. case ClassBusDriver: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassBusDriver);
  21. case ClassPilot: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassPilot);
  22. case ClassPolice: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassPolice);
  23. case ClassMafia: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassMafia);
  24. case ClassCourier: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassCourier);
  25. case ClassAssistance: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassAssistance);
  26. }
  27. }
  28. }
  29. }
  30. }
  31. // This function lets the assistance player repair and refuel another player's vehicle if he called for assistance
  32. Assistance_FixVehicle(playerid)
  33. {
  34. // Setup local variables
  35. new vid, Float:vhealth, Float:FPayment, Payment, Float:x, Float:y, Float:z, Name[24], AssistName[24], Msg[128];
  36. new vFuel;
  37. // Get the assistance player's name
  38. GetPlayerName(playerid, AssistName, sizeof(AssistName));
  39. // Loop through all players
  40. for (new OtherPlayer; OtherPlayer < MAX_PLAYERS; OtherPlayer++)
  41. {
  42. // Check if this player is online
  43. if (IsPlayerConnected(OtherPlayer))
  44. {
  45. // Check if this player isn't the assistance player
  46. if (OtherPlayer != playerid)
  47. {
  48. // Check if this player needs assistance
  49. if (APlayerData[OtherPlayer][AssistanceNeeded] == true)
  50. {
  51. // Check if this player is the driver of a vehicle
  52. if (GetPlayerVehicleSeat(OtherPlayer) == 0)
  53. {
  54. // Get the location of the player
  55. GetPlayerPos(OtherPlayer, x, y, z);
  56. // Check if this player is closeby the assistance player
  57. if (IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
  58. {
  59. // Clear the other player's need for assistance
  60. APlayerData[OtherPlayer][AssistanceNeeded] = false;
  61. // Get the name of the other player
  62. GetPlayerName(OtherPlayer, Name, sizeof(Name));
  63. // Get the vehicle-id of that player's vehicle
  64. vid = GetPlayerVehicleID(OtherPlayer);
  65. // Get the current health of that vehicle
  66. GetVehicleHealth(vid, vhealth);
  67. // Calculate the price to repair the vehicle (calculate as a float, then convert to integer)
  68. FPayment = (1000.0 - vhealth) * 1.0;
  69. Payment = floatround(FPayment, floatround_round);
  70. // Repair the other player's vehicle
  71. RepairVehicle(vid);
  72. // Pay the assistance player and give 1 scorepoint
  73. RewardPlayer(playerid, Payment * 2, 1);
  74. // Let the other player pay for the repairs
  75. RewardPlayer(OtherPlayer, -Payment, 0);
  76. // Let the other player know that his vehicle has been repaired
  77. format(Msg, 128, "{00FF00}Your vehicle has been repaired for {FFFF00}$%i{00FF00} by \"{FFFF00}%s{00FF00}\"", Payment, AssistName);
  78. SendClientMessage(OtherPlayer, 0xFFFFFFFF, Msg);
  79. // Let the assistance player know who's vehicle has been repaired
  80. format(Msg, 128, "{00FF00}You have repaired {FFFF00}%s{00FF00}'s vehicle and earned {FFFF00}$%i", Name, Payment);
  81. SendClientMessage(playerid, 0xFFFFFFFF, Msg);
  82. // Calculate the amount of fuel that needs to be refuelled
  83. vFuel = MaxFuel - AVehicleData[vid][Fuel];
  84. // Calculate the price to refuel
  85. Payment = (vFuel * RefuelMaxPrice) / MaxFuel;
  86. // Pay the assistance player and give 1 scorepoint
  87. RewardPlayer(playerid, Payment * 2, 1);
  88. // Let the other player pay for the refuel
  89. RewardPlayer(OtherPlayer, -Payment, 0);
  90. // Refuel the other player's vehicle
  91. AVehicleData[vid][Fuel] = MaxFuel;
  92. // Increase the stats
  93. APlayerData[playerid][StatsAssistance]++;
  94. // Let the other player know that his vehicle has been refuelled
  95. format(Msg, 128, "{00FF00}Your vehicle has also been refuelled for {FFFF00}$%i{00FF00} by \"{FFFF00}%s{00FF00}\"", Payment, AssistName);
  96. SendClientMessage(OtherPlayer, 0xFFFFFFFF, Msg);
  97. // Let the assistance player know who's vehicle has been refuelled
  98. format(Msg, 128, "{00FF00}You have also refuelled {FFFF00}%s{00FF00}'s vehicle and earned {FFFF00}$%i", Name, Payment);
  99. SendClientMessage(playerid, 0xFFFFFFFF, Msg);
  100. // Save the player's account
  101. PlayerFile_Save(playerid);
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. return 1;
  109. }
  110. // This function allows the assistance player to repair and refuel his own vehicle
  111. Assistance_FixOwnVehicle(playerid)
  112. {
  113. // Get the vehicle-id of the player's vehicle
  114. new vid = GetPlayerVehicleID(playerid);
  115. // Repair the player's vehicle
  116. RepairVehicle(vid);
  117. // Refuel the other player's vehicle
  118. AVehicleData[vid][Fuel] = MaxFuel;
  119. // Let the player know that he has repaired and refuelled his own vehicle
  120. SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}You have repaired and refuelled your own vehicle");
  121. }
  122. // This function gets called when the assistance player dies (or changes class)
  123. Assistance_EndJob(playerid)
  124. {
  125. // Kill the PlayerCheckTimer
  126. KillTimer(APlayerData[playerid][PlayerCheckTimer]);
  127. // Scan through all players (to reset them to their default colors for the assistance-player)
  128. for (new PlayerToCheck; PlayerToCheck < MAX_PLAYERS; PlayerToCheck++)
  129. {
  130. // Check if this player is connected
  131. if (IsPlayerConnected(PlayerToCheck))
  132. {
  133. // Reset the playercolor based on the player's class
  134. switch (APlayerData[PlayerToCheck][PlayerClass])
  135. {
  136. case ClassTruckDriver: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassTruckDriver);
  137. case ClassBusDriver: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassBusDriver);
  138. case ClassPilot: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassPilot);
  139. case ClassPolice: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassPolice);
  140. case ClassMafia: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassMafia);
  141. case ClassCourier: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassCourier);
  142. case ClassAssistance: SetPlayerMarkerForPlayer(playerid, PlayerToCheck, ColorClassAssistance);
  143. }
  144. }
  145. }
  146. return 1;
  147. }