Raised This Month: $ Target: $400
 0% 

Human classes to main zombie plague sma


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
itoxicreal
Senior Member
Join Date: Jun 2018
Old 12-18-2021 , 21:07   Human classes to main zombie plague sma
Reply With Quote #1

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_idmsg_destmsg_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(idmenuid)
{
    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(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)
    
}
public 
human_menu_handler(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
data[6], iName[64]
    new 
accesscallback
    menu_item_getinfo
(menuitemaccessdata5iName63callback)
    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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/Lucia/Lucia.mdl")
                
fm_set_weaponmodel_ent(id)
            }
            
set_user_armor(id150)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/may/may.mdl")
                
fm_set_weaponmodel_ent(id)
            }
            
set_user_health(id300)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/Ritsuka/Ritsuka.mdl")
                
fm_set_weaponmodel_ent(id)
            }
            
set_user_gravity(id0.50)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/Yuri/Yuri.mdl")
                
fm_set_weaponmodel_ent(id)
            }

            
cs_set_user_bpammo(idCSW_FLASHBANG5)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/blair/blair.mdl")
                
fm_set_weaponmodel_ent(id)
            }
            
set_user_health(idget_cvar_num("zp_human_health"))
            
set_user_maxspeed(idget_cvar_float("zp_human_speed") + 50)  
            
set_user_armor(id0)
            
set_user_gravity(id1.00)
            
cs_set_user_bpammo(idCSW_HEGRENADE5)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_ent_playermodel[id], "models/player/Michaela/Michaela.mdl")
                
fm_set_weaponmodel_ent(id)
            }
            
set_user_health(idget_cvar_num("zp_human_health"))
            
set_user_armor(id0)
            
set_user_gravity(id1.00)
            
cs_set_user_bpammo(idCSW_SMOKEGRENADE5)
            
set_pev(idpev_effectspev(idpev_effects) | EF_BRIGHTLIGHT)
            
client_print(idprint_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_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_ent_playermodel[id], pev_aimentid)
                
set_pev(g_ent_playermodel[id], pev_ownerid)
                                           
// Change name of your model below.
                
engfunc(EngFunc_SetModelg_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_id50); 
            }

            
client_print(idprint_chat,"[CSO] Your class is: Erika (+ Shield & Deagle (50 Clip Ammo)");
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
zp_user_infected_post(idinfector)
{
    
fm_remove_model_ents(id)
}

stock fm_remove_model_ents(id)
{
    if (
pev_valid(g_ent_playermodel[id]))
    {
        
engfunc(EngFunc_RemoveEntityg_ent_playermodel[id])
        
g_ent_playermodel[id] = 0
    
}
    if (
pev_valid(g_ent_weaponmodel[id]))
    {
        
engfunc(EngFunc_RemoveEntityg_ent_weaponmodel[id])
        
g_ent_weaponmodel[id] = 0
    
}
}

stock fm_set_weaponmodel_ent(id)
{
    static 
model[100]
    
pev(idpev_weaponmodel2modelsizeof model 1)
    
    if (!
pev_valid(g_ent_weaponmodel[id]))
    {
        
g_ent_weaponmodel[id] = engfunc(EngFunc_CreateNamedEntityengfunc(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_movetypeMOVETYPE_FOLLOW)
        
set_pev(g_ent_weaponmodel[id], pev_aimentid)
        
set_pev(g_ent_weaponmodel[id], pev_ownerid)
    }
    
    
engfunc(EngFunc_SetModelg_ent_weaponmodel[id], model)
}

stock drop_primary_weapons(id)    
{
    static 
weapons 32 ], numiweaponid
    num 

    get_user_weapons 
(idweaponsnum )
    
    for ( 
0numi++ )
    {
        
weaponid weapons ]
        if  ( ( (
1<<weaponid) & PRIMARY_WEAPONS_BITSUM ) )        
        {
            static 
wname[32]
            
get_weaponname(weaponidwnamecharsmax(wname))
            
engclient_cmd(id"drop"wname)
        }
    }

itoxicreal is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 12-19-2021 , 05:18   Re: Human classes to main zombie plague sma
Reply With Quote #2

Any reason for that?
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
itoxicreal
Senior Member
Join Date: Jun 2018
Old 12-19-2021 , 07:36   Re: Human classes to main zombie plague sma
Reply With Quote #3

Quote:
Originally Posted by OciXCrom View Post
Any reason for that?
This code allows the models to change when players use it, but the model change is weird and i was digging around and found zm 4.3 doesn't allow model change unless the natives are modified
itoxicreal is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode