Advertisement
Guest User

VIP System by KevinExec

a guest
May 30th, 2016
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.60 KB | None | 0 0
  1. /*
  2. VIP System by KevinExec | Version 1.0.0
  3. (c) Copyright KevinExec 2016.
  4. */
  5.  
  6. // -----------------------------------------------------------------------------
  7. // Defining the colors
  8. // -----------------------------------------------------------------------------
  9.  
  10. #define white 0xFFFFFFFF
  11. #define red 0xFF0000FF
  12. #define lime 0xFF00FFFF
  13. #define vip 0xECFF0000
  14.  
  15. // -----------------------------------------------------------------------------
  16. // Includes
  17. // -----------------------------------------------------------------------------
  18.  
  19. #include <a_samp>
  20. #include <zcmd>
  21. #include <sscanf2>
  22. #include <a_mysql>
  23. #include <foreach>
  24.  
  25. // -----------------------------------------------------------------------------
  26. // MySQL Configuration
  27. // -----------------------------------------------------------------------------
  28.  
  29. new const MYSQL_HOSTNAME[] = "127.0.0.1";
  30. new const MYSQL_USERNAME[] = "root";
  31. new const MYSQL_PASSWORD[] = "password";
  32. new const MYSQL_DATABASE[] = "";
  33. new const MYSQL_PORT = 3306;
  34. new bool:MYSQL_AUTO_RECONNECT = true;
  35. new const MYSQL_POOL_SIZE = 2;
  36.  
  37. // -----------------------------------------------------------------------------
  38. // Defining the dialogs
  39. // -----------------------------------------------------------------------------
  40.  
  41. #define DIALOG_VIP 1
  42. #define DIALOG_BLACKMARKET 2
  43. #define DIALOG_VIPHELP 3
  44. #define DIALOG_BUY_BLACKMARKET 4
  45. #define DIALOG_VIP_SHOW 5
  46. #define DIALOG_VIP_SHOW_ALL 6
  47.  
  48. // -----------------------------------------------------------------------------
  49. // Enumerators
  50. // -----------------------------------------------------------------------------
  51.  
  52. enum pInfo
  53. {
  54. pVIP,
  55. pVIPJoinDate[32],
  56. pVIPExpireDate[32],
  57. pVIPTokens
  58. }
  59.  
  60. enum
  61. {
  62. CHECKPOINT_NONE = 0,
  63. CHECKPOINT_BLACKMARKET
  64. }
  65.  
  66. // -----------------------------------------------------------------------------
  67. // Variables
  68. // -----------------------------------------------------------------------------
  69.  
  70. new PlayerInfo[MAX_PLAYERS][pInfo];
  71. new GottenGift[MAX_PLAYERS];
  72. new GottenTimeLeft[MAX_PLAYERS];
  73. new bool:Godmode[MAX_PLAYERS];
  74. new bool:VIPChatToggled[MAX_PLAYERS];
  75. new CP[MAX_PLAYERS];
  76. new VIPBike1;
  77. new VIPBike2;
  78. new VIPBike3;
  79. new VIPBike4;
  80. new VIPBike5;
  81. new VIPBike6;
  82. new VIPBike7;
  83. new VIPBike8;
  84. new VIPBike9;
  85. new VIPBike10;
  86. new VIPBike11;
  87. new VIPBike12;
  88. new VIPBike13;
  89. new VIPBike14;
  90. new VIPCar1;
  91. new VIPCar2;
  92. new VIPCar3;
  93. new VIPCar4;
  94. new VIPCar5;
  95. new VIPCar6;
  96. new VIPCar7;
  97. new VIPCar8;
  98. new VIPCar9;
  99. new VIPCar10;
  100. new VIPCar11;
  101. new VIPCar12;
  102. new killerstring[200];
  103. new bool:canRestoreVIP[MAX_PLAYERS];
  104. new connectionHandle;
  105. new bool:vipcolor;
  106.  
  107. // -----------------------------------------------------------------------------
  108. // Forwarding the callbacks
  109. // -----------------------------------------------------------------------------
  110.  
  111. forward MinuteSync();
  112. forward ResetVariables(playerid);
  113. forward LoadChar(playerid);
  114.  
  115. // -----------------------------------------------------------------------------
  116. // Callbacks
  117. // -----------------------------------------------------------------------------
  118. public OnFilterScriptInit()
  119. {
  120. print("\n--------------------------------------");
  121. print(" VIP System by KevinExec loaded.");
  122. print(" version 1.0.0");
  123. print("--------------------------------------\n");
  124.  
  125. connectionHandle = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_DATABASE, MYSQL_PASSWORD, MYSQL_PORT, MYSQL_AUTO_RECONNECT, MYSQL_POOL_SIZE);
  126. if(mysql_errno(connectionHandle) != 0)
  127. {
  128. printf("Connection to the MySQL server on '%s' couldn't be established.", MYSQL_HOSTNAME);
  129. return 0;
  130. }
  131.  
  132. LoadLabels();
  133. LoadVehicles();
  134.  
  135. CreateMySQLTable();
  136. SetTimer("MinuteSync", 60000, 1);
  137. return 1;
  138. }
  139.  
  140. public OnFilterScriptExit()
  141. {
  142. mysql_close();
  143. printf("Disconnected from the MySQL server on '%s'.", MYSQL_HOSTNAME);
  144.  
  145. print("\n---------------------------------------");
  146. print(" VIP System by KevinExec unloaded.");
  147. print(" version 1.0.0");
  148. print("----------------------------------------\n");
  149. return 1;
  150. }
  151.  
  152.  
  153. public OnPlayerConnect(playerid)
  154. {
  155. new string[129];
  156. SendClientMessage(playerid, red, "--------------------------------------");
  157. SendClientMessage(playerid, white, "This server is using {FF0000}VIP system by KingBr0.");
  158. SendClientMessage(playerid, red, "--------------------------------------");
  159. format(string, sizeof(string), "{FF00FF}%s (VIP: %d){FFFFFF} has joined the server.", GetName(playerid), PlayerInfo[playerid][pVIP]);
  160. SendClientMessageToAll(white, string);
  161.  
  162. ResetVariables(playerid);
  163. LoadChar(playerid);
  164. return 1;
  165. }
  166.  
  167. public MinuteSync()
  168. {
  169. foreach(Player, i)
  170. {
  171. if(PlayerInfo[i][pVIP] != 0)
  172. {
  173. if(GottenTimeLeft[i] <= 0)
  174. {
  175. if(GottenGift[i] != 0)
  176. {
  177. GottenGift[i] = 0;
  178. GottenTimeLeft[i] = 0;
  179. SendClientMessage(i, lime, "VIP Announcement: You are now able to receive a gift in the VIP Menu again.");
  180. }
  181. }
  182. else
  183. {
  184. GottenGift[i] = 1;
  185. GottenTimeLeft[i] -= 60000;
  186. }
  187. }
  188. }
  189. return 1;
  190. }
  191.  
  192. public OnPlayerDisconnect(playerid, reason)
  193. {
  194. new string[250];
  195. switch(reason)
  196. {
  197. case 0:
  198. {
  199. format(string, sizeof(string), "{FF00FF}%s (VIP: %d){FFFFFF} has left the server (timeout).", GetName(playerid), PlayerInfo[playerid][pVIP]);
  200. SendClientMessageToAll(white, string);
  201. }
  202. case 1:
  203. {
  204. format(string, sizeof(string), "{FF00FF}%s (VIP: %d){FFFFFF} has left the server (quit).", GetName(playerid), PlayerInfo[playerid][pVIP]);
  205. SendClientMessageToAll(white, string);
  206. }
  207. case 2:
  208. {
  209. format(string, sizeof(string), "{FF00FF}%s (VIP: %d){FFFFFF} has left the server (kicked/banned).", GetName(playerid), PlayerInfo[playerid][pVIP]);
  210. SendClientMessageToAll(white, string);
  211. }
  212. }
  213.  
  214. SaveChar(playerid);
  215. return 1;
  216. }
  217.  
  218. public OnPlayerSpawn(playerid)
  219. {
  220. new string[129];
  221. format(string, sizeof(string), "You are logged in as a level %d VIP.", PlayerInfo[playerid][pVIP]);
  222. SendClientMessage(playerid, white, string);
  223.  
  224. if(PlayerInfo[playerid][pVIP] >= 1)
  225. {
  226. new year, month, day;
  227. getdate(year, month, day);
  228. new spyear[32], spmonth[32], spday[32];
  229. strmid(spyear, PlayerInfo[playerid][pVIPExpireDate], 6, 10, 32);
  230. strmid(spmonth, PlayerInfo[playerid][pVIPExpireDate], 0, 2, 32);
  231. strmid(spday, PlayerInfo[playerid][pVIPExpireDate], 3, 5, 32);
  232. new pyear = strval(spyear);
  233. new pmonth = strval(spmonth);
  234. new pday = strval(spday);
  235. if(pyear == 2015 && pmonth == 1)
  236. {
  237. format(PlayerInfo[playerid][pVIPExpireDate], 32, "%02d/%02d/%d", pmonth, pday, pyear +1);
  238. }
  239. if(year > pyear && month == pmonth && day > pday)
  240. {
  241. SendClientMessage(playerid, white, "Sorry, your VIP has expired. If you have VIP Tokens, you can use them to restore your VIP using /restorevip.");
  242. RemoveVIP(playerid);
  243. canRestoreVIP[playerid] = true;
  244. }
  245. if(month == pmonth && day > pday)
  246. {
  247. SendClientMessage(playerid, white, "Sorry, your VIP has expired. If you have VIP Tokens, you can use them to restore your VIP using /restorevip.");
  248. RemoveVIP(playerid);
  249. canRestoreVIP[playerid] = true;
  250. }
  251. }
  252. return 1;
  253. }
  254.  
  255. public OnPlayerDeath(playerid, killerid, reason)
  256. {
  257. format(killerstring, sizeof(killerstring), "You were last killed by %s.", GetName(killerid));
  258. return 1;
  259. }
  260.  
  261. public OnVehicleDeath(vehicleid, killerid)
  262. {
  263. SetVehicleToRespawn(vehicleid);
  264. return 1;
  265. }
  266.  
  267. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  268. {
  269. if(IsAVIPVeh(vehicleid) && PlayerInfo[playerid][pVIP] == 0)
  270. {
  271. RemovePlayerFromVehicle(playerid);
  272. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP, therefor you can not enter VIP vehicles.");
  273. }
  274. return 1;
  275. }
  276.  
  277. public OnPlayerEnterCheckpoint(playerid)
  278. {
  279. if(CP[playerid] == CHECKPOINT_BLACKMARKET)
  280. {
  281. CP[playerid] = CHECKPOINT_NONE;
  282. DisablePlayerCheckpoint(playerid);
  283. }
  284. return 1;
  285. }
  286.  
  287. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  288. {
  289. switch(dialogid)
  290. {
  291. case DIALOG_VIP:
  292. {
  293. switch(listitem)
  294. {
  295. case 0:
  296. {
  297. SetPlayerHealth(playerid, 100);
  298. SendClientMessage(playerid, white, "Your health was set to 100.");
  299. GivePlayerMoney(playerid, -500);
  300. }
  301. case 1:
  302. {
  303. SetPlayerArmour(playerid, 100);
  304. SendClientMessage(playerid, white, "Your armor was set to 100.");
  305. GivePlayerMoney(playerid, -1000);
  306. }
  307. case 2:
  308. {
  309. if(GottenGift[playerid] == 1) return SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You have to wait 5 hours between getting gifts! Try again later.");
  310. new randomgift = random(6);
  311. switch(randomgift)
  312. {
  313. case 0:
  314. {
  315. GivePlayerMoney(playerid, 10000);
  316. SendClientMessage(playerid, white, "You have received 10,000$ as a gift.");
  317. GottenGift[playerid] = 1;
  318. GottenTimeLeft[playerid] = 18000000;
  319. }
  320. case 1:
  321. {
  322. GivePlayerWeapon(playerid, 24, 999999);
  323. SendClientMessage(playerid, white, "You have received a Desert Eagle as a gift.");
  324. GottenGift[playerid] = 1;
  325. GottenTimeLeft[playerid] = 18000000;
  326. }
  327. case 2:
  328. {
  329. PlayerInfo[playerid][pVIPTokens] += 10;
  330. SendClientMessage(playerid, white, "You have received 10 VIP Tokens as a gift.");
  331. GottenGift[playerid] = 1;
  332. GottenTimeLeft[playerid] = 18000000;
  333. }
  334. case 3:
  335. {
  336. PlayerInfo[playerid][pVIPTokens] += 25;
  337. SendClientMessage(playerid, white, "You have received 25 VIP Tokens as a gift.");
  338. GottenGift[playerid] = 1;
  339. GottenTimeLeft[playerid] = 18000000;
  340. }
  341. case 4:
  342. {
  343. SendClientMessage(playerid, white, "{FF0000}Bad luck! {FFFFFF}You have received nothing this round.");
  344. GottenGift[playerid] = 1;
  345. GottenTimeLeft[playerid] = 18000000;
  346. }
  347. case 5:
  348. {
  349. GivePlayerWeapon(playerid, 24, 999999);
  350. GivePlayerWeapon(playerid, 27, 999999);
  351. GivePlayerWeapon(playerid, 31, 999999);
  352. GivePlayerWeapon(playerid, 34, 999999);
  353. SendClientMessage(playerid, white, "You have received a full weapon set as a gift.");
  354. GottenGift[playerid] = 1;
  355. GottenTimeLeft[playerid] = 18000000;
  356. }
  357. }
  358. }
  359. case 3:
  360. {
  361. new string[150];
  362. strcat(string, "You can access VIP Blackmarket as a level 1 VIP or higher.\n");
  363. strcat(string, "You can type {FF00FF}/blackmarket{FFFFFF} and a marker will be set to your map which takes you to the VIP Blackmarket.\n");
  364. strcat(string, "Remember, the things in the Blackmarket are not free!\n");
  365. strcat(string, "\n");
  366. strcat(string, "Have fun in the VIP Blackmarket!\n");
  367.  
  368. ShowPlayerDialog(playerid, DIALOG_BLACKMARKET, DIALOG_STYLE_MSGBOX, "Blackmarket Information", string, "Close", "");
  369. return 1;
  370. }
  371. case 4:
  372. {
  373. if(Godmode[playerid] == false)
  374. {
  375. SetPlayerHealth(playerid, 100000);
  376. GameTextForPlayer(playerid, "Godmode ~g~enabled!", 5000, 5);
  377. Godmode[playerid] = true;
  378. }
  379. else if(Godmode[playerid] == true)
  380. {
  381. SetPlayerHealth(playerid, 100);
  382. SetPlayerArmour(playerid, 100);
  383. GameTextForPlayer(playerid, "Godmode ~r~disabled!", 5000, 5);
  384. Godmode[playerid] = false;
  385. }
  386. }
  387. case 5:
  388. {
  389. if(IsPlayerInAnyVehicle(playerid))
  390. {
  391. new carid = GetPlayerVehicleID(playerid);
  392. SetVehicleHealth(carid, 1000.0);
  393. RepairVehicle(carid);
  394. SendClientMessage(playerid, white, "Your vehicle was sucessfully repaired.");
  395. }
  396. else
  397. {
  398. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not in a vehicle.");
  399. }
  400. }
  401. case 6:
  402. {
  403. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  404. SendClientMessage(playerid, white, "You have spawned a jetpack.");
  405. }
  406. case 7:
  407. {
  408. if(vipcolor == true)
  409. {
  410. SetPlayerColor(playerid, white);
  411. SendClientMessage(playerid, white, "Your name now appears in the normal color.");
  412. vipcolor = false;
  413. }
  414. if(vipcolor == false)
  415. {
  416. SetPlayerColor(playerid, vip);
  417. SendClientMessage(playerid, white, "Your name now appears in the VIP color.");
  418. vipcolor = true;
  419. }
  420. }
  421. case 8:
  422. {
  423. SendClientMessage(playerid, white, killerstring);
  424. }
  425. }
  426. return 1;
  427. }
  428. }
  429. return 1;
  430. }
  431.  
  432. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  433. {
  434. new str[200], vipType[10], vipColor[10];
  435. if(PlayerInfo[clickedplayerid][pVIP] > 0)
  436. {
  437. if(PlayerInfo[clickedplayerid][pVIP] == 1)
  438. {
  439. vipType = "Bronze";
  440. vipColor = "{BB7900}";
  441. }
  442. else if(PlayerInfo[clickedplayerid][pVIP] == 2)
  443. {
  444. vipType = "Silver";
  445. vipColor = "{ACAEB0}";
  446. }
  447. else if(PlayerInfo[clickedplayerid][pVIP] == 3)
  448. {
  449. vipType = "Gold";
  450. vipColor = "{FFC600}";
  451. }
  452. else if(PlayerInfo[clickedplayerid][pVIP] == 4)
  453. {
  454. vipType = "Moderator";
  455. vipColor = "{00BFFF}";
  456. }
  457. }
  458. format(str, sizeof(str), "Name: %s | Type: %s%s{FFFFFF} | Purchased: %s | [M/D/Y] Expires: %s\n", GetName(clickedplayerid), vipColor, vipType, PlayerInfo[clickedplayerid][pVIPJoinDate], PlayerInfo[clickedplayerid][pVIPExpireDate]);
  459. strcat(str, str);
  460.  
  461. ShowPlayerDialog(playerid, DIALOG_VIP_SHOW, DIALOG_STYLE_MSGBOX, "VIP Information", str, "Close", "");
  462. return 1;
  463. }
  464.  
  465. public ResetVariables(playerid)
  466. {
  467. CP[playerid] = CHECKPOINT_NONE;
  468. Godmode[playerid] = false;
  469. VIPChatToggled[playerid] = false;
  470. canRestoreVIP[playerid] = false;
  471. GottenGift[playerid] = 0;
  472. GottenTimeLeft[playerid] = 0;
  473. return 1;
  474. }
  475.  
  476. public LoadChar(playerid)
  477. {
  478. new value[100];
  479. cache_get_field_content(0, "VIP", value);
  480. PlayerInfo[playerid][pVIP] = strval(value);
  481. cache_get_field_content(0, "VIPTokens", value);
  482. PlayerInfo[playerid][pVIPTokens] = strval(value);
  483. cache_get_field_content(0, "GottenGift", value);
  484. GottenGift[playerid] = strval(value);
  485. cache_get_field_content(0, "GottenTimeLeft", value);
  486. GottenTimeLeft[playerid] = strval(value);
  487.  
  488. new array1[32];
  489. cache_get_field_content(0, "VIPJoinDate", array1);
  490. PlayerInfo[playerid][pVIPJoinDate] = array1;
  491. cache_get_field_content(0, "VIPExpireDate", array1);
  492. PlayerInfo[playerid][pVIPExpireDate] = array1;
  493. return 1;
  494. }
  495. // -----------------------------------------------------------------------------
  496. // Stock functions
  497. // -----------------------------------------------------------------------------
  498.  
  499. stock GetName(playerid)
  500. {
  501. new name[MAX_PLAYER_NAME];
  502. GetPlayerName(playerid, name, sizeof(name));
  503. return name;
  504. }
  505.  
  506. stock LoadLabels()
  507. {
  508. Create3DTextLabel("VIP Blackmarket\n/enter to enter.", lime, 1975.4678,-1308.4507,20.8406, 15.0, 0);
  509. Create3DTextLabel("VIP Blackmarket\n/exit to exit.", lime, 316.00, -168.67, 1000.5, 15.0, 0);
  510. return 1;
  511. }
  512.  
  513. stock LoadVehicles()
  514. {
  515. VIPBike1 = CreateVehicle(522, 1990.4750, -1308.6703, 20.3384, 447.6740, -1, -1, 100);
  516. VIPBike2 = CreateVehicle(522, 1985.3901, -1308.5597, 20.3384, 447.6740, -1, -1, 100);
  517. VIPBike3 = CreateVehicle(522, 1985.6769, -1304.1998, 20.3384, 447.6740, -1, -1, 100);
  518. VIPBike4 = CreateVehicle(522, 1990.9948, -1304.1829, 20.3384, 447.6740, -1, -1, 100);
  519. VIPBike5 = CreateVehicle(522, 2004.6382, -1308.5898, 20.3384, 447.6740, -1, -1, 100);
  520. VIPBike6 = CreateVehicle(522, 2009.2792, -1308.6517, 20.3384, 447.6740, -1, -1, 100);
  521. VIPBike7 = CreateVehicle(522, 2014.3566, -1308.6190, 20.3384, 447.6740, -1, -1, 100);
  522. VIPBike8 = CreateVehicle(522, 2019.7273, -1308.6146, 20.3384, 447.6740, -1, -1, 100);
  523. VIPBike9 = CreateVehicle(522, 2024.5598, -1308.6387, 20.3384, 447.6740, -1, -1, 100);
  524. VIPBike10 = CreateVehicle(522, 2004.6306, -1304.6078, 20.3384, 447.6740, -1, -1, 100);
  525. VIPBike11 = CreateVehicle(522, 2009.3909, -1304.6191, 20.3384, 447.6740, -1, -1, 100);
  526. VIPBike12 = CreateVehicle(522, 2014.4718, -1304.8101, 20.3384, 447.6740, -1, -1, 100);
  527. VIPBike13 = CreateVehicle(522, 2019.6525, -1305.1205, 20.3384, 447.6740, -1, -1, 100);
  528. VIPBike14 = CreateVehicle(522, 2023.5608, -1304.5673, 20.3384, 486.5539, -1, -1, 100);
  529. VIPCar1 = CreateVehicle(411, 2026.8829, -1300.9187, 20.6331, -88.4400, -1, -1, 100);
  530. VIPCar2 = CreateVehicle(411, 2026.9800, -1297.4763, 20.6331, -88.4400, -1, -1, 100);
  531. VIPCar3 = CreateVehicle(411, 2026.9603, -1294.1960, 20.6331, -88.4400, -1, -1, 100);
  532. VIPCar4 = CreateVehicle(411, 2026.9216, -1290.9963, 20.6331, -88.4400, -1, -1, 100);
  533. VIPCar5 = CreateVehicle(411, 2027.0040, -1287.8344, 20.6331, -88.4400, -1, -1, 100);
  534. VIPCar6 = CreateVehicle(411, 2026.8839, -1284.7686, 20.6331, -88.4400, -1, -1, 100);
  535. VIPCar7 = CreateVehicle(411, 2026.8722, -1281.9403, 20.6331, -88.4400, -1, -1, 100);
  536. VIPCar8 = CreateVehicle(411, 2026.6281, -1278.8978, 20.6331, -88.4400, -1, -1, 100);
  537. VIPCar9 = CreateVehicle(411, 2035.3353, -1284.0183, 20.6331, -180.6000, -1, -1, 100);
  538. VIPCar10 = CreateVehicle(411, 2035.2207, -1289.9996, 20.6331, -180.6000, -1, -1, 100);
  539. VIPCar11 = CreateVehicle(411, 2035.0884, -1296.3596, 20.6331, -180.6000, -1, -1, 100);
  540. VIPCar12 = CreateVehicle(411, 2035.1338, -1302.8596, 20.6331, -180.6000, -1, -1, 100);
  541. return 1;
  542. }
  543.  
  544. stock IsAVIPVeh(vehicleid)
  545. {
  546. if(vehicleid == VIPCar1 || vehicleid == VIPBike1) return 1;
  547. if(vehicleid == VIPCar2 || vehicleid == VIPBike2) return 1;
  548. if(vehicleid == VIPCar3 || vehicleid == VIPBike3) return 1;
  549. if(vehicleid == VIPCar4 || vehicleid == VIPBike4) return 1;
  550. if(vehicleid == VIPCar5 || vehicleid == VIPBike5) return 1;
  551. if(vehicleid == VIPCar6 || vehicleid == VIPBike6) return 1;
  552. if(vehicleid == VIPCar7 || vehicleid == VIPBike7) return 1;
  553. if(vehicleid == VIPCar8 || vehicleid == VIPBike8) return 1;
  554. if(vehicleid == VIPCar9 || vehicleid == VIPBike9) return 1;
  555. if(vehicleid == VIPCar10 || vehicleid == VIPBike10) return 1;
  556. if(vehicleid == VIPCar11 || vehicleid == VIPBike11) return 1;
  557. if(vehicleid == VIPCar12 || vehicleid == VIPBike12) return 1;
  558. if(vehicleid == VIPBike13 || vehicleid == VIPBike14) return 1;
  559. return 0;
  560. }
  561.  
  562. stock SendVIPChatMessage(color, string2[])
  563. {
  564. foreach(Player, i)
  565. {
  566. if(IsPlayerConnected(i))
  567. {
  568. if(PlayerInfo[i][pVIP] >= 1)
  569. {
  570. if(VIPChatToggled[i] == false)
  571. {
  572. SendClientMessage(i, color, string2);
  573. }
  574. }
  575. }
  576. }
  577. }
  578.  
  579. stock RemoveVIP(playerid)
  580. {
  581. if(IsPlayerConnected(playerid))
  582. {
  583. PlayerInfo[playerid][pVIP] = 0;
  584. strmid(PlayerInfo[playerid][pVIPJoinDate], "0/0/0", 0, strlen("0/0/0"), 255);
  585. strmid(PlayerInfo[playerid][pVIPExpireDate], "0/0/0", 0, strlen("0/0/0"), 255);
  586. }
  587. }
  588.  
  589. stock SaveChar(playerid)
  590. {
  591. new query[500];
  592. mysql_format(connectionHandle, query, sizeof(query), "UPDATE `players` SET `VIP`= %d,`VIPJoinDate`= '%e',`VIPExpireDate`= '%e',`VIPTokens`= %d, `GottenGift`= %d,`GottenTimeLeft`= %d,",
  593. PlayerInfo[playerid][pVIP], PlayerInfo[playerid][pVIPJoinDate], PlayerInfo[playerid][pVIPExpireDate], PlayerInfo[playerid][pVIPTokens], GottenGift[playerid], GottenTimeLeft[playerid]);
  594.  
  595. mysql_tquery(connectionHandle, query);
  596. return 1;
  597. }
  598.  
  599. stock CreateMySQLTable()
  600. {
  601. mysql_tquery(connectionHandle, "CREATE TABLE IF NOT EXISTS `players` (`VIPJoinDate` varchar(32) NOT NULL, `VIPExpireDate` varchar(32) NOT NULL, `GottenGift` tinyint(1) unsigned NOT NULL, `GottenTimeLeft` int(11) unsigned NOT NULL, `VIPTokens` int(11) unsigned NOT NULL, `VIP` int(11) unsigned NOT NULL,) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;");
  602. }
  603.  
  604. // -----------------------------------------------------------------------------
  605. // Commands
  606. // -----------------------------------------------------------------------------
  607.  
  608. CMD:makevip(playerid, params[])
  609. {
  610. new targetid, string[250], level, str[300];
  611.  
  612. if(PlayerInfo[playerid][pVIP] == 4 || IsPlayerAdmin(playerid))
  613. {
  614. if(sscanf(params, "ud", targetid, level)) return SendClientMessage(playerid, white, "{00BFFF}Usage:{FFFFFF} /makevip [playerid] [level (1-4 - 0 to remove)]");
  615.  
  616. if(IsPlayerConnected(targetid))
  617. {
  618. if(level >= 1 && level <= 4)
  619. {
  620. PlayerInfo[targetid][pVIP] = level;
  621. strcat(string, "Congratulations!\n");
  622. strcat(string, "\n");
  623. format(string, sizeof(string), "You have been promoted to a level %d VIP by a VIP moderator %s.\n", level, GetName(playerid));
  624. strcat(string, string);
  625. strcat(string, "We recommend you to read the /viphelp to read VIP commands.\n");
  626. strcat(string, "\n");
  627. strcat(string, "Regards,\n");
  628. format(string, sizeof(string), "VIP Moderator %s\n", GetName(playerid));
  629. strcat(string, string);
  630.  
  631. format(string, sizeof(string), "You have promoted %s to a VIP level %d.", GetName(targetid), level);
  632. SendClientMessage(playerid, white, string);
  633.  
  634. new Year, Month, Day;
  635. getdate(Year, Month, Day);
  636. format(str, 32, "%02d/%02d/%d", Month, Day, Year);
  637. strmid(PlayerInfo[targetid][pVIPJoinDate], str, 0, strlen(str), 255);
  638. format(str, 32, "%02d/%02d/%d", Month +1, Day, Year);
  639. strmid(PlayerInfo[targetid][pVIPExpireDate], str, 0, strlen(str), 255);
  640. if(Month == 12)
  641. {
  642. format(PlayerInfo[targetid][pVIPExpireDate], 32, "%02d/%02d/%d", 1, Day, Year +1);
  643. }
  644. format(str, sizeof(str), "[M/D/Y] Join Date: %s | Expire Date: %s", PlayerInfo[targetid][pVIPJoinDate], PlayerInfo[targetid][pVIPExpireDate]);
  645. SendClientMessage(targetid, white, str);
  646. }
  647. if(level == 0)
  648. {
  649. PlayerInfo[playerid][pVIP] = 0;
  650. SendClientMessage(targetid, white, "Your VIP has been removed by a VIP Moderator.");
  651. }
  652. }
  653. else
  654. {
  655. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} That player isn't connected.");
  656. }
  657. }
  658. else
  659. {
  660. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not authorized to use this command.");
  661. }
  662. return 1;
  663. }
  664.  
  665. CMD:enter(playerid, params[])
  666. {
  667. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  668. {
  669. if(IsPlayerInRangeOfPoint(playerid, 5.0, 1975.4678,-1308.4507,20.8406))
  670. {
  671. SetPlayerPos(playerid, 316.00, -168.67, 1000.54);
  672. SetPlayerInterior(playerid, 6);
  673. SetPlayerVirtualWorld(playerid, 5);
  674. GameTextForPlayer(playerid, "You have entered the ~g~VIP Blackmarket", 5000, 5);
  675. }
  676. else
  677. {
  678. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not at the VIP Blackmarket entry point.");
  679. }
  680. }
  681. else
  682. {
  683. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  684. }
  685. return 1;
  686. }
  687.  
  688. CMD:exit(playerid, params[])
  689. {
  690. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  691. {
  692. if(IsPlayerInRangeOfPoint(playerid, 5.0, 316.00, -168.67, 1000.54))
  693. {
  694. SetPlayerPos(playerid, 1975.4678,-1308.4507,20.8406);
  695. SetPlayerInterior(playerid, 0);
  696. SetPlayerVirtualWorld(playerid, 0);
  697. GameTextForPlayer(playerid, "You have exited the ~g~VIP Blackmarket", 5000, 5);
  698. }
  699. else
  700. {
  701. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not at the VIP Blackmarket exit point.");
  702. }
  703. }
  704. else
  705. {
  706. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  707. }
  708. return 1;
  709. }
  710.  
  711. CMD:vip(playerid, params[])
  712. {
  713. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  714. {
  715. ShowPlayerDialog(playerid, DIALOG_VIP, DIALOG_STYLE_LIST, "VIP Menu", "Free Health\nFree Armor\nGift\nBlackmarket\nGodmode\nVehicle Repair\nJetpack\nVIP Color\nLast Killer\n", "Select", "Close");
  716. return 1;
  717. }
  718. else
  719. {
  720. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  721. }
  722. return 1;
  723. }
  724.  
  725. CMD:blackmarket(playerid, params[])
  726. {
  727. if(PlayerInfo[playerid][pVIP] >= 1)
  728. {
  729. SetPlayerCheckpoint(playerid, 1975.4678,-1308.4507,20.8406, 2.0);
  730. SendClientMessage(playerid, white, "A checkpoint that leads to the Blackmarket has appeared on your minimap.");
  731.  
  732. CP[playerid] = CHECKPOINT_BLACKMARKET;
  733. }
  734. else
  735. {
  736. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  737. }
  738. return 1;
  739. }
  740.  
  741. CMD:vh(playerid, params[]) return cmd_viphelp(playerid, params);
  742. CMD:viphelp(playerid, params[])
  743. {
  744. if(PlayerInfo[playerid][pVIP] >= 1)
  745. {
  746. new vipstr[500];
  747. strcat(vipstr, "{00BFFF}/vip - Display the VIP menu.\n");
  748. strcat(vipstr, "{00BFFF}/v(ip)h(elp) - Display the VIP commands.\n");
  749. strcat(vipstr, "{00BFFF}/v(ip)c(hat) - Talk with other VIPs.\n");
  750. strcat(vipstr, "{00BFFF}/togv(ip)c(hat) - Toggle the VIP chat.\n");
  751. strcat(vipstr, "{00BFFF}/blackmarket - Display the Blackmarket's location on your minimap.\n");
  752. strcat(vipstr, "{00BFFF}/enter - Enter the Blackmarket.\n");
  753. strcat(vipstr, "{00BFFF}/exit - Exit the Blackmarket.\n");
  754. strcat(vipstr, "{00BFFF}/buy - Buy guns while in Blackmarket.\n");
  755. strcat(vipstr, "{00BFFF}/makevip - Make someone a VIP.\n");
  756. strcat(vipstr, "{00BFFF}/vipdate - See when your VIP ends.\n");
  757. strcat(vipstr, "{00BFFF}/restorevip - Restore your VIP when it ends.\n");
  758.  
  759. ShowPlayerDialog(playerid, DIALOG_VIPHELP, DIALOG_STYLE_MSGBOX, "VIP Help", vipstr, "Close", "");
  760. return 1;
  761. }
  762. else
  763. {
  764. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  765. }
  766. return 1;
  767. }
  768.  
  769. CMD:vc(playerid, params[]) return cmd_vipchat(playerid, params);
  770. CMD:vipchat(playerid, params[])
  771. {
  772. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  773. {
  774. new message[128];
  775. if(sscanf(params, "s[128]", message)) return SendClientMessage(playerid, white, "{00BFFF}Usage:{FFFFFF} /v(ip)c(hat) [message]");
  776.  
  777. new viprank[32], str[250];
  778. if(PlayerInfo[playerid][pVIP] == 1) viprank = "Bronze VIP";
  779. if(PlayerInfo[playerid][pVIP] == 2) viprank = "Silver VIP";
  780. if(PlayerInfo[playerid][pVIP] == 3) viprank = "Gold VIP";
  781. if(PlayerInfo[playerid][pVIP] == 4) viprank = "VIP Moderator";
  782. format(str, sizeof(str), "* %s %s: %s", viprank, GetName(playerid), message);
  783. SendVIPChatMessage(vip, str);
  784. }
  785. else
  786. {
  787. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  788. }
  789. return 1;
  790. }
  791.  
  792. CMD:togvc(playerid, params[]) return cmd_togvipchat(playerid, params);
  793. CMD:togvipchat(playerid, params[])
  794. {
  795. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  796. {
  797. if(VIPChatToggled[playerid] == false)
  798. {
  799. VIPChatToggled[playerid] = true;
  800. SendClientMessage(playerid, white, "You have {FF0000}disabled{FFFFFF} your VIP chat.");
  801. }
  802. else if(VIPChatToggled[playerid] == true)
  803. {
  804. VIPChatToggled[playerid] = false;
  805. SendClientMessage(playerid, white, "You have {FF00FF}enabled{FFFFFF} your VIP chat.");
  806. }
  807. }
  808. else
  809. {
  810. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  811. }
  812. return 1;
  813. }
  814.  
  815. CMD:buy(playerid, params[])
  816. {
  817. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  818. {
  819. if(IsPlayerInRangeOfPoint(playerid, 10.0, 312.7244,-166.1414,999.6010))
  820. {
  821. new bmstr[500];
  822. format(bmstr, sizeof(bmstr), "Knife $80\nBlindfold $100\nSD Pistol $100\nColt 45 $100");
  823. format(bmstr, sizeof(bmstr), "%s\nShotgun $1500\nMP5 $250\nRifle $300\nDeagle $500", bmstr);
  824. format(bmstr, sizeof(bmstr), "%s\nAK-47 $1000\nM4A1 $1200\nSpas 12 $3500\nSniper $3500", bmstr);
  825.  
  826. ShowPlayerDialog(playerid, DIALOG_BUY_BLACKMARKET, DIALOG_STYLE_LIST, "VIP Blackmarket", bmstr, "Buy", "Cancel");
  827. }
  828. else
  829. {
  830. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not at the VIP Blackmarket.");
  831. }
  832. }
  833. else
  834. {
  835. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  836. }
  837. return 1;
  838. }
  839.  
  840. CMD:vipdate(playerid, params[])
  841. {
  842. new str[100];
  843. if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pVIP] <= 4)
  844. {
  845. format(str, sizeof(str), "VIP Join date: %s | VIP Expire date: %s", PlayerInfo[playerid][pVIPJoinDate], PlayerInfo[playerid][pVIPExpireDate]);
  846. SendClientMessage(playerid, white, str);
  847. }
  848. else
  849. {
  850. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  851. }
  852. return 1;
  853. }
  854.  
  855. CMD:vips(playerid, params[])
  856. {
  857. if(PlayerInfo[playerid][pVIP] == 4 || IsPlayerAdmin(playerid))
  858. {
  859. new vips;
  860. new vipType[10];
  861. new vipColor[10];
  862. new str[200];
  863. foreach(Player, i)
  864. {
  865. if(IsPlayerConnected(i))
  866. {
  867. if(PlayerInfo[i][pVIP] > 0)
  868. {
  869. if(PlayerInfo[i][pVIP] == 1)
  870. {
  871. vipType = "Bronze";
  872. vipColor = "{BB7900}";
  873. }
  874. else if(PlayerInfo[i][pVIP] == 2)
  875. {
  876. vipType = "Silver";
  877. vipColor = "{ACAEB0}";
  878. }
  879. else if(PlayerInfo[i][pVIP] == 3)
  880. {
  881. vipType = "Gold";
  882. vipColor = "{FFC600}";
  883. }
  884. else if(PlayerInfo[i][pVIP] == 4)
  885. {
  886. vipType = "Moderator";
  887. vipColor = "{00BFFF}";
  888. }
  889. format(str, sizeof(str), "Name: %s | Type: %s%s{FFFFFF} | Purchased: %s | [M/D/Y] Expires: %s", GetName(i), vipColor, vipType, PlayerInfo[i][pVIPJoinDate], PlayerInfo[i][pVIPExpireDate]);
  890. strcat(str, str);
  891.  
  892. ShowPlayerDialog(playerid, DIALOG_VIP_SHOW_ALL, DIALOG_STYLE_MSGBOX, "VIP Information (All)", str, "Close", "");
  893. vips++;
  894. }
  895. }
  896. }
  897. if(vips == 0)
  898. {
  899. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} There are currently no VIPs online.");
  900. }
  901. }
  902. else
  903. {
  904. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not authorized to use this command.");
  905. }
  906. return 1;
  907. }
  908.  
  909. CMD:restorevip(playerid, params[])
  910. {
  911. new str[500];
  912. if(canRestoreVIP[playerid] == true)
  913. {
  914. if(PlayerInfo[playerid][pVIPTokens] >= 5 && PlayerInfo[playerid][pVIPTokens] <= 9)
  915. {
  916. new Year, Month, Day;
  917. getdate(Year, Month, Day);
  918. format(str, 32, "%02d/%02d/%d", Month, Day, Year);
  919. strmid(PlayerInfo[playerid][pVIPJoinDate], str, 0, strlen(str), 255);
  920. format(str, 32, "%02d/%02d/%d", Month +1, Day, Year);
  921. strmid(PlayerInfo[playerid][pVIPExpireDate], str, 0, strlen(str), 255);
  922. if(Month == 12)
  923. {
  924. format(PlayerInfo[playerid][pVIPExpireDate], 32, "%02d/%02d/%d", 1, Day, Year +1);
  925. }
  926. PlayerInfo[playerid][pVIPTokens] -= 5;
  927. SendClientMessage(playerid, white, "You have restored a Bronze VIP for 5 VIP Tokens.");
  928. format(str, sizeof(str), "[M/D/Y] Join Date: %s | Expire Date: %s", PlayerInfo[playerid][pVIPJoinDate], PlayerInfo[playerid][pVIPExpireDate]);
  929. SendClientMessage(playerid, white, str);
  930. }
  931. if(PlayerInfo[playerid][pVIPTokens] >= 10 && PlayerInfo[playerid][pVIPTokens] <= 14)
  932. {
  933. new Year, Month, Day;
  934. getdate(Year, Month, Day);
  935. format(str, 32, "%02d/%02d/%d", Month, Day, Year);
  936. strmid(PlayerInfo[playerid][pVIPJoinDate], str, 0, strlen(str), 255);
  937. format(str, 32, "%02d/%02d/%d", Month +1, Day, Year);
  938. strmid(PlayerInfo[playerid][pVIPExpireDate], str, 0, strlen(str), 255);
  939. if(Month == 12)
  940. {
  941. format(PlayerInfo[playerid][pVIPExpireDate], 32, "%02d/%02d/%d", 1, Day, Year +1);
  942. }
  943. PlayerInfo[playerid][pVIPTokens] -= 10;
  944. SendClientMessage(playerid, white, "You have restored a Silver VIP for 10 VIP Tokens.");
  945. format(str, sizeof(str), "[M/D/Y] Join Date: %s | Expire Date: %s", PlayerInfo[playerid][pVIPJoinDate], PlayerInfo[playerid][pVIPExpireDate]);
  946. SendClientMessage(playerid, white, str);
  947. }
  948. if(PlayerInfo[playerid][pVIPTokens] >= 15 && PlayerInfo[playerid][pVIPTokens] <= 19)
  949. {
  950. new Year, Month, Day;
  951. getdate(Year, Month, Day);
  952. format(str, 32, "%02d/%02d/%d", Month, Day, Year);
  953. strmid(PlayerInfo[playerid][pVIPJoinDate], str, 0, strlen(str), 255);
  954. format(str, 32, "%02d/%02d/%d", Month +1, Day, Year);
  955. strmid(PlayerInfo[playerid][pVIPExpireDate], str, 0, strlen(str), 255);
  956. if(Month == 12)
  957. {
  958. format(PlayerInfo[playerid][pVIPExpireDate], 32, "%02d/%02d/%d", 1, Day, Year +1);
  959. }
  960. PlayerInfo[playerid][pVIPTokens] -= 15;
  961. SendClientMessage(playerid, white, "You have restored a Gold VIP for 10 VIP Tokens.");
  962. format(str, sizeof(str), "[M/D/Y] Join Date: %s | Expire Date: %s", PlayerInfo[playerid][pVIPJoinDate], PlayerInfo[playerid][pVIPExpireDate]);
  963. SendClientMessage(playerid, white, str);
  964. }
  965. if(PlayerInfo[playerid][pVIPTokens] < 5)
  966. {
  967. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You need 5 VIP Tokens for Bronze, 10 for Silver and 15 for Gold VIP.");
  968. }
  969. }
  970. else
  971. {
  972. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You can't restore your VIP anymore.");
  973. }
  974. return 1;
  975. }
  976.  
  977. CMD:mytokens(playerid, params[])
  978. {
  979. if(PlayerInfo[playerid][pVIP] >= 1 || canRestoreVIP[playerid] == true)
  980. {
  981. new str[100];
  982. format(str, sizeof(str), "You currently have {FF00FF}%d{FFFFFF} VIP Tokens.", PlayerInfo[playerid][pVIPTokens]);
  983. SendClientMessage(playerid, white, str);
  984. }
  985. else
  986. {
  987. SendClientMessage(playerid, white, "{FF0000}Error:{FFFFFF} You are not a VIP.");
  988. }
  989. return 1;
  990. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement