inactive2.pwn 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Inactivity System
  11. Jingles
  12. Next Generation Gaming, LLC
  13. (created by Next Generation Gaming Development Team)
  14. * Copyright (c) 2016, Next Generation Gaming, LLC
  15. *
  16. * All rights reserved.
  17. *
  18. * Redistribution and use in source and binary forms, with or without modification,
  19. * are not permitted in any case.
  20. *
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  23. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  24. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  25. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  26. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  27. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  28. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  29. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  30. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  31. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  32. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. */
  34. #define INACTIVE_REGULAR 15552000 // 180 days
  35. #define INACTIVE_BRONZE_VIP 1814400 // 21 days
  36. #define INACTIVE_SILVER_VIP 2592000 // 30 days
  37. #define INACTIVE_GOLD_VIP 5184000 // 60 days
  38. /*
  39. task Inactive_ResourceCheck[60000 * 60]() { // Every 1 hour.
  40. Inactive_CheckHouses();
  41. }
  42. Inactive_CheckHouses() {
  43. mysql_tquery(MainPipeline, "SELECT id FROM houses WHERE `Inactive` = 0 AND `Expire` < UNIX_TIMESTAMP(NOW()) AND `Ignore` = 0", true, "Inactive_OnCheckHouses", "");
  44. }
  45. */
  46. forward Inactive_OnCheckHouses();
  47. public Inactive_OnCheckHouses() {
  48. new iRows,
  49. iFields,
  50. iCount,
  51. iHouseID;
  52. cache_get_data(iRows, iFields, MainPipeline);
  53. while(iCount < iRows) {
  54. iHouseID = cache_get_field_content_int(iCount, "id", MainPipeline);
  55. Inactive_ProcessProperty(iHouseID, 0);
  56. iCount++;
  57. }
  58. }
  59. Inactive_ProcessProperty(i, type) {
  60. new iOwnerID;
  61. switch(type) {
  62. case 0: { // Houses
  63. iOwnerID = HouseInfo[i][hOwnerID];
  64. HouseInfo[i][hLastLogin] = 0;
  65. HouseInfo[i][hExpire] = 0;
  66. HouseInfo[i][hInactive] = 1;
  67. HouseInfo[i][hValue] = 3000000;
  68. SaveHouse(i);
  69. ReloadHousePickup(i);
  70. format(szMiscArray, sizeof(szMiscArray), "UPDATE `accounts` SET `Apartment` = '-1', `Apartment2` = '-1', `Apartment3` = '-1' WHERE `id` = '%d'", HouseInfo[i][hOwnerID]);
  71. }
  72. }
  73. mysql_tquery(MainPipeline, szMiscArray, false, "Inactive_OnProcessProperty", "iii", i, type, iOwnerID);
  74. }
  75. forward Inactive_OnProcessProperty(i, type, iOwnerID);
  76. public Inactive_OnProcessProperty(i, type, iOwnerID) {
  77. if(type == 0) {
  78. /*
  79. format(szMiscArray, sizeof(szMiscArray), "INACTIVITY: House ID %d", i);
  80. DBLog(iOwnerID, INVALID_PLAYER_ID, "Inactivity", szMiscArray);
  81. */
  82. format(szMiscArray, sizeof(szMiscArray), "[HOUSE]: Account ID %d's House ID %d was set to INACTIVE.", iOwnerID, i);
  83. }
  84. Log("logs/inactivity.log", szMiscArray);
  85. }
  86. Inactive_BuyProperty(playerid, i, type) {
  87. switch(type) {
  88. case 0: {
  89. HouseInfo[i][hLastLogin] = gettime();
  90. HouseInfo[i][hExpire] = gettime() + INACTIVE_REGULAR;
  91. HouseInfo[i][hInactive] = 0;
  92. format(szMiscArray, sizeof(szMiscArray), "[HOUSE]: %s (%d) bought House ID (%d) previously owned by %s (%d)",
  93. GetPlayerNameExt(playerid), PlayerInfo[playerid][pId], i, HouseInfo[i][hOwnerName], HouseInfo[i][hOwnerID]);
  94. Log("logs/inactivity.log", szMiscArray);
  95. }
  96. }
  97. }
  98. Inactive_CalcTime() {
  99. /*
  100. if(PlayerInfo[playerid][pDonateRank] == 0) return INACTIVE_REGULAR;
  101. if(PlayerInfo[playerid][pDonateRank] == 1) return INACTIVE_BRONZE_VIP;
  102. if(PlayerInfo[playerid][pDonateRank] == 2) return INACTIVE_SILVER_VIP;
  103. if(PlayerInfo[playerid][pDonateRank] == 3) return INACTIVE_GOLD_VIP;
  104. */
  105. return INACTIVE_REGULAR;
  106. }
  107. /*
  108. CMD:inactivitycheck(playerid, params[]) {
  109. if(!IsAdminLevel(playerid, ADMIN_EXECUTIVE)) return 1;
  110. Inactive_ResourceCheck();
  111. cmd_admin(playerid, "[INACTIVITY]: All server properties are checked for their inactivity.");
  112. return 1;
  113. }
  114. */