Hello I was curious if it's possible to put this code into the main file of my zp, zm 4.3
PHP Code:
/*
Human Classes for zombie plague, menu for classes automatically invoked few secs after mode start
This plug is far from complete, please help with further development of it since it may have some undesired
results on gameplay. You can edit this plug however it fit your needs. Now with models support
Here is TO DO list:
1. Make B key invoke human class menu
2. Make user choose class only once per round (could be limited with round timer or some other method) - done
3. Make user choice remember thru whole map time, just like it was done for zombies
4. Changing of models - done
5. For now, there are 7 classes only. If you have idea for more classes, make a request
6. Make classes buyable for ammo packs - nah, there's just too manu plugs like that
7. Bots support - never!
Stealth Warrior had to be removed due to model changing. Will try to make him available again
Models defined here, in this plug, are default models from CS. That means it will work right away, with no modifications.
However, if you want to set some other models, you need to change some lines in this code.
Credits: fiendshard
Mercylezz - zombie plague mod and this tut: http://forums.alliedmods.net/showthread.php?t=69386
Other guys at forum that helped with suggestions
*/
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <xs>
#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]
public plugin_init()
{
register_plugin("[CSO] Addon: Human Classes", "1.3", "fiendshard")
register_clcmd("say /hc", "ClCmdSelectModel")
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}
public plugin_precache()
{
// Change paths and names of your models below. Beware of typos.
engfunc(EngFunc_PrecacheModel, "models/player/Lucia/Lucia.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/may/may.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/Ritsuka/Ritsuka.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/Yuri/Yuri.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/blair/blair.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/Michaela/Michaela.mdl")
engfunc(EngFunc_PrecacheModel, "models/player/Erica/Erica.mdl")
}
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)
{
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 Human Class:", "human_menu_handler")
menu_additem(menu, "\wLucia(150 Armor)", "1", 0)
menu_additem(menu, "\wMay (300 HP)", "2", 0)
menu_additem(menu, "\wRitsuka(Gravity ++)", "3", 0)
menu_additem(menu, "\wYuri Soldier (FrostNade X 5)", "4", 0)
menu_additem(menu, "\wBlair (Speed++)", "5", 0)
menu_additem(menu, "\wMichaela (+10% dmg + Light Aura)", "6", 0)
menu_additem(menu, "\Erika (+ Shield & Deagle+50 Bullets)", "7", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
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/Lucia/Lucia.mdl")
fm_set_weaponmodel_ent(id)
}
set_user_armor(id, 150)
client_print(id, print_chat,"[CSO] Your class is: Lucia (150 Armor)")
}
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/may/may.mdl")
fm_set_weaponmodel_ent(id)
}
set_user_health(id, 300)
client_print(id, print_chat,"[CSO] Your class is: May (300 HP)");
}
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/Ritsuka/Ritsuka.mdl")
fm_set_weaponmodel_ent(id)
}
set_user_gravity(id, 0.50)
client_print(id, print_chat,"[CSO] Your class is: Ritsuka (Gravity is 1/2)");
}
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/Yuri/Yuri.mdl")
fm_set_weaponmodel_ent(id)
}
cs_set_user_bpammo(id, CSW_FLASHBANG, 5)
client_print(id, print_chat,"[CSO] Your class is: Yuri (5 FrostNade)");
}
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/blair/blair.mdl")
fm_set_weaponmodel_ent(id)
}
set_user_health(id, get_cvar_num("zp_human_health"))
set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 50)
set_user_armor(id, 0)
set_user_gravity(id, 1.00)
cs_set_user_bpammo(id, CSW_HEGRENADE, 5)
client_print(id, print_chat,"[CSO] Your class is: Blair")
}
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/Michaela/Michaela.mdl")
fm_set_weaponmodel_ent(id)
}
set_user_health(id, get_cvar_num("zp_human_health"))
set_user_armor(id, 0)
set_user_gravity(id, 1.00)
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5)
set_pev(id, pev_effects, pev(id, pev_effects) | EF_BRIGHTLIGHT)
client_print(id, print_chat,"[CSO] Your class is: Michaela (5 FlareNade + Light Aura)");
}
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/Erica/Erica.mdl")
fm_set_weaponmodel_ent(id)
}
drop_primary_weapons(id)
give_item(id,"weapon_shield")
give_item(id,"weapon_deagle")
new weapon_id = fm_find_ent_by_owner(-1, "weapon_deagle", id);
if(weapon_id)
{
cs_set_weapon_ammo(weapon_id, 50);
}
client_print(id, print_chat,"[CSO] Your class is: Erika (+ Shield & Deagle (50 Clip Ammo)");
}
}
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)
}
}
}