PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>
#include <fun>
new const PLUGIN[] = "Furien: Shop Ultimate";
new const VERSION[] = "0.3.1";
#pragma semicolon 1
#define is_user_valid(%0) (1 <= %0 <= g_iMaxPlayers)
#define is_user_admin(%1) (get_user_flags(%1) & ADMIN_LEVEL_H)
//Models
new const SuperKnifeModel_V[66] = "models/knife/v_superknife.mdl";
new const SuperKnifeVIPModel_V[66] = "models/knife/v_vipknife.mdl";
//Sounds
new const szPickAmmoSound[66] = "items/9mmclip1.wav";
new const szFmuPackEnergy[66] = "misc/fmu_energy.wav";
new const szFlashSound[66] = "misc/fmu_flash_sound.mp3";
//Boolean
new bool: g_HaveNoFlash[33];
new bool: g_HaveSuperKnife[33];
new bool: g_HaveDefuseKit[33];
new bool: g_HaveSuperKnifeVIP[33];
//Vectors
new g_iMaxPlayers;
new g_msgScreenFade;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, "Adventx");
register_cvar("fmu_shop_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
//Register Command
register_clcmd("say shop","ClCmdShop");
register_clcmd("say /shop","ClCmdShop");
//Register Event's
register_event("DeathMsg", "evDeathMsg", "a");
register_event("CurWeapon", "CurrentWeapon", "be", "1=1");
register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
//Register Forward
register_forward(FM_EmitSound, "fw_EmitSounds");
//Register Hamsandwich
RegisterHam(Ham_Spawn, "player", "hamPlayerSpawnPost", 1);
RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage");
//Get Max Players
g_iMaxPlayers = get_maxplayers ();
//Screen Fade
g_msgScreenFade = get_user_msgid("ScreenFade");
//ClCorpse
set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET);
}
public plugin_precache()
{
//Sound
precache_sound(szPickAmmoSound);
precache_sound(szFmuPackEnergy);
//SuperKnifeVIP
precache_model(SuperKnifeVIPModel_V);
//SuperKnife
precache_model(SuperKnifeModel_V);
}
public client_putinserver(id)
{
g_HaveNoFlash[id] = false;
g_HaveSuperKnife[id] = false;
g_HaveDefuseKit[id] = false;
g_HaveSuperKnifeVIP[id] = false;
}
public client_disconnect(id)
{
g_HaveSuperKnifeVIP[id] = false;
g_HaveDefuseKit[id] = false;
g_HaveSuperKnife[id] = false;
}
public hamPlayerSpawnPost(id)
{
if(is_user_alive(id))
{
if(get_user_team(id) == 2)
{
//Return Knife
g_HaveSuperKnife[id] = false;
g_HaveSuperKnifeVIP[id] = false;
//Defuse Kit
if(g_HaveDefuseKit[id] == true)
{
cs_set_user_defuse(id, 0);
g_HaveDefuseKit[id] = false;
}
}
//Strip User Weapons
strip_user_weapons(id);
//Give Equipment
FmuGiveEquipment(id);
}
}
public FmuGiveEquipment(id)
{
if(is_user_alive(id))
{
if(get_user_team(id) == 1)
{
give_item(id, "weapon_knife");
}
if(get_user_team(id) == 2)
{
give_item(id, "weapon_knife");
/* if(is_user_vip(id))
{
give_item(id, "weapon_flashbang");
}*/
}
}
}
public ClCmdShop(id)
{
if(get_user_team(id) == 1)
{
FurienShop(id);
}
if(get_user_team(id) == 2)
{
AntiFurienShop(id);
}
}
public FurienShop(id)
{
new szFormatex[128];
formatex(szFormatex, charsmax(szFormatex), "\yFurien Shop");
new szMenu = menu_create(szFormatex, "FurienShopHandler");
menu_additem(szMenu, "\ySuper \wKnife - \r[ \w10000 \y$ \r]", "1");
menu_additem(szMenu, "\yHe \wGrenade - \r[ \w3000 \y$ \r]", "2");
menu_additem(szMenu, "\y50 \wHP - \r[ \w3000 \y$ \r]", "3");
menu_additem(szMenu, "\y50 \wAP - \r[ \w500 \y$ \r]", "4");
menu_additem(szMenu, "\wNo Flash - \r[ \y1000 \r]", "5");
menu_additem(szMenu, "\ySuper \wKnife \rVIP - \r[ \yOnly VIP \r]^n", "6");
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, szMenu, 0);
return PLUGIN_HANDLED;
}
public AntiFurienShop(id)
{
new szFormatex[128];
formatex(szFormatex, charsmax(szFormatex), "\yAntiFurien Shop");
new szMenu = menu_create(szFormatex, "AntiFurienShopHandler");
menu_additem(szMenu, "\wDefuse Kit \w - \r[ \w500 \y$ \r]", "1");
menu_additem(szMenu, "\yHe \wGrenade - \r[ \w3000 \y$ \r]^n", "2");
menu_additem(szMenu, "\y50 \wHP - \r[ \w3000 \y$ \r]", "3");
menu_additem(szMenu, "\y50 \wAP - \r[ \w500 \y$ \r]", "4");
menu_additem(szMenu, "\wNo Flash - \r[ \w1000 \y$ \r]", "5");
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, szMenu, 0);
return PLUGIN_HANDLED;
}
public FurienShopHandler(id, szMenu, item)
{
if(item == MENU_EXIT || !is_user_alive(id))
{
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(szMenu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(cs_get_user_money(id) < 10000)
{
ChatColor(id, "!g[Furien] !nNu ai destui bani pentru a cumpara !tSuper Knife");
return PLUGIN_HANDLED;
}
else
{
//Return superknife
g_HaveSuperKnife[id] = true;
//Return vip
g_HaveSuperKnifeVIP[id] = false;
//Current Weapons
CurrentWeapon(id);
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 10000);
ChatColor(id, "!g[Furien] !nAi cumparat !tSuper Knife !ncu !t10000 $");
}
}
case 2:
{
if(cs_get_user_money(id) < 3000)
{
ChatColor(id, "!g[Furien] !nNu ai destui bani pentru a cumpara !tHe Grenade!");
return PLUGIN_HANDLED;
}
if(user_has_weapon(id, CSW_HEGRENADE))
{
ChatColor(id, "!g[Furien] !nAi deja !tHe Grenade!");
return PLUGIN_HANDLED;
}
else
{
//Give Grenade Pack
give_item(id, "weapon_hegrenade");
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 3000);
ChatColor(id, "!g[Furien] !nAi cumparat !tHe Grenade !ncu !t3000 $.");
}
}
case 3:
{
if(cs_get_user_money(id) < 3000)
{
ChatColor(id, "!g[Furien] !nNu ai destui bani pentru a cumpara !t50 HP");
return PLUGIN_HANDLED;
}
if(get_user_health(id) >= 250) //250 Health
{
ChatColor(id, "!g[Furien] !nAi atins maximum de !tHP");
return PLUGIN_HANDLED;
}
else
{
//set DHUD
set_dhudmessage(0, 255, 255, 0.01, 0.90, 0, 6.0, 3.0);
show_dhudmessage(id, "+ 50");
//Add Health
set_user_health(id, min(get_user_health(id) + 50, 200));
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 3000);
ChatColor(id, "!g[Furien] !nAi cumparat !t50 HP !ncu !t3000 $.");
}
}
case 4:
{
if(cs_get_user_money(id) < 500)
{
ChatColor(id, "!g[Furien] !nNu ai destui bani pentru a cumpara !t50 AP");
return PLUGIN_HANDLED;
}
if(get_user_armor(id) >= 200) //200 Armor
{
ChatColor(id, "!g[Furien] !nAi atins maximum de !tAP");
return PLUGIN_HANDLED;
}
else
{
//Set DUHD
set_dhudmessage(0, 255, 255, 0.25, 0.90, 0, 6.0, 3.0);
show_dhudmessage(id, "+ 50");
//Add Armor
set_user_armor(id, min(get_user_armor(id) + 50, 200));
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 500);
ChatColor(id, "!g[Furien] !nAi cumparat !t50 AP !ncu !t500 $.");
}
}
case 5:
{
if(cs_get_user_money(id) < 1000)
{
ChatColor(id, "!g[Furien] !nNu ai destui bani pentru a cumpara !tNo Flash");
return PLUGIN_HANDLED;
}
if(g_HaveNoFlash[id] == true)
{
ChatColor(id, "!g[Furien] !nAi deja !tNo Flash");
return PLUGIN_HANDLED;
}
else
{
//Give No Flash
g_HaveNoFlash[id] = true;
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 1000);
ChatColor(id, "!g[Furien] !nAi cumparat !tNo Flash !ncu !t1000 $.");
}
}
case 6:
{
if(!is_user_admin(id))
{
ChatColor(id, "!g[Furien] !nDoar vipii pot cumpara acest cutit!");
return PLUGIN_HANDLED;
}
else
{
//Return superknife
g_HaveSuperKnife[id] = false;
//Return vip
g_HaveSuperKnifeVIP[id] = true;
//Current Weapons
CurrentWeapon(id);
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
ChatColor(id, "!g[Furien] !nAi cumparat !tSuper Knife VIP.");
}
}
}
menu_destroy(szMenu);
return PLUGIN_HANDLED;
}
public AntiFurienShopHandler(id, szMenu, item)
{
if(item == MENU_EXIT || !is_user_alive(id))
{
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(szMenu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(cs_get_user_money(id) < 500)
{
ChatColor(id, "!g[AntiFurien] !nNu ai destui bani pentru a cumpara !tDefuse Kit");
return PLUGIN_HANDLED;
}
if(g_HaveDefuseKit[id] == true)
{
ChatColor(id, "!g[AntiFurien] !nAi deja !tDefuse Kit");
return PLUGIN_HANDLED;
}
else
{
//Give Defuse Kit
g_HaveDefuseKit[id] = true;
cs_set_user_defuse(id, 1);
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 500);
ChatColor(id, "!g[AntiFurien] !nAi cumparat !tDefuse Kit !ncu !t500 $.");
}
}
case 2:
{
if(cs_get_user_money(id) < 3000)
{
ChatColor(id, "!g[AntiFurien] !nAi cumparat !tHe Grenade");
return PLUGIN_HANDLED;
}
if(user_has_weapon(id, CSW_HEGRENADE))
{
ChatColor(id, "!g[Furien] !nAi deja !tHe Grenade.");
return PLUGIN_HANDLED;
}
else
{
//Give Grenade Pack
give_item(id, "weapon_hegrenade");
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 3000);
ChatColor(id, "!g[AntiFurien] !nAi cumparat !tHe Grenade !ncu !t3000 $.");
}
}
case 3:
{
if(cs_get_user_money(id) < 3000)
{
ChatColor(id, "!g[AntiFurien] !nNu ai destui bani pentru a cumpara !t50 HP");
return PLUGIN_HANDLED;
}
if(get_user_health(id) >= 250) //250 Health
{
ChatColor(id, "!g[AntiFurien] !nAi atins maximum de !tHP");
return PLUGIN_HANDLED;
}
else
{
//Set DUHD
set_dhudmessage(0, 255, 255, 0.01, 0.90, 0, 6.0, 3.0);
show_dhudmessage(id, "+ 50");
//Add Health
set_user_health(id, min(get_user_health(id) + 50, 250));
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 3000);
ChatColor(id, "!g[AntiFurien] !nAi cumparat !t50 HP !ncu !t3000 $");
}
}
case 4:
{
if(cs_get_user_money(id) < 500)
{
ChatColor(id, "!g[AntiFurien] !nNu ai destui bani pentru a cumpara !t50 AP");
return PLUGIN_HANDLED;
}
if(get_user_armor(id) >= 150) //150 Armor
{
ChatColor(id, "!g[AntiFurien] !nAi atins maximum de !tAP");
return PLUGIN_HANDLED;
}
else
{
//Set DUHD
set_dhudmessage(0, 255, 255, 0.25, 0.90, 0, 6.0, 3.0);
show_dhudmessage(id, "+ 50");
//Add Armor
set_user_armor(id, min(get_user_armor(id) + 50, 200));
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 500);
ChatColor(id, "!g[AntiFurien] !nAi cumparat !t50 AP !ncu !t500 $.");
}
}
case 5:
{
if(cs_get_user_money(id) < 1000)
{
ChatColor(id, "!g[AntiFurien] !nNu ai destui bani pentru a cumpara !tNo Flash");
return PLUGIN_HANDLED;
}
if(g_HaveNoFlash[id] == true)
{
ChatColor(id, "!g[Furien] !nAi deja !tNo Flash");
return PLUGIN_HANDLED;
}
else
{
//Give No Flash
g_HaveNoFlash[id] = true;
//Sound
client_cmd(id, "spk %s", szPickAmmoSound);
//Set/Get
cs_set_user_money(id, cs_get_user_money(id) - 1000);
ChatColor(id, "!g[AntiFurien] !nAi cumparat !tNo Flash !ncu !t1000 $");
}
}
}
menu_destroy(szMenu);
return PLUGIN_HANDLED;
}
public evDeathMsg()
{
new iVictim = read_data(2);
g_HaveNoFlash[iVictim] = false;
g_HaveSuperKnife[iVictim] = false;
g_HaveSuperKnifeVIP[iVictim] = false;
}
public CurrentWeapon(id)
{
if(g_HaveSuperKnife[id] && get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, SuperKnifeModel_V);
}
if(g_HaveSuperKnifeVIP[id] && get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, SuperKnifeVIPModel_V);
}
}
public Player_TakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
if(iInflictor == iAttacker && is_user_valid(iAttacker) && g_HaveSuperKnife[iAttacker] && is_user_connected(iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE)
{
SetHamParamFloat(4, fDamage * 2);
return HAM_HANDLED;
}
if(iInflictor == iAttacker && is_user_valid(iAttacker) && g_HaveSuperKnifeVIP[iAttacker] && is_user_connected(iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE)
{
SetHamParamFloat(4, fDamage * 2.5);
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public eventFlash(id)
{
if(is_user_connected(id) && g_HaveNoFlash[id])
{
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id);
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
FadeScreen(id, 0.6, 230, 0, 0, 50);
ShakeScreen(id, 7.0);
client_cmd(id, "mp3 play sound/%s", szFlashSound);
set_task(7.0, "StoppedSound", id);
}
}
public FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, id);
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(0x0000);
write_byte(red);
write_byte(green);
write_byte(blue);
write_byte(alpha);
message_end( );
}
public ShakeScreen(id, const Float:seconds)
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0, 0, 0}, id);
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(1<<13);
message_end();
}
public StoppedSound(id)
{
client_cmd(id, "mp3 stop sound/%s", szFlashSound);
}
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, "!n", "^1"); // Default Color
replace_all(msg, 190, "!t", "^3"); // Team Color
replace_all(msg, 190, "!t2", "^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)) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players);
write_byte(players);
write_string(msg);
message_end();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/