auctionsystem.pwn 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Auction System
  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. stock HigherBid(playerid)
  34. {
  35. new
  36. AuctionItem = GetPVarInt(playerid, "AuctionItem");
  37. if(Auctions[AuctionItem][InProgress] == 1) {
  38. if(Auctions[AuctionItem][Bidder] != 0) {
  39. new Player = ReturnUser(Auctions[AuctionItem][Wining]);
  40. if(IsPlayerConnected(Player) && GetPlayerSQLId(Player) == Auctions[AuctionItem][Bidder])
  41. {
  42. GivePlayerCash(Player, Auctions[AuctionItem][Bid]);
  43. SendClientMessageEx(Player, COLOR_WHITE, "Someone has outbid you, your money has been returned.");
  44. new szMessage[128];
  45. format(szMessage, sizeof(szMessage), "Amount of $%d has been returned to %s(%d) (IP:%s) for being outbid", Auctions[AuctionItem][Bid], GetPlayerNameEx(Player), GetPlayerSQLId(Player), GetPlayerIpEx(Player));
  46. Log("logs/auction.log", szMessage);
  47. GivePlayerCash(playerid, -GetPVarInt(playerid, "BidPlaced"));
  48. Auctions[AuctionItem][Bid] = GetPVarInt(playerid, "BidPlaced");
  49. Auctions[AuctionItem][Bidder] = GetPlayerSQLId(playerid);
  50. strcpy(Auctions[AuctionItem][Wining], GetPlayerNameExt(playerid), MAX_PLAYER_NAME);
  51. format(szMessage, sizeof(szMessage), "You have placed a bid of $%i on %s.", GetPVarInt(playerid, "BidPlaced"), Auctions[AuctionItem][BiddingFor]);
  52. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  53. format(szMessage, sizeof(szMessage), "%s(%d) (IP:%s) has placed a bid of $%i on %s(%i)", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerIpEx(playerid), GetPVarInt(playerid, "BidPlaced"), Auctions[AuctionItem][BiddingFor], AuctionItem);
  54. Log("logs/auction.log", szMessage);
  55. SaveAuction(AuctionItem);
  56. DeletePVar(playerid, "BidPlaced");
  57. DeletePVar(playerid, "AuctionItem");
  58. }
  59. else
  60. {
  61. new query[128];
  62. mysql_format(MainPipeline, query, sizeof(query), "SELECT `Money` FROM `accounts` WHERE `id` = %d", Auctions[AuctionItem][Bidder]);
  63. mysql_tquery(MainPipeline, query, "ReturnMoney", "i", playerid);
  64. }
  65. }
  66. else
  67. {
  68. new
  69. szMessage[128];
  70. GivePlayerCash(playerid, -GetPVarInt(playerid, "BidPlaced"));
  71. Auctions[AuctionItem][Bid] = GetPVarInt(playerid, "BidPlaced");
  72. Auctions[AuctionItem][Bidder] = GetPlayerSQLId(playerid);
  73. strcpy(Auctions[AuctionItem][Wining], GetPlayerNameExt(playerid), MAX_PLAYER_NAME);
  74. format(szMessage, sizeof(szMessage), "You have placed a bid of $%i on %s.", GetPVarInt(playerid, "BidPlaced"), Auctions[AuctionItem][BiddingFor]);
  75. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  76. format(szMessage, sizeof(szMessage), "%s(%d) (IP:%s) has placed a bid of $%i on %s(%i)", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerIpEx(playerid), GetPVarInt(playerid, "BidPlaced"), Auctions[AuctionItem][BiddingFor], AuctionItem);
  77. Log("logs/auction.log", szMessage);
  78. SaveAuction(AuctionItem);
  79. DeletePVar(playerid, "BidPlaced");
  80. DeletePVar(playerid, "AuctionItem");
  81. }
  82. }
  83. return 1;
  84. }
  85. forward EndAuction(auction);
  86. public EndAuction(auction)
  87. {
  88. if(Auctions[auction][InProgress] == 1 && Auctions[auction][Bidder] != 0) {
  89. if(Auctions[auction][Expires] == 0) {
  90. new string[128];
  91. format( string, sizeof( string ), "{AA3333}AdmWarning{FFFF00}: %s has won the auction for %s with the amount of $%d", Auctions[auction][Wining], Auctions[auction][BiddingFor], Auctions[auction][Bid]);
  92. ABroadCast( COLOR_YELLOW, string, 2 );
  93. format(string, sizeof(string), "%s(%d) has won the auction for item %s(%i) and has paid $%d", Auctions[auction][Wining], Auctions[auction][Bidder], Auctions[auction][BiddingFor], auction, Auctions[auction][Bid]);
  94. Log("logs/auction.log", string);
  95. new Player = ReturnUser(Auctions[auction][Wining]);
  96. if(IsPlayerConnected(Player) && GetPlayerSQLId(Player) == Auctions[auction][Bidder])
  97. {
  98. format(string, sizeof(string), "(Auction Winner) %s %s", Auctions[auction][Wining], Auctions[auction][BiddingFor]);
  99. AddFlag(Player, INVALID_PLAYER_ID, string);
  100. format(string, sizeof(string), "You have won the auction for the %s!", Auctions[auction][BiddingFor]);
  101. SendClientMessageEx(Player, COLOR_GREEN, string);
  102. }
  103. else
  104. {
  105. format(string, sizeof(string), "(Auction Winner) %s %s", Auctions[auction][Wining], Auctions[auction][BiddingFor]);
  106. AddOFlag(Auctions[auction][Bidder], INVALID_PLAYER_ID, string);
  107. }
  108. Auctions[auction][InProgress] = 0;
  109. Auctions[auction][Bid] = 0;
  110. Auctions[auction][Bidder] = 0;
  111. Auctions[auction][Expires] = 0;
  112. strcpy(Auctions[auction][Wining], "(none)", MAX_PLAYER_NAME);
  113. strcpy(Auctions[auction][BiddingFor], "(none)", 64);
  114. Auctions[auction][Increment] = 0;
  115. KillTimer(Auctions[auction][Timer]);
  116. SaveAuction(auction);
  117. }
  118. else
  119. {
  120. Auctions[auction][Expires] += -1;
  121. }
  122. }
  123. else
  124. {
  125. KillTimer(Auctions[auction][Timer]);
  126. }
  127. return 1;
  128. }
  129. CMD:editauctions(playerid, params[]) {
  130. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1) {
  131. new
  132. szDialog[700];
  133. for (new i; i < sizeof(Auctions); i++)
  134. {
  135. format(szDialog, sizeof(szDialog), "%s\n Auction: %i | Item: %s | Highest Bid: $%i | Wining: %s(%i)", szDialog, i+1, Auctions[i][BiddingFor], Auctions[i][Bid], Auctions[i][Wining], Auctions[i][Bidder]);
  136. }
  137. ShowPlayerDialogEx(playerid, DIALOG_ADMINAUCTIONS, DIALOG_STYLE_LIST, "Auctions", szDialog, "Edit", "Close");
  138. }
  139. return 1;
  140. }
  141. CMD:auctions(playerid, params[]) {
  142. new
  143. szDialog[500];
  144. for (new i; i < sizeof(Auctions); i++)
  145. {
  146. format(szDialog, sizeof(szDialog), "%s\n Auction: %i | Item: %s | Highest Bid: $%i", szDialog, i+1, Auctions[i][BiddingFor], Auctions[i][Bid]);
  147. }
  148. ShowPlayerDialogEx(playerid, DIALOG_AUCTIONS, DIALOG_STYLE_LIST, "Auctions", szDialog, "More Info", "Close");
  149. return 1;
  150. }