PHP Code:
#include <amxmodx>
#include <hamsandwich>
new damage_sword1, damage_sword2, damage_sword3, damage_sword4
new g_MaxPlayers
public plugin_init()
{
register_plugin("Fable TLC Mod Shop", "1.0", "Frostas")
register_clcmd("say shop", "ShopSystem")
damage_sword1 = register_cvar("damage_sword1", "3.0")
damage_sword2 = register_cvar("damage_sword2", "4.0")
damage_sword3 = register_cvar("damage_sword3", "5.0")
damage_sword4 = register_cvar("damage_sword4", "6.0")
RegisterHam(Ham_TakeDamage, "player", "Ham_DamageSword1");
RegisterHam(Ham_TakeDamage, "player", "Ham_DamageSword2");
RegisterHam(Ham_TakeDamage, "player", "Ham_DamageSword3");
RegisterHam(Ham_TakeDamage, "player", "Ham_DamageSword4");
g_MaxPlayers = get_maxplayers()
}
public Ham_DamageSword1(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !(1 <= attacker <= g_MaxPlayers) || !is_user_alive(id))
return HAM_IGNORED;
new weapon2 = get_user_weapon(attacker, _, _);
if( weapon2 == CSW_KNIFE)
{
SetHamParamFloat(4, damage * get_pcvar_float(damage_sword1))
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Ham_DamageSword2(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !(1 <= attacker <= g_MaxPlayers) || !is_user_alive(id))
return HAM_IGNORED;
new weapon2 = get_user_weapon(attacker, _, _);
if( weapon2 == CSW_KNIFE)
{
SetHamParamFloat(4, damage * get_pcvar_float(damage_sword2))
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Ham_DamageSword3(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !(1 <= attacker <= g_MaxPlayers) || !is_user_alive(id))
return HAM_IGNORED;
new weapon2 = get_user_weapon(attacker, _, _);
if( weapon2 == CSW_KNIFE)
{
SetHamParamFloat(4, damage * get_pcvar_float(damage_sword3))
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Ham_DamageSword4(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !(1 <= attacker <= g_MaxPlayers) || !is_user_alive(id))
return HAM_IGNORED;
new weapon2 = get_user_weapon(attacker, _, _);
if( weapon2 == CSW_KNIFE)
{
SetHamParamFloat(4, damage * get_pcvar_float(damage_sword4))
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public ShopSystem(id)
{
new menu = menu_create("\rFable TLC Mod Shop:", "menu_handler")
menu_additem(menu, "\wSwords Menu", "1", 0);
menu_additem(menu, "\wArmors Menu", "2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public menu_handler(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 key = str_to_num(data);
switch(key)
{
case 1:
{
SwordsMenu(id)
}
case 2:
{
ArmorsMenu(id)
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
SwordsMenu(id)
{
new menu = menu_create("\rFable TLC Swords:", "swordsmenu_handler")
menu_additem(menu, "\yBlack Sword", "1", 0);
menu_additem(menu, "\yMithril Sword", "2", 0);
menu_additem(menu, "\yAdamant Sword", "3", 0);
menu_additem(menu, "\yRune Sword", "4", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public swordsmenu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
if (is_user_connected(id))
ShopSystem(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
client_print(id, print_chat, "You buy Black Sword!");
set_task(1.0, "Ham_DamageSword1", id)
}
case 2:
{
client_print(id, print_chat, "You buy Mithril Sword!");
set_task(2.0, "Ham_DamageSword2", id)
}
case 3:
{
client_print(id, print_chat, "You buy Adamant Sword!");
set_task(3.0, "Ham_DamageSword3", id)
}
case 4:
{
client_print(id, print_chat, "You buy Rune Sword!");
set_task(4.0, "Ham_DamageSword4", id)
}
}
menu_destroy(menu);
ShopSystem(id);
return PLUGIN_HANDLED;
}
ArmorsMenu(id)
{
new menu = menu_create("\rFable TLC Armors:", "armorsmenu_handler")
menu_additem(menu, "\yRune Full Helm", "1", 0);
menu_additem(menu, "\yRune PlateBody", "2", 0);
menu_additem(menu, "\yRune PlateLegs", "3", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public armorsmenu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
if (is_user_connected(id))
ShopSystem(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
client_print(id, print_chat, "You buy Rune Full Helm!");
}
case 2:
{
client_print(id, print_chat, "You buy Rune PlateBody!");
}
case 3:
{
client_print(id, print_chat, "You buy Rune PlateLegs!");
}
}
menu_destroy(menu);
ShopSystem(id);
return PLUGIN_HANDLED;
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0
new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}