hy there, could someone help me with this one? its a shop/npc and i need that this would only work for Terrorist team.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <fakemeta_util>
#include <engine>
#include <cstrike>
#include <colorchat>
#define PLUGIN "Super Shop"
#define VERSION "1.3"
#define AUTHOR "GlaDiuS"
#define MODELS_CT 4
#define MODELS_TT 4
#define TASK_COUNT
#define OFFSET_PRIMARYWEAPON 116
#define NPC_NAME "npc_model"
new const model_npc[] = "lol2"
new npcModel[63]
new g_npc
new g_weapon
new bool:npcMade
new filename[256]
new bool:inmenu[33]
new enabled
new kills
new hpcost, armorcost, gravitycost, speedcost, hecost, flashcost, smokecost, godcost, inviscost, ammocost, hscost, swalkcost, noclipcost, camouflagecost, randomcost, recoilcost, respawncost, longjumpcost
new hp, armor, invisAlpha, glowcustom, randommoney
new glowcolor
new godtime, invistime, gravitytime, gravitymax, speedtime, speedmax, onlyhstime, swalktime, nocliptime, camouflagetime, recoiltime, longjumptime
new bool:gravity[33], bool:speed[33], bool:godmode[33], bool:noclip[33], bool:onlyhs[33], bool:invis[33], bool:swalk[33], bool:camouflage[33], bool:recoil[33], bool:randomn[33], bool:longjump[33]
new Timer
new g_maxplayers
//Stuck
new stuck[33]
new cvar[2]
new const Float:size[][3] = {
{0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
{0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
{0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
{0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
{0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
}
// end Stuck
new const g_szShop[] = "shop.cfg" // file
new MODEL_CT[MODELS_CT][] =
{
"arctic",
"guerilla",
"leet",
"terror"
}
new MODEL_TT[MODELS_TT][] =
{
"gign",
"gsg9",
"sas",
"urban"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
enabled = register_cvar("amx_sshop","1")
hp = register_cvar("amx_health", "120")
armor = register_cvar("amx_armor", "120")
gravitymax = register_cvar("amx_gravity", "0.5")
speedmax = register_cvar("amx_speed", "300.0")
godtime = register_cvar("amx_god_time", "20.0")
invistime = register_cvar("amx_invis_time", "15.0")
speedtime = register_cvar("amx_speed_time", "20.0")
gravitytime = register_cvar("amx_gravity_time", "15.0")
onlyhstime = register_cvar("amx_onlyhs_time", "40.0")
swalktime = register_cvar("amx_swalk_time", "30.0")
nocliptime = register_cvar("amx_noclip_time", "20.0")
camouflagetime = register_cvar("amx_camouflage_time", "20.0")
recoiltime = register_cvar("amx_recoil_time", "20.0")
longjumptime = register_cvar("amx_longjump_time", "10.0")
hpcost = register_cvar("amx_health_cost", "1")
armorcost = register_cvar("amx_armor_cost", "1")
gravitycost = register_cvar("amx_gravity_cost", "1")
speedcost = register_cvar("amx_speed_cost", "1")
hecost = register_cvar("amx_he_cost", "1")
flashcost = register_cvar("amx_flash_cost", "1")
smokecost = register_cvar("amx_smoke_cost", "1")
godcost = register_cvar("amx_god_cost", "1")
inviscost = register_cvar("amx_invis_cost", "1")
ammocost = register_cvar("amx_ammo_cost", "1")
hscost = register_cvar("amx_onlyhs_cost", "1")
swalkcost = register_cvar("amx_swalk_cost", "1")
noclipcost = register_cvar("amx_noclip_cost", "1")
camouflagecost = register_cvar("amx_camouflage_cost", "1")
recoilcost = register_cvar("amx_recoil_cost", "1")
respawncost = register_cvar("amx_respawn_cost", "1")
longjumpcost = register_cvar("amx_longjump_cost", "1")
randomcost = register_cvar("amx_random_cost", "1")
randommoney = register_cvar("amx_random_money", "1000")
invisAlpha = register_cvar("amx_invis_max", "30")
glowcustom = register_cvar("amx_god_glowcustom","1")
glowcolor = register_cvar("amx_god_glowcolor", "255 0 0")
new confFolder[32]
get_mapname(filename, 255)
get_configsdir(confFolder, 31)
format(filename, 255, "%s/npc/%s.coord", confFolder, filename)
set_task(3.0, "loadNPC")
register_forward(FM_Touch, "hook_Touch")
register_concmd("amx_createnpc", "tryCreateNPC", ADMIN_KICK, "- create NPC")
register_concmd("amx_removenpc", "tryRemoveNPC", ADMIN_KICK, "- remove NPC")
// stuck cvars
cvar[0] = register_cvar("amx_stuck","1")
cvar[1] = register_cvar("amx_stuck_time","3")
set_task(0.1,"checkstuck",0,"",0,"b")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("CurWeapon","change_weapon","be","1=1")
register_dictionary("shop.txt")
g_maxplayers = get_maxplayers()
}
public plugin_precache()
{
formatex(npcModel, 63, "models/player/%s/%s.mdl", model_npc, model_npc)
precache_model(npcModel)
}
public plugin_cfg()
{
new ConfigsDir[64]
get_localinfo("amxx_configsdir", ConfigsDir, charsmax(ConfigsDir))
format(ConfigsDir, charsmax(ConfigsDir), "%s/%s", ConfigsDir, g_szShop)
if (!file_exists(ConfigsDir))
{
server_print("Shop File [%s] doesn't exists!", ConfigsDir)
return;
}
server_cmd("exec ^"%s^"", ConfigsDir)
}
public client_putinserver(id)
{
inmenu[id] = false
}
public hook_Touch(ent, id)
{
if(get_pcvar_num(enabled) == 0)
{
client_print(id, print_chat, "[AMXX] This Plugin Is Disabled.")
return PLUGIN_HANDLED
}
if(Timer > 0)
{
return PLUGIN_HANDLED
}
if(!is_user_alive(id) || inmenu[id])
return FMRES_IGNORED;
new classname[32];
pev(ent, pev_classname, classname, 31);
if((equali(classname, "worldspawn") || equali(classname, "func_wall")) && !(pev(ent, pev_flags) & FL_ONGROUND))
{
remove_task(id);
}
if(equali(classname, "shacks_npc"))
{
set_task(0.1, "frags", id)
inmenu[id] = true
new hnsmenu = menu_create("Shop menu", "ShopHandler")
new item[32]
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "HEALTH", id, "COST", get_pcvar_num(hpcost))
menu_additem(hnsmenu, item, "1", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "ARMOR", id, "COST", get_pcvar_num(armorcost))
menu_additem(hnsmenu, item, "2", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "GRAVITY", id, "COST", get_pcvar_num(gravitycost))
menu_additem(hnsmenu, item, "3", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "SPEED", id, "COST", get_pcvar_num(speedcost))
menu_additem(hnsmenu, item, "4", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "HE", id, "COST", get_pcvar_num(hecost))
menu_additem(hnsmenu, item, "5", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "FLASH", id, "COST", get_pcvar_num(flashcost))
menu_additem(hnsmenu, item, "6", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "SMOKE", id, "COST", get_pcvar_num(smokecost))
menu_additem(hnsmenu, item, "7", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "GODMODE", id, "COST", get_pcvar_num(godcost))
menu_additem(hnsmenu, item, "8", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "INVIS", id, "COST", get_pcvar_num(inviscost))
menu_additem(hnsmenu, item, "9", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "AMMO", id, "COST", get_pcvar_num(ammocost))
menu_additem(hnsmenu, item, "10", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "ONLYHS", id, "COST", get_pcvar_num(hscost))
menu_additem(hnsmenu, item, "11", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "SWALK", id, "COST", get_pcvar_num(swalkcost))
menu_additem(hnsmenu, item, "12", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "NOCLIP", id, "COST", get_pcvar_num(noclipcost))
menu_additem(hnsmenu, item, "13", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "CAMOUFLAGE", id, "COST", get_pcvar_num(camouflagecost))
menu_additem(hnsmenu, item, "14", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "RECOIL", id, "COST", get_pcvar_num(recoilcost))
menu_additem(hnsmenu, item, "15", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "RESPAWN", id, "COST", get_pcvar_num(respawncost))
menu_additem(hnsmenu, item, "16", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "LONGJUMP", id, "COST", get_pcvar_num(longjumpcost))
menu_additem(hnsmenu, item, "17", ADMIN_ALL)
formatex(item, sizeof(item)-1, "%L \y(%L)", id, "RANDOM", id, "COST", get_pcvar_num(randomcost))
menu_additem(hnsmenu, item, "18", ADMIN_ALL)
menu_setprop(hnsmenu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, hnsmenu, 0)
}
return PLUGIN_HANDLED
}
public ShopHandler(id, hnsmenu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(hnsmenu)
inmenu[id] = false
return PLUGIN_HANDLED
}
new Data[6], Name[64]
new Access, Callback
menu_item_getinfo(hnsmenu, item, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback)
kills = get_user_frags(id)
new Key = str_to_num(Data)
switch (Key)
{
case 1: give_health(id)
case 2: give_armor(id)
case 3: give_gravity(id)
case 4: give_speed(id)
case 5: give_he(id)
case 6: give_flash(id)
case 7: give_smoke(id)
case 8: give_god(id)
case 9: give_invis(id)
case 10: give_ammo(id)
case 11: give_onlyhs(id)
case 12: give_swalk(id)
case 13: give_noclip(id)
case 14: give_camouflage(id)
case 15: give_recoil(id)
case 16: give_respawn(id)
case 17: give_longjump(id)
case 18: give_random(id)
}
menu_destroy(hnsmenu)
inmenu[id] = false
return PLUGIN_HANDLED
}
public give_health(id)
{
new cost = get_pcvar_num(hpcost)
new item = get_pcvar_num(hp)
if (kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_health(id, get_user_health(id) + item)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEHEALTH")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if (randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_health(id, get_user_health(id) + item)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEHEALTH")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_armor(id)
{
new cost = get_pcvar_num(armorcost)
new item = get_pcvar_num(armor)
if (kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_armor(id, get_user_armor(id) + item)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEARMOR")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_armor(id, get_user_armor(id) + item)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEARMOR")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_gravity(id)
{
new cost = get_pcvar_num(gravitycost)
new gravedad = get_pcvar_num(gravitymax)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_gravity(id, Float:gravedad)
gravity[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEGRAVITY")
Timer = get_pcvar_num(gravitytime)
set_task(0.1, "timer_gravity", id)
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_gravity(id, Float:gravedad)
gravity[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEGRAVITY")
Timer = get_pcvar_num(gravitytime)
set_task(0.1, "timer_gravity", id)
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_speed(id)
{
new cost = get_pcvar_num(speedcost)
new speedy = get_pcvar_num(speedmax)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_maxspeed(id, Float:speedy)
speed[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVESPEED")
Timer = get_pcvar_num(speedtime)
set_task(0.1, "timer_speed", id)
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_maxspeed(id, Float:speedy)
speed[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVESPEED")
Timer = get_pcvar_num(speedtime)
set_task(0.1, "timer_speed", id)
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_he(id)
{
new cost = get_pcvar_num(hecost)
if (kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
give_item(id,"weapon_hegrenade")
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEHE")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_flash(id)
{
new cost = get_pcvar_num(flashcost)
if (kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
give_item(id,"weapon_flashbang")
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEFLASH")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_smoke(id)
{
new cost = get_pcvar_num(smokecost)
if (kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
give_item(id,"weapon_smokegrenade")
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVESMOKE")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_god(id)
{
new cost = get_pcvar_num(godcost)
new Colores[12], rgb[3][4], iRed, iGreen, iBlue
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_godmode(id, 1)
Timer = get_pcvar_num(godtime)
set_task(0.1, "timer_god", id)
godmode[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEGODMODE")
if(get_pcvar_num(glowcustom) == 1)
{
glow_custom(id)
}
else if(get_pcvar_num(glowcustom) == 0)
{
get_pcvar_string(glowcolor, Colores, charsmax(Colores))
parse(Colores, rgb[0], 3, rgb[1], 3, rgb[2], 3)
iRed = clamp(str_to_num(rgb[0]), 0, 255)
iGreen = clamp(str_to_num(rgb[1]), 0, 255)
iBlue = clamp(str_to_num(rgb[2]), 0, 255)
set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 25)
}
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_godmode(id, 1)
Timer = get_pcvar_num(godtime)
set_task(0.1, "timer_god", id)
godmode[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEGODMODE")
}
if(get_pcvar_num(glowcustom) == 1)
{
set_task(0.1, "glow_custom", id)
}
else if(get_pcvar_num(glowcustom) == 0)
{
get_pcvar_string(glowcolor, Colores, charsmax(Colores))
parse(Colores, rgb[0], 3, rgb[1], 3, rgb[2], 3)
iRed = clamp(str_to_num(rgb[0]), 0, 255)
iGreen = clamp(str_to_num(rgb[1]), 0, 255)
iBlue = clamp(str_to_num(rgb[2]), 0, 255)
set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 25)
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public glow_custom(id)
{
set_user_rendering(id, kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255), kRenderNormal, 25)
set_task(0.5, "glow_custom", id)
}
public give_invis(id)
{
new cost = get_pcvar_num(inviscost)
new invismax = get_pcvar_num(invisAlpha)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransAdd, invismax)
Timer = get_pcvar_num(invistime)
set_task(0.1, "timer_invis", id)
invis[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEINVIS")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if(is_user_alive(id))
{
set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransAdd, invismax)
Timer = get_pcvar_num(invistime)
set_task(0.1, "timer_invis", id)
invis[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEINVIS")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_ammo(id)
{
new cost = get_pcvar_num(ammocost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
new clip, ammo, weapon = get_user_weapon(id,clip,ammo)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEAMMO")
switch(weapon) {
case CSW_P228: {
give_item(id,"ammo_357sig")
}
case CSW_SCOUT: {
give_item(id,"ammo_762nato")
}
case CSW_HEGRENADE: {
return PLUGIN_HANDLED
}
case CSW_XM1014: {
give_item(id,"ammo_buckshot")
}
case CSW_C4: {
return PLUGIN_HANDLED
}
case CSW_MAC10: {
give_item(id,"ammo_45acp")
}
case CSW_AUG: {
give_item(id,"ammo_556nato")
}
case CSW_SMOKEGRENADE: {
return PLUGIN_HANDLED
}
case CSW_ELITE: {
give_item(id,"ammo_9mm")
}
case CSW_FIVESEVEN: {
give_item(id,"ammo_57mm")
}
case CSW_UMP45: {
give_item(id,"ammo_45acp")
}
case CSW_SG550: {
give_item(id,"ammo_556nato")
}
case CSW_GALI: {
give_item(id,"ammo_556nato")
}
case CSW_FAMAS: {
give_item(id,"ammo_556nato")
}
case CSW_USP: {
give_item(id,"ammo_45acp")
}
case CSW_GLOCK18: {
give_item(id,"ammo_9mm")
}
case CSW_AWP: {
give_item(id,"ammo_338magnum")
}
case CSW_MP5NAVY: {
give_item(id,"ammo_9mm")
}
case CSW_M249: {
give_item(id,"ammo_556natobox")
}
case CSW_M3: {
give_item(id,"ammo_buckshot")
}
case CSW_M4A1: {
give_item(id,"ammo_556nato")
}
case CSW_TMP: {
give_item(id,"ammo_9mm")
}
case CSW_G3SG1: {
give_item(id,"ammo_762nato")
}
case CSW_FLASHBANG: {
return PLUGIN_HANDLED
}
case CSW_DEAGLE: {
give_item(id,"ammo_50ae")
}
case CSW_SG552: {
give_item(id,"ammo_556nato")
}
case CSW_AK47: {
give_item(id,"ammo_762nato")
}
case CSW_KNIFE: {
return PLUGIN_HANDLED
}
case CSW_P90: {
give_item(id,"ammo_57mm")
}
default: return PLUGIN_CONTINUE
}
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
return PLUGIN_CONTINUE
}
public give_onlyhs(id)
{
new cost = get_pcvar_num(hscost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_hitzones(0, id, 2)
onlyhs[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEONLYHS")
Timer = get_pcvar_num(onlyhstime)
set_task(0.1, "timer_onlyhs", id)
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_hitzones(0, id, 2)
onlyhs[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVEONLYHS")
Timer = get_pcvar_num(onlyhstime)
set_task(0.1, "timer_onlyhs", id)
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_swalk(id)
{
new cost = get_pcvar_num(swalkcost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_footsteps(id, 1)
swalk[id] = true
Timer = get_pcvar_num(swalktime)
set_task(0.1, "timer_swalk", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVESWALK")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_footsteps(id, 1)
swalk[id] = true
Timer = get_pcvar_num(swalktime)
set_task(0.1, "timer_swalk", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVESWALK")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_noclip(id)
{
new cost = get_pcvar_num(noclipcost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
set_user_noclip(id, 1)
noclip[id] = true
Timer = get_pcvar_num(nocliptime)
set_task(0.1, "timer_noclip", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVENOCLIP")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
set_user_noclip(id, 1)
noclip[id] = true
Timer = get_pcvar_num(nocliptime)
set_task(0.1, "timer_noclip", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVENOCLIP")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
return PLUGIN_CONTINUE
}
public give_camouflage(id)
{
new cost = get_pcvar_num(camouflagecost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
camouflage[id] = true
Timer = get_pcvar_num(camouflagetime)
set_task(0.1, "timer_camouflage", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVECAMOUFLAGE")
if(cs_get_user_team(id) == CS_TEAM_T)
{
cs_set_user_model(id, MODEL_TT[random(MODELS_TT)])
}
else if(cs_get_user_team(id) == CS_TEAM_CT)
{
cs_set_user_model(id, MODEL_CT[random(MODELS_CT)])
}
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
camouflage[id] = true
Timer = get_pcvar_num(camouflagetime)
set_task(0.1, "timer_camouflage", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVECAMOUFLAGE")
if(cs_get_user_team(id) == CS_TEAM_T)
{
cs_set_user_model(id, MODEL_TT[random(MODELS_CT)])
}
else if(cs_get_user_team(id) == CS_TEAM_CT)
{
cs_set_user_model(id, MODEL_CT[random(MODELS_TT)])
}
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
return PLUGIN_CONTINUE
}
public give_recoil(id)
{
new cost = get_pcvar_num(recoilcost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0})
recoil[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVERECOIL")
Timer = get_pcvar_num(recoiltime)
set_task(0.1, "timer_recoil", id)
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0})
recoil[id] = true
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVERECOIL")
Timer = get_pcvar_num(recoiltime)
set_task(0.1, "timer_recoil", id)
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_respawn(id)
{
new cost = get_pcvar_num(respawncost)
if (kills >= cost && !is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
cs_user_spawn(id)
cs_set_user_team(id, 1)
}
else if(cs_get_user_team(id) == CS_TEAM_CT)
{
cs_user_spawn(id)
cs_set_user_team(id, 2)
}
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVERESPAWN")
}
else if(is_user_alive(id))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "ALIVE")
}
else if (randomn[id] == true)
{
if (!is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
cs_user_spawn(id)
cs_set_user_team(id, 1)
}
else if(cs_get_user_team(id) == CS_TEAM_CT)
{
cs_user_spawn(id)
cs_set_user_team(id, 2)
}
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVERESPAWN")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
}
public give_longjump(id)
{
new cost = get_pcvar_num(longjumpcost)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
fm_set_user_longjump(id, true)
longjump[id] = true
Timer = get_pcvar_num(longjumptime)
set_task(0.1, "timer_longjump", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVELONGJUMP")
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else if(randomn[id] == true)
{
if (is_user_alive(id))
{
fm_set_user_longjump(id, true)
longjump[id] = true
Timer = get_pcvar_num(longjumptime)
set_task(0.1, "timer_longjump", id)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVELONGJUMP")
}
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
return PLUGIN_CONTINUE
}
public give_random(id)
{
new cost = get_pcvar_num(randomcost)
new money = cs_get_user_money(id)
if(kills >= cost && is_user_alive(id))
{
set_user_frags(id, kills - cost)
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "GIVERANDOM")
randomn[id] = true
switch (random_num(1, 16))
{
case 1: give_noclip(id)
case 2:{
if (is_user_alive(id))
{
user_kill(id, 1)
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "KILL")
}
}
case 3: ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOTHING")
case 4:{
if (is_user_alive(id))
{
set_user_frags(id, kills - cost)
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "LOSTFRAG")
}
}
case 5: give_armor(id)
case 6: give_health(id)
case 7: give_invis(id)
case 8: give_god(id)
case 9: give_camouflage(id)
case 10: give_onlyhs(id)
case 11: give_swalk(id)
case 12: give_speed(id)
case 13: give_gravity(id)
case 14: give_recoil(id)
case 15: give_longjump(id)
case 16:{
if (is_user_alive(id))
{
if(money > 12000)
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOMONEY")
}
else
{
cs_set_user_money(id, randommoney)
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "MONEY")
}
}
}
}
}
else if(!(is_user_alive(id)))
{
ColorChat(id, GREEN, "^x01[AMXX] ^x04%L", id, "DEAD")
}
else
{
ColorChat(id, RED, "^x01[AMXX] ^x03%L", id, "NOBUY")
}
return PLUGIN_CONTINUE
}
public timer_speed(id)
{
if(!speed[id]) return;
--Timer
set_task(1.0, "timer_speed", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Speed: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_speed", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Speed: [Over]")
set_task(0.1, "remove_speed", id)
}
}
public timer_gravity(id)
{
if(!gravity[id]) return;
--Timer
set_task(1.0, "timer_gravity", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Gravity: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_gravity", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Gravity: [Over]")
set_task(0.1, "remove_gravity", id)
}
}
public timer_god(id)
{
if(!godmode[id]) return;
--Timer
set_task(1.0, "timer_god", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Godmode: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_god", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Godmode: [Over]")
set_task(0.1, "remove_god", id)
}
}
public timer_invis(id)
{
if(!invis[id]) return;
--Timer
set_task(1.0, "timer_invis", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Invisible: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_invis", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Invisible: [Over]")
set_task(0.1, "remove_invis", id)
}
}
public timer_onlyhs(id)
{
if(!onlyhs[id]) return;
--Timer
set_task(1.0, "timer_onlyhs", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Only Headshot: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_onlyhs", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Only Headshot: [Over]")
set_task(0.1, "remove_onlyhs", id)
}
}
public timer_swalk(id)
{
if(!swalk[id]) return;
--Timer
set_task(1.0, "timer_swalk", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Silent Walk: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_swalk", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Silent Walk: [Over]")
set_task(0.1, "remove_swalk", id)
}
}
public timer_noclip(id)
{
if(!noclip[id]) return;
--Timer
set_task(1.0, "timer_noclip", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Noclip: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_noclip", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Noclip: [Over]")
set_task(0.1, "remove_noclip", id)
}
}
public timer_camouflage(id)
{
if(!camouflage[id]) return;
--Timer
set_task(1.0, "timer_camouflage", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Camouflage: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_camouflage", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Camouflage: [Over]")
set_task(0.1, "remove_camouflage", id)
}
}
public timer_recoil(id)
{
if(!recoil[id]) return;
--Timer
set_task(1.0, "timer_recoil", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "No Recoil: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_recoil", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "No Recoil: [Over]")
set_task(0.1, "remove_recoil", id)
}
}
public timer_longjump(id)
{
if(!longjump[id]) return;
--Timer
set_task(1.0, "timer_longjump", id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 12.0)
show_hudmessage(id, "Longjump: [%i]",Timer)
if(!(is_user_alive(id)))
{
remove_task(id)
set_task(0.1, "remove_longjump", id)
}
if(Timer < 1)
{
remove_task(id)
set_hudmessage(255, 255, 255, 0.01, 0.3, 0, 6.0, 3.0)
show_hudmessage(id, "Longjump: [Over]")
set_task(0.1, "remove_longjump", id)
}
}
public remove_speed(id)
{
if(speed[id] == true)
{
set_user_maxspeed(id, 250.0)
speed[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVESPEED")
}
}
public remove_gravity(id)
{
if(gravity[id] == true)
{
set_user_gravity(id, 1.0)
gravity[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVEGRAVITY")
}
}
public remove_god(id)
{
if(godmode[id] == true)
{
set_user_godmode(id, 0)
godmode[id] = false
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25)
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVEGODMODE")
}
}
public remove_invis(id)
{
if(invis[id] == true)
{
set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderNormal,255)
invis[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVEINVIS")
}
}
public remove_onlyhs(id)
{
if(onlyhs[id] == true)
{
set_user_hitzones(0, 0, 255)
onlyhs[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVEONLYHS")
}
}
public remove_swalk(id)
{
if(swalk[id] == true)
{
set_user_footsteps(id, 0)
swalk[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVESWALK")
}
}
public remove_noclip(id)
{
if(noclip[id] == true)
{
set_user_noclip(id, 0)
noclip[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVENOCLIP")
}
}
public remove_camouflage(id)
{
if(camouflage[id] == true)
{
cs_reset_user_model(id)
camouflage[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVECAMOUFLAGE")
}
}
public remove_recoil(id)
{
if(recoil[id] == true)
{
recoil[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVERECOIL")
}
}
public remove_longjump(id)
{
if(longjump[id] == true)
{
fm_set_user_longjump(id, false)
longjump[id] = false
ColorChat(id, BLUE, "^x01[AMXX] ^x03%L", id, "REMOVELONGJUMP")
}
}
public frags(id)
{
if(is_user_alive(id))
{
ColorChat(id, BLUE, "^x01[AMXX] ^x04%L", id, "FRAGS", get_user_frags(id))
}
}
public event_round_start()
{
for (new id = 1; id <= g_maxplayers; id++)
{
if(!is_user_alive(id)) continue;
if (camouflage[id] == true) remove_camouflage(id)
if (godmode[id] == true) remove_god(id)
if (gravity[id] == true) remove_gravity(id)
if (invis[id] == true) remove_invis(id)
if (noclip[id] == true) remove_noclip(id)
if(onlyhs[id] == true) remove_onlyhs(id)
if (speed[id] == true) remove_speed(id)
if (swalk[id] == true) remove_swalk(id)
if (longjump[id] == true) remove_longjump(id)
if (recoil[id] == true) remove_recoil(id)
if (randomn[id] == true)
{
remove_camouflage(id)
remove_god(id)
remove_gravity(id)
remove_invis(id)
remove_noclip(id)
remove_onlyhs(id)
remove_speed(id)
remove_swalk(id)
remove_longjump(id)
remove_recoil(id)
}
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25)
inmenu[id] = false
}
}
public change_weapon(id)
{
if(speed[id])
{
set_user_maxspeed(id, get_pcvar_float(speedmax))
}
if (recoil[id])
{
entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0})
}
}
//****************************************************************************************//
//************Stuck*********** by *********** NL)Ramon(NL ********************************//
//****************************************************************************************//
public checkstuck() {
if(get_pcvar_num(cvar[0]) >= 1) {
static players[32], pnum, player
get_players(players, pnum)
static Float:origin[3]
static Float:mins[3], hull
static Float:vec[3]
static o,i
for(i=0; i<pnum; i++){
player = players[i]
if (is_user_connected(player) && is_user_alive(player)) {
pev(player, pev_origin, origin)
hull = pev(player, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
if (!is_hull_vacant(origin, hull,player) && !get_user_noclip(player) && !(pev(player,pev_solid) & SOLID_NOT)) {
++stuck[player]
if(stuck[player] >= get_pcvar_num(cvar[1])) {
pev(player, pev_mins, mins)
vec[2] = origin[2]
for (o=0; o < sizeof size; ++o) {
vec[0] = origin[0] - mins[0] * size[o][0]
vec[1] = origin[1] - mins[1] * size[o][1]
vec[2] = origin[2] - mins[2] * size[o][2]
if (is_hull_vacant(vec, hull,player)) {
engfunc(EngFunc_SetOrigin, player, vec)
effects(player)
set_pev(player,pev_velocity,{0.0,0.0,0.0})
o = sizeof size
}
}
}
}
else
{
stuck[player] = 0
}
}
}
}
}
stock bool:is_hull_vacant(const Float:origin[3], hull,id) {
static tr
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid)) //get_tr2(tr, TR_InOpen))
return true
return false
}
public effects(id) {
if(get_pcvar_num(cvar[0])) {
set_hudmessage(255,150,50, -1.0, 0.65, 0, 6.0, 1.5,0.1,0.7) // HUDMESSAGE
show_hudmessage(id,"You should be unstucked now!") // HUDMESSAGE
message_begin(MSG_ONE_UNRELIABLE,105,{0,0,0},id )
write_short(1<<10) // fade lasts this long duration
write_short(1<<10) // fade lasts this long hold time
write_short(1<<1) // fade type (in / out)
write_byte(20) // fade red
write_byte(255) // fade green
write_byte(255) // fade blue
write_byte(255) // fade alpha
message_end()
client_cmd(id,"spk fvox/blip.wav")
}
}
public tryCreateNPC(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return FMRES_IGNORED;
createNPC(id);
return FMRES_HANDLED;
}
public tryRemoveNPC(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return FMRES_IGNORED;
removeNPC(id);
return FMRES_HANDLED;
}
public loadNPC()
createNPC(0);
public createNPC(id)
{
if(npcMade && pev_valid(g_npc))
{
engfunc(EngFunc_RemoveEntity, g_npc);
engfunc(EngFunc_RemoveEntity, g_weapon);
}
npcMade = true;
new Float:origin[3], Float:angles[3];
if(id > 0)
{
pev(id, pev_origin, origin);
pev(id, pev_angles, angles);
}
else
{
new file = fopen(filename, "r");
if(file)
{
// File exists
new data[128];
new i;
while(!feof(file))
{
fgets(file, data, 127);
if(i <= 2) // Line 1-3 = origin
{
origin[i] = str_to_float(data);
}
else if(i == 3) angles[0] = str_to_float(data);
else if(i == 4) angles[1] = str_to_float(data);
else if(i == 5) angles[2] = str_to_float(data);
i++;
}
fclose(file);
}
else
{
// File doesn't exist, exit function
return FMRES_IGNORED;
}
}
// Create the npc entity
g_npc = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
engfunc(EngFunc_SetModel, g_npc, npcModel);
engfunc(EngFunc_SetSize, g_npc, Float:{-0.0,-0.0,-55.0}, Float:{10.0,10.0,36.0});
angles[0] = 0.0;
set_pev(g_npc, pev_angles, angles);
engfunc(EngFunc_SetOrigin, g_npc, origin);
if(id > 0)
{
origin[2] += 80;
engfunc(EngFunc_SetOrigin, id, origin);
}
set_pev(g_npc, pev_solid, SOLID_BBOX);
//set_pev(g_npc, pev_movetype, MOVETYPE_TOSS);
set_pev(g_npc, pev_classname, "shacks_npc");
// Set the default animation
set_pev(g_npc, pev_animtime, 2.0);
set_pev(g_npc, pev_framerate, 1.0);
set_pev(g_npc, pev_sequence, 1);
// Set bone positions
set_pev(g_npc, pev_controller_0, 125);
set_pev(g_npc, pev_controller_1, 125);
set_pev(g_npc, pev_controller_2, 125);
set_pev(g_npc, pev_controller_3, 125);
// Set damage and hp
set_pev(g_npc, pev_takedamage, 0.0);
// Drop to ground?
engfunc(EngFunc_DropToFloor, g_npc);
// Give item
give_item1(g_npc)
// Save the origin + angles
if(id > 0)
{
new filepointer = fopen(filename, "w+");
if(filepointer)
{
fprintf(filepointer, "%f^n%f^n%f^n%f^n%f^n%f", origin[0], origin[1], origin[2], angles[0], angles[1], angles[2]);
fclose(filepointer);
client_print(id, print_chat, "The NPC has been created and saved.");
}
}
return FMRES_HANDLED;
}
public removeNPC(id)
{
remove_entity(g_npc)
client_print(id, print_chat, "The NPC has been deleted.");
}
public give_item1(ent)
{
g_weapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_pev(g_weapon, pev_classname, "npc_weapon");
set_pev(g_weapon, pev_solid, SOLID_NOT);
set_pev(g_weapon, pev_movetype, MOVETYPE_FOLLOW);
set_pev(g_weapon, pev_aiment, ent);
set_pev(g_weapon, pev_sequence, 1);
}