PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta_util>
#include <engine>
#include <fun>
#define PLUGIN "Knife Shop!"
#define VERSION "1.0"
#define AUTHOR "MouseSplash!"
#define is_valid_player(%1) (1 <= %1 <= 32)
#define MAX_KNIFE_SNDS 9
new OnOff, precioC1, precioC2, precioC3, precioC4, g_iMsgSayText, DefaultDano, PaloDano, HachaDano, MacheteDano, MotocierraDano, hDefaultDano, hPaloDano, hHachaDano, hMacheteDano
new CuchilloDefault[33]
new Palo[33]
new Hacha[33]
new Motocierra[33]
new Machete[33]
new VIEW_MODELT[] = "models/X/Punos/Punos.mdl"
new PLAYER_MODELT[] = "models/X/Punos/Punos2.mdl"
new VIEW_MODELCT[] = "models/X/Electro/Electro.mdl"
new PLAYER_MODELCT[] = "models/X/Electro/Electro2.mdl"
new VIEW_Hacha[] = "models/X/Hacha/Hacha.mdl"
new PLAYER_Hacha[] = "models/X/Hacha/Hacha2.mdl"
new VIEW_Machete[] = "models/X/Machete/Machete.mdl"
new PLAYER_Machete[] = "models/X/Machete/Machete2.mdl"
new VIEW_Palo[] = "models/X/Palo/Palo.mdl"
new PLAYER_Palo[] = "models/X/Palo/Palo2.mdl"
new VIEW_Moto[] = "models/X/Moto/Moto.mdl"
new PLAYER_Moto[] = "models/X/Moto/Moto2.mdl"
new WORLD_MODEL[] = "models/w_knife.mdl"
new OLDWORLD_MODEL[] = "models/w_knife.mdl"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn_Post", 1);
RegisterHam(Ham_TakeDamage, "player", "FwdTakeDamage", 0);
register_event( "CurWeapon", "Event_Change_Weapon", "be", "1=1" );
register_forward(FM_SetModel, "fw_SetModel");
register_forward(FM_EmitSound , "EmitSound");
OnOff = register_cvar("jb_Tienda", "1") //1(ON) 0(OFF)
precioC1 = register_cvar("jb_pPalo", "1000")
precioC2 = register_cvar("jb_pHacha", "5000")
precioC3 = register_cvar("jb_pMachete", "8000")
precioC4 = register_cvar("jb_pMotocierra", "16000")
DefaultDano = register_cvar("jb_dPunos", "20")
PaloDano = register_cvar("jb_dPalo", "30")
HachaDano = register_cvar("jb_dHacha", "60")
MacheteDano = register_cvar("jb_dMachete", "80")
MotocierraDano = register_cvar("jb_dMotocierra", "200")
hDefaultDano = register_cvar("jb_dhsPunos", "30")
hPaloDano = register_cvar("jb_dhsPalo", "45")
hHachaDano = register_cvar("jb_dhsHacha", "75")
hMacheteDano = register_cvar("jb_dhsMachete", "95")
}
new sViejos[MAX_KNIFE_SNDS][] =
{
"weapons/knife_deploy1.wav",
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav",
"weapons/knife_hitwall1.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"weapons/knife_stab.wav"
}
new sMotocierra[MAX_KNIFE_SNDS][] =
{
"X/Moto/MTConvoca.wav",
"X/Moto/MTHit1.wav",
"X/Moto/MTHit2.wav",
"X/Moto/MTHit1.wav",
"X/Moto/MTHit2.wav",
"X/Moto/MTHitWall.wav",
"X/Moto/MTSlash.wav",
"X/Moto/MTSlash.wav",
"X/Moto/MTStab.wav"
}
new sHacha[MAX_KNIFE_SNDS][] =
{
"X/Machete/MConvoca.wav",
"X/Hacha/HHit1.wav",
"X/Hacha/HHit2.wav",
"X/Hacha/HHit3.wav",
"X/Hacha/HHit4.wav",
"X/Hacha/HHitWall.wav",
"X/Hacha/HSlash1.wav",
"X/Hacha/HSlash2.wav",
"X/Hacha/HHit4.wav"
}
new sMachete[MAX_KNIFE_SNDS][] =
{
"X/Machete/MConvoca.wav",
"X/Machete/MHit1.wav",
"X/Machete/MHit2.wav",
"X/Machete/MHit3.wav",
"X/Machete/MHit4.wav",
"X/Machete/MHitWall.wav",
"X/Machete/MSlash1.wav",
"X/Machete/MSlash2.wav",
"X/Machete/MStab.wav"
}
new sPalo[MAX_KNIFE_SNDS][] =
{
"weapons/knife_deploy1.wav",
"X/Palo/PHit1.wav",
"X/Palo/PHit2.wav",
"X/Palo/PHit3.wav",
"X/Palo/PHit4.wav",
"X/Palo/PHitWall.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"X/Palo/PStab.wav"
}
new sDefaultCT[MAX_KNIFE_SNDS][] =
{
"X/Normales/CTConvoca.wav",
"X/Normales/CTHit1.wav",
"X/Normales/CTHit2.wav",
"X/Normales/CTHit3.wav",
"X/Normales/CTHit4.wav",
"X/Normales/CTHitWall.wav",
"X/Normales/Slash1.wav",
"X/Normales/Slash2.wav",
"X/Normales/CTStab.wav"
}
new sDefaultT[MAX_KNIFE_SNDS][] =
{
"X/Normales/TConvoca.wav",
"X/Normales/THit1.wav",
"X/Normales/THit2.wav",
"X/Normales/THit3.wav",
"X/Normales/THit4.wav",
"X/Normales/THitWall.wav",
"X/Normales/Slash1.wav",
"X/Normales/Slash2.wav",
"X/Normales/TStab.wav"
}
public plugin_precache()
{
for(new i = 0; i < MAX_KNIFE_SNDS; i++)
{
precache_sound(sMotocierra[i]);
precache_sound(sPalo[i]);
precache_sound(sMachete[i]);
precache_sound(sHacha[i]);
precache_sound(sDefaultCT[i]);
precache_sound(sDefaultT[i]);
}
precache_sound("[Vzla]JailBreak/Si.wav")
precache_sound("[Vzla]JailBreak/No.wav")
precache_model(VIEW_MODELT)
precache_model(PLAYER_MODELT)
precache_model(VIEW_MODELCT)
precache_model(PLAYER_MODELCT)
precache_model(VIEW_Palo)
precache_model(PLAYER_Palo)
precache_model(VIEW_Hacha)
precache_model(PLAYER_Hacha)
precache_model(VIEW_Machete)
precache_model(PLAYER_Machete)
precache_model(VIEW_Moto)
precache_model(PLAYER_Moto)
precache_model(WORLD_MODEL)
return PLUGIN_CONTINUE
}
public Tienda1(id)
{
if(get_pcvar_num(OnOff))
{
if (get_user_team(id) == 1 )
{
static Item[64]
formatex(Item, charsmax(Item),"\y [JailBreak] Tienda:")
new Menu = menu_create(Item, "CuchilleroHandler")
formatex(Item, charsmax(Item),"\wDestapador \r%d$", get_pcvar_num(precioC1))
menu_additem(Menu, Item, "1")
formatex(Item, charsmax(Item),"\wHacha \r%d$", get_pcvar_num(precioC2))
menu_additem(Menu, Item, "2")
formatex(Item, charsmax(Item),"\wMachete \r%d$", get_pcvar_num(precioC3))
menu_additem(Menu, Item, "3")
formatex(Item, charsmax(Item),"\wMotocierra \r%d$", get_pcvar_num(precioC4))
menu_additem(Menu, Item, "4")
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, Menu)
}
}
return PLUGIN_HANDLED
}
public CuchilleroHandler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new vivo = is_user_alive(id)
new dinero = cs_get_user_money(id)
new Obtener1 = get_pcvar_num(precioC1)
new Obtener2 = get_pcvar_num(precioC2)
new Obtener3 = get_pcvar_num(precioC3)
new Obtener4 = get_pcvar_num(precioC4)
new key = str_to_num(data);
switch(key)
{
case 1:
{
if (dinero >= Obtener1 && vivo)
{
cs_set_user_money(id, dinero - Obtener1)
CuchilloDefault[id] = 0
Palo[id] = 1
strip_user_weapons(id)
give_item(id, "weapon_knife")
ChatColor(id, "!team[X]Server: !gCompraste Un Destapador")
client_cmd(id,"spk [X]Server/Si")
}
else
{
ChatColor(id, "!team[X]Server: !gNo Tienes Suficiente Dinero")
client_cmd(id,"spk [X]Server/No")
}
}
case 2:
{
if (dinero >= Obtener2 && vivo)
{
cs_set_user_money(id, dinero - Obtener2)
CuchilloDefault[id] = 0
Hacha[id] = 1
strip_user_weapons(id)
give_item(id, "weapon_knife")
ChatColor(id, "!team[X]Server: !gCompraste Un Hacha")
client_cmd(id,"spk [X]Server/Si")
}
else
{
ChatColor(id, "!team[X]Server: !gNo Tienes Suficiente Dinero")
client_cmd(id,"spk [X]Server/No")
}
}
case 3:
{
if (dinero >= Obtener2 && vivo)
{
cs_set_user_money(id, dinero - Obtener3)
CuchilloDefault[id] = 0
Machete[id] = 1
strip_user_weapons(id)
give_item(id, "weapon_knife")
ChatColor(id, "!team[X]Server: !gCompraste Un Machete")
client_cmd(id,"spk [X]Server/Si")
}
else
{
ChatColor(id, "!team[X]Server: !gNo Tienes Suficiente Dinero")
client_cmd(id,"spk [X]Server/No")
}
}
case 4:
{
if (dinero >= Obtener2 && vivo)
{
cs_set_user_money(id, dinero - Obtener4)
CuchilloDefault[id] = 0
Motocierra[id] = 1
strip_user_weapons(id)
give_item(id, "weapon_knife")
ChatColor(id, "!team[X]Server: !gCompraste Una Motocierra")
client_cmd(id,"spk [X]Server/Si")
}
else
{
ChatColor(id, "!team[X]Server: !gNo Tienes Suficiente Dinero")
client_cmd(id,"spk [X]Server/No")
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Fwd_PlayerSpawn_Post(id)
{
if (is_user_alive(id))
{
CuchilloDefault[id] = 1
Machete[id] = 0
Palo[id] = 0
Motocierra[id] = 0
Hacha[id] = 0
Tienda1(id)
}
}
public Event_Change_Weapon(id)
{
new weaponID = read_data(2)
switch (get_user_team(id))
{
case 1:
{
if(weaponID == CSW_KNIFE && get_pcvar_num(OnOff))
{
if(CuchilloDefault[id])
{
set_pev(id, pev_viewmodel2, VIEW_MODELT)
set_pev(id, pev_weaponmodel2, PLAYER_MODELT)
}
if(Palo[id])
{
set_pev(id, pev_viewmodel2, VIEW_Palo)
set_pev(id, pev_weaponmodel2, PLAYER_Palo)
}
if(Hacha[id])
{
set_pev(id, pev_viewmodel2, VIEW_Hacha)
set_pev(id, pev_weaponmodel2, PLAYER_Hacha)
}
if(Machete[id])
{
set_pev(id, pev_viewmodel2, VIEW_Machete)
set_pev(id, pev_weaponmodel2, PLAYER_Machete)
}
if(Motocierra[id])
{
set_pev(id, pev_viewmodel2, VIEW_Moto)
set_pev(id, pev_weaponmodel2, PLAYER_Moto)
}
}
}
case 2:
{
if(CuchilloDefault[id] == 1 && weaponID == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, VIEW_MODELCT)
set_pev(id, pev_weaponmodel2, PLAYER_MODELCT)
}
}
}
return PLUGIN_CONTINUE
}
public FwdTakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{ //parametro 1 2 3 4 5
if (is_valid_player(attacker) && get_user_weapon(attacker) == CSW_KNIFE)
{
if(CuchilloDefault[attacker])
{
SetHamParamFloat(4, get_pcvar_float(DefaultDano))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(hDefaultDano))
}
}
if(Hacha[attacker])
{
SetHamParamFloat(4, get_pcvar_float(HachaDano))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(hHachaDano))
}
}
if(Machete[attacker])
{
SetHamParamFloat(4, get_pcvar_float(MacheteDano))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(hMacheteDano))
}
}
if(Palo[attacker])
{
SetHamParamFloat(4, get_pcvar_float(PaloDano))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(hPaloDano))
}
}
if(Motocierra[attacker])
{
SetHamParamFloat(4, get_pcvar_float(MotocierraDano))
}
}
return HAM_HANDLED
}
public EmitSound(entity, channel, const sound[])
{
if(pev_valid(entity) && is_user_alive(entity))
{
for(new i = 0; i < MAX_KNIFE_SNDS; i++)
{
if(equal(sound , sViejos[i]) && CuchilloDefault[i])
{
emit_sound(0, channel, sDefaultT[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
emit_sound(0, channel, sDefaultCT[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
return FMRES_SUPERCEDE;
}
if(equal(sound , sViejos[i]) && Palo[i])
{
emit_sound(0, channel, sPalo[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
return FMRES_SUPERCEDE;
}
if(equal(sound , sViejos[i]) && Hacha[i])
{
emit_sound(0, channel, sHacha[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
return FMRES_SUPERCEDE;
}
if(equal(sound , sViejos[i]) && Machete[i])
{
emit_sound(0, channel, sMachete[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
return FMRES_SUPERCEDE;
}
if(equal(sound , sViejos[i]) && Motocierra[i])
{
emit_sound(0, channel, sMotocierra[i], 1.0, ATTN_NORM, 0, PITCH_NORM);
return FMRES_SUPERCEDE;
}
}
}
return FMRES_IGNORED;
}
public fw_SetModel(entity, model[])
{
if(!is_valid_ent(entity))
return FMRES_IGNORED
if(!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED
new className[33]
entity_get_string(entity, EV_SZ_classname, className, 32)
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
engfunc(EngFunc_SetModel, entity, WORLD_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}