//////////////////////////
//Silver AK Mod // === ===
//Created by: Rolnaaba // (. ) (. )
//Version: 6.0 // ()
////////////////////////// _______
//
// **WHAT IT DOES**
// ----------------
// This plugin allows you to buy different Silver Weapons with no recoil, higher damage,
// and a cool model. Admins can turn on and off the whole Silver-Weapons plugin,
// as well as change the cost of the Silver weapons. The Silver Weapons only last one
// round so do as much damage as u can!
//
// **ADMIN COMANDS**
// -----------------
// admin_silverweapons 1/0 ---(if 1 the plugin if on , if 0 the plugin is off)
// admin_AKcost ---(the amount the AK will cost to buy Default is 10000)
// admin_M4cost ---(the amount the M4 will cost to buy Default is 10000)
// admin_MPcost ---(the amount the MP5 Navy will cost to buy Default is 10000)
//
// **CLIENT COMANDS**
// ------------------
// /silverprice ---(list the price of all the weapons)
// /silvermenu ---(opens the menu to buy the weapons)
//
// **SPECIAL THANKS TO**
// ---------------------
// --wonsae, he helped to create the plugin and has my undieing gratatude!!
// (he fixed almost ever problem I came in contact with)
// --ThomasNguyen, the whole plugin was his idea, I just made it, and wonsae made it work
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
new g_Menu;
new bool:hasAK[33] = false;
new bool:hasM4[33] = false;
new bool:hasMP[33] = false;
new CVAR_ENABLE;
new CVAR_DAMAGE;
new CVAR_AKCOST;
new CVAR_M4COST;
new CVAR_MP5COST;
new gKiller = 0;
new gVictim = 0;
new gHeadshot = 0;
new gWeapon[33];
new gChangeDeathEvent = 0;
new bool:g_restart_attempt[33];
public plugin_init() {
register_plugin("SilverWeapons", "6.0a", "Rolnaaba");
g_Menu = register_menuid("Silver Weapons");
register_menucmd(g_Menu, 1023, "silvermenu");
register_clcmd("say /silvermenu", "showmenu");
CVAR_ENABLE = register_cvar("admin_silverweapons", "1");
CVAR_DAMAGE = register_cvar("admin_silverdamage", "2");
CVAR_AKCOST = register_cvar("admin_AKcost", "15000");
CVAR_M4COST = register_cvar("admin_M4cost", "15000");
CVAR_MP5COST = register_cvar("admin_MPcost", "15000");
register_event("CurWeapon","event_curweapon","be", "1=1");
register_event("Damage", "event_damage", "be");
//to detect Player Spawn, WHAT FUN!! (THANKS TO VEN)
register_event("ResetHUD", "event_hud_reset", "be");
register_clcmd("fullupdate", "clcmd_fullupdate") ;
register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in");
register_message(get_user_msgid("DeathMsg"), "Hook_DeathMsg");
}
public clcmd_fullupdate() {
return PLUGIN_HANDLED_MAIN;
}
public event_restart_attempt() {
new players[32], num;
get_players(players, num, "a");
for (new i; i < num; ++i)
g_restart_attempt[players[i]] = true;
}
public event_hud_reset(id) {
if (g_restart_attempt[id]) {
g_restart_attempt[id] = false;
return;
}
event_player_spawn(id);
}
public plugin_precache() {
precache_model("models/SilverAK/v_ak47.mdl");
precache_model("models/SilverAK/p_ak47.mdl");
precache_model("models/SilverM4/v_m4a1.mdl");
precache_model("models/SilverM4/p_m4a1.mdl");
precache_model("models/SilverMP/v_mp5.mdl");
precache_model("models/SilverMP/p_mp5.mdl");
}
public silvermenu(id, key) {
switch(key) {
case 0: SetAK(id);
case 1: SetM4(id);
case 2: SetMP5(id);
default: return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public showmenu(id) {
new akcost = get_pcvar_num(CVAR_AKCOST);
new m4cost = get_pcvar_num(CVAR_M4COST);
new mp5cost = get_pcvar_num(CVAR_MP5COST);
new menu[512];
format(menu, 511, "rSilver Weaponsw^n^n1. Buy Silver AK y($%i)w^n2. Buy Silver M4A1 y($%i)w^n3. Buy Silver MP5 y($%i)w^n^n0. Exit^n", akcost, m4cost, mp5cost);
new keys = (1<<0|1<<1|1<<2|1<<9);
show_menu(id, keys, menu, -1, "Silver Weapons");
}
public SetAK(id) {
if(!get_pcvar_num(CVAR_ENABLE)) {
client_print(id,print_chat,"Silver Weapons Mod is disabled, sorry");
return PLUGIN_HANDLED;
} else {
new money = cs_get_user_money(id);
new price = get_pcvar_num(CVAR_AKCOST);
if(!is_user_alive(id)) {
client_print(id, print_chat, "You can only buy Silver Weapons when alive");
} else if(hasAK[id]) {
client_print(id, print_chat, "You already have a silver AK");
} else if(money < price) {
client_print(id, print_chat, "You can't afford that!");
} else {
hasAK[id] = true;
strip_user_weapons(id);
cs_set_user_money(id, money - price);
give_item(id,"weapon_ak47");
give_item(id,"ammo_762nato");
give_item(id,"ammo_762nato");
give_item(id,"ammo_762nato");
client_print(id,print_chat,"You have bought the Silver AK for %i doallars",price);
}
}
return PLUGIN_HANDLED;
}
public SetM4(id) {
if(get_pcvar_num(CVAR_ENABLE) == 0) {
client_print(id,print_chat,"Silver Weapons Mod is disabled");
return PLUGIN_HANDLED;
} else {
new money = cs_get_user_money(id);
new price = get_pcvar_num(CVAR_M4COST);
if(!is_user_alive(id)) {
client_print(id, print_chat, "You can only buy Silver Weapons when alive");
} else if(hasM4[id]) {
client_print(id, print_chat, "You already have a silver M4");
} else if(money < price) {
client_print(id, print_chat, "You can't afford that!");
} else {
hasM4[id] = true;
strip_user_weapons(id);
cs_set_user_money(id,cs_get_user_money(id) - price);
give_item(id,"weapon_m4a1");
give_item(id,"ammo_556nato");
give_item(id,"ammo_556nato");
give_item(id,"ammo_556nato");
client_print(id,print_chat,"You have bought the Silver M4A1 for %i dollars",price);
}
}
return PLUGIN_HANDLED;
}
public SetMP5(id) {
if(get_pcvar_num(CVAR_ENABLE) == 0) {
client_print(id,print_chat,"This mod is disabled");
return PLUGIN_HANDLED;
} else {
new money = cs_get_user_money(id);
new price = get_pcvar_num(CVAR_MP5COST);
if(!is_user_alive(id)) {
client_print(id, print_chat, "You can only buy Silver Weapons when alive");
} else if(hasMP[id]) {
client_print(id, print_chat, "You already have a silver MP5NAVY");
} else if(money < price) {
client_print(id, print_chat, "You can't afford that!");
} else {
hasMP[id] = true;
strip_user_weapons(id);
cs_set_user_money(id,cs_get_user_money(id) - price);
give_item(id,"weapon_mp5navy");
give_item(id,"ammo_9mm");
give_item(id,"ammo_9mm");
give_item(id,"ammo_9mm");
give_item(id,"ammo_9mm");
client_print(id,print_chat,"You have bought the Silver MP5NAVY for %i dollars",price);
}
}
return PLUGIN_HANDLED;
}
public event_curweapon(id) {
new clip, ammo, weapon = get_user_weapon(id, clip, ammo);
if(hasAK[id] == true && weapon == CSW_AK47) {
set_pev(id, pev_viewmodel, "models/SilverAK/v_ak47.mdl");
set_pev(id, pev_weaponmodel, "models/SilverAK/p_ak47.mdl");
if(pev(id, pev_button) & IN_ATTACK) {
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0});
}
}
if(hasM4[id] == true && weapon == CSW_M4A1) {
set_pev(id, pev_viewmodel, "models/SilverM4/v_m4a1.mdl");
set_pev(id, pev_weaponmodel, "models/SilverM4/p_m4a1.mdl");
if(pev(id, pev_button) & IN_ATTACK) {
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0});
}
}
if(hasMP[id] == true && weapon == CSW_MP5NAVY) {
set_pev(id, pev_viewmodel, "models/SilverMP/v_mp5.mdl");
set_pev(id, pev_weaponmodel, "models/SilverMP/p_mp5.mdl");
if(pev(id, pev_button) & IN_ATTACK) {
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0});
}
}
return PLUGIN_CONTINUE;
}
public event_damage(id) {
new victim_id = id;
if(!is_user_connected(victim_id)) return PLUGIN_CONTINUE;
new dmg_take = read_data(2);
new dmgtype = read_data(3);
new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
new Float:damage = dmg_take * multiplier;
new health = get_user_health(victim_id);
new iWeapID, attacker_id = get_user_attacker(victim_id, iWeapID);
if(!is_user_connected(attacker_id) || !is_user_alive(victim_id)) {
return PLUGIN_HANDLED;
}
if(iWeapID == CSW_AK47 && hasAK[attacker_id] == true) {
if(floatround(damage) >= health) {
if(victim_id == attacker_id) {
return PLUGIN_CONTINUE;
}else{
log_kill(attacker_id, victim_id, "ak47", 0);
}
return PLUGIN_CONTINUE;
} else {
if(victim_id == attacker_id) return PLUGIN_CONTINUE;
FAKE_DAMAGE(victim_id, "weapon_ak47", damage, dmgtype);
}
} else if( iWeapID == CSW_M4A1 && hasM4[attacker_id] == true ) {
if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE;
}else{
log_kill( attacker_id, victim_id, "m4a1", 0 );
}
return PLUGIN_CONTINUE;
}else {
if(victim_id == attacker_id) return PLUGIN_CONTINUE;
FAKE_DAMAGE(victim_id, "weapon_m4a1", damage, dmgtype);
}
} else if(iWeapID == CSW_MP5NAVY && hasMP[attacker_id] == true ) {
if(floatround(damage) >= health) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE;
}else{
log_kill(attacker_id, victim_id, "mp5navy", 0);
}
return PLUGIN_CONTINUE;
}else {
if( victim_id == attacker_id ) return PLUGIN_CONTINUE;
FAKE_DAMAGE(victim_id, "weapon_mp5navy", damage, dmgtype);
}
}
return PLUGIN_CONTINUE;
}
stock log_kill(killer, victim, weapon[],headshot) {
user_kill(victim, 1);
gKiller = killer;
gVictim = victim;
gHeadshot = headshot;
copy(gWeapon, 32, weapon);
gChangeDeathEvent = 1;
// Update killers scorboard with new info
message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(killer)
write_short(get_user_frags(killer))
write_short(get_user_deaths(killer))
write_short(0)
write_short(get_user_team(killer))
message_end()
// Update victims scoreboard with correct info
message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(victim)
write_short(get_user_frags(victim))
write_short(get_user_deaths(victim))
write_short(0)
write_short(get_user_team(victim))
/*
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
write_byte(killer);
write_byte(victim);
write_byte(headshot);
write_string(weapon);
message_end();
new kfrags = get_user_frags( killer );
set_user_frags( killer, kfrags++ );
new vfrags = get_user_frags( victim );
set_user_frags( victim, vfrags++ );
*/
return PLUGIN_CONTINUE;
}
public event_player_spawn(id) {
new clip, ammo, weapon = get_user_weapon(id, clip, ammo);
new CsTeams:team = cs_get_user_team(id);
if(hasAK[id] && weapon == CSW_AK47) {
hasAK[id] = false;
set_pev(id, pev_viewmodel, "models/v_ak47.mdl");
set_pev(id, pev_weaponmodel, "models/p_ak47.mdl");
if (team == CS_TEAM_T) {
give_item(id,"weapon_glock18");
give_item(id,"ammo_9mm");
give_item(id,"weapon_knife");
} else {
give_item(id,"weapon_usp");
give_item(id,"ammo_45acp");
give_item(id,"ammo_45acp");
give_item(id,"weapon_knife");
}
} else if(hasM4[id] && weapon == CSW_M4A1) {
hasM4[id] = false;
set_pev(id, pev_viewmodel, "models/v_m4a1.mdl");
set_pev(id, pev_weaponmodel, "models/p_m4a1.mdl");
if (team == CS_TEAM_T) {
give_item(id,"weapon_glock18");
give_item(id,"ammo_9mm");
give_item(id,"weapon_knife");
} else {
give_item(id,"weapon_usp");
give_item(id,"ammo_45acp");
give_item(id,"ammo_45acp");
give_item(id,"weapon_knife");
}
} else if(hasMP[id] && weapon == CSW_MP5NAVY) {
hasMP[id] = false;
set_pev(id, pev_viewmodel, "models/v_mp5.mdl");
set_pev(id, pev_weaponmodel, "models/p_mp5.mdl");
if (team == CS_TEAM_T) {
give_item(id,"weapon_glock18");
give_item(id,"ammo_9mm");
give_item(id,"weapon_knife");
} else {
give_item(id,"weapon_usp");
give_item(id,"ammo_45acp");
give_item(id,"ammo_45acp");
give_item(id,"weapon_knife");
}
}
return PLUGIN_CONTINUE;
}
//thanks to ojos.inc, god I love that include lol
stock FAKE_DAMAGE(idvictim, szClassname[], Float:takedmgdamage, damagetype) {
new entity = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"trigger_hurt"));
if(entity) {
new szDamage[16];
format(szDamage,15,"%f",takedmgdamage * 2);
DISPATCH_KEYVALUE(entity,"dmg",szDamage);
format(szDamage,15,"%i",damagetype);
DISPATCH_KEYVALUE(entity,"damagetype",szDamage);
dllfunc(DLLFunc_Spawn, entity);
set_pev(entity, pev_classname, szClassname);
dllfunc(DLLFunc_Touch, entity, idvictim);
engfunc(EngFunc_RemoveEntity, entity);
return 1;
}
return 0;
}
stock DISPATCH_KEYVALUE(idEntity, szKeyName[], szValue[]) {
set_kvd(0, KV_KeyName, szKeyName);
set_kvd(0, KV_Value, szValue);
set_kvd(0, KV_fHandled, 0);
return dllfunc(DLLFunc_KeyValue, idEntity, 0);
}
public Hook_DeathMsg(msg_id, msg_dest, entid) {
if(gChangeDeathEvent) {
//As of AMX Mod X 1.5, the middle parameter of set_* no longer does anything.
set_msg_arg_int(1, 1, gKiller);
set_msg_arg_int(2, 1, gVictim);
set_msg_arg_int(3, 1, gHeadshot);
set_msg_arg_string(4, gWeapon);
gChangeDeathEvent = 0;
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
Z góry ThX


Dodatki SourceMod



Temat jest zamknięty








