Advertisement
Guest User

Untitled

a guest
Dec 21st, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.80 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <engine>
  6. #include <hamsandwich>
  7. #include <sqlx>
  8.  
  9. /* Bonus List
  10. ---------------
  11. [1] Spawn with 125 HP (by cvar) and 100 AP (by cvar)
  12. [2] Set "VIP" in Score Board (by cvar)
  13. [3] Guns menu after 3 rounds (by cvar)
  14. [4] VIP Model (by cvar)
  15. [5] Kill HP Refill (by cvar)
  16. [6] Double Jump (by cvar)
  17.  
  18. Other
  19. ---------------
  20. [1] Auto Stop on specified maps
  21. [2] VIP Event
  22. */
  23.  
  24. //#define DEBUG
  25. #define VIP_EVENT
  26.  
  27. #define user_host "89.34.24.240"
  28. #define user_user "dgamero_vip"
  29. #define user_pass "w#HZA)wChjw["
  30. #define user_db "dgamero_vip"
  31.  
  32. #define vip_model "vip"
  33.  
  34. new Handle:g_Tuple, g_Name[33][32], g_Pass[33][32], g_Query[256], g_rounds[33], jumpnum[33], bool:is_user_vip[33], bool:jump[33];
  35. new cvar_spawnhp, cvar_spawnap, cvar_vipflag, cvar_guns, cvar_rounds, cvar_model, cvar_benefits, cvar_double, cvar_msg;
  36.  
  37. #if defined VIP_EVENT
  38. new ora = -1, bool:event_on, bool:first;
  39. const TASK_VERIFICARE = 123123;
  40. new cvar_start, cvar_stop;
  41. #endif
  42.  
  43. new const maps_running[] = {
  44. "awp_",
  45. "36hp"
  46. };
  47.  
  48. public plugin_precache() {
  49. #if defined DEBUG
  50. server_print("[VIP SQLx] Forward ^"plugin_precache^" called");
  51. #endif
  52.  
  53. g_Tuple = SQL_MakeDbTuple(user_host, user_user, user_pass, user_db, 10);
  54.  
  55. new filelocation[128];
  56. get_configsdir(filelocation, charsmax(filelocation));
  57. add(filelocation, charsmax(filelocation), "/vip.cfg");
  58.  
  59. if(!file_exists(filelocation))
  60. log_amx("[VIP SQLx] We can't found ^"vip.cfg^" from ^"configs^" folder to execute, running with default settings");
  61. else
  62. server_cmd("exec %s", filelocation);
  63.  
  64. new model[128];
  65. formatex(model, charsmax(model), "models/player/%s/%s.mdl", vip_model, vip_model);
  66. precache_model(model);
  67.  
  68. }
  69.  
  70. public plugin_init() {
  71. #if defined DEBUG
  72. server_print("[VIP SQLx] Forward ^"plugin_init^" called");
  73. #endif
  74.  
  75. new mapname[32];
  76. get_mapname(mapname, charsmax(mapname));
  77. for(new i = 0; i < sizeof maps_running; i++)
  78. {
  79. if(equal(mapname, maps_running[i]))
  80. {
  81. log_amx("Plugin it stop automatically on the map: %s", mapname);
  82. pause("ade");
  83. }
  84. }
  85.  
  86.  
  87.  
  88. register_plugin("SQL VIP", "1.1", "LondoN eXtream");
  89. register_cvar("london_sql_vip", "1.1", FCVAR_SERVER|FCVAR_SPONLY);
  90. set_cvar_string("london_sql_vip", "1.1");
  91.  
  92. register_clcmd("say /vip", "showinfo");
  93.  
  94. cvar_spawnhp = register_cvar("vip_sqlx_spawn_hp", "125");
  95. cvar_spawnap = register_cvar("vip_sqlx_spawn_ap", "100");
  96. cvar_vipflag = register_cvar("vip_sqlx_scoreboard", "1");
  97. cvar_guns = register_cvar("vip_sqlx_guns", "1");
  98. cvar_rounds = register_cvar("vip_sqlx_rounds", "3");
  99. cvar_model = register_cvar("vip_sqlx_model", "1");
  100. cvar_benefits = register_cvar("vip_sqlx_benefits", "1");
  101. cvar_double = register_cvar("vip_sqlx_double", "1");
  102. cvar_msg = register_cvar("vip_sqlx_msg", "1");
  103.  
  104. #if defined VIP_EVENT
  105. first = true;
  106. cvar_start = register_cvar("vip_sqlx_free_hour_start", "22");
  107. cvar_stop = register_cvar("vip_sqlx_free_hour_stop", "10");
  108. set_task(60.0, "check_vip", TASK_VERIFICARE);
  109. #endif
  110.  
  111. RegisterHam(Ham_Spawn, "player", "HamPlayerSpawnPost", 1);
  112.  
  113. if(get_pcvar_num(cvar_vipflag))
  114. {
  115. #if defined DEBUG
  116. server_print("[VIP SQLx] Score Board Attrib found, begin code");
  117. #endif
  118.  
  119. register_message(get_user_msgid("ScoreAttrib"), "make_score_board");
  120. }
  121.  
  122. if(get_pcvar_num(cvar_benefits)) {
  123. #if defined DEBUG
  124. server_print("[VIP SQLx] Death Msg Event Found");
  125. #endif
  126. register_cvar("vip_sqlx_kill_hp", "15");
  127. register_cvar("vip_sqlx_kill_ap", "10");
  128. register_cvar("vip_sqlx_max_hp", "125");
  129.  
  130. register_event("DeathMsg", "event_death", "a");
  131. }
  132. }
  133.  
  134. public showinfo(id) show_motd(id, "addons/amxmodx/configs/vip.html");
  135.  
  136. public check_vip(task) {
  137. time(ora, _, _);
  138. event_on = (ora >= get_pcvar_num(cvar_start) && ora < get_pcvar_num(cvar_stop)) ? true : false;
  139.  
  140. if(event_on) {
  141. if(first) {
  142. server_print("VIP EVENT IS ON");
  143. first = false;
  144. }
  145.  
  146. new players[32], num, id;
  147. get_players(players, num);
  148.  
  149. for(new i = 0; i < num; i++) {
  150. id = players[i];
  151.  
  152. if(!is_user_connected(id) || is_user_vip[id])
  153. continue;
  154.  
  155. is_user_vip[id] = true;
  156. }
  157. }
  158. }
  159.  
  160. public event_death() {
  161. static killer; killer = read_data(1);
  162. static victim; victim = read_data(2);
  163. static head; head = read_data(3);
  164.  
  165. if(!killer || killer == victim || !is_user_alive(killer))
  166. return;
  167.  
  168. new hp = head ? get_cvar_num("vip_sqlx_kill_hp") : (get_cvar_num("vip_sqlx_kill_hp") * 2);
  169. new ap = head ? get_cvar_num("vip_sqlx_kill_ap") : (get_cvar_num("vip_sqlx_kill_ap") * 2);
  170.  
  171. set_user_health(killer, clamp(get_user_health(killer) + hp, 0, get_cvar_num("vip_sqlx_max_hp")));
  172. set_user_armor(killer, clamp(get_user_armor(killer) + ap, 0, 100));
  173. }
  174.  
  175. public make_score_board(msg_id, msg_dest, msg_reciver) {
  176. static id; id = get_msg_arg_int(1);
  177.  
  178. if(is_user_vip[id])
  179. set_msg_arg_int(2, ARG_BYTE, (1<<2));
  180. }
  181.  
  182. public HamPlayerSpawnPost(id) {
  183. if(!is_user_alive(id) || !is_user_vip[id])
  184. return;
  185.  
  186. #if defined DEBUG
  187. server_print("[VIP SQLx] Event: Ham_Spawn | On user: %s", g_Name[id]);
  188. #endif
  189.  
  190. set_user_health(id, get_pcvar_num(cvar_spawnhp));
  191. set_user_armor(id, get_pcvar_num(cvar_spawnap));
  192.  
  193. if(get_pcvar_num(cvar_model))
  194. cs_set_user_model(id, vip_model);
  195.  
  196. if(get_pcvar_num(cvar_guns)) {
  197. g_rounds[id]++;
  198.  
  199. if(g_rounds[id] >= get_pcvar_num(cvar_rounds))
  200. show_guns_menu(id);
  201. }
  202. }
  203.  
  204. public client_PreThink(id) {
  205. if(!get_pcvar_num(cvar_double) || !is_user_vip[id] || !is_user_alive(id))
  206. return PLUGIN_HANDLED;
  207.  
  208. new button = get_user_button(id);
  209. new obutton = get_user_oldbutton(id);
  210.  
  211. if((button & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obutton & IN_JUMP)) {
  212. if(jumpnum[id] < 1) {
  213. jump[id] = true;
  214. jumpnum[id]++;
  215. return PLUGIN_CONTINUE;
  216. }
  217. }
  218.  
  219. if((button & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) {
  220. jumpnum[id] = 0;
  221. return PLUGIN_CONTINUE;
  222. }
  223.  
  224. return PLUGIN_CONTINUE;
  225. }
  226.  
  227. public client_PostThink(id) {
  228. if(!(get_pcvar_num(cvar_double)) || !is_user_vip[id] || !is_user_alive(id) || !jump[id])
  229. return;
  230.  
  231. new Float:vector_velocity[3];
  232. entity_get_vector(id, EV_VEC_velocity, vector_velocity);
  233. vector_velocity[2] = random_float(265.0, 285.0);
  234. entity_set_vector(id, EV_VEC_velocity, vector_velocity);
  235.  
  236. jump[id] = false;
  237. }
  238.  
  239. public show_guns_menu(id) {
  240. static menu_title[] = "\rChoose Your Guns";
  241. static menu_id;
  242.  
  243. menu_id = menu_create(menu_title, "guns_menu_handler");
  244.  
  245. menu_additem(menu_id, "\wM4A1 + Deagle");
  246. menu_additem(menu_id, "\wAK47 + Deagle");
  247. menu_additem(menu_id, "\wAWP + Deagle");
  248.  
  249. menu_setprop(menu_id, MPROP_EXIT, MEXIT_ALL);
  250. menu_display(id, menu_id, 0);
  251. }
  252.  
  253. public guns_menu_handler(id, menu_id, item) {
  254. if(!(item == MENU_EXIT))
  255. {
  256. switch(item)
  257. {
  258. case 0:
  259. {
  260. strip_user_weapons(id);
  261. give_item(id, "weapon_knife");
  262. give_item(id, "weapon_deagle");
  263. give_item(id, "weapon_m4a1");
  264. cs_set_user_bpammo(id, CSW_DEAGLE, 35);
  265. cs_set_user_bpammo(id, CSW_M4A1, 90);
  266. Print(id, "^x04[VIP]^x01 Ai ales setul de arme");
  267. }
  268.  
  269. case 1:
  270. {
  271. strip_user_weapons(id);
  272. give_item(id, "weapon_knife");
  273. give_item(id, "weapon_deagle");
  274. give_item(id, "weapon_ak47");
  275. cs_set_user_bpammo(id, CSW_DEAGLE, 35);
  276. cs_set_user_bpammo(id, CSW_AK47, 90);
  277. Print(id, "^x04[VIP]^x01 Ai ales setul de arme");
  278. }
  279.  
  280. case 2:
  281. {
  282. strip_user_weapons(id);
  283. give_item(id, "weapon_knife");
  284. give_item(id, "weapon_deagle");
  285. give_item(id, "weapon_awp");
  286. cs_set_user_bpammo(id, CSW_DEAGLE, 35);
  287. cs_set_user_bpammo(id, CSW_AWP, 35);
  288. Print(id, "^x04[VIP]^x01 Ai ales AWP");
  289. }
  290. }
  291. }
  292.  
  293. menu_destroy(menu_id);
  294. return PLUGIN_HANDLED;
  295. }
  296.  
  297.  
  298. public client_connect(id) {
  299. #if defined DEBUG
  300. server_print("[VIP SQLx] Forward ^"client_connect^" called");
  301. #endif
  302.  
  303. if(is_user_bot(id) || is_user_hltv(id))
  304. return;
  305.  
  306. get_user_name(id, g_Name[id], charsmax(g_Name));
  307. get_user_info(id, "_pass", g_Pass[id], charsmax(g_Pass));
  308.  
  309. formatex(g_Query, charsmax(g_Query), "SELECT * FROM vip_users WHERE username=^"%s^" AND password=^"%s^"", g_Name[id], g_Pass[id]);
  310.  
  311. new QueryData[1];
  312. QueryData[0] = id;
  313. SQL_ThreadQuery(g_Tuple, "ReadInfo", g_Query, QueryData, sizeof(QueryData));
  314. }
  315.  
  316. public ReadInfo(FailState, Handle:Query, szError[], Errcode, Data[], DataSize) {
  317. #if defined DEBUG
  318. server_print("[VIP SQLx] Query retriving vip information have executed");
  319. #endif
  320.  
  321. QueryStatus(FailState, szError, Errcode);
  322.  
  323. new Player = Data[0];
  324.  
  325. if(SQL_NumResults(Query) > 0) {
  326. is_user_vip[Player] = true;
  327. server_print("[VIP SQLx] %s connected with success", g_Name[Player]);
  328.  
  329. if(get_pcvar_num(cvar_msg))
  330. Print(0, "^x04[VIP]^x03 %s^x01 has connected", g_Name[Player]);
  331. }
  332. else
  333. {
  334. server_print("[VIP SQLx] %s is not a VIP", g_Name[Player]);
  335. server_print("[VIP SQLx] It let them connect");
  336. }
  337. }
  338.  
  339. public QueryStatus(FailState, szError[], Errcode) {
  340. if(FailState == TQUERY_CONNECT_FAILED) {
  341. log_amx("[MySQL Error] %s [Error Code: %d]", szError, Errcode);
  342. return;
  343. }
  344. else if(FailState == TQUERY_QUERY_FAILED) {
  345. log_amx("[MySQL Error] %s [Error Code: %d]", szError, Errcode);
  346. return;
  347. }
  348. else if(Errcode) {
  349. log_amx("[MySQL Error] Error Code: %d", Errcode);
  350. return;
  351. }
  352.  
  353. #if defined DEBUG
  354. server_print("[VIP SQLx] No error found during execute SQL Query");
  355. #endif
  356. }
  357.  
  358. stock Print(const id, const input[], any:...) {
  359. new count = 1, players[32];
  360. static msg[191];
  361. vformat(msg, 190, input, 3);
  362.  
  363. if(id) players[0] = id;
  364. else get_players(players, count, "ch"); {
  365. for(new i = 0; i < count; i++) {
  366. if(is_user_connected(players[i])) {
  367. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  368. write_byte(players[i]);
  369. write_string(msg);
  370. message_end();
  371. }
  372. }
  373. }
  374. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement