rewardplay.pwn 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Reward Play 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. CMD:rewards(playerid, params[]) {
  34. new string[128];
  35. SendClientMessageEx(playerid, COLOR_GREEN, "Reward Information:");
  36. format(string, sizeof(string), "Total Reward Hours: %d", floatround(PlayerInfo[playerid][pRewardHours]));
  37. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  38. format(string, sizeof(string), "Chances in #FallIntoFun Prize Drawing: %d", PlayerInfo[playerid][pRewardDrawChance]);
  39. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  40. format(string, sizeof(string), "Gold Giftbox Tokens: %d", PlayerInfo[playerid][pGoldBoxTokens]);
  41. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  42. if(!iRewardBox)
  43. {
  44. SendClientMessageEx(playerid, COLOR_RED, "Note: The gold gift box is currently disabled.");
  45. }
  46. return 1;
  47. }
  48. CMD:goldgiftbox(playerid, params[]) {
  49. if(PlayerInfo[playerid][pAdmin] >= 1337) switch(iRewardBox) {
  50. case 0: {
  51. new
  52. Float: fPos[3],
  53. szMessage[64];
  54. GetPlayerPos(playerid, fPos[0], fPos[1], fPos[2]);
  55. iRewardObj = CreateDynamicObject(19055, fPos[0], fPos[1], fPos[2], 0.0, 0.0, 0.0, .streamdistance = 100.0);
  56. tRewardText = CreateDynamic3DTextLabel("Gold Reward Gift Box\n{FFFFFF}/getrewardgift{F3FF02} to claim your gift!", COLOR_YELLOW, fPos[0], fPos[1], fPos[2], 10.0, .testlos = 1, .streamdistance = 50.0);
  57. iRewardBox = true;
  58. format(szMessage, sizeof szMessage, "AdmCmd: %s has placed the reward gift box.", GetPlayerNameEx(playerid));
  59. ABroadCast(COLOR_LIGHTRED, szMessage, 2);
  60. Misc_Save();
  61. }
  62. default: {
  63. new
  64. szMessage[64];
  65. iRewardBox = false;
  66. DestroyDynamic3DTextLabel(tRewardText);
  67. DestroyDynamicObject(iRewardObj);
  68. format(szMessage, sizeof szMessage, "AdmCmd: %s has removed the reward gift box.", GetPlayerNameEx(playerid));
  69. ABroadCast(COLOR_LIGHTRED, szMessage, 2);
  70. Misc_Save();
  71. }
  72. }
  73. return 1;
  74. }
  75. CMD:rewardplay(playerid, params[]) {
  76. if(PlayerInfo[playerid][pAdmin] >= 1337) switch(iRewardPlay) {
  77. case 0: {
  78. new
  79. szMessage[64];
  80. iRewardPlay = true;
  81. format(szMessage, sizeof szMessage, "AdmCmd: %s has enabled Reward Play.", GetPlayerNameEx(playerid));
  82. ABroadCast(COLOR_LIGHTRED, szMessage, 2);
  83. Misc_Save();
  84. }
  85. default: {
  86. new
  87. szMessage[64];
  88. format(szMessage, sizeof szMessage, "AdmCmd: %s has disabled Reward Play.", GetPlayerNameEx(playerid));
  89. ABroadCast(COLOR_LIGHTRED, szMessage, 2);
  90. iRewardPlay = false;
  91. Misc_Save();
  92. }
  93. }
  94. return 1;
  95. }
  96. CMD:getrewardgift(playerid, params[]) {
  97. if(iRewardBox) {
  98. if(IsPlayerInRangeOfDynamicObject(playerid, iRewardObj, 5.0)) {
  99. if(PlayerInfo[playerid][pGoldBoxTokens] >= 1) {
  100. --PlayerInfo[playerid][pGoldBoxTokens];
  101. new
  102. szMessage[128];
  103. switch(random(10)) {
  104. case 0..6: switch(random(7)) { // 70%
  105. case 0:
  106. {
  107. GivePlayerCash(playerid, 500000);
  108. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won $500,000!");
  109. format(szMessage, sizeof(szMessage), "* %s was just gifted $500,000, enjoy!", GetPlayerNameEx(playerid));
  110. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  111. }
  112. case 1:
  113. {
  114. PlayerInfo[playerid][pMats] += 20000;
  115. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won 20,000 materials!");
  116. format(szMessage, sizeof(szMessage), "* %s was just gifted 20,000 materials, enjoy!", GetPlayerNameEx(playerid));
  117. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  118. }
  119. case 2:
  120. {
  121. PlayerInfo[playerid][pExp] += 10;
  122. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won 10 respect points!");
  123. format(szMessage, sizeof(szMessage), "* %s was just gifted 10 respect points, enjoy!", GetPlayerNameEx(playerid));
  124. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  125. }
  126. case 3:
  127. {
  128. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won one free car!");
  129. SendClientMessageEx(playerid, COLOR_CYAN, " 1 Car Voucher has been added to your account.");
  130. SendClientMessageEx(playerid, COLOR_GRAD2, " Note you may access your voucher(s) with /myvouchers");
  131. PlayerInfo[playerid][pVehVoucher]++;
  132. format(szMessage, sizeof(szMessage), "AdmCmd: %s(%d) was just gifted by the system and he won one free car", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid));
  133. Log("logs/gifts.log", szMessage);
  134. format(szMessage, sizeof(szMessage), "{AA3333}AdmWarning{FFFF00}: %s was just gifted by the system and he won one free car.", GetPlayerNameEx(playerid));
  135. ABroadCast(COLOR_YELLOW, szMessage, 4);
  136. format(szMessage, sizeof(szMessage), "* %s was just gifted one free car, enjoy!", GetPlayerNameEx(playerid));
  137. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  138. }
  139. case 4:
  140. {
  141. PlayerInfo[playerid][pSVIPVoucher]++;
  142. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won one month of Silver VIP!");
  143. SendClientMessageEx(playerid, COLOR_CYAN, " 1 Silver VIP Voucher has been added to your account.");
  144. SendClientMessageEx(playerid, COLOR_GRAD2, " Note you may access your voucher(s) with /myvouchers");
  145. format(szMessage, sizeof(szMessage), "{AA3333}AdmWarning{FFFF00}: %s has won one month of Silver VIP.", GetPlayerNameEx(playerid));
  146. ABroadCast(COLOR_YELLOW, szMessage, 2);
  147. format(szMessage, sizeof(szMessage), "* %s was just gifted one month of Silver VIP, enjoy!", GetPlayerNameEx(playerid));
  148. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  149. }
  150. case 5:
  151. {
  152. PlayerInfo[playerid][pTokens] += 50;
  153. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won 50 VIP tokens!");
  154. format(szMessage, sizeof(szMessage), "* %s was just gifted 50 VIP tokens, enjoy!", GetPlayerNameEx(playerid));
  155. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  156. }
  157. default:
  158. {
  159. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won a Free Laser Pointer!");
  160. format(szMessage, sizeof(szMessage), "* %s was just gifted a Free Laser Pointer, enjoy!", GetPlayerNameEx(playerid));
  161. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  162. new icount = GetPlayerToySlots(playerid);
  163. for(new v = 0; v < icount; v++)
  164. {
  165. if(PlayerToyInfo[playerid][v][ptModelID] == 0)
  166. {
  167. PlayerToyInfo[playerid][v][ptModelID] = 18643;
  168. PlayerToyInfo[playerid][v][ptBone] = 6;
  169. PlayerToyInfo[playerid][v][ptPosX] = 0.0;
  170. PlayerToyInfo[playerid][v][ptPosY] = 0.0;
  171. PlayerToyInfo[playerid][v][ptPosZ] = 0.0;
  172. PlayerToyInfo[playerid][v][ptRotX] = 0.0;
  173. PlayerToyInfo[playerid][v][ptRotY] = 0.0;
  174. PlayerToyInfo[playerid][v][ptRotZ] = 0.0;
  175. PlayerToyInfo[playerid][v][ptScaleX] = 1.0;
  176. PlayerToyInfo[playerid][v][ptScaleY] = 1.0;
  177. PlayerToyInfo[playerid][v][ptScaleZ] = 1.0;
  178. PlayerToyInfo[playerid][v][ptTradable] = 1;
  179. g_mysql_NewToy(playerid, v);
  180. return 1;
  181. }
  182. }
  183. for(new i = 0; i < MAX_PLAYERTOYS; i++)
  184. {
  185. if(PlayerToyInfo[playerid][i][ptModelID] == 0)
  186. {
  187. PlayerToyInfo[playerid][i][ptModelID] = 18643;
  188. PlayerToyInfo[playerid][i][ptBone] = 6;
  189. PlayerToyInfo[playerid][i][ptPosX] = 0.0;
  190. PlayerToyInfo[playerid][i][ptPosY] = 0.0;
  191. PlayerToyInfo[playerid][i][ptPosZ] = 0.0;
  192. PlayerToyInfo[playerid][i][ptRotX] = 0.0;
  193. PlayerToyInfo[playerid][i][ptRotY] = 0.0;
  194. PlayerToyInfo[playerid][i][ptRotZ] = 0.0;
  195. PlayerToyInfo[playerid][i][ptScaleX] = 1.0;
  196. PlayerToyInfo[playerid][i][ptScaleY] = 1.0;
  197. PlayerToyInfo[playerid][i][ptScaleZ] = 1.0;
  198. PlayerToyInfo[playerid][i][ptTradable] = 1;
  199. PlayerToyInfo[playerid][i][ptSpecial] = 1;
  200. SendClientMessageEx(playerid, COLOR_GRAD1, "Due to you not having any available slots, we've temporarily gave you an additional slot to use/sell/trade your laser.");
  201. SendClientMessageEx(playerid, COLOR_RED, "Note: Please take note that after selling the laser, the temporarily additional toy slot will be removed.");
  202. break;
  203. }
  204. }
  205. }
  206. }
  207. case 7, 8: switch(random(3)) {// 20%
  208. case 0:
  209. {
  210. format(szMessage, sizeof(szMessage), "AdmCmd: %s(%d) was just gifted by the system and he won a free house", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid));
  211. Log("logs/gifts.log", szMessage);
  212. format(szMessage, sizeof(szMessage), "{AA3333}AdmWarning{FFFF00}: %s was just gifted by the system and he won a free house.", GetPlayerNameEx(playerid));
  213. ABroadCast(COLOR_YELLOW, szMessage, 2);
  214. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won a free house!");
  215. SendClientMessageEx(playerid, COLOR_GRAD2, " Note: This rare reward may take up to 48 hours to be rewarded.");
  216. AddFlag(playerid, INVALID_PLAYER_ID, "Free House (Gift)");
  217. format(szMessage, sizeof(szMessage), "* %s was just gifted a free house, enjoy!", GetPlayerNameEx(playerid));
  218. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  219. }
  220. case 1:
  221. {
  222. PlayerInfo[playerid][pTokens] += 150;
  223. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won 150 VIP tokens!");
  224. format(szMessage, sizeof(szMessage), "* %s was just gifted 150 VIP tokens, enjoy!", GetPlayerNameEx(playerid));
  225. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  226. }
  227. default:
  228. {
  229. format(szMessage, sizeof(szMessage), "AdmCmd: %s(%d) was just gifted by the system and he won a set of neons", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid));
  230. Log("logs/gifts.log", szMessage);
  231. format(szMessage, sizeof(szMessage), "{AA3333}AdmWarning{FFFF00}: %s was just gifted by the system and he won a free set of neons.", GetPlayerNameEx(playerid));
  232. ABroadCast(COLOR_YELLOW, szMessage, 2);
  233. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won a free set of neons!");
  234. SendClientMessageEx(playerid, COLOR_GRAD2, " Note: This rare reward may take up to 48 hours to be rewarded.");
  235. AddFlag(playerid, INVALID_PLAYER_ID, "Free set of neons (Gift)");
  236. format(szMessage, sizeof(szMessage), "* %s was just gifted a free set of neons, enjoy!", GetPlayerNameEx(playerid));
  237. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  238. }
  239. }
  240. default:
  241. { // 10%
  242. new gift = Random(1, 6);
  243. if(gift >= 1 && gift <= 3)
  244. {
  245. if(RimMod > 0) // Rim Kit
  246. {
  247. PlayerInfo[playerid][pRimMod]++;
  248. RimMod--;
  249. g_mysql_SaveMOTD();
  250. format(szMessage, sizeof(szMessage), "AdmWarning: %s(%d) was just gifted by the system and he won a rim modification kit. (%d left)", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), RimMod);
  251. Log("logs/gifts.log", szMessage);
  252. format(szMessage, sizeof(szMessage), "* %s was just gifted a rim modification kit, enjoy! Only %d kits left.", GetPlayerNameEx(playerid), RimMod);
  253. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  254. }
  255. else
  256. {
  257. gift = 5;
  258. }
  259. }
  260. else if(gift == 4) //
  261. {
  262. if(CarVoucher > 0)
  263. {
  264. PlayerInfo[playerid][pCarVoucher]++;
  265. CarVoucher--;
  266. g_mysql_SaveMOTD();
  267. format(szMessage, sizeof(szMessage), "AdmWarning: %s(%d) was just gifted by the system and he won a restricted car voucher. (%d left)", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), CarVoucher);
  268. Log("logs/gifts.log", szMessage);
  269. format(szMessage, sizeof(szMessage), "* %s was just gifted a restricted car voucher, enjoy! Only %d car vouchers left.", GetPlayerNameEx(playerid), CarVoucher);
  270. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  271. SendClientMessageEx(playerid, COLOR_CYAN, " 1 Restricted Car Voucher has been added to your account.");
  272. SendClientMessageEx(playerid, COLOR_GRAD2, " Note you may access your voucher(s) with /myvouchers");
  273. }
  274. else gift = 5;
  275. }
  276. if(gift == 5)
  277. {
  278. PlayerInfo[playerid][pGVIPVoucher]++;
  279. SendClientMessageEx(playerid, COLOR_GRAD2, " Congratulations - you have won one month of Gold VIP!");
  280. SendClientMessageEx(playerid, COLOR_CYAN, " 1 Gold VIP Voucher has been added to your account.");
  281. SendClientMessageEx(playerid, COLOR_GRAD2, " Note you may access your voucher(s) with /myvouchers");
  282. format(szMessage, sizeof(szMessage), "{AA3333}AdmWarning{FFFF00}: %s has won one month of Gold VIP.", GetPlayerNameEx(playerid));
  283. ABroadCast(COLOR_YELLOW, szMessage, 2);
  284. format(szMessage, sizeof(szMessage), "* %s was just gifted one month of Gold VIP, enjoy!", GetPlayerNameEx(playerid));
  285. ProxDetector(30.0, playerid, szMessage, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  286. }
  287. }
  288. }
  289. }
  290. else SendClientMessage(playerid, COLOR_GREY, "You have no Gold Box Gift tokens.");
  291. }
  292. else SendClientMessage(playerid, COLOR_GREY, "You're not near the Gold Box.");
  293. }
  294. else SendClientMessage(playerid, COLOR_GREY, "Reward Playing is currently not in effect.");
  295. return 1;
  296. }