Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <hamsandwich>
- #include <fakemeta>
- #include <fakemeta_util>
- #include <cstrike>
- #include <sqlx>
- #include <csx>
- #define PLUGIN "New Plug-In"
- #define VERSION "1.0"
- #define AUTHOR "author"
- // SQL
- new host[52],user[52],pass[52],db[52],table[52];
- new tc_sql_host,tc_sql_user,tc_sql_pass,tc_sql_db,tc_sql_table;
- new tc_knife_kills,tc_grenade_kills;
- new Handle:g_SqlTuple;
- new g_Cache[1024];
- // USER
- new steamid[32];
- new name[32];
- // WEAPON BOOLS
- new bool:grenade_launcher[33];
- new bool:super_knife[33];
- //GRENADE LAUNCNHER
- new g_cvar_he;
- new g_trail;
- //OTHER
- new g_MaxPlayers;
- // MODELS
- #define GRENADE_LAUNCHER_MODEL "models/tc/grenade_launcher.mdl"
- #define GRENADE_LAUNCHER_WORLD "models/tc/w_grenade.mdl"
- public plugin_init() {
- // REGISTRE AUTHOR
- register_plugin(PLUGIN, VERSION, AUTHOR)
- // GRENADE LAUNCHER
- register_event("DeathMsg", "save_users_kills", "a", "1!0", "2!0");
- register_message(get_user_msgid("TextMsg"), "msg_text");
- register_message(get_user_msgid("SendAudio"), "msg_audio");
- register_event("CurWeapon", "set_grenadelauncher", "be", "1=1");
- register_forward(FM_SetModel, "fwd_SetModel");
- g_cvar_he = register_cvar("grenade_he", "255000000");
- // DATABASE CONFIGS
- tc_sql_host = register_cvar("tc_sql_host", "64.182.255.3");
- tc_sql_user = register_cvar("tc_sql_user", "schnups_test");
- tc_sql_pass = register_cvar("tc_sql_pass", "nooo");
- tc_sql_db = register_cvar("tc_sql_db", "schnups_testing");
- tc_sql_table = register_cvar("tc_sql_table", "weapons");
- // ACHIEVEMENT CONFIGS
- tc_knife_kills = register_cvar("tc_knife_kills", "5");
- tc_grenade_kills = register_cvar("tc_grenade_kills", "5");
- // GENERAL
- RegisterHam(Ham_Spawn,"player","check_achievements",1);
- g_MaxPlayers = get_maxplayers();
- // PCVARS
- get_pcvar_string(tc_sql_host,host,51);
- get_pcvar_string(tc_sql_user,user,51);
- get_pcvar_string(tc_sql_pass,pass,51);
- get_pcvar_string(tc_sql_db,db,51);
- get_pcvar_string(tc_sql_table,table,51);
- // CONNECT TO DATABASE
- g_SqlTuple = SQL_MakeDbTuple(host,user,pass,db);
- // CREATE TABLE IF IT DOESNT EXIST
- 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);
- SQL_ThreadQuery(g_SqlTuple,"TableHandle",g_Cache);
- }
- // PRECACHE ALL MODELS
- public plugin_precache()
- {
- precache_model(GRENADE_LAUNCHER_MODEL)
- precache_model(GRENADE_LAUNCHER_WORLD)
- g_trail = precache_model("sprites/smoke.spr")
- }
- // TABLE HANDLE
- public TableHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- if(FailState == TQUERY_CONNECT_FAILED)
- {
- return set_fail_state("Could not connect to SQL database.");
- }
- else if(FailState == TQUERY_QUERY_FAILED)
- {
- return set_fail_state("Query plewper failed.");
- }
- if(Errcode)
- {
- return log_amx("Error on query: %s",Error);
- }
- return PLUGIN_CONTINUE
- }
- // QUERY HANDLE
- public QueryHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- if(FailState == TQUERY_CONNECT_FAILED)
- {
- return set_fail_state("Could not connect to SQL database.");
- }
- else if(FailState == TQUERY_QUERY_FAILED)
- {
- return set_fail_state("Query failed.");
- }
- if(Errcode)
- {
- return log_amx("Error on query: %s",Error);
- }
- return PLUGIN_CONTINUE
- }
- // ON CLIENT CONNECT
- public client_authorized(iClient)
- {
- new iData[7];
- iData[0] = iClient;
- get_user_authid(iClient, steamid, 31);
- format(g_Cache,1023,"SELECT * FROM %s WHERE steamid='%s'",table,steamid);
- SQL_ThreadQuery(g_SqlTuple,"savesteamid",g_Cache, iData, 1);
- }
- // CHECK IF KILLER WEAPON WAS ACHIEVEMENT WEAPON
- public save_users_kills(iClient)
- {
- new killer = read_data(1), victim = read_data(2);
- new szWeapon[33]
- read_data(4, szWeapon, sizeof(szWeapon)-1);
- new CsTeams:team = cs_get_user_team(killer);
- if(killer != victim)
- {
- if(equali(szWeapon,"knife"))
- {
- if(team == CS_TEAM_T)
- {
- new iData[7];
- iData[0] = killer;
- get_user_authid(killer, steamid, 31);
- format(g_Cache,1023,"SELECT knife FROM %s WHERE steamid='%s'",table,steamid);
- SQL_ThreadQuery(g_SqlTuple,"knifekillupdate",g_Cache, iData, 1);
- }
- }
- else if(equali(szWeapon,"grenade"))
- {
- if(team == CS_TEAM_CT)
- {
- new iData[7];
- iData[0] = killer;
- get_user_authid(killer, steamid, 31);
- format(g_Cache,1023,"SELECT hegrenade FROM %s WHERE steamid='%s'",table,steamid);
- SQL_ThreadQuery(g_SqlTuple,"grenadekillupdate",g_Cache, iData, 1);
- }
- }
- }
- }
- // IF FIRST CONNECTION
- public savesteamid(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- if(FailState == TQUERY_CONNECT_FAILED)
- {
- return set_fail_state("Could not connect to SQL database.");
- }
- else if(FailState == TQUERY_QUERY_FAILED)
- {
- return set_fail_state("Query failed.");
- }
- if(Errcode)
- {
- return log_amx("Error on query plewp: %s",Error);
- }
- new iClient = Data[0]
- new steamidcheck = SQL_NumResults(Query)
- if(steamidcheck == 0)
- {
- get_user_authid(iClient, steamid, 31)
- get_user_name(iClient, name, 31)
- format(g_Cache,1023,"INSERT INTO %s VALUES('%s','%s','0','0')",table,steamid,name)
- SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache)
- }
- return PLUGIN_CONTINUE
- }
- // UPDATE THE NKIFE KILLS
- public knifekillupdate(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- if(FailState == TQUERY_CONNECT_FAILED)
- {
- return set_fail_state("Could not connect to SQL database.");
- }
- else if(FailState == TQUERY_QUERY_FAILED)
- {
- return set_fail_state("Query failed.");
- }
- if(Errcode)
- {
- return log_amx("Error on query plewp: %s",Error);
- }
- new iClient = Data[0];
- new knifekills = SQL_ReadResult(Query,0);
- new updateknifekills = knifekills + 1;
- get_user_authid(iClient, steamid, 31);
- format(g_Cache,1023,"UPDATE %s SET knife='%i' WHERE steamid='%s'",table,updateknifekills,steamid);
- SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache);
- return PLUGIN_CONTINUE
- }
- // UPDATE THE GRENADE KILLS
- public grenadekillupdate(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- if(FailState == TQUERY_CONNECT_FAILED)
- {
- return set_fail_state("Could not connect to SQL database.");
- }
- else if(FailState == TQUERY_QUERY_FAILED)
- {
- return set_fail_state("Query failed.");
- }
- if(Errcode)
- {
- return log_amx("Error on query plewp: %s",Error);
- }
- new iClient = Data[0];
- new grenadekills = SQL_ReadResult(Query,0);
- new updategrenadekills = grenadekills + 1;
- get_user_authid(iClient, steamid, 31);
- format(g_Cache,1023,"UPDATE %s SET hegrenade='%i' WHERE steamid='%s'",table,updategrenadekills,steamid);
- SQL_ThreadQuery(g_SqlTuple,"QueryHandle",g_Cache);
- return PLUGIN_CONTINUE
- }
- // CHECK IF USER HAS ACHIEVEMENTS
- public check_achievements(iClient)
- {
- new iData[7];
- iData[0] = iClient;
- get_user_authid(iClient, steamid, 31);
- format(g_Cache,1023,"SELECT hegrenade FROM %s WHERE steamid='%s'",table,steamid);
- SQL_ThreadQuery(g_SqlTuple,"check_knifeachievements",g_Cache, iData, 1);
- }
- // CHECK IF USER HAS KNIFE ACHIEVEMENT
- public check_knifeachievements(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- new iClient = Data[0];
- new iData[7];
- iData[0] = iClient;
- new grenadekillsneeded = get_pcvar_num(tc_grenade_kills);
- new grenadekills = SQL_ReadResult(Query, 0);
- if(grenadekillsneeded <= grenadekills)
- {
- grenade_launcher[iClient] = true;
- }
- get_user_authid(iClient, steamid, 31);
- format(g_Cache,1023,"SELECT knife FROM %s WHERE steamid='%s'",table,steamid);
- SQL_ThreadQuery(g_SqlTuple,"end_achievements",g_Cache, iData, 1);
- }
- // END ACHIEVEMENT
- public end_achievements(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
- {
- new iClient = Data[0];
- new knifekillsneeded = get_pcvar_num(tc_knife_kills);
- new knifekills = SQL_ReadResult(Query, 0);
- if(knifekillsneeded <= knifekills)
- {
- super_knife[iClient] = true;
- }
- }
- // SET GRENADE LAUNCHER
- public set_grenadelauncher(iClient)
- {
- new CsTeams:team = cs_get_user_team(iClient);
- if(grenade_launcher[iClient] && team == CS_TEAM_CT)
- {
- new weapon = get_user_weapon(iClient)
- if(weapon == CSW_HEGRENADE)
- {
- set_pev(iClient, pev_viewmodel2, GRENADE_LAUNCHER_MODEL)
- }
- }
- }
- // REMOVE FIRE IN THE HOLE TEXT
- public msg_text(iClient)
- {
- if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
- {
- return PLUGIN_CONTINUE
- }
- new arg3[16]
- get_msg_arg_string(3, arg3, 15)
- if(!equal(arg3, "#Game_radio")) {
- return PLUGIN_CONTINUE
- }
- new arg5[20]
- get_msg_arg_string(5, arg5, 19)
- if(equal(arg5, "#Fire_in_the_hole"))
- {
- return PLUGIN_HANDLED
- }
- return PLUGIN_CONTINUE
- }
- //REMOVE FIRE IN THE HOLE AUDIO
- public msg_audio(iClient)
- {
- if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
- {
- return PLUGIN_CONTINUE
- }
- new arg2[20]
- get_msg_arg_string(2, arg2, 19)
- if(equal(arg2[1], "!MRAD_FIREINHOLE"))
- {
- return PLUGIN_HANDLED
- }
- return PLUGIN_CONTINUE
- }
- // CHANGE GRENADES VELOCITY AND WORLD MODEL
- public fwd_SetModel(iEnt, const szModel[])
- {
- if(!pev_valid(iEnt))
- return FMRES_IGNORED;
- new iOwner = pev(iEnt, pev_owner);
- if(!is_user_connected(iOwner))
- return FMRES_IGNORED;
- new CsTeams:team = cs_get_user_team(iOwner);
- if(grenade_launcher[iOwner] && team == CS_TEAM_CT)
- {
- if(pev_valid(iEnt)
- && iOwner > 0
- && iOwner <= g_MaxPlayers
- && equali(szModel, "models/w_hegrenade.mdl"))
- {
- engfunc(EngFunc_SetModel, iEnt, GRENADE_LAUNCHER_WORLD)
- static Float:flVelocity[3]
- pev(iEnt, pev_velocity, flVelocity)
- flVelocity[0] *= 1.5
- flVelocity[1] *= 1.5
- flVelocity[2] *= 1.5
- set_pev(iEnt, pev_velocity, flVelocity)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- // GRENADE TRAIL
- public grenade_throw(iClient, gid, wid)
- {
- new CsTeams:team = cs_get_user_team(iClient);
- if(grenade_launcher[iClient] && team == CS_TEAM_CT)
- {
- new nade, color[10]
- new r, g, b
- switch(wid)
- {
- case CSW_HEGRENADE: nade = g_cvar_he
- }
- get_pcvar_string(nade, color, 9)
- new c = str_to_num(color)
- r = c / 1000000
- c %= 1000000
- g = c / 1000
- b = c % 1000
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW)
- write_short(gid)
- write_short(g_trail)
- write_byte(10)
- write_byte(5)
- write_byte(r)
- write_byte(g)
- write_byte(b)
- write_byte(100)
- message_end()
- }
- }
- public plugin_end()
- {
- SQL_FreeHandle(g_SqlTuple)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement