I try to edit the code.
It compile without any problem, but the bot won't choose the class.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
const PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new g_ent_playermodel[33];
new g_ent_weaponmodel[33];
new g_currentweapon[33];
new g_player_class[33]
new g_hamczbots
new cvar_botquota
new g_isbot[33]
public plugin_init()
{
register_plugin("[ZP] Addon: Human Classes", "1.3", "fiendshard")
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
cvar_botquota = get_cvar_pointer("bot_quota")
}
public plugin_precache()
{
// Change paths and names of your models below. Beware of typos.
engfunc(EngFunc_PrecacheModel, "models/player/arctic/arctic.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/gsg9/gsg9.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/guerilla/guerilla.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/leet/leet.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/sas/sas.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/terror/terror.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/urban/urban.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/spetsnaz/spetsnaz.mdl")
}
public client_putinserver(id)
{
g_isbot[id] = true
if (!g_hamczbots && cvar_botquota)
{
// Set a task to let the private data initialize
set_task(0.1, "register_ham_czbots", id)
}
}
public register_ham_czbots(id)
{
if (g_hamczbots || !is_user_connected(id) || !get_pcvar_num(cvar_botquota))
return;
RegisterHamFromEntity(Ham_Spawn, id, "fwHamPlayerSpawnPost", 1)
g_hamczbots = true
if (is_user_alive(id)) fwHamPlayerSpawnPost(id)
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
return;
static weapon
weapon = get_msg_arg_int(2)
g_currentweapon[msg_entity] = weapon
fm_set_weaponmodel_ent(msg_entity)
}
public fwHamPlayerSpawnPost(id)
{
if(!is_user_bot(id))
set_task(get_cvar_float("zp_delay")+5.0, "ClCmdSelectModel",id)
}
public ClCmdSelectModel(id, menuid)
{
if(zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id))
{
return PLUGIN_HANDLED;
}
else if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
else
{
human_menu(id)
}
return PLUGIN_CONTINUE;
}
public human_menu(id)
{
new menu = menu_create("\rChoose your perk:^n(Press 'H' for details)", "human_menu_handler")
menu_additem(menu, "\wAntighost", "1", 0)
menu_additem(menu, "\wTank", "2", 0)
menu_additem(menu, "\wParkour", "3", 0)
menu_additem(menu, "\wColdman", "4", 0)
menu_additem(menu, "\wDemolition", "5", 0)
menu_additem(menu, "\wLightbringer", "6", 0)
menu_additem(menu, "\wSharpshooter", "7", 0)
menu_additem(menu, "\wBalance", "8", 0)
menu_display(id, menu, 0)
if (g_isbot[id])
{
g_player_class[id] = 8
return;
}
}
public human_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:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 1
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/arctic/arctic.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_mac10")
give_item(id,"weapon_fiveseven")
give_item(id,"weapon_smokegrenade")
set_user_health(id, 150)
set_user_armor(id, 75)
cs_set_user_bpammo(id, CSW_MAC10, 200)
cs_set_user_bpammo(id, CSW_FIVESEVEN, 200)
client_print(id, print_chat,"You chose Antighost (Press 'H'>'About' for details')")
}
case 2:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 2
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/gsg9/gsg9.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_m3")
give_item(id,"weapon_deagle")
give_item(id,"weapon_hegrenade")
set_user_health(id, 250)
set_user_armor(id, 45)
set_user_gravity(id, 1.15)
cs_set_user_bpammo(id, CSW_M3, 50)
cs_set_user_bpammo(id, CSW_DEAGLE, 200)
client_print(id, print_chat,"You chose Tank (Press 'H'>'About' for details')");
}
case 3:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 3
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/guerilla/guerilla.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_mp5navy")
give_item(id,"weapon_p228")
set_user_health(id, 150)
set_user_armor(id, 45)
set_user_gravity(id, 0.68)
set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 40)
cs_set_user_bpammo(id, CSW_MP5NAVY, 200)
cs_set_user_bpammo(id, CSW_P228, 200)
client_cmd(id,"say /napalm")
client_print(id, print_chat,"You chose Parkour (Press 'H'>'About' for details')");
}
case 4:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 4
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/leet/leet.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_galil")
give_item(id,"weapon_glock18")
give_item(id,"weapon_flashbang")
set_user_health(id, 135)
set_user_armor(id, 45)
cs_set_user_bpammo(id, CSW_GALIL, 200)
cs_set_user_bpammo(id, CSW_GLOCK18, 200)
cs_set_user_bpammo(id, CSW_FLASHBANG, 3)
client_print(id, print_chat,"You chose Coldman (Press 'H'>'About' for details')");
}
case 5:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 5
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/sas/sas.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_tmp")
give_item(id,"weapon_usp")
give_item(id,"weapon_hegrenade")
set_user_health(id, 200)
set_user_armor(id, 30)
set_user_gravity(id, 0.9)
cs_set_user_bpammo(id, CSW_TMP, 200)
cs_set_user_bpammo(id, CSW_USP, 200)
cs_set_user_bpammo(id, CSW_HEGRENADE, 3)
client_cmd(id,"say /napalm")
client_cmd(id,"say /napalm")
client_print(id, print_chat,"You chose Demolition (Press 'H'>'About' for details')")
}
case 6:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 6
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/terror/terror.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_sg552")
give_item(id,"weapon_elite")
give_item(id,"weapon_smokegrenade")
give_item(id,"weapon_flashbang")
set_user_health(id, 100)
set_user_armor(id, 10)
set_user_gravity(id, 0.9)
cs_set_user_bpammo(id, CSW_SG552, 200)
cs_set_user_bpammo(id, CSW_ELITE, 200)
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5)
set_pev(id, pev_effects, pev(id, pev_effects) | EF_BRIGHTLIGHT)
client_print(id, print_chat,"You chose Lightbringer (Press 'H'>'About' for details')");
}
case 7:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 7
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/urban/urban.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_awp")
give_item(id,"weapon_p228")
give_item(id,"weapon_flashbang")
new weapon_id = fm_find_ent_by_owner(-1, "weapon_awp", id);
if(weapon_id)
{
cs_set_weapon_ammo(weapon_id, 25);
}
set_user_health(id, 185)
set_user_armor(id, 60)
set_user_gravity(id, 1.05)
cs_set_user_bpammo(id, CSW_AWP, 50)
cs_set_user_bpammo(id, CSW_P228, 200)
client_print(id, print_chat,"You chose Sharpshooter (Press 'H'>'About' for details')");
}
case 8:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id)) return PLUGIN_HANDLED;
g_player_class[id] = 8
fm_remove_model_ents(id)
if (!pev_valid(g_ent_playermodel[id]))
{
g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,1)
set_pev(g_ent_playermodel[id], pev_classname, "player_model")
set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_playermodel[id], pev_aiment, id)
set_pev(g_ent_playermodel[id], pev_owner, id)
// Change name of your model below.
engfunc(EngFunc_SetModel, g_ent_playermodel[id], "models/player/spetsnaz/spetsnaz.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_m4a1")
give_item(id,"weapon_usp")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"weapon_hegrenade")
set_user_health(id, 200)
set_user_armor(id, 50)
cs_set_user_bpammo(id, CSW_M4A1, 200)
cs_set_user_bpammo(id, CSW_USP, 200)
client_print(id, print_chat,"You chose Balance (Press 'H'>'About' for details')")
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public zp_user_infected_post(id, infector)
{
fm_remove_model_ents(id)
}
stock fm_remove_model_ents(id)
{
if (pev_valid(g_ent_playermodel[id]))
{
engfunc(EngFunc_RemoveEntity, g_ent_playermodel[id])
g_ent_playermodel[id] = 0
}
if (pev_valid(g_ent_weaponmodel[id]))
{
engfunc(EngFunc_RemoveEntity, g_ent_weaponmodel[id])
g_ent_weaponmodel[id] = 0
}
}
stock fm_set_weaponmodel_ent(id)
{
static model[100]
pev(id, pev_weaponmodel2, model, sizeof model - 1)
if (!pev_valid(g_ent_weaponmodel[id]))
{
g_ent_weaponmodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if (!pev_valid(g_ent_weaponmodel[id])) return;
set_pev(g_ent_weaponmodel[id], pev_classname, "weapon_model")
set_pev(g_ent_weaponmodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_ent_weaponmodel[id], pev_aiment, id)
set_pev(g_ent_weaponmodel[id], pev_owner, id)
}
engfunc(EngFunc_SetModel, g_ent_weaponmodel[id], model)
}
stock drop_primary_weapons(id)
{
static weapons [ 32 ], num, i, weaponid
num = 0
get_user_weapons (id, weapons, num )
for ( i = 0; i < num; i++ )
{
weaponid = weapons [ i ]
if ( ( (1<<weaponid) & PRIMARY_WEAPONS_BITSUM ) )
{
static wname[32]
get_weaponname(weaponid, wname, charsmax(wname))
engclient_cmd(id, "drop", wname)
}
}
}