Code:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#define VERSION "1.0.1"
new bool:HasSuperKnife[33], bool:HasSuperSpeed[33]
new const modelsuperknife[] = "models/superknife.mdl"
new bool: firstround
new const prefix[] = "[Shop]"
public plugin_init()
{
register_plugin("ShopMenu BB", VERSION, "RattleSnake'S")
RegisterHam(Ham_TakeDamage, "player", "Player_Damage", 0)
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 0)
RegisterHam(Ham_Item_PreFrame, "player", "Player_ResetMaxSpeed", 1)
register_event("CurWeapon", "Player_SuperKnife_Model", "be", "1=1")
register_event("DeathMsg" , "Player_Death", "a")
register_logevent("RoundEnd", 2, "1=Round_End")
register_clcmd("say /shop", "shopmenu")
register_clcmd("say_team /shop", "shopmenu")
register_clcmd("say shop", "shopmenu")
register_clcmd("say_team shop", "shopmenu")
firstround = true
}
public RoundEnd()
{
if(firstround == true)
{
firstround = false
}
}
public plugin_precache()
{
precache_model(modelsuperknife)
}
public client_putinserver(id)
{
HasSuperKnife[id] = false
HasSuperSpeed[id] = false
}
public Player_Spawn(id)
{
if(is_user_alive(id))
{
HasSuperKnife[id] = false
HasSuperSpeed[id] = false
}
}
public Player_Death()
{
new victim = read_data(2)
HasSuperSpeed[victim] = false
HasSuperKnife[victim] = false
}
public shopmenu(id)
{
if(firstround == true)
{
print_color(id, "pas d'achat le premier round !!")
return PLUGIN_HANDLED;
}
new menu
if(cs_get_user_team(id) == CS_TEAM_CT)
{
menu = menu_create("Shop CT", "menuCT")
menu_additem(menu, "Super Cut [4000$]", "0")
menu_additem(menu, "Grenade He [2500$]", "1")
menu_additem(menu, "200hp [10000$]", "2")
menu_additem(menu, "Gravite [12000$]", "3")
menu_additem(menu, "Vitesse [7000$]", "4")
menu_additem(menu, "M249 [10000$]", "5")
menu_additem(menu, "G3SG1 [10000$]", "6")
menu_additem(menu, "Grenade Flash [2000$]", "7")
menu_additem(menu, "Fumigene [2000$]", "8")
}
else
{
menu = menu_create("Shop T", "menuT")
menu_additem(menu, "Super Cut [10000$]", "0")
menu_additem(menu, "Faible Gravite [8000$]", "1")
menu_additem(menu, "Super Speed [6000$]", "2")
}
menu_setprop(menu, MPROP_EXITNAME, "Quitter")
menu_display(id, menu)
return PLUGIN_HANDLED;
}
public menuCT(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
{
switch(item)
{
case 0:
{
if(HasSuperKnife[id])
{
print_color(id, "tu possede deja le SuperCut")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 4000))
{
HasSuperKnife[id] = true
engclient_cmd(id, "weapon_knife")
print_color(id, "tu as achete le SuperKnife")
}
}
}
case 1:
{
if(user_has_weapon(id, CSW_HEGRENADE))
{
print_color(id, "tu possede deja une he")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 2500))
{
give_item(id, "weapon_hegrenade")
print_color(id, "tu as achete une Grenade He")
}
}
}
case 2:
{
if(cs_take_user_money(id, 10000))
{
set_user_health(id, get_user_health(id) + 200)
print_color(id, "tu as achete 200HP")
}
}
case 3:
{
if(get_user_gravity(id) != 1.0)
{
print_color(id, "tu possede deja la gravite")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 12000))
{
set_user_gravity(id, 0.125)
print_color(id, "tu as achete la Gravite")
}
}
}
case 4:
{
if(HasSuperSpeed[id])
{
print_color(id, "tu possede deja la superspeed")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 7000))
{
HasSuperSpeed[id] = true
set_pev(id, pev_maxspeed, 650.0);
print_color(id, "tu as achete la Vitesse")
}
}
}
case 5:
{
if(user_has_weapon(id, CSW_M249))
{
print_color(id, "tu possede deja la m249")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 6000))
{
give_item(id, "weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 200)
print_color(id, "tu as achete une M249")
}
}
}
case 6:
{
if(user_has_weapon(id, CSW_G3SG1))
{
print_color(id, "tu possede deja la g3sg1")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 6000))
{
give_item(id, "weapon_g3sg1")
cs_set_user_bpammo(id, CSW_G3SG1, 200)
print_color(id, "tu as achete une G3SG1")
}
}
}
case 7:
{
if(user_has_weapon(id, CSW_FLASHBANG))
{
print_color(id, "tu possede deja la g3sg1")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 2000))
{
give_item(id, "weapon_flashbang")
print_color(id, "tu as achete une Grenade Flash")
}
}
}
case 8:
{
if(user_has_weapon(id, CSW_G3SG1))
{
print_color(id, "tu possede deja la g3sg1")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 2000))
{
give_item(id, "weapon_smokegrenade")
print_color(id, "tu as achete une Fumigene")
}
}
}
}
}
return PLUGIN_CONTINUE;
}
public menuT(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
{
switch(item)
{
case 0:
{
if(HasSuperKnife[id])
{
print_color(id, "tu possede deja le SuperCut")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 10000))
{
HasSuperKnife[id] = true
print_color(id, "tu as achete le SuperCut")
}
}
}
case 1:
{
if(get_user_gravity(id) != 1.0)
{
print_color(id, "tu possede deja la gravite")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 8000))
{
set_user_gravity(id, 0.125)
print_color(id, "tu as achete la Gravite")
}
}
}
case 2:
{
if(HasSuperSpeed[id])
{
print_color(id, "tu possede deja le superspeed")
return PLUGIN_HANDLED;
}
else
{
if(cs_take_user_money(id, 6000))
{
HasSuperSpeed[id] = true
set_pev(id, pev_maxspeed, 500.0)
print_color(id, "tu as achete la Vitesse")
}
}
}
}
}
return PLUGIN_CONTINUE;
}
public Player_ResetMaxSpeed(id)
{
if(is_user_alive(id) && HasSuperSpeed[id] && get_user_maxspeed(id) != 1.0)
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: set_pev(id, pev_maxspeed, 500.0);
case CS_TEAM_CT: set_pev(id, pev_maxspeed, 650.0);
}
}
}
public Player_Damage(victim, inflictor, attacker, Float:damage, damagebits)
{
if(is_user_alive(attacker) && get_user_weapon(attacker) ==
CSW_KNIFE && HasSuperKnife[attacker] && inflictor ==
attacker)
{
SetHamParamFloat(4, damage * 222.0)
}
}
public Player_SuperKnife_Model(id)
{
if(is_user_alive(id) && get_user_weapon(id) == CSW_KNIFE
&& HasSuperKnife[id] && get_user_team(id) == 2)
{
entity_set_string(id, EV_SZ_viewmodel, modelsuperknife)
}
}
cs_take_user_money(id, amount)
{
new money = cs_get_user_money(id)
if(money < amount)
{
print_color(id, "Tu n'as pas assez d'argent pour ceci")
return 0;
}
cs_set_user_money(id, min( (money-amount), 16000))
return 1;
}
print_color(index, const Msg[], any:...)
{
new NbMaxPlayers = get_maxplayers()
new Buffer[190], Buffer2[192]
formatex(Buffer2, charsmax(Buffer2), "^x04%s^x01%s", prefix, Msg)
vformat(Buffer, charsmax(Buffer), Buffer2, 3)
if (!index)
{
for (new i = 1; i <= NbMaxPlayers; i++)
{
if (!is_user_connected(i))
continue;
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, i)
write_byte(i)
write_string(Buffer)
message_end()
}
}
else
{
if (!is_user_connected(index))
return;
message_begin(MSG_ONE, get_user_msgid("SayText"),_, index)
write_byte(index)
write_string(Buffer)
message_end()
}
}
-Si c'est possible aussi un autre plugin qui aurait comme fonction d'être un anti-bug skin; parfois lorsque un terro change de team (c'est-à-dire qu'il devient Ct) il garde son skin Terro alors qu'il devrait avoir son skin CT.