1
0

towing.pwn 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Towing Group Type
  11. Next Generation Gaming, LLC
  12. (created by Next Generation Gaming Development Team)
  13. * Copyright (c) 2016, Next Generation Gaming, LLC
  14. *
  15. * All rights reserved.
  16. *
  17. * Redistribution and use in source and binary forms, with or without modification,
  18. * are not permitted in any case.
  19. *
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  25. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  26. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  29. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  30. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  31. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. */
  33. CMD:impound(playerid, params[]) {
  34. if(IsACop(playerid) || IsATowman(playerid)) {
  35. if(!IsAtImpoundingPoint(playerid)) return SendClientMessageEx(playerid, COLOR_GREY, "You are not near the impound point, you can't impound!");
  36. if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) {
  37. new veh = -1, iVehTowed = GetVehicleTrailer(GetPlayerVehicleID(playerid)), szMessage[128];
  38. if(!GetVehicleModel(iVehTowed)) return SendClientMessageEx(playerid, COLOR_GREY, "The vehicle in tow has been desynced and therefore cannot be impounded.");
  39. // Player Vehicle.
  40. foreach(new i: Player) {
  41. if((veh = GetPlayerVehicle(i, iVehTowed)) != -1) {
  42. new iCost = (((PlayerVehicleInfo[i][veh][pvPrice] / 20 + PlayerVehicleInfo[i][veh][pvTicket]) / 100) * 30);
  43. SetGroupBudget(PlayerInfo[playerid][pMember], iCost);
  44. --PlayerCars;
  45. VehicleSpawned[i]--;
  46. PlayerVehicleInfo[i][veh][pvImpounded] = 1;
  47. PlayerVehicleInfo[i][veh][pvSpawned] = 0;
  48. PlayerVehicleInfo[i][veh][pvFuel] = VehicleFuel[iVehTowed];
  49. GetVehicleHealth(PlayerVehicleInfo[i][veh][pvId], PlayerVehicleInfo[i][veh][pvHealth]);
  50. DetachTrailerFromVehicle(iVehTowed);
  51. DestroyVehicle(iVehTowed);
  52. if(IsValidDynamicArea(iVehEnterAreaID[iVehTowed])) DestroyDynamicArea(iVehEnterAreaID[iVehTowed]);
  53. PlayerVehicleInfo[i][veh][pvId] = INVALID_PLAYER_VEHICLE_ID;
  54. g_mysql_SaveVehicle(playerid, veh);
  55. format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.",GetPlayerNameEx(i), VehicleName[PlayerVehicleInfo[i][veh][pvModelId] - 400]);
  56. SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage);
  57. format(szMessage, sizeof(szMessage), "Your %s has been impounded. You may release it at the DMV in Dillimore.", VehicleName[PlayerVehicleInfo[i][veh][pvModelId] - 400]);
  58. SendClientMessageEx(i, COLOR_LIGHTBLUE, szMessage);
  59. format(szMessage, sizeof(szMessage), "HQ: %s has impounded %s's %s ($%s unpaid tickets).", GetPlayerNameEx(playerid), GetPlayerNameEx(i), VehicleName[PlayerVehicleInfo[i][veh][pvModelId] - 400], number_format(PlayerVehicleInfo[i][veh][pvTicket]));
  60. SendGroupMessage(arrGroupData[PlayerInfo[playerid][pMember]][g_iGroupType], RADIO, szMessage);
  61. format(szMessage, sizeof(szMessage), "IMPOUND: %s has impounded %s's %s and gained $%s", GetPlayerNameEx(playerid), GetPlayerNameEx(i), VehicleName[PlayerVehicleInfo[i][veh][pvModelId] - 400], number_format(iCost));
  62. GroupLog(PlayerInfo[playerid][pMember], szMessage);
  63. break;
  64. }
  65. }
  66. // Crate Vehicle.
  67. if((veh = IsDynamicCrateVehicle(iVehTowed)) != -1) {
  68. if(ValidGroup(CrateVehicle[veh][cvGroupID])) {
  69. if(PlayerInfo[playerid][pMember] == CrateVehicle[veh][cvGroupID]) return SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "* Your group owns this vehicle you can't impound it!");
  70. new iCost = (((2000000 / 20 + CrateVehicle[veh][cvTickets]) / 100) * 30), Float:vHealth;
  71. SetGroupBudget(PlayerInfo[playerid][pMember], iCost);
  72. GetVehicleHealth(CrateVehicle[veh][cvSpawnID], vHealth);
  73. CrateVehicle[veh][cvHealth] = vHealth;
  74. CrateVehicle[veh][cvFuel] = VehicleFuel[CrateVehicle[veh][cvSpawnID]];
  75. CrateVehicle[veh][cvImpound] = 1;
  76. DetachTrailerFromVehicle(iVehTowed);
  77. if(CreateCount(veh) > 0) AnnounceRespawn(CrateVehicle[veh][cvGroupID], "impounded", veh, CreateCount(veh));
  78. DestroyVehicle(CrateVehicle[veh][cvSpawnID]);
  79. CrateVehicle[veh][cvSpawned] = 0;
  80. CrateVehicle[veh][cvSpawnID] = INVALID_VEHICLE_ID;
  81. CrateVehCheck(veh); // Ensure we check for crates!
  82. SaveCrateVehicle(veh);
  83. format(szMessage, sizeof(szMessage), "* Your %s has been impounded you can recover it from your garage. (( /cvstorage ))", VehicleName[CrateVehicle[veh][cvModel] - 400]);
  84. foreach(new i: Player) {
  85. if(PlayerInfo[i][pLeader] == CrateVehicle[veh][cvGroupID]) {
  86. ChatTrafficProcess(i, arrGroupData[CrateVehicle[veh][cvGroupID]][g_hRadioColour] * 256 + 255, szMessage, 12);
  87. }
  88. }
  89. format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.", arrGroupData[CrateVehicle[veh][cvGroupID]][g_szGroupName], VehicleName[CrateVehicle[veh][cvModel] - 400]);
  90. SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage);
  91. format(szMessage, sizeof(szMessage), "HQ: %s has impounded %s's %s ($%s unpaid tickets).", GetPlayerNameEx(playerid), arrGroupData[CrateVehicle[veh][cvGroupID]][g_szGroupName], VehicleName[CrateVehicle[veh][cvModel] - 400], number_format(CrateVehicle[veh][cvTickets]));
  92. SendGroupMessage(arrGroupData[PlayerInfo[playerid][pMember]][g_iGroupType], RADIO, szMessage);
  93. format(szMessage, sizeof(szMessage), "IMPOUND: %s has impounded %s's %s and gained $%s", GetPlayerNameEx(playerid), arrGroupData[CrateVehicle[veh][cvGroupID]][g_szGroupName], VehicleName[CrateVehicle[veh][cvModel] - 400], number_format(iCost));
  94. GroupLog(PlayerInfo[playerid][pMember], szMessage);
  95. }
  96. else veh = -1;
  97. }
  98. if(veh == -1) {
  99. SendClientMessageEx(playerid, COLOR_GRAD1, "The impound administration could not find any registration on the vehicle and has returned it.");
  100. DetachTrailerFromVehicle(iVehTowed);
  101. SetVehicleToRespawn(iVehTowed);
  102. }
  103. arr_Towing[playerid] = INVALID_VEHICLE_ID;
  104. }
  105. }
  106. return 1;
  107. }