Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#define PLUGIN "Furien Mod"
#define VERSION "64.2.6b"
#define AUTHOR "Kia"
// ===============================================================================
// Variables
// ===============================================================================
/* Defines */
// Sets maximum of items for Furien Shop
#define FURIEN_SHOP_MAX 8
// Sets maximum of items for CT Shop
#define CT_SHOP_MAX 10
// Sets maximum of items for CT Gun Meun
#define CT_WEAPON_MAX 5
// Delay after spawn to give stuff
#define EQUIP_DELAY 0.1
// Maximum Health
#define MAX_HP 200
#define TASK_ID_SWAPTEAMS 2000
#define XO_WEAPON 4
#define m_pPlayer 41
#define XO_PLAYER 5
#define m_pActiveItem 373
#define DO_NOT_CHANGE 2
/* Enums */
enum _:ShopItems
{
ItemName[64], ItemCost[ 64 ], ItemPlugin[64], ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
}
enum _:GunItems
{
ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
}
/* Entitys */
new TaskEnt
/* Hamsandwich */
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
/* Booleans */
new bool:g_bHasAcceptedSettings[33]
new bool:g_bHasWeapon[33]
new bool:g_bWantsLowGrav[33]
new bool:g_bHasSuperKnife[33]
new bool:g_bHasNoFlash[33]
/* Integer */
new g_iMaxPlayers
new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
new g_iItemIndex_CT[33][CT_SHOP_MAX]
new g_iHP[33]
/* CVars */
new cvar_gm, cvar_hpsave
/* CVars - Furien */
new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
new cvar_t_grav, cvar_t_speed, cvar_t_fs
new cvar_t_psf
/* CVars - CTs */
new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
new cvar_ct_grav, cvar_ct_fs
new cvar_ct_ammo_pri, cvar_ct_ammo_sec
/* Constants - Shop */
new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
{"Superknife", 10000, "CORE", "shop_t_givesk", 1, DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
{"50 HP", 4000, "CORE", "shop_t_givehp", 5, 1},
{"150 AP", 2000, "CORE", "shop_t_giveap", 5, 1},
{"1 HE Grenade", 1000, "CORE", "shop_givehe", 2, 1},
{"2 Flash Grenade", 500, "CORE", "shop_giveflash", 4, 1},
{"1 Smoke Grenade", 500, "CORE", "shop_givesmoke", 2, 1},
{"No Flash", 1000, "CORE", "shop_givenf", 1, DO_NOT_CHANGE}
{"WallHang", 2000, "furien_wallhang.amxx", "furien_buy_wallhang", 1, 2}
}
new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
{"Defuse Kit", 300, "CORE", "shop_ct_givedefkit", 1, 2},
{"Parachute", 300, "furien_parachute.amxx", "furien_buy_parachute", 1, 1}
{"Machine Gun (300 Bullets)", 3000, "CORE", "shop_ct_givepara", 2, 1},
{"50 HP", 3000, "CORE", "shop_ct_givehp", 5, 1},
{"150 AP", 2000, "CORE", "shop_ct_giveap", 5, 1},
{"1 HE Grenade", 1000, "CORE", "shop_givehe", 2, 1},
{"2 Flash Grenade", 500, "CORE", "shop_giveflash", 4, 1},
{"1 Smoke Grenade", 500, "CORE", "shop_givesmoke", 2, 1},
{"No Flash", 1000, "CORE", "shop_givenf", 1, DO_NOT_CHANGE},
{"Superdeagle", 3000, "kfm_extra_sdgl.amxx", "zp_extra_item_selected", 1, 1}
}
/* Constants - Weapons */
new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
{"AK47 + Deagle", "weapon_ak47", CSW_AK47, "weapon_deagle", CSW_DEAGLE},
{"M4A1 + Deagle", "weapon_m4a1", CSW_M4A1, "weapon_deagle", CSW_DEAGLE},
{"Famas + Deagle", "weapon_famas", CSW_FAMAS, "weapon_deagle", CSW_DEAGLE},
{"MP5 + Deagle", "weapon_mp5navy", CSW_MP5NAVY, "weapon_deagle", CSW_DEAGLE},
{"XM1014 + Deagle", "weapon_xm1014", CSW_XM1014, "weapon_deagle", CSW_DEAGLE}
}
/* Constants */
const SWAP_PER_INTERVAL = 5
const Float:SWAP_INTERVAL = 0.5
const fPainShock = 108
new const models[][] =
{
"models/w_backpack.mdl",
"models/w_flashbang.mdl",
"models/w_hegrenade.mdl",
"models/w_smokegrenade.mdl"
}
/* Misc */
new g_msgScreenFade
/* PreCache */
new const sz_SuperKnife_V_Model[] = "models/blade_knife.mdl"
// ===============================================================================
// plugin_precache - Files that will be downloaded
// ===============================================================================
public plugin_precache()
{
precache_model(sz_SuperKnife_V_Model)
}
// ===============================================================================
// plugin_init - Do not modify this unless you know what you're doing
// ===============================================================================
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
/* CVars */
register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
cvar_gm = register_cvar("kfm_godend", "0")
cvar_hpsave = register_cvar("kfm_savehp", "1")
/* CVars - Furien */
cvar_t_starthe = register_cvar("kfm_t_starthe", "1")
cvar_t_startflash = register_cvar("kfm_t_startflash", "2")
cvar_t_startsmoke = register_cvar("kfm_t_startsmoke", "1")
cvar_t_grav = register_cvar("kfm_t_grav", "0.39")
cvar_t_speed = register_cvar("kfm_t_speed", "750")
cvar_t_fs = register_cvar("kfm_t_fs", "1")
cvar_t_psf = register_cvar("kfm_t_psf", "1")
/* CVars - CTs */
cvar_ct_starthe = register_cvar("kfm_ct_starthe", "1")
cvar_ct_startflash = register_cvar("kfm_ct_startflash", "2")
cvar_ct_startsmoke = register_cvar("kfm_ct_startsmoke", "1")
cvar_ct_grav = register_cvar("kfm_ct_grav", "1.0")
cvar_ct_fs = register_cvar("kfm_ct_fs", "0")
cvar_ct_ammo_pri = register_cvar("kfm_ct_ammo_primary", "250")
cvar_ct_ammo_sec = register_cvar("kfm_ct_ammo_secondary", "150")
/* Commands */
register_clcmd("say /guns", "cmd_Guns")
register_clcmd("say_team /guns", "cmd_Guns")
register_clcmd("say guns", "cmd_Guns")
register_clcmd("say_team guns", "cmd_Guns")
register_clcmd("guns", "cmd_Guns")
register_clcmd("say /gravity", "cmd_Gravity")
register_clcmd("say_team /gravity", "cmd_Gravity")
register_clcmd("say gravity", "cmd_Gravity")
register_clcmd("say_team gravity", "cmd_Gravity")
register_clcmd("gravity", "cmd_Gravity")
register_clcmd("say /shop", "cmd_Shop")
register_clcmd("say_team /shop", "cmd_Shop")
register_clcmd("say shop", "cmd_Shop")
register_clcmd("say_team shop", "cmd_Shop")
register_clcmd("shop", "cmd_Shop")
/* Events */
register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_event("WeapPickup", "Event_WeaponPickup", "b")
/* Logevents */
register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")
/* Hamsandwich */
RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
/* Forwards */
register_forward(FM_Think, "fw_Think")
register_forward(FM_Touch, "fw_Touch")
/* Misc */
TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(TaskEnt, pev_classname, "speedometer_think")
set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
g_msgScreenFade = get_user_msgid("ScreenFade")
g_iMaxPlayers = get_maxplayers()
}
// ===============================================================================
// Client Connect
// ===============================================================================
public client_putinserver(id)
{
g_bHasAcceptedSettings[id] = false
g_bHasWeapon[id] = false
g_bHasSuperKnife[id] = false
g_bHasNoFlash[id] = false
g_bWantsLowGrav[id] = true
g_iItemIndex_CT[id][0] = false
g_iItemIndex_T[id][0] = false
g_iHP[id] = 100
}
// ===============================================================================
// Client Disconnect
// ===============================================================================
public client_disconnect(id)
{
g_bHasAcceptedSettings[id] = false
g_bHasWeapon[id] = false
g_bHasSuperKnife[id] = false
g_bHasNoFlash[id] = false
g_bWantsLowGrav[id] = true
g_iItemIndex_CT[id][0] = false
g_iItemIndex_T[id][0] = false
g_iHP[id] = 100
}
// ===============================================================================
// say /guns
// ===============================================================================
public cmd_Guns(id)
{
if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
func_OpenGunMenu(id)
}
// ===============================================================================
// say /gravity
// ===============================================================================
public cmd_Gravity(id)
{
g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
if(cs_get_user_team(id) == CS_TEAM_T)
set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
}
// ===============================================================================
// say /shop
// ===============================================================================
public cmd_Shop(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
switch(cs_get_user_team(id))
{
case CS_TEAM_T : func_OpenTShop(id)
case CS_TEAM_CT : func_OpenCTShop(id)
}
return PLUGIN_HANDLED
}
// ===============================================================================
// func_OpenTShop - Shop for Ts
// ===============================================================================
public func_OpenTShop(id)
{
static szMenuTitle[128]
new szItemTitle[128]
new iAccess
formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Shop")
new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
for( new i = 0; i < sizeof(g_mFurienItems); i++ )
{
formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
iAccess = 0
else
iAccess = 1<<31
menu_additem(menu, szItemTitle, _, iAccess)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display( id, menu, 0 );
return PLUGIN_HANDLED;
}
public func_OpenTShop_handler(id, menu, item)
{
if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new szPlugin[64]
if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
formatex(szPlugin, charsmax(szPlugin), "")
else
formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
{
callfunc_push_int(id)
callfunc_end()
Reduce(id, g_mFurienItems[item][ItemCost])
g_iItemIndex_T[id][item]++
}
return PLUGIN_HANDLED
}
// ===============================================================================
// Item Handlers for Furien Shop
// ===============================================================================
public shop_t_givesk(id)
{
g_bHasSuperKnife[id] = true
engclient_cmd(id, "weapon_knife")
ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
}
public shop_t_givedgl(id)
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 7)
engclient_cmd(id, "weapon_deagle")
}
public shop_t_givehp(id)
{
set_user_health(id, min(get_user_health(id) + 50, MAX_HP))
}
public shop_t_giveap(id)
set_user_armor(id, get_user_armor(id) + 150)
// ===============================================================================
// General Item Handlers
// ===============================================================================
public shop_givehe(id)
{
if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
{
give_item(id, "weapon_hegrenade")
return PLUGIN_HANDLED
}
cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
return PLUGIN_HANDLED
}
public shop_giveflash(id)
{
if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
{
give_item(id, "weapon_flashbang")
return PLUGIN_HANDLED
}
cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
return PLUGIN_HANDLED
}
public shop_givesmoke(id)
{
if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
{
give_item(id, "weapon_smokegrenade")
return PLUGIN_HANDLED
}
cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)
return PLUGIN_HANDLED
}
public shop_givenf(id)
g_bHasNoFlash[id] = true
// ===============================================================================
// func_OpenCTShop - Shop for CTs
// ===============================================================================
public func_OpenCTShop(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
static szMenuTitle[64]
new szItemTitle[64]
new iAccess
formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Shop")
new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
for( new i = 0; i < sizeof(g_mCTItems); i++ )
{
formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
iAccess = 0
else
iAccess = 1<<31
menu_additem(menu, szItemTitle, _, iAccess)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display( id, menu, 0 );
return PLUGIN_HANDLED;
}
public func_OpenCTShop_handler(id, menu, item)
{
if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new szPlugin[64]
if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
formatex(szPlugin, charsmax(szPlugin), "")
else
formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
{
callfunc_push_int(id)
callfunc_end()
Reduce(id, g_mCTItems[item][ItemCost])
g_iItemIndex_CT[id][item]++
}
return PLUGIN_HANDLED
}
// ===============================================================================
// Item Handlers for CT Shop
// ===============================================================================
public shop_ct_givedefkit(id)
cs_set_user_defuse(id, 1)
public shop_ct_givepara(id)
{
give_item(id, "weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 200)
}
public shop_ct_givehp(id)
set_user_health(id, min(get_user_health(id) + 50, MAX_HP))
public shop_ct_giveap(id)
set_user_armor(id, get_user_armor(id) + 75)
// ===============================================================================
// func_OpenGunMenu - Gun Menu for CTs
// ===============================================================================
public func_OpenGunMenu(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
static szMenuTitle[128]
new szItemTitle[128]
formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
{
formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
menu_additem(menu, szItemTitle, _, 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display( id, menu, 0 );
return PLUGIN_HANDLED;
}
public func_OpenGunMenu_handler(id, menu, item)
{
if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
give_item(id, g_mCTWeapons[item][ItemPri])
cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
give_item(id, g_mCTWeapons[item][ItemSec])
cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
g_bHasWeapon[id] = true
return PLUGIN_HANDLED
}
// ===============================================================================
// Event - @ CT Win - Credits go to Exolent
// ===============================================================================
public Event_CTWin()
{
static iCount, client;
iCount = 0;
for( client = 0; client <= g_iMaxPlayers; client++ )
{
if( is_user_connected( client ) )
{
if( iCount >= SWAP_PER_INTERVAL )
{
set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
}
switch( cs_get_user_team( client ) )
{
case CS_TEAM_T:
{
cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
iCount++;
}
case CS_TEAM_CT:
{
cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
iCount++;
}
}
}
}
remove_task(TASK_ID_SWAPTEAMS)
}
// ===============================================================================
// Event - CurWeapon
// ===============================================================================
public Event_CurWeapon(id)
{
if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
}
// ===============================================================================
// Event - Flashed
// ===============================================================================
public Event_Flashed(id)
{
if(g_bHasNoFlash[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()
}
}
// ===============================================================================
// Event - DeathMsg
// ===============================================================================
public Event_DeathMsg(id)
{
new iVictim = read_data(2)
for( new i = 0; i < sizeof(g_mCTItems); i++ )
{
if(g_mCTItems[i][ItemReset] == 2)
g_iItemIndex_CT[iVictim][i] = 0
}
for( new i = 0; i < sizeof(g_mFurienItems); i++ )
{
if(g_mFurienItems[i][ItemReset] == 2)
{
g_iItemIndex_T[iVictim][i] = 0
}
}
g_bHasSuperKnife[iVictim] = false
g_bHasNoFlash[iVictim] = false
}
// ===============================================================================
// Event - Weapon Pickup
// ===============================================================================
public Event_WeaponPickup(id, weapon)
{
if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
{
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
// ===============================================================================
// LogEvent - Round End
// ===============================================================================
public LogEvent_RoundEnd()
{
new players[32], pnum, tempid
get_players(players, pnum, "a")
for( new i; i<pnum; i++ )
{
tempid = players[i]
if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
g_iHP[tempid] = get_user_health(tempid)
strip_user_weapons(tempid)
give_item(tempid, "weapon_knife")
if(get_pcvar_num(cvar_gm))
set_user_godmode(tempid, 1)
}
}
// ===============================================================================
// Hamsandwich - Ham_Spawn
// ===============================================================================
public func_HamSpawn(id)
{
if(is_user_alive(id))
{
for( new i = 0; i < sizeof(g_mCTItems); i++ )
{
if(g_mCTItems[i][ItemReset] == 1)
{
g_iItemIndex_CT[id][i] = 0
}
}
for( new i = 0; i < sizeof(g_mFurienItems); i++ )
{
if(g_mFurienItems[i][ItemReset] == 1)
{
g_iItemIndex_T[id][i] = 0
}
}
if(get_pcvar_num(cvar_hpsave))
{
if(g_iHP[id] < 100)
g_iHP[id] = 100
set_user_health(id, g_iHP[id])
g_iHP[id] = 100
}
set_user_godmode(id, 0)
strip_user_weapons(id)
give_item(id, "weapon_knife")
if(g_bHasAcceptedSettings[id])
{
func_ApplyGameplay(id)
}
else
{
func_AskForPermission(id)
}
}
}
// ===============================================================================
// Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
// ===============================================================================
public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
{
SetHamParamFloat(4, damage * 3)
}
if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
set_pdata_float(victim, fPainShock, 1.0, 5)
}
// ===============================================================================
// Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
// ===============================================================================
public func_HamTookKnife(iKnife)
{
new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
if(g_bHasSuperKnife[id])
{
entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
}
}
// ===============================================================================
// Forwards - FM_Think - Credits go to ConnorMcLeod
// ===============================================================================
public fw_Think(ent)
{
if(ent == TaskEnt)
{
SpeedTask()
set_pev(ent, pev_nextthink, get_gametime() + 0.1)
}
}
public SpeedTask()
{
static i, target
static Float:velocity[3]
static Float:speed
for(i = 1; i <= g_iMaxPlayers ; i++)
{
if(!is_user_connected(i)) continue
target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
pev(target, pev_velocity, velocity)
speed = vector_length(velocity)
if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
{
set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)
}
else if(speed > 5)
{
set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
}
}
}
// ===============================================================================
// Forwards - FM_Touch
// ===============================================================================
public fw_Touch( ent , id )
{
if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
return FMRES_IGNORED;
static szEntModel[32];
pev(ent , pev_model , szEntModel , 31);
return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
}
// ===============================================================================
// func_ApplyGameplay - Getting Players Team and selecting function
// ===============================================================================
public func_ApplyGameplay(id)
{
switch(cs_get_user_team(id))
{
case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
}
}
// ===============================================================================
// func_CTEquip - Giving Equipment for CTs
// ===============================================================================
public func_CTEquip(id)
{
if(get_pcvar_num(cvar_ct_starthe) > 0)
{
give_item(id, "weapon_hegrenade")
if(get_pcvar_num(cvar_ct_starthe) > 1)
{
cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
}
}
if(get_pcvar_num(cvar_ct_startflash) > 0)
{
give_item(id, "weapon_flashbang")
if(get_pcvar_num(cvar_ct_startflash) > 1)
{
cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
}
}
if(get_pcvar_num(cvar_ct_startsmoke) > 0)
{
give_item(id, "weapon_smokegrenade")
if(get_pcvar_num(cvar_ct_startsmoke) > 1)
{
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
}
}
set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
func_OpenGunMenu(id)
}
// ===============================================================================
// func_TEquip - Giving Equipment for Ts
// ===============================================================================
public func_TEquip(id)
{
if(get_pcvar_num(cvar_t_starthe) > 0)
{
give_item(id, "weapon_hegrenade")
if(get_pcvar_num(cvar_t_starthe) > 1)
{
cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
}
}
if(get_pcvar_num(cvar_t_startflash) > 0)
{
give_item(id, "weapon_flashbang")
if(get_pcvar_num(cvar_t_startflash) > 1)
{
cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
}
}
if(get_pcvar_num(cvar_t_startsmoke) > 0)
{
give_item(id, "weapon_smokegrenade")
if(get_pcvar_num(cvar_t_startsmoke) > 1)
{
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
}
}
if(g_bWantsLowGrav[id])
set_user_gravity(id, get_pcvar_float(cvar_t_grav))
set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
}
// ===============================================================================
// func_AskForPermission - Asking player to set cl_ values.
// ===============================================================================
public func_AskForPermission(id)
{
new szMenuTitle[128]
formatex(szMenuTitle, charsmax(szMenuTitle), "\wWe need to change your speed settings.^nThis affects cl_forward-, side, and backspeed.^n\yDo you agree?")
new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
menu_additem(menu, "\wYes","1",0);
menu_additem(menu, "\rNo (You won't be able to run fast)","2",0);
menu_display(id, menu, 0);
return PLUGIN_HANDLED
}
public func_AskForPermission_handler(id, menu, item)
{
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
g_bHasAcceptedSettings[id] = true
client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
if(is_user_alive(id))
func_ApplyGameplay(id)
}
case 2:
{
g_bHasAcceptedSettings[id] = false
}
}
}
// ===============================================================================
// Stocks
// ===============================================================================
stock Reduce(id, amount)
cs_set_user_money(id, cs_get_user_money(id) - amount)