Guest User

Variable's Vip System version 2

a guest
Nov 10th, 2016
419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.22 KB | None | 0 0
  1.  
  2.  
  3. /* VIP System by Variable */
  4. /* Update version 2 - Special Thanks to Konstantinos */
  5.  
  6.  
  7. #include <a_samp>
  8. #include <sscanf>
  9. #include <zcmd>
  10.  
  11. new DB: VDB;
  12. new ECMD[MAX_PLAYERS][14];
  13.  
  14. public OnFilterScriptInit()
  15. {
  16. VDB = db_open("VDB.db");
  17. db_query(VDB, "CREATE TABLE IF NOT EXISTS `VIP` (`PNAME`, `VIPRANK`, `X`, `Y`, `Z`)");
  18.  
  19. print("\n\n------------------------------------");
  20. print("\nVariable VIP System has been loaded!\n");
  21. print("------------------------------------\n\n");
  22. return 1;
  23. }
  24.  
  25. public OnFilterScriptExit()
  26. {
  27. db_close(VDB);
  28. return 1;
  29. }
  30.  
  31. public OnPlayerConnect(playerid)
  32. {
  33. if(GetVipRank(playerid) >= 1)
  34. {
  35. SendClientMessage(playerid, 0xFF99FFFF, "[VIP] {FFFFFF}Welcome back.");
  36. }
  37. return 1;
  38. }
  39.  
  40. public OnPlayerText(playerid, text[])
  41. {
  42. new String[128];
  43.  
  44. if(GetVipRank(playerid) >= 1)
  45. {
  46. if(text[0] != '$')
  47. {
  48. format(String, sizeof(String), "{FF00FF}[VIP] {%06x}[%d] %s:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, playerid, GetName(playerid), text);
  49. SendClientMessageToAll(0xFF00FFFF, String);
  50. return 0;
  51. }
  52. else if(text[0] == '$')
  53. {
  54. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  55. {
  56. if(IsPlayerConnected(i) && !IsPlayerNPC(i))
  57. {
  58. if(GetVipRank(i) >= 1)
  59. {
  60. format(String, sizeof(String), "{FF00FF}[V.Chat] {%06x}[%d] %s:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, playerid, GetName(playerid), text[1]);
  61. SendClientMessage(i, 0x0099FFFF, String);
  62. return 0;
  63. }
  64. }
  65. }
  66. }
  67. }
  68. return 1;
  69. }
  70.  
  71. CMD:setvip(playerid, params[])
  72. {
  73. new ID, Level, Query[300], DBResult: Result;
  74. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "You are not authorized to use this command.");
  75. if(sscanf(params, "ii", ID, Level)) return SendClientMessage(playerid, 0xFF0000FF, "Correct: /setvip [ID] [Level] From 0 to 3.");
  76. if(Level > 3 || Level < 0) return SendClientMessage(playerid, 0xFF0000FF, "Levels are from 0-3 only!");
  77. if(!IsPlayerConnected(ID) || ID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "Player isn't connected!");
  78.  
  79. format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(ID));
  80. Result = db_query(VDB, Query);
  81.  
  82. if(db_num_rows(Result))
  83. {
  84. format(Query, sizeof(Query), "UPDATE `VIP` SET VIPRANK = '%d' WHERE PNAME = '%q'", Level, GetName(ID));
  85. db_query(VDB, Query);
  86.  
  87. GameTextForPlayer(playerid, "~g~VIP Updated.", 5000, 3);
  88. }
  89. else if(!db_num_rows(Result))
  90. {
  91. format(Query, sizeof(Query), "INSERT INTO VIP(PNAME, VIPRANK, X, Y, Z) VALUES('%s', '%d', '0.0', '0.0', '0.0')", GetName(ID), Level);
  92. db_query(VDB, Query);
  93.  
  94. GameTextForPlayer(playerid, "~g~VIP Added.", 5000, 3);
  95. }
  96. db_free_result(Result);
  97. return 1;
  98. }
  99.  
  100. CMD:vhelp(playerid)
  101. {
  102. SendClientMessage(playerid, 0x00FF00FF, "Level 1: vheal, vequip, vjp, vrespawn, vtime, '$' for VIP Chat.");
  103. SendClientMessage(playerid, 0x00FF00FF, "Level 2: vcar, vboat, vbike, vheli, vcc.");
  104. SendClientMessage(playerid, 0x00FF00FF, "Level 3: vgoto, vskin, vsavepos, vloadpos.");
  105. return 1;
  106. }
  107.  
  108. CMD:vheal(playerid)
  109. {
  110. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  111. else if(GetVipRank(playerid) >= 1)
  112. {
  113. if(gettime() > ECMD[playerid][0])
  114. {
  115. ECMD[playerid][0] = gettime() + 60;
  116. SetPlayerHealth(playerid, 100);
  117. SendClientMessage(playerid, 0xFF00FFFF, "Health has been restored!");
  118. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  119. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  120. return 1;
  121. }
  122.  
  123. CMD:vequip(playerid)
  124. {
  125. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  126. else if(GetVipRank(playerid) >= 1)
  127. {
  128. if(gettime() > ECMD[playerid][2])
  129. {
  130. ECMD[playerid][1] = gettime() + 60;
  131. GivePlayerWeapon(playerid, 35, 5);
  132. GivePlayerWeapon(playerid, 24, 100);
  133. GivePlayerWeapon(playerid, 34, 100);
  134. GivePlayerWeapon(playerid, 9, 1);
  135. SendClientMessage(playerid, 0xFF00FFFF, "Chainsaw(9), Desert Eagle(24), Sniper Rifle(34) and Rocket launcher(35) has been spawned!");
  136. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  137. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  138. return 1;
  139. }
  140.  
  141. CMD:vjp(playerid)
  142. {
  143. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  144. else if(GetVipRank(playerid) >= 1)
  145. {
  146. if(gettime() > ECMD[playerid][2])
  147. {
  148. ECMD[playerid][2] = gettime() + 60;
  149. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  150. SendClientMessage(playerid, 0xFF00FFFF, "Jetpack has been spawned!");
  151. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  152. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  153. return 1;
  154. }
  155.  
  156. CMD:vrespawn(playerid)
  157. {
  158. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  159. else if(GetVipRank(playerid) >= 1)
  160. {
  161. if(gettime() > ECMD[playerid][3])
  162. {
  163. ECMD[playerid][3] = gettime() + 60;
  164. SpawnPlayer(playerid);
  165. SendClientMessage(playerid, 0xFF00FFFF, "You've been respawned!");
  166. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  167. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  168. return 1;
  169. }
  170.  
  171. CMD:vtime(playerid, params[])
  172. {
  173. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
  174. else if(GetVipRank(playerid) >= 1)
  175. {
  176. if(gettime() > ECMD[playerid][4])
  177. {
  178. new Hours, Minutes;
  179. if(sscanf(params, "ii", Hours, Minutes)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vtime [H] [M].");
  180. SetPlayerTime(playerid, Hours, Minutes);
  181. SendClientMessage(playerid, 0xFF00FFFF, "Time has been updated!");
  182. ECMD[playerid][4] = gettime() + 60;
  183. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  184. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  185. return 1;
  186. }
  187.  
  188. CMD:vcar(playerid)
  189. {
  190. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  191. else if(GetVipRank(playerid) >= 2)
  192. {
  193. if(gettime() > ECMD[playerid][5])
  194. {
  195. new veh, Float:X, Float:Y, Float:Z, Float:A;
  196. ECMD[playerid][5] = gettime() + 60;
  197. GetPlayerPos(playerid, X, Y, Z);
  198. GetPlayerFacingAngle(playerid, A);
  199. veh = CreateVehicle(411, X, Y, Z, A, 0, 6, -1);
  200. PutPlayerInVehicle(playerid, veh, 0);
  201. SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned, with NOS!");
  202. AddVehicleComponent(veh, 1010);
  203. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  204. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  205. return 1;
  206. }
  207.  
  208. CMD:vboat(playerid)
  209. {
  210. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  211. else if(GetVipRank(playerid) >= 2)
  212. {
  213. if(gettime() > ECMD[playerid][6])
  214. {
  215. new veh, Float:X, Float:Y, Float:Z, Float:A;
  216. ECMD[playerid][6] = gettime() + 60;
  217. GetPlayerPos(playerid, X, Y, Z);
  218. GetPlayerFacingAngle(playerid, A);
  219. veh = CreateVehicle(493, X, Y, Z, A, 0, 6, -1);
  220. PutPlayerInVehicle(playerid, veh, 0);
  221. SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
  222. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  223. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  224. return 1;
  225. }
  226.  
  227. CMD:vbike(playerid)
  228. {
  229. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  230. else if(GetVipRank(playerid) >= 2)
  231. {
  232. if(gettime() > ECMD[playerid][7])
  233. {
  234. new veh, Float:X, Float:Y, Float:Z, Float:A;
  235. ECMD[playerid][7] = gettime() + 60;
  236. GetPlayerPos(playerid, X, Y, Z);
  237. GetPlayerFacingAngle(playerid, A);
  238. veh = CreateVehicle(463, X, Y, Z, A, 0, 6, -1);
  239. PutPlayerInVehicle(playerid, veh, 0);
  240. SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
  241. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  242. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  243. return 1;
  244. }
  245.  
  246. CMD:vheli(playerid)
  247. {
  248. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  249. else if(GetVipRank(playerid) >= 2)
  250. {
  251. if(gettime() > ECMD[playerid][8])
  252. {
  253. new veh, Float:X, Float:Y, Float:Z, Float:A;
  254. ECMD[playerid][8] = gettime() + 60;
  255. GetPlayerPos(playerid, X, Y, Z);
  256. GetPlayerFacingAngle(playerid, A);
  257. veh = CreateVehicle(487, X, Y, Z, A, 0, 6, -1);
  258. PutPlayerInVehicle(playerid, veh, 0);
  259. SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
  260. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  261. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  262. return 1;
  263. }
  264.  
  265. CMD:vcc(playerid, params[])
  266. {
  267. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "You aren't in any vehicle.");
  268. else if(GetVipRank(playerid) >= 2)
  269. {
  270. if(gettime() > ECMD[playerid][9])
  271. {
  272. new Col1, Col2;
  273. if(sscanf(params, "ii", Col1, Col2)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vcc [First Color] [Sec Color].");
  274. if(Col1 > 255 || Col1 < 0) return SendClientMessage(playerid, 0xFF0000FF, "Vehicle Colours are between 0-255 only.");
  275. if(Col2 > 255 || Col2 < 0) return SendClientMessage(playerid, 0xFF0000FF, "Vehicle Colours are between 0-255 only.");
  276. ChangeVehicleColor(GetPlayerVehicleID(playerid), Col1, Col2);
  277. SendClientMessage(playerid, 0xFF00FFFF, "Vehicle Colour has been updated!");
  278. ECMD[playerid][9] = gettime() + 60;
  279. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  280. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  281. return 1;
  282. }
  283.  
  284.  
  285. CMD:vgoto(playerid, params[])
  286. {
  287. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  288. else if(GetVipRank(playerid) >= 3)
  289. {
  290. if(gettime() > ECMD[playerid][10])
  291. {
  292. new ID, Float:X, Float:Y, Float:Z, Float:A;
  293. if(sscanf(params, "i", ID)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vgoto [ID].");
  294. if(!IsPlayerConnected(ID) || ID == playerid || ID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "Invalid Player ID.");
  295. SendClientMessage(playerid, 0xFF00FFFF, "Teleported to player Sucessfully!");
  296. SendClientMessage(ID, 0xFF00FFFF, "A Very Important Person has teleported to you!");
  297. GetPlayerPos(ID, X, Y, Z);
  298. GetPlayerFacingAngle(ID, A);
  299. SetPlayerPos(playerid, X, Y, Z);
  300. SetPlayerFacingAngle(playerid, A);
  301. ECMD[playerid][10] = gettime() + 60;
  302. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  303. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  304. return 1;
  305. }
  306.  
  307. CMD:vskin(playerid, params[])
  308. {
  309. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
  310. else if(GetVipRank(playerid) >= 3)
  311. {
  312. if(gettime() > ECMD[playerid][10])
  313. {
  314. new SkinID;
  315. if(sscanf(params, "i", SkinID)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vskin [ID].");
  316. if(SkinID > 311 || SkinID < 0) return SendClientMessage(playerid, 0xFF0000FF, "Skins are between 0-311 only.");
  317. SetPlayerSkin(playerid, SkinID);
  318. SendClientMessage(playerid, 0xFF00FFFF, "Skin has been changed!");
  319. ECMD[playerid][11] = gettime() + 60;
  320. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  321. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  322. return 1;
  323. }
  324.  
  325. CMD:vsavepos(playerid, params[])
  326. {
  327. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
  328. else if(GetVipRank(playerid) >= 3)
  329. {
  330. if(gettime() > ECMD[playerid][10])
  331. {
  332. SaveVipPos(playerid);
  333. ECMD[playerid][12] = gettime() + 60;
  334. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  335. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  336. return 1;
  337. }
  338.  
  339. CMD:vloadpos(playerid, params[])
  340. {
  341. if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
  342. else if(GetVipRank(playerid) >= 3)
  343. {
  344. if(gettime() > ECMD[playerid][10])
  345. {
  346. LoadVipPos(playerid);
  347. ECMD[playerid][13] = gettime() + 60;
  348. } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
  349. } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
  350. return 1;
  351. }
  352.  
  353. CMD:vips(playerid)
  354. {
  355. new total = 0, String[128];
  356. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  357. {
  358. if(IsPlayerConnected(i) && !IsPlayerNPC(i))
  359. {
  360. if(GetVipRank(i) >= 1)
  361. {
  362. total++;
  363. SendClientMessage(playerid, 0xFF00FFFF, "Online Very Important Persons:");
  364. format(String, sizeof(String), "{%06x}%s (Level: %d)", GetPlayerColor(i) >>> 8, GetName(i), GetVipRank(i));
  365. SendClientMessage(playerid, GetPlayerColor(i), String);
  366. }
  367. }
  368. }
  369. if(total == 0) return SendClientMessage(playerid, 0xFF00FFFF, "There are no online Very Important Persons!");
  370. return 1;
  371. }
  372.  
  373. stock GetVipRank(playerid)
  374. {
  375. new Query[180], DBResult: Result, Assoc[5], Viprank = 0;
  376. format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
  377. Result = db_query(VDB, Query);
  378.  
  379. if(db_num_rows(Result))
  380. {
  381. format(Query, sizeof(Query), "SELECT * FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
  382. Result = db_query(VDB, Query);
  383.  
  384. db_get_field_assoc(Result, "VIPRANK", Assoc, 5);
  385. Viprank = strval(Assoc);
  386. }
  387. db_free_result(Result);
  388. return Viprank;
  389. }
  390.  
  391. stock SaveVipPos(playerid)
  392. {
  393. new Query[250], DBResult: Result;
  394. format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
  395. Result = db_query(VDB, Query);
  396.  
  397. if(db_num_rows(Result))
  398. {
  399. new Float:X, Float:Y, Float:Z;
  400. GetPlayerPos(playerid, X, Y, Z);
  401.  
  402. format(Query, sizeof(Query), "UPDATE `VIP` SET X = '%0.2f', Y = '%0.2f', Z = '%0.2f' WHERE PNAME = '%q'", X, Y, Z, GetName(playerid));
  403. db_query(VDB, Query);
  404.  
  405. SendClientMessage(playerid, -1, "Saved the position, use /vloadpos to load it any time.");
  406. }
  407. db_free_result(Result);
  408. return 1;
  409. }
  410.  
  411. stock LoadVipPos(playerid)
  412. {
  413. new Query[128], DBResult: Result;
  414. format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
  415. Result = db_query(VDB, Query);
  416.  
  417. if(db_num_rows(Result))
  418. {
  419. new pX[20], pY[20], pZ[20];
  420.  
  421. format(Query, sizeof(Query), "SELECT * FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
  422. Result = db_query(VDB, Query);
  423.  
  424. db_get_field_assoc(Result, "X", pX, 20);
  425. db_get_field_assoc(Result, "Y", pY, 20);
  426. db_get_field_assoc(Result, "Z", pZ, 20);
  427.  
  428. SetPlayerPos(playerid, strval(pX), strval(pY), strval(pZ));
  429. SendClientMessage(playerid, -1, "Loaded the last saved position from your records.");
  430. }
  431. db_free_result(Result);
  432. return 1;
  433. }
  434.  
  435. stock GetName(playerid)
  436. {
  437. new pName[MAX_PLAYER_NAME];
  438. GetPlayerName(playerid, pName, sizeof(pName));
  439. return pName;
  440. }
Advertisement
Add Comment
Please, Sign In to add comment