Advertisement
Guest User

Untitled

a guest
May 9th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.39 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <fakemeta>
  4. #include <fakemeta_util>
  5. #include <cstrike>
  6. #include <sqlx>
  7. #include <csx>
  8.  
  9. #define PLUGIN "New Plug-In"
  10. #define VERSION "1.0"
  11. #define AUTHOR "author"
  12.  
  13. // SQL
  14. new host[52],user[52],pass[52],db[52],table[52];
  15. new tc_sql_host,tc_sql_user,tc_sql_pass,tc_sql_db,tc_sql_table;
  16. new tc_knife_kills,tc_grenade_kills;
  17. new Handle:g_SqlTuple;
  18. new g_Cache[1024];
  19. // USER
  20. new steamid[32];
  21. new name[32];
  22. // WEAPON BOOLS
  23. new bool:grenade_launcher[33];
  24. new bool:super_knife[33];
  25. //GRENADE LAUNCNHER
  26. new g_cvar_he;
  27. new g_trail;
  28. //OTHER
  29. new g_MaxPlayers;
  30.  
  31. // MODELS
  32. #define GRENADE_LAUNCHER_MODEL "models/tc/grenade_launcher.mdl"
  33. #define GRENADE_LAUNCHER_WORLD "models/tc/w_grenade.mdl"
  34.  
  35. public plugin_init() {
  36. // REGISTRE AUTHOR
  37. register_plugin(PLUGIN, VERSION, AUTHOR)
  38. // GRENADE LAUNCHER
  39. register_event("DeathMsg", "save_users_kills", "a", "1!0", "2!0");
  40. register_message(get_user_msgid("TextMsg"), "msg_text");
  41. register_message(get_user_msgid("SendAudio"), "msg_audio");
  42. register_event("CurWeapon", "set_grenadelauncher", "be", "1=1");
  43. register_forward(FM_SetModel, "fwd_SetModel");
  44. g_cvar_he = register_cvar("grenade_he", "255000000");
  45. // DATABASE CONFIGS
  46. tc_sql_host = register_cvar("tc_sql_host", "64.182.255.3");
  47. tc_sql_user = register_cvar("tc_sql_user", "schnups_test");
  48. tc_sql_pass = register_cvar("tc_sql_pass", "nooo");
  49. tc_sql_db = register_cvar("tc_sql_db", "schnups_testing");
  50. tc_sql_table = register_cvar("tc_sql_table", "weapons");
  51. // ACHIEVEMENT CONFIGS
  52. tc_knife_kills = register_cvar("tc_knife_kills", "5");
  53. tc_grenade_kills = register_cvar("tc_grenade_kills", "5");
  54. // GENERAL
  55. RegisterHam(Ham_Spawn,"player","check_achievements",1);
  56. g_MaxPlayers = get_maxplayers();
  57. // PCVARS
  58. get_pcvar_string(tc_sql_host,host,51);
  59. get_pcvar_string(tc_sql_user,user,51);
  60. get_pcvar_string(tc_sql_pass,pass,51);
  61. get_pcvar_string(tc_sql_db,db,51);
  62. get_pcvar_string(tc_sql_table,table,51);
  63. // CONNECT TO DATABASE
  64. g_SqlTuple = SQL_MakeDbTuple(host,user,pass,db);
  65. // CREATE TABLE IF IT DOESNT EXIST
  66. format(g_Cache,1023,"CREATE TABLE IF NOT EXISTS `%s` (`steamid` varchar(51) NOT NULL,`name` varchar(51) NOT NULL,`knife` int(11) NOT NULL,`hegrenade` int(11) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;",table);
  67. SQL_ThreadQuery(g_SqlTuple,"TableHandle",g_Cache);
  68. }
  69.  
  70. // PRECACHE ALL MODELS
  71. public plugin_precache()
  72. {
  73. precache_model(GRENADE_LAUNCHER_MODEL)
  74. precache_model(GRENADE_LAUNCHER_WORLD)
  75. g_trail = precache_model("sprites/smoke.spr")
  76. }
  77.  
  78. // TABLE HANDLE
  79. public TableHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  80. {
  81. if(FailState == TQUERY_CONNECT_FAILED)
  82. {
  83. return set_fail_state("Could not connect to SQL database.");
  84. }
  85. else if(FailState == TQUERY_QUERY_FAILED)
  86. {
  87. return set_fail_state("Query plewper failed.");
  88. }
  89. if(Errcode)
  90. {
  91. return log_amx("Error on query: %s",Error);
  92. }
  93. return PLUGIN_CONTINUE
  94. }
  95.  
  96. // QUERY HANDLE
  97. public QueryHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  98. {
  99. if(FailState == TQUERY_CONNECT_FAILED)
  100. {
  101. return set_fail_state("Could not connect to SQL database.");
  102. }
  103. else if(FailState == TQUERY_QUERY_FAILED)
  104. {
  105. return set_fail_state("Query failed.");
  106. }
  107. if(Errcode)
  108. {
  109. return log_amx("Error on query: %s",Error);
  110. }
  111. return PLUGIN_CONTINUE
  112. }
  113.  
  114. // ON CLIENT CONNECT
  115. public client_authorized(iClient)
  116. {
  117. new iData[7];
  118. iData[0] = iClient;
  119. get_user_authid(iClient, steamid, 31);
  120. format(g_Cache,1023,"SELECT * FROM %s WHERE steamid='%s'",table,steamid);
  121. SQL_ThreadQuery(g_SqlTuple,"savesteamid",g_Cache, iData, 1);
  122. }
  123.  
  124. // CHECK IF KILLER WEAPON WAS ACHIEVEMENT WEAPON
  125. public save_users_kills(iClient)
  126. {
  127. new killer = read_data(1), victim = read_data(2);
  128. new szWeapon[33]
  129. read_data(4, szWeapon, sizeof(szWeapon)-1);
  130. new CsTeams:team = cs_get_user_team(killer);
  131. if(killer != victim)
  132. {
  133. if(equali(szWeapon,"knife"))
  134. {
  135. if(team == CS_TEAM_T)
  136. {
  137. new iData[7];
  138. iData[0] = killer;
  139. get_user_authid(killer, steamid, 31);
  140. format(g_Cache,1023,"SELECT knife FROM %s WHERE steamid='%s'",table,steamid);
  141. SQL_ThreadQuery(g_SqlTuple,"knifekillupdate",g_Cache, iData, 1);
  142. }
  143. }
  144. else if(equali(szWeapon,"grenade"))
  145. {
  146. if(team == CS_TEAM_CT)
  147. {
  148. new iData[7];
  149. iData[0] = killer;
  150. get_user_authid(killer, steamid, 31);
  151. format(g_Cache,1023,"SELECT hegrenade FROM %s WHERE steamid='%s'",table,steamid);
  152. SQL_ThreadQuery(g_SqlTuple,"grenadekillupdate",g_Cache, iData, 1);
  153. }
  154. }
  155. }
  156. }
  157.  
  158. // IF FIRST CONNECTION
  159. public savesteamid(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  160. {
  161. if(FailState == TQUERY_CONNECT_FAILED)
  162. {
  163. return set_fail_state("Could not connect to SQL database.");
  164. }
  165. else if(FailState == TQUERY_QUERY_FAILED)
  166. {
  167. return set_fail_state("Query failed.");
  168. }
  169. if(Errcode)
  170. {
  171. return log_amx("Error on query plewp: %s",Error);
  172. }
  173. new iClient = Data[0]
  174. new steamidcheck = SQL_NumResults(Query)
  175. if(steamidcheck == 0)
  176. {
  177. get_user_authid(iClient, steamid, 31)
  178. get_user_name(iClient, name, 31)
  179. format(g_Cache,1023,"INSERT INTO %s VALUES('%s','%s','0','0')",table,steamid,name)
  180. SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache)
  181. }
  182. return PLUGIN_CONTINUE
  183. }
  184.  
  185. // UPDATE THE NKIFE KILLS
  186. public knifekillupdate(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  187. {
  188. if(FailState == TQUERY_CONNECT_FAILED)
  189. {
  190. return set_fail_state("Could not connect to SQL database.");
  191. }
  192. else if(FailState == TQUERY_QUERY_FAILED)
  193. {
  194. return set_fail_state("Query failed.");
  195. }
  196. if(Errcode)
  197. {
  198. return log_amx("Error on query plewp: %s",Error);
  199. }
  200. new iClient = Data[0];
  201. new knifekills = SQL_ReadResult(Query,0);
  202. new updateknifekills = knifekills + 1;
  203. get_user_authid(iClient, steamid, 31);
  204. format(g_Cache,1023,"UPDATE %s SET knife='%i' WHERE steamid='%s'",table,updateknifekills,steamid);
  205. SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache);
  206. return PLUGIN_CONTINUE
  207. }
  208.  
  209. // UPDATE THE GRENADE KILLS
  210. public grenadekillupdate(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  211. {
  212. if(FailState == TQUERY_CONNECT_FAILED)
  213. {
  214. return set_fail_state("Could not connect to SQL database.");
  215. }
  216. else if(FailState == TQUERY_QUERY_FAILED)
  217. {
  218. return set_fail_state("Query failed.");
  219. }
  220. if(Errcode)
  221. {
  222. return log_amx("Error on query plewp: %s",Error);
  223. }
  224. new iClient = Data[0];
  225. new grenadekills = SQL_ReadResult(Query,0);
  226. new updategrenadekills = grenadekills + 1;
  227. get_user_authid(iClient, steamid, 31);
  228. format(g_Cache,1023,"UPDATE %s SET hegrenade='%i' WHERE steamid='%s'",table,updategrenadekills,steamid);
  229. SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache);
  230. return PLUGIN_CONTINUE
  231. }
  232.  
  233. // CHECK IF USER HAS ACHIEVEMENTS
  234. public check_achievements(iClient)
  235. {
  236. new iData[7];
  237. iData[0] = iClient;
  238. get_user_authid(iClient, steamid, 31);
  239. format(g_Cache,1023,"SELECT hegrenade FROM %s WHERE steamid='%s'",table,steamid);
  240. SQL_ThreadQuery(g_SqlTuple,"check_knifeachievements",g_Cache, iData, 1);
  241. }
  242.  
  243. // CHECK IF USER HAS KNIFE ACHIEVEMENT
  244. public check_knifeachievements(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  245. {
  246. new iClient = Data[0];
  247. new iData[7];
  248. iData[0] = iClient;
  249. new grenadekillsneeded = get_pcvar_num(tc_grenade_kills);
  250. new grenadekills = SQL_ReadResult(Query, 0);
  251. if(grenadekillsneeded <= grenadekills)
  252. {
  253. grenade_launcher[iClient] = true;
  254. }
  255. get_user_authid(iClient, steamid, 31);
  256. format(g_Cache,1023,"SELECT knife FROM %s WHERE steamid='%s'",table,steamid);
  257. SQL_ThreadQuery(g_SqlTuple,"end_achievements",g_Cache, iData, 1);
  258. }
  259.  
  260. // END ACHIEVEMENT
  261. public end_achievements(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  262. {
  263. new iClient = Data[0];
  264. new knifekillsneeded = get_pcvar_num(tc_knife_kills);
  265. new knifekills = SQL_ReadResult(Query, 0);
  266. if(knifekillsneeded <= knifekills)
  267. {
  268. super_knife[iClient] = true;
  269. }
  270. }
  271.  
  272. // SET GRENADE LAUNCHER
  273. public set_grenadelauncher(iClient)
  274. {
  275. new CsTeams:team = cs_get_user_team(iClient);
  276. if(grenade_launcher[iClient] && team == CS_TEAM_CT)
  277. {
  278. new weapon = get_user_weapon(iClient)
  279. if(weapon == CSW_HEGRENADE)
  280. {
  281. set_pev(iClient, pev_viewmodel2, GRENADE_LAUNCHER_MODEL)
  282. }
  283. }
  284. }
  285.  
  286. // REMOVE FIRE IN THE HOLE TEXT
  287. public msg_text(iClient)
  288. {
  289. if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
  290. {
  291. return PLUGIN_CONTINUE
  292. }
  293. new arg3[16]
  294. get_msg_arg_string(3, arg3, 15)
  295. if(!equal(arg3, "#Game_radio")) {
  296. return PLUGIN_CONTINUE
  297. }
  298. new arg5[20]
  299. get_msg_arg_string(5, arg5, 19)
  300. if(equal(arg5, "#Fire_in_the_hole"))
  301. {
  302. return PLUGIN_HANDLED
  303. }
  304. return PLUGIN_CONTINUE
  305. }
  306.  
  307. //REMOVE FIRE IN THE HOLE AUDIO
  308. public msg_audio(iClient)
  309. {
  310. if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
  311. {
  312. return PLUGIN_CONTINUE
  313. }
  314. new arg2[20]
  315. get_msg_arg_string(2, arg2, 19)
  316. if(equal(arg2[1], "!MRAD_FIREINHOLE"))
  317. {
  318. return PLUGIN_HANDLED
  319. }
  320. return PLUGIN_CONTINUE
  321. }
  322.  
  323. // CHANGE GRENADES VELOCITY AND WORLD MODEL
  324. public fwd_SetModel(iEnt, const szModel[])
  325. {
  326. if(!pev_valid(iEnt))
  327. return FMRES_IGNORED;
  328. new iOwner = pev(iEnt, pev_owner);
  329. if(!is_user_connected(iOwner))
  330. return FMRES_IGNORED;
  331. new CsTeams:team = cs_get_user_team(iOwner);
  332. if(grenade_launcher[iOwner] && team == CS_TEAM_CT)
  333. {
  334. if(pev_valid(iEnt)
  335. && iOwner > 0
  336. && iOwner <= g_MaxPlayers
  337. && equali(szModel, "models/w_hegrenade.mdl"))
  338. {
  339. engfunc(EngFunc_SetModel, iEnt, GRENADE_LAUNCHER_WORLD)
  340. static Float:flVelocity[3]
  341. pev(iEnt, pev_velocity, flVelocity)
  342. flVelocity[0] *= 1.5
  343. flVelocity[1] *= 1.5
  344. flVelocity[2] *= 1.5
  345. set_pev(iEnt, pev_velocity, flVelocity)
  346. return FMRES_SUPERCEDE
  347. }
  348. }
  349. return FMRES_IGNORED
  350. }
  351.  
  352. // GRENADE TRAIL
  353. public grenade_throw(iClient, gid, wid)
  354. {
  355. new CsTeams:team = cs_get_user_team(iClient);
  356. if(grenade_launcher[iClient] && team == CS_TEAM_CT)
  357. {
  358. new nade, color[10]
  359. new r, g, b
  360. switch(wid)
  361. {
  362. case CSW_HEGRENADE: nade = g_cvar_he
  363. }
  364. get_pcvar_string(nade, color, 9)
  365. new c = str_to_num(color)
  366. r = c / 1000000
  367. c %= 1000000
  368. g = c / 1000
  369. b = c % 1000
  370. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  371. write_byte(TE_BEAMFOLLOW)
  372. write_short(gid)
  373. write_short(g_trail)
  374. write_byte(10)
  375. write_byte(5)
  376. write_byte(r)
  377. write_byte(g)
  378. write_byte(b)
  379. write_byte(100)
  380. message_end()
  381. }
  382. }
  383.  
  384. public plugin_end()
  385. {
  386. SQL_FreeHandle(g_SqlTuple)
  387. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement