[ZP][GUIA]Human Clases 4.2 completa + (chaleco)
#1
Esta guia la saque de AM.net pero le faltaba el chaleco para cada clase y simplemente dejo la guia completa como la dejaron en AM + el chaleco

AUTOR : LA BANDA
MEJORA : EVIL SPIRET

Dejo todo mas que nada por que algunos no pueden entrar en el am.net

Debajo de
Código PHP:
const MAX_ZOMBIE_CLASSSES 20 

Código PHP:
const MAX_HUMAN_CLASSSES 20 

Despues nos vamos a
Código PHP:
// For zombie class menu handlers
#define ZCLASSES_STARTID g_menu_data[id][7]
#define ZCLASSES_SELECTION (g_menu_data[id][7]+key) 

y colocamos
Código PHP:
// For human class menu handlers
#define HCLASSES_STARTID g_menu_data[id][8]
#define HCLASSES_SELECTION (g_menu_data[id][8]+key) 

Luego debajo de
Código PHP:
// Zombie classes
const ZCLASS_NONE = -

Colocamos
Código PHP:
// Human classes
const HCLASS_NONE = -

En player vars
Código PHP:
new g_humanclass[33]
new 
g_humanclassnext[33

Luego buscamos
Código PHP:
new g_menu_data[33][8// data for various menus 
Y reemplazamos el 8 por un 9

Abajo de
Código PHP:
new db_zombieclass[MAX_STATS_SAVED// zombie class 

colocamos
Código PHP:
new db_humanclass[MAX_STATS_SAVED// human class 

Debajo de
Código PHP:
// Zombie Classes vars
new g_zclass_name[MAX_ZOMBIE_CLASSSES][32// name
new g_zclass_info[MAX_ZOMBIE_CLASSSES][32// description
new g_zclass_model[MAX_ZOMBIE_CLASSSES][32// player model
new g_zclass_modelindex[MAX_ZOMBIE_CLASSSES// model index
new g_zclass_clawmodel[MAX_ZOMBIE_CLASSSES][32// claw model
new g_zclass_hp[MAX_ZOMBIE_CLASSSES// health
new g_zclass_spd[MAX_ZOMBIE_CLASSSES// speed
new Float:g_zclass_grav[MAX_ZOMBIE_CLASSSES// gravity
new Float:g_zclass_kb[MAX_ZOMBIE_CLASSSES// knockback
new g_zclass_i // loaded zombie classes counter 

Agregan
Código PHP:
// Human Classes vars
new g_hclass_name[MAX_HUMAN_CLASSSES][32// name
new g_hclass_info[MAX_HUMAN_CLASSSES][32// description
new g_hclass_model[MAX_HUMAN_CLASSSES][32// player model
new g_hclass_modelindex[MAX_HUMAN_CLASSSES// model index
new g_hclass_clawmodel[MAX_HUMAN_CLASSSES][32// claw model
new g_hclass_hp[MAX_HUMAN_CLASSSES// health
new g_hclass_spd[MAX_HUMAN_CLASSSES// speed
new Float:g_hclass_grav[MAX_HUMAN_CLASSSES// gravity
new g_hclass_i // loaded human classes counter 

luego buscar // CVAR pointers y ponen
Código PHP:
cvar_hclasses 

Debajo de
Código PHP:
// No zombie classes?
if (!g_zclass_iset_fail_state("No zombie classes loaded!"

colocan
Código PHP:
// No human classes?
if (!g_hclass_iset_fail_state("No human classes loaded!"

Debajo de
Código PHP:
register_native("zp_set_user_zombie_class""native_set_user_zombie_class"1

colocan
Código PHP:
register_native("zp_get_user_human_class""native_get_user_human_class"1)
    
register_native("zp_set_user_human_class""native_set_user_human_class"1

abajo de
Código PHP:
register_native("zp_register_zombie_class""native_register_zombie_class"1

colocan
Código PHP:
register_native("zp_register_human_class""native_register_human_class"1

Vamos a los menus

debajo de
Código PHP:
register_menu("Zombie Class Menu"KEYSMENU"menu_zclass"

colocan
Código PHP:
register_menu("Human Class Menu"KEYSMENU"menu_hclass"

Debajo de
Código PHP:
cvar_zclasses register_cvar("zp_zombie_classes""1"

colocan
Código PHP:
cvar_hclasses register_cvar("zp_human_classes""1"


Vamos a public fw_PlayerSpawn_Post(id) y reemplazamos esto
Código PHP:
// Set health and gravity
    
fm_set_user_health(idget_pcvar_num(cvar_humanhp))
    
set_pev(idpev_gravityget_pcvar_float(cvar_humangravity)) 

por esto
Código PHP:
// Set selected human class
    
g_humanclass[id] = g_humanclassnext[id]
    if (
g_humanclass[id] == HCLASS_NONEg_humanclass[id] = 0
    
    
// Set health and gravity
    
fm_set_user_health(idg_hclass_hp[g_humanclass[id]])
    
set_pev(idpev_gravityg_hclass_grav[g_humanclass[id]]) 

Unas lineas mas abajo veran esto
Código PHP:
// Set the right model
    
if (get_pcvar_num(cvar_adminmodelshuman) && get_user_flags(id) & ACCESS_FLAG3)
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_admin[random_num(0sizeof model_admin -1)])
    else
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_human[random_num(0sizeof model_human -1)]) 

Lo reemplazan por esto
Código PHP:
// Set the right model
    
if (get_pcvar_num(cvar_adminmodelshuman) && get_user_flags(id) & ACCESS_FLAG3)
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_admin[random_num(0sizeof model_admin -1)])
    else
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1g_hclass_model[g_humanclass[id]]) 

Mas abajo veran esto
Código PHP:
}
    else
    {
        for (
0sizeof model_humani++)
            if (
equal(model_human[i], currentmodel)) already_has_model true;
        
        if (!
already_has_model)
        {
            
iRand random_num(0sizeof model_human -1)
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_human[iRand])
            
#if defined SET_MODELINDEX_OFFSET
            
fm_set_user_model_index(idg_modelindex_human[iRand])
            
#endif
        
}
    } 

y lo reemplazan por esto
Código PHP:
}
    else
    {
        if (
equal(g_hclass_model[g_humanclass[id]], currentmodel)) already_has_model true;        
            
        if (!
already_has_model)
        {
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1g_hclass_model[g_humanclass[id]])
            
#if defined SET_MODELINDEX_OFFSET
            
fm_set_user_model_index(idg_hclass_modelindex[g_humanclass[id]])
            
#endif
        
}
    } 

Ahora vamos a public fw_PlayerPreThink(id)

Veran esto
Código PHP:
}
        else
        {
            if (
g_survivor[id])
                
set_pev(idpev_maxspeedget_pcvar_float(cvar_survspd))
            else
                
set_pev(idpev_maxspeedget_pcvar_float(cvar_humanspd))
        }
    } 

Reemplazan la linea
Código PHP:
set_pev(idpev_maxspeedget_pcvar_float(cvar_humanspd)) 

por esta
Código PHP:
set_pev(idpev_maxspeedfloat(g_hclass_spd[g_humanclass[id]])) 

Buscan
Código PHP:
// Game Menu
     
show_menu_game(id

y reemplazan esto
Código PHP:
// 3. Zombie class
    
if (get_pcvar_num(cvar_zclasses))
        
len += formatex(menu[len], sizeof menu len"\r3.\w %L^n"id,"MENU_ZCLASS")
    else
        
len += formatex(menu[len], sizeof menu len"\d3. %L^n"id,"MENU_ZCLASS"

por esto
Código PHP:
// 3. Zombie class || Human class
    
if (g_zombie[id])
        
len += formatex(menu[len], sizeof menu len"\r3.\w %L^n"id,"MENU_ZCLASS")
    else
        
len += formatex(menu[len], sizeof menu len"\r3.\w %L^n"id,"MENU_HCLASS"

Ahora el menu , debajo del todo en
Código PHP:
// Zombie Class Menu
public show_menu_zclass(id
osea despues de la llave

Colocan
Código PHP:
// Human Class Menu
public show_menu_hclass(id)
{
    
// Player disconnected
    
if (!is_user_connected(id))
        return;
    
    
// Bots pick their zombie class randomly
    
if (is_user_bot(id))
    {
        
g_humanclassnext[id] = random_num(0g_hclass_i 1)
        return;
    }
    
    static 
menu[400], len, class
    
len 0
    
    
// Title
    
len += formatex(menu[len], sizeof menu len"\y%L \r[%d-%d]^n^n"id"MENU_HCLASS_TITLE"HCLASSES_STARTID+1min(HCLASSES_STARTID+7g_hclass_i))
    
    
// 1-7. Class List
    
for (class = HCLASSES_STARTID; class < min(HCLASSES_STARTID+7g_hclass_i); class++)
    {
        if (class == 
g_humanclassnext[id])
            
len += formatex(menu[len], sizeof menu len"\d%d. %s %s^n", class-HCLASSES_STARTID+1g_hclass_name[class], g_hclass_info[class])
        else
            
len += formatex(menu[len], sizeof menu len"\r%d.\w %s\y %s^n", class-HCLASSES_STARTID+1g_hclass_name[class], g_hclass_info[class])
    }
    
    
// 8. Back - 9. Next - 0. Exit
    
len += formatex(menu[len], sizeof menu len"^n\r8.\w %L^n\r9.\w %L^n^n\r0.\w %L"id"MENU_BACK"id"MENU_NEXT"id"MENU_EXIT")
    
    
show_menu(idKEYSMENUmenu, -1"Human Class Menu")


Buscamos
Código PHP:
case 2// Zombie Classes
        
{
            
// Zombie classes enabled?
            
if (get_pcvar_num(cvar_zclasses))
                
show_menu_zclass(id)
            else
                
zp_colored_print(id"^x04[ZP]^x01 %L"id ,"CMD_NOT_ZCLASSES")
        } 

y lo reemplazamos por
Código PHP:
case 2// Zombie Classes || Human Classes
        
{
            
// Zombie classes enabled?
            
if (g_zombie[id])
                
show_menu_zclass(id)
            else
                
show_menu_hclass(id)
        } 

Ahora debajo de este public
Código PHP:
// Zombie Class Menu
public menu_zclass(idkey

colocamos
Código PHP:
// Human Class Menu
public menu_hclass(idkey)
{
    
// Special keys / items list exceeded
    
if (key >= MENU_KEY_BACK || HCLASSES_SELECTION >= g_hclass_i)
    {
        switch (
key)
        {
            case 
MENU_KEY_BACK// back
            
{
                if (
HCLASSES_STARTID->= 0HCLASSES_STARTID -= 7
            
}
            case 
MENU_KEY_NEXT// next
            
{
                if (
HCLASSES_STARTID+g_hclass_iHCLASSES_STARTID += 7
            
}
            case 
MENU_KEY_EXIT// exit
            
{
                return 
PLUGIN_HANDLED;
            }
        }
        
        
// Show extra items menu again
        
show_menu_hclass(id)
        return 
PLUGIN_HANDLED;
    }
    
    
// Store selection for the next infection
    
g_humanclassnext[id] = HCLASSES_SELECTION;
    
    
// Show selected zombie class info and stats
    
zp_colored_print(id"^x04[ZP]^x01 %L: %s"id"HUMAN_SELECT"g_hclass_name[g_humanclassnext[id]])
    
zp_colored_print(id"^x04[ZP]^x01 %L: %d %L: %d %L: %d"id"HUMAN_ATTRIB1"g_hclass_hp[g_humanclassnext[id]], id"HUMAN_ATTRIB2"g_hclass_spd[g_humanclassnext[id]],
    
id"HUMAN_ATTRIB3"floatround(g_hclass_grav[g_humanclassnext[id]]*800))
    
    return 
PLUGIN_HANDLED;


Vamos a
Código PHP:
case 1// Humans 

Reemplazamos esto
Código PHP:
}
        case 
1// Humans
        
{
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_A"get_pcvar_num(cvar_humanhp))
            if (
get_pcvar_num(cvar_humanlasthp) > 0len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_B"get_pcvar_num(cvar_humanlasthp))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_C"get_pcvar_num(cvar_humanspd))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_D"floatround(get_pcvar_float(cvar_humangravity)*800))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_E"idget_pcvar_num(cvar_infammo) > get_pcvar_num(cvar_infammo) > "MOTD_AMMO_CLIP" "MOTD_AMMO_BP" "MOTD_LIMITED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_F"get_pcvar_num(cvar_ammodamage))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_G"idget_pcvar_num(cvar_firegrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_H"idget_pcvar_num(cvar_frostgrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_I"idget_pcvar_num(cvar_flaregrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_J"idget_pcvar_num(cvar_knockback) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
            
show_motd(idmotd)
        } 

por esto
Código PHP:
}
        case 
1// Humans
        
{
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_A"g_hclass_hp[0])
            if (
get_pcvar_num(cvar_humanlasthp) > 0len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_B"get_pcvar_num(cvar_humanlasthp))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_C"g_hclass_spd[0])
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_D"floatround(g_hclass_grav[0]*800))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_E"idget_pcvar_num(cvar_infammo) > get_pcvar_num(cvar_infammo) > "MOTD_AMMO_CLIP" "MOTD_AMMO_BP" "MOTD_LIMITED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_F"get_pcvar_num(cvar_ammodamage))
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_G"idget_pcvar_num(cvar_firegrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_H"idget_pcvar_num(cvar_frostgrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_I"idget_pcvar_num(cvar_flaregrenades) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
len += formatex(motd[len], sizeof motd len"%L"id"MOTD_INFO2_J"idget_pcvar_num(cvar_knockback) ? "MOTD_ENABLED" "MOTD_DISABLED")
            
            
show_motd(idmotd)
        } 


Ahora vamos a
Código PHP:
// Function Human Me (player id, turn into a survivor)
humanme(idsurvivor

debajo veran esto
Código PHP:
// Pre user humanize forward
    
ExecuteForward(g_fwUserHumanized_preg_fwDummyResultid

y debajo colocan
Código PHP:
// Set selected human class
    
g_humanclass[id] = g_humanclassnext[id]

    
// If no class selected yet, use the first (default) one
    
if (g_humanclass[id] == HCLASS_NONEg_humanclass[id] = 

Mas abajo
Código PHP:
// Set Health [0 = auto]
        
if (survhealth == 0)
        {
            if (
survbasehealth == 0)
                
fm_set_user_health(idget_pcvar_num(cvar_humanhp)*fnGetAlive())
            else
                
fm_set_user_health(idsurvbasehealth*fnGetAlive())
        }
        else
            
fm_set_user_health(idsurvhealth

Reemplazan la linea
Código PHP:
fm_set_user_health(idget_pcvar_num(cvar_humanhp)*fnGetAlive()) 

por esta
Código PHP:
fm_set_user_health(idg_hclass_hp[0]*fnGetAlive()) 


Luego reemplazan esto
Código PHP:
// Human taking an antidote
        
        // Set health
        
fm_set_user_health(idget_pcvar_num(cvar_humanhp))

                
// Set gravity, unless frozen
        
if (!g_frozen[id]) set_pev(idpev_gravityg_hclass_grav[g_humanclass[id]]) 

por esto
Código PHP:
// Human taking an antidote
        
        // Set health
        
fm_set_user_health(idg_hclass_hp[g_humanclass[id]])
        
        
// Set gravity, unless frozen
        
if (!g_frozen[id]) set_pev(idpev_gravityg_hclass_grav[g_humanclass[id]]) 

Reemplazan esto
Código PHP:
// Set the right model
    
if (g_survivor[id])
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_survivor[random_num(0sizeof model_survivor -1)])
    else
    {
        if (
get_pcvar_num(cvar_adminmodelshuman) && get_user_flags(id) & ACCESS_FLAG3)
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_admin[random_num(0sizeof model_admin -1)])
        else
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_human[random_num(0sizeof model_human -1)])
    } 

por esto
Código PHP:
// Set the right model
    
if (g_survivor[id])
        
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_survivor[random_num(0sizeof model_survivor -1)])
    else
    {
        if (
get_pcvar_num(cvar_adminmodelshuman) && get_user_flags(id) & ACCESS_FLAG3)
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_admin[random_num(0sizeof model_admin -1)])
        else
            
copy(g_playermodel[id], sizeof g_playermodel[] - 1g_hclass_model[g_humanclass[id]])
    } 

Todabia en el humanme , reemplazan esto
Código PHP:
else
        {
            for (
0sizeof model_humani++)
                if (
equal(model_human[i], currentmodel)) already_has_model true;
            
            if (!
already_has_model)
            {
                
iRand random_num(0sizeof model_human -1)
                
copy(g_playermodel[id], sizeof g_playermodel[] - 1model_human[iRand])
                
#if defined SET_MODELINDEX_OFFSET
                
fm_set_user_model_index(idg_modelindex_human[iRand])
                
#endif
            
}
        }
    } 

por esto
Código PHP:
else
        {
            if (
equal(g_hclass_model[g_humanclass[id]], currentmodel)) already_has_model true;        
            
            if (!
already_has_model)
            {
                
copy(g_playermodel[id], sizeof g_playermodel[] - 1g_hclass_model[g_humanclass[id]])
                
#if defined SET_MODELINDEX_OFFSET
                
fm_set_user_model_index(idg_hclass_modelindex[g_humanclass[id]])
                
#endif
            
}
        }
    } 


Luego reemplazamos esto
Código PHP:
// Restore normal gravity
    
if (g_zombie[id])
        
set_pev(idpev_gravityg_zclass_grav[g_zombieclass[id]])
    else
        
set_pev(idpev_gravityget_pcvar_float(cvar_humangravity)) 

por esto
Código PHP:
// Restore normal gravity
    
if (g_zombie[id])
        
set_pev(idpev_gravityg_zclass_grav[g_zombieclass[id]])
    else
        
set_pev(idpev_gravityg_hclass_grav[g_humanclass[id]]) 


Buscan esto
Código PHP:
else // Humans
            
{
                
set_pev(idpev_viewmodel2model_vknife_human)
                
set_pev(idpev_weaponmodel2"models/p_knife.mdl")
            } 

y lo reemplazan por esto
Código PHP:
else // Humans
            
{
                static 
mdl[100]
                
formatex(mdlsizeof mdl 1"models/zombie_plague/%s"g_hclass_clawmodel[g_humanclass[id]])
                
set_pev(idpev_viewmodel2mdl)
                
set_pev(idpev_weaponmodel2"")
            } 

Buscamos esto
Código PHP:
if (resetall)
    {
        
g_ammopacks[id] = 0
        g_zombieclass
[id] = ZCLASS_NONE
        g_zombieclassnext
[id] = ZCLASS_NONE
        g_damagedealt
[id] = 0
        WPN_AUTO_ON 
0
    


Y agregamos al igual que los ZM
Código PHP:
g_humanclass[id] = HCLASS_NONE
g_humanclassnext
[id] = HCLASS_NONE 


HUD ahora , buscan
Código PHP:
else // humans
    
{
        
red 0
        green 
0
        blue 
255
        
        
if (g_survivor[id])
            
formatex(class, sizeof class - 1"%L"ID_SHOWHUD,"CLASS_SURVIVOR")
        else
            
formatex(class, sizeof class - 1"%L"ID_SHOWHUD,"CLASS_HUMAN")
    } 

y reemplazan
Código PHP:
formatex(class, sizeof class - 1"%L"ID_SHOWHUD,"CLASS_HUMAN"

por esto
Código PHP:
copy(class, sizeof class - 1g_hclass_name[g_humanclass[id]]) 

Vamos al public // Last Zombie Check -check for last zombie and set its flag-
public fnCheckLastZombie()

Buscamos esto
Código PHP:
// Last human
        
if (!g_zombie[id] && !g_survivor[id] && is_user_alive(id) && fnGetHumans() == 1)
        {
            
// Reward extra hp for last human?
            
if (!g_lasthuman[id]) fm_set_user_health(idpev(idpev_health)+get_pcvar_num(cvar_humanlasthp))
            
g_lasthuman[id] = true
        
}
        else
            
g_lasthuman[id] = false 

remplazamos esto
Código PHP:
if (!g_lasthuman[id]) fm_set_user_health(idpev(idpev_health)+get_pcvar_num(cvar_humanlasthp)) 

por esto
Código PHP:
if (!g_lasthuman[id]) fm_set_user_health(idg_hclass_hp[g_humanclass[id]]+get_pcvar_num(cvar_humanlasthp)) 

Buscamos esto
Código PHP:
// Native: zp_register_zombie_class 

Donde cierra la llave y termina el public ponemos esto
Código PHP:
// Native: zp_register_human_class
public native_register_human_class(const name[], const info[], const model[], const clawmodel[], hpspeedFloat:gravity)
{
    
// Reached human classes limit
    
if (g_hclass_i  >= sizeof g_hclass_name)
        return -
1;
    
    
// Strings passed byref
    
param_convert(1)
    
param_convert(2)
    
param_convert(3)
    
param_convert(4)
    
    
// Add the class
    
copy(g_hclass_name[g_hclass_i], sizeof g_hclass_name[] - 1name)
    
copy(g_hclass_info[g_hclass_i], sizeof g_hclass_info[] - 1info)
    
copy(g_hclass_model[g_hclass_i], sizeof g_hclass_model[] - 1model)
    
copy(g_hclass_clawmodel[g_hclass_i], sizeof g_hclass_clawmodel[] - 1clawmodel)
    
g_hclass_hp[g_hclass_i] = hp
    g_hclass_spd
[g_hclass_i] = speed
    g_hclass_grav
[g_hclass_i] = gravity
    
    
// Precache custom models and retrieve the modelindex
    
new prec_mdl[100]
    
formatex(prec_mdlsizeof prec_mdl 1"models/player/%s/%s.mdl"modelmodel)
    
g_hclass_modelindex[g_zclass_i] = engfunc(EngFunc_PrecacheModelprec_mdl)
    
formatex(prec_mdlsizeof prec_mdl 1"models/zombie_plague/%s"clawmodel)
    
engfunc(EngFunc_PrecacheModelprec_mdl)
    
    
// Increase registered classes counter
    
g_hclass_i++
    
    
// Return id under which we registered the class
    
return g_hclass_i-1;


Abajo de
Código PHP:
db_zombieclass[db_slot_i] = db_zombieclass[id

colocamos
Código PHP:
db_humanclass[db_slot_i] = db_humanclass[id

abajo de
Código PHP:
db_zombieclass[id] = g_zombieclassnext[id// zombie class 

Colocamos
Código PHP:
db_humanclass[id] = g_humanclassnext[id// human class 


Buscan esto // Bingo!

Abajo de esto
Código PHP:
g_zombieclass[id] = db_zombieclass[i]
            
g_zombieclassnext[id] = db_zombieclass[i

ponen
Código PHP:
g_humanclass[id] = db_humanclass[i]
            
g_humanclassnext[id] = db_humanclass[i


Debajo de todo este public
Código PHP:
// Native: zp_set_user_zombie_class
public native_set_user_zombie_class(idclassid

colocamos
Código PHP:
// Native: zp_get_user_human_class
public native_get_user_human_class(id)
{
    return 
g_humanclass[id];
}

// Native: zp_set_user_human_class
public native_set_user_human_class(idclassid)
{
    
g_humanclassnext[id] = classid



Ahora eliminamos cosas que no sirven

Vamos a
Código PHP:
// Custom player models 

y borramos
Código PHP:
for (0sizeof model_humani++)
    {
        
formatex(playermodelsizeof playermodel 1"models/player/%s/%s.mdl"model_human[i], model_human[i])
        
g_modelindex_human[i] = engfunc(EngFunc_PrecacheModelplayermodel)
    } 

En CVAR pointer tambien eliminamos esto
Código PHP:
cvar_humanhp 
Código PHP:
cvar_humanspd 
Código PHP:
cvar_humangravity 

Eliminamos
Código PHP:
new const model_human[][] = { "arctic""guerilla""leet""terror""gign""gsg9""sas""urban" // Human 

Eliminamos
Código PHP:
new const model_vknife_human[] = { "models/v_knife.mdl" 

tambien esto
Código PHP:
new g_modelindex_human[MAX_MODELS_HUMAN

Eliminamos
Código PHP:
engfunc(EngFunc_PrecacheModelmodel_vknife_human

En // CVARS - Humans
Elimianos
Código PHP:
cvar_humanspd register_cvar("zp_human_speed""240")
    
cvar_humanhp register_cvar("zp_human_health""100")
    
cvar_humangravity register_cvar("zp_human_gravity""1.0"

AHORA EL CHALECO

Código PHP:
public fw_PlayerSpawn_Post(id

Debajo de // Set user healt and gravity ponemos
Código PHP:
set_user_armor(idg_hclass_armor[g_humanclass[id]]) 

Buscamos
Código PHP:
humanme(idsurvivor

abajo de // set healt

Código PHP:
set_user_armor(idg_hclass_armor[g_humanclass[id]]) 

Buscamos la linea y la dejamos asi
Código PHP:
public native_register_human_class(const name[], const info[], const model[], const clawmodel[], hpspeedFloat:gravityarmor)


Masa abajo // Add the class agregamos abajo de la gravedad
Código PHP:
g_hclass_armor[g_hclass_i] = armor 

en // Human Classes vars agregamos
Código PHP:
new g_hclass_armor[MAX_HUMAN_CLASSSES// armor 

LISTO LA PARTE DE CODEAR

Bueno ahora solo les hace falta agregar las natives al include para crear las clases humanas desde afuera para eso abrimos nuestro zombieplague.inc
que se en cuentra dentro de la carpeta include
Agregamos estas lineas


Cita:native zp_get_user_human_class(id)

native zp_set_user_human_class(id, classid)

native zp_register_human_class(const name[], const info[], const model[], const clawmodel[], health, speed, Float:gravity, armor)

native zp_get_human_class_id(const name[])

Guardan y ya pueden compilar sus clases humanas mediante plugin externo.

Tambien editar el zombie_plague.txt que se encuentra en amxmodx/data/lang
y escribir dentro de el


Cita:MENU_HCLASS = Elegir Clases Humanas
MENU_HCLASS_TITLE = Clases de Humanos
CMD_NOT_HCLASSES = Las Clases de Humanos estan deshabilitadas.
HUMAN_ATTRIB1 = Vida
HUMAN_ATTRIB2 = Velocidad
HUMAN_ATTRIB3 = Gravedad
HUMAN_ATTRIB4 = Chaleco

Bueno , mucho trabajo tengo los ojos cuadrados te ver que no me equivoque , si pasa algo me avisan saludos.
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#2
yo creo que esto no es un tutorial si no mas bien un aporte.
Responder
#3
No.. Ni aporte ni tutorial
Es una manzana(??????.. Ahrre..
Mas bien una Guia.. Aclaralo en el titulo e.e
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#4
Lo dice al principio del thread O.o
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#5
Puedes ponerlo en spolier? es q se me hace muy largo
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#6
evil creo que te comiste un par de cosas XD , hoy por ejemplo se me dio por usarla no funciono ajaj investigandoo vi el post original Xd hay cosas que aqui no esta ahora deje pero dentro de un rato sigo , te marco lo que no esta asi lo agregas xD
[Imagen: tumblr_mt8w6d7yz11rn3500o1_400.gif]
Responder
#7
(10/05/2014, 08:50 PM)LeiToH escribió: evil creo que te comiste un par de cosas XD , hoy por ejemplo se me dio por usarla no funciono ajaj investigandoo vi el post original Xd hay cosas que aqui no esta ahora deje pero dentro de un rato sigo , te marco lo que no esta asi lo agregas xD

No lo saque del post , por lo menos la mayoria de las cosas las saque de MI ZP ya las tenia implementadas...

Si encontras que falta algo, no dudes en decirlo.
Gracias por avisar , ya que es mucho code code code y entre C&P y poner las etiquetas y estar minimizando y maximizando el navegador y el amxmod , seguro se me paso algo por alto.

Saludos
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#8
La página se hace muy larga... ponle spoilers o reduce algo
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#9
no es mejor aserlo todo adentro del sma con un enum y new const, antes de estar creando natives y estar llamando desde afuera ?
Sin mi combustible( ANIME ) no vivo.
Responder
#10
(12/05/2014, 06:36 PM)Sangriento escribió: no es mejor aserlo todo adentro del sma con un enum y new const, antes de estar creando natives y estar llamando desde afuera ?

Emmm ; he visto bastante la forma que mencionas pero nunca la use.

Capas que con la forma que decis tenes que usar mas lineas (creo)

Mientras menos tengas en interno mejor ; ami gusto prefiero hacer todo lo que pueda externo.

-Ya acomodo todo con spoilers.
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#11
(14/05/2014, 10:10 PM)Evil Spiret escribió:
(12/05/2014, 06:36 PM)Sangriento escribió: no es mejor aserlo todo adentro del sma con un enum y new const, antes de estar creando natives y estar llamando desde afuera ?

Emmm ; he visto bastante la forma que mencionas pero nunca la use.

Capas que con la forma que decis tenes que usar mas lineas (creo)

Mientras menos tengas en interno mejor ; ami gusto prefiero hacer todo lo que pueda externo.

-Ya acomodo todo con spoilers.

no, es menos lineas si es que te preocupa eso..
lo decia por que queda mucho mejor antes de estar creando natives y estar llamandolo desde afuera
Sin mi combustible( ANIME ) no vivo.
Responder
#12
Supongo que si , no se , dejame la forma que usas.

Capas la uso y veo como me resulta , saludos.
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#13
La mayoria prefiren como esta posteado...
Responder
#14
error en la linea
set_user_armor(id, g_hclass_armor[g_humanclass[id]])
Responder
#15
Si no se puede revivir, no den bola que se yo (?, pero si alguien me ayuda Thats what she said

"undefined Symbol"... del chaleco, set_user_armor... etc... me sale ese error.. a que se debe ? xD, me falta ... que?

Nothingdohere
Responder
#16
Código PHP:
#include <fun> 

Puedes crear un tema nuevo sin problema, no veo la necesidad de revivir algo de 4 años atrás.
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)