Raised This Month: $12 Target: $400
 3% 

[APORTE] Clases Humanas Con/Sin Niveles


  
 
 
Thread Tools Display Modes
Author Message
3MCy Daimont
Senior Member
Join Date: Oct 2012
Old 04-13-2013 , 20:52   [APORTE] Clases Humanas Con/Sin Niveles
#1

Hola, buenas

-Primero que nada tengo 2 acotaciones.

Todos los que mas saben, diran que esto es un asco que se puede mejorar etc, etc pero con el tiempo lo optimizare y le agregare nuevas cosas, porfavor este es mi primer aporte, solo les pido criticas constructivas y/o Ideas para mejorarlos

-Lo segundo para los que son nuevos y no saben mucho les deje todo bien explicadito, si tienen alguna duda solo dejen un comentario, o mandenme un PM.

-Bueno... ¿Que es esto?

* Es un sistema con 10 clases de humanos con habilidades las cuales se mostraran escribiendo /clase

* Un model de cuchillo deferente para cada Clase.

* Ideal para Mod Zombie Plague.

Con Restriccion de Niveles (Native)

PHP Code:
/*Antes que nada decirles que esto lo hise pensando en las personas que recien comienzan, porfavor los mas experimentados abstenganse
de hacer malos comentarios. y claro toda critica constructiva, consejo, optimizacion etc. solo diganla y con gusto las atendere

que es esto ?

Bueno este es un sistema con 10 clases de humanos para zombie plague especificadas mas abajo en la const human_clase. 
tome codigos de varios plugins y arme esto, espero les guste y porfavor les repito abstenganse de todo comentario negativo


*** version 1.0 ***

- Posteo de Plugin.
- 10 Clases Diferentes.
- Restriccion de Niveles *Natives*
*** ----------- ***

*** version 1.5 ***

- Agregado 1 Cuchillo para cada Humano.
- Pequenias Optimizaciones.
*** ----------- ***

*** version 2.0 ***

- 5 constantes para los datos y los levels de las clases, reducido a 1 cons + 1 enum 
- Limpieza de Brazaletes Que estaban demas.
- Optimizado funcion ham takedamage
- 2 variables resumidas a 1 de 2 celdas
- chequeo is_user_alive en playerperthink
*** ----------- ***

Cabe detacar que esta version la hize con retriccion con native es un ejemplo del que uso yo, si tienen problemas guiense con la 
native zp_get_user_ammopacks / zp_set_user_ammopacks para crear la del lvl, la registran en el include zombieplague o crean el suyo
propio, por si las dudas les dejo el zombieplague.inc ya modificado con la native del lvl, ya solo les quedaria registrarlo en su zp. 


en su zp se van a.

public plugin_natives().

y agregan

register_native("zp_get_user_level", "native_get_user_level", 1)
register_native("zp_set_user_level", "native_set_user_level", 1)

luego se van a cualquier parte del zp al final o donde sea, siempre y cuando sea fuera de otro public y agregan.

// Native: zp_get_user_level
public native_get_user_level(id)
{
    return VARIABLE_DE_NIVEL[id];
}
    
// Native: zp_set_user_ammo_packs
public native_set_user_level(id, amount)
{
    VARIABLE_DE_NIVEL[id] = amount;
}

y eso seria todo, cualquier duda respecto a esto posteenlo o mandenme un PM y con guto les ayudare

Ojala sea de su agrado gracias.

sl2.

*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <engine>
#include <fun>
#include <xs>

#define PLUGIN "Clases Humanas C/Restriccion"
#define VERSION "2.0"
#define AUTHOR "~3MCy Daimon't~>"

#define T4G "[T4G]"


new g_pushed_class[33] , g_class_pre[33]
new 
g_conectado[33]
new 
g_msgSayTextg_msgHostageAdd g_msgHostageDelg_MaxPlayers
new Floatcl_pushangle[33][3]
new 
weapon_name[24]
new 
jumpdoz[33][2

const 
WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4)

enum {
    
CLASICO ,
    
BERSERKER ,
    
ATLETA ,
    
ASTRONAUTA ,
    
MULTIJUMP ,
    
TIRADOR ,
    
AURA 
    
RADAR 
    
NINJA 
    
PRECISO
}

enum _:human_class {
    
class_name[90],
    
class_ability[90],
    
class_level,
    
v_model[90],
    
p_model[90]
}


new const 
human_clase[][human_class] = {
    {
"Humano Clasico""Ninguna Abilidad"0"models/v_knife.mdl""models/p_knife.mdl"},
    {
"Humano Berseker""x3 Damage Cuchillos"5"models/v_berserker_knife.mdl""models/p_berserker_knife.mdl"},
    {
"Humano Atleta""+Rapido"10"models/v_atleta_knife.mdl""models/p_atleta_knife.mdl"},
    {
"Humano Astronauta""+Gravedad"15"models/v_astronauta_knife.mdl""models/p_astronauta_knife.mdl"},
    {
"Humano MultiJump""Triple Salto"20"models/v_multijump_knife.mdl""models/p_multijump_knife.mdl"},
    {
"Humano Preciso""Semi-Recoil"25"models/v_preciso_knife.mdl""models/p_preciso_knife.mdl"},
    {
"Humano Iluminado""Aura Luminoza"30"models/v_iluminado_knife.mdl""models/p_iluminado_knife.mdl"},
    {
"Humano Rastreador""Zombie en Radar"35"models/v_rastreador_knife.mdl""models/p_rastreador_knife.mdl"},
    {
"Humano Ninja""Silencioso +Gravedad"40"models/v_ninja_knife.mdl""models/p_ninja_knife.mdl"},
    {
"Humano Tirador""x2 Damage HeadShot"45"models/v_tirador_knife.mdl""models/p_tirador_knife.mdl"}
}

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event"CurWeapon""Ev_CurWeapon""be""1=1" )
    
    
RegisterHam(Ham_Spawn "player" "Fw_PlayerSpawn")
    
RegisterHam(Ham_TakeDamage"player""Fw_TakeDamage")

    
register_forward(FM_PlayerPreThink,         "Fw_PlayerPreThink"

    
register_clcmd("say /clase""menu_hclasses")

    
g_MaxPlayers get_maxplayers()
    
g_msgSayText get_user_msgid("SayText"
    
g_msgHostageAdd get_user_msgid("HostagePos")
    
g_msgHostageDel get_user_msgid("HostageK")
        
    
set_task (1.0,"radar_scan",_,_,_,"b");

    for (new 
1<= 30i++) {
        if (!(
WEAPONS_BITSUM << i) && get_weaponname(iweapon_name23)) {
            
RegisterHam(Ham_Weapon_PrimaryAttackweapon_name"fw_Weapon_PrimaryAttack_Pre")
            
RegisterHam(Ham_Weapon_PrimaryAttackweapon_name"fw_Weapon_PrimaryAttack_Post"1)
        }
    }
}

public 
plugin_precache() {
    for( new 
0sizeof human_clasei++ ) precache_modelhuman_clase[i][v_model] )
    for( new 
0sizeof human_clasei++ ) precache_modelhuman_clase[i][p_model] )
}

public 
client_putinserver(id) {
    
g_conectado[id] = 
    jumpdoz
[id][0] = 0
    jumpdoz
[id][1] = 0
}


public 
client_disconnect(id) {
    
g_conectado[id] = 0
    jumpdoz
[id][0] = 0
    jumpdoz
[id][1] = 0
}

public 
Fw_PlayerPreThink(id) {
    if(
zp_get_user_zombie(id) || zp_get_user_nemesis(id)) return
    
    if(
is_user_alive(id)){
    
    if(
g_pushed_class[id] == ATLETA)    
        
set_pev(idpev_maxspeed290.0)
        
    if(
g_pushed_class[id] == ASTRONAUTA || g_pushed_class[id] == NINJA)
        
set_pev(idpev_gravity0.6)
        
    if(
g_pushed_class[id] == NINJA)
        
set_pev(idpev_flTimeStepSound999); 
        
    if(
g_pushed_class[id] == AURA)
        
set_pev(idpev_effectspev(idpev_effects) | EF_BRIGHTLIGHT)
    }
}


public 
Fw_PlayerSpawn(id) {    
    
g_pushed_class[id] = g_class_pre[id]
    
colored_print(id"^x04%s^x01 Este server corre con^x04 Clases Humanas V2.0^x01 , Escribe^x04 /clase^x01 para seleccionar tu^x04 clase de Humano"T4G)
}

public 
fw_Weapon_PrimaryAttack_Post(entity) {
    new 
id pev(entitypev_owner)
    if (!
zp_get_user_zombieid ) && is_user_alive id ) && g_pushed_class[id] == TIRADOR) {

    new 
Floatpush[3
    
pev(idpev_punchanglepush
    
xs_vec_sub(pushcl_pushangle[id], push
    
xs_vec_mul_scalar(push0.4 push
    
xs_vec_add(pushcl_pushangle[id], push
    
set_pev(idpev_punchanglepush
    return 
HAM_IGNORED;
    }
    return 
PLUGIN_HANDLED
}


public 
fw_Weapon_PrimaryAttack_Pre(entity) {
    new 
id pev(entitypev_owner)
    if (!
zp_get_user_zombie(id) && is_user_alive id ) && g_pushed_class[id] == TIRADOR) {
        
pev(idpev_punchanglecl_pushangle[id])
        return 
HAM_IGNORED;
    }
    return 
HAM_IGNORED;
}

public 
client_PreThink(id) {
    if(!
is_user_alive(id) || zp_get_user_zombie(id))
    return 
PLUGIN_CONTINUE

    
if(zp_get_user_nemesis(id) || zp_get_user_survivor(id)) 
    return 
PLUGIN_CONTINUE

    
new nzbut get_user_button(id)
    new 
ozbut get_user_oldbutton(id)

    if(
g_pushed_class[id] == MULTIJUMP && (nzbut IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(ozbut IN_JUMP)) {
        if(
jumpdoz[id][0] < 2) {
        
jumpdoz[id][1] = 1
        jumpdoz
[id][0]++
        return 
PLUGIN_CONTINUE
    
}
}
    if((
nzbut IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) {
        
jumpdoz[id][0] = 0
        
return PLUGIN_CONTINUE
    
}    
    return 
PLUGIN_CONTINUE
}

public 
client_PostThink(id) {
    if(
zp_get_user_nemesis(id)  || zp_get_user_survivor(id)) 
    return 
PLUGIN_CONTINUE
    
if(jumpdoz[id][1] == 1) {
        new 
Float:velocity[3]    
        
entity_get_vector(id,EV_VEC_velocity,velocity)
        
velocity[2] = random_float(265.0,285.0)
        
entity_set_vector(id,EV_VEC_velocity,velocity)
        
jumpdoz[id][1] = 0
        
return PLUGIN_CONTINUE
    
}
    return 
PLUGIN_CONTINUE
}

public 
Ev_CurWeaponid ) {
    if(
zp_get_user_zombie(id) || !is_user_alive(id)) return
    
    if(
get_user_weapon(id) == CSW_KNIFE
        
replace_models(id)
}

replace_models(id) {
    if(
zp_get_user_zombie(id) || !is_user_alive(id)) return
    
    
set_pevidpev_viewmodel2human_clase[g_class_pre[id]][v_model])
    
set_pevidpev_weaponmodel2human_clase[g_class_pre[id]][p_model])
}


public 
Fw_TakeDamage(victiminflictorattackerFloat:damagedamage_typeiDmgBits) {
    if(
zp_get_user_zombie(attacker) && is_user_alive(attacker)) {     
        if(
get_user_weapon(attacker) == CSW_KNIFE && g_pushed_class[attacker] == BERSERKER)
        
SetHamParamFloat(4damage *= 3.0 )
        
        if(
get_pdata_int(victim75) == HIT_HEAD && g_pushed_class[attacker] == PRECISO)
        
SetHamParamFloat(4damage 2.0)
    }
}

public 
menu_hclasses(id) {    
    new 
class_menu menu_create("\wElegir clase de \r Humano:^n^n""menu_handler"
    
    new 
num[3], len[1024]
    for (new 
0sizeof human_clase i++) {
        
num_to_str(inum2)
        if(
g_class_pre[id] != i) {
            if(
zp_get_user_level(id) >= human_clase[i][class_level]) 
                
formatex(lensizeof len 1"\w %s \y [%s] \w- \r[Disponible]" human_clase[i][class_name] , human_clase[i][class_ability])
            else  
                
formatex(lensizeof len 1"\d %s \w - \r[Nivel: %d]" human_clase[i][class_name] , human_clase[i][class_level])
        }
        else
            
formatex(lensizeof len 1"\d %s [%s] - [Elegido]" human_clase[i][class_name] , human_clase[i][class_ability])
        
        
menu_additem(class_menulennum)
        }
    
    
menu_setprop(class_menuMPROP_BACKNAME"\yAtras"
    
menu_setprop(class_menuMPROP_NEXTNAME"\ySiguiente"
    
menu_setprop(class_menuMPROP_EXITNAME"\ySalir"
    
menu_display(idclass_menu0
}

public 
menu_handler(idclass_menuitem) {
    if(
item == MENU_EXIT) { 
        
menu_destroy(class_menu
        return 
PLUGIN_HANDLED 
    

    
    if (!
g_conectado[id]) return PLUGIN_HANDLED;
    
    new 
data[6], iName[64
    new 
accesscallback 
    menu_item_getinfo
(class_menuitemaccessdata,5iName63callback
    
    if(
zp_get_user_level(id) < human_clase[item][class_level]) {    
        
colored_print(id"^x04%s^x01 Para elegir esta^x04 Clase Humana^x01 necesitas ser^x04 Nivel^x01 :^x04 %d^x01."T4Ghuman_clase[item][class_level])
        
menu_hclasses(id)
        return 
PLUGIN_HANDLED;
    }
    
    if(
g_class_pre[item] && get_user_weapon(id) == CSW_KNIFE) { 
        
replace_models(item)
    }    
    
    
g_class_pre[id] = item
    colored_print
(id"^x04%s^x01 En Tu Proximo Spawn, Tu Clase Sera^x03 %s"T4Ghuman_clase[item][class_name])
    return 
PLUGIN_HANDLED
}

public 
radar_scan() {    
    new 
zombie_count 0;
    new 
zombie_list[32];
    new 
ZombieCoords[3];
    new 
idi;
        
    for (new 
id=1id<=g_MaxPlayersid++) {
            
        if ((
zp_get_user_zombie(id))&&(is_user_alive(id))) {
            
zombie_count++;
            
zombie_list[zombie_count]=id;
        }
            
    }
        
    for (
id=1id<=g_MaxPlayersid++) {
        if (!
is_user_alive(id)) continue;
            
        if (
g_pushed_class[id] != RADAR || zp_get_user_zombie(id)) continue; 
            
        for (
i=1;i<=zombie_count;i++) {            
            
get_user_origin(zombie_list[i], ZombieCoords)
                
            
message_begin(MSG_ONE_UNRELIABLEg_msgHostageAdd, {0,0,0}, id)
            
write_byte(id)
            
write_byte(i)        
            
write_coord(ZombieCoords[0])
            
write_coord(ZombieCoords[1])
            
write_coord(ZombieCoords[2])
            
message_end()
                
            
message_begin(MSG_ONE_UNRELIABLEg_msgHostageDel, {0,0,0}, id)
            
write_byte(i)
            
message_end()
        }
    }
}


stock colored_print(id, const mensaje[], any:...) /* Stock de r0ma */ {
    if(!
g_conectado[id])
        return
    
    static 
buffer[192]
    
vformat(buffercharsmax(buffer), mensaje3)
    
    
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_id)
    
write_byte(id)
    
write_string(buffer)
    
message_end()    



Sin Restriccion de Niveles


PHP Code:
/*Antes que nada decirles que esto lo hise pensando en las personas que recien comienzan, porfavor los mas experimentados abstenganse
de hacer malos comentarios. y claro toda critica constructiva, consejo, optimizacion etc. solo diganla y con gusto las atendere

que es esto ?

Bueno este es un sistema con 10 clases de humanos para zombie plague especificadas masa abajo en la const human_clase. 
tome codigos de varios plugins y arme esto, espero les guste y porfavor les repito abstenganse de todo comentario negativo


*** version 1.0 ***

- Posteo de Plugin.
- 10 Clases Diferentes.

*** ----------- ***

*** version 1.5 ***

- Agregado 1 Cuchillo para cada Humano.
- Pequenias Optimizaciones.
*** ----------- ***

*** version 2.0 ***

- 4 constantes para los datos de las clases, reducido a 1 cons + 1 enum 
- Limpieza de Brazaletes Que estaban demas.
- Optimizado funcion ham takedamage
- 2 variables resumidas a 1 de 2 celdas
- chequeo is_user_alive en playerperthink
*** ----------- ***

Cabe detacar que esta version no tiene retriccion de niveles por lo que al escribir /clase podran elegir su clase libremente. 


Ojala sea de su agrado gracias.

sl2.

*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <engine>
#include <fun>
#include <xs>

#define PLUGIN "Clases Humanas S/Restriccion"
#define VERSION "2.0"
#define AUTHOR "~3MCy Daimon't~>"

#define T4G "[T4G]"


new g_pushed_class[33] , g_class_pre[33]
new 
g_conectado[33]
new 
g_msgSayTextg_msgHostageAdd g_msgHostageDelg_MaxPlayers

new Floatcl_pushangle[33][3]
new 
weapon_name[24]
new 
jumpdoz[33][2]  

const 
WEAPONS_BITSUM = (1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4)

enum {
    
CLASICO ,
    
BERSERKER ,
    
ATLETA ,
    
ASTRONAUTA ,
    
MULTIJUMP ,
    
TIRADOR ,
    
AURA 
    
RADAR 
    
NINJA 
    
PRECISO
}

enum _:human_class {
    
class_name[90],
    
class_ability[90],
    
v_model[90],
    
p_model[90]
}


new const 
human_clase[][human_class] = {
    {
"Humano Clasico""Ninguna Abilidad""models/v_knife.mdl""models/p_knife.mdl"},
    {
"Humano Berseker""x3 Damage Cuchillos""models/v_berserker_knife.mdl""models/p_berserker_knife.mdl"},
    {
"Humano Atleta""+Rapido""models/v_atleta_knife.mdl""models/p_atleta_knife.mdl"},
    {
"Humano Astronauta""+Gravedad""models/v_astronauta_knife.mdl""models/p_astronauta_knife.mdl"},
    {
"Humano MultiJump""Triple Salto""models/v_multijump_knife.mdl""models/p_multijump_knife.mdl"},
    {
"Humano Preciso""Semi-Recoil""models/v_preciso_knife.mdl""models/p_preciso_knife.mdl"},
    {
"Humano Iluminado""Aura Luminoza""models/v_iluminado_knife.mdl""models/p_iluminado_knife.mdl"},
    {
"Humano Rastreador""Zombie en Radar""models/v_rastreador_knife.mdl""models/p_rastreador_knife.mdl"},
    {
"Humano Ninja""Silencioso +Gravedad""models/v_ninja_knife.mdl""models/p_ninja_knife.mdl"},
    {
"Humano Tirador""x2 Damage HeadShot""models/v_tirador_knife.mdl""models/p_tirador_knife.mdl"}
}


public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event"CurWeapon""Ev_CurWeapon""be""1=1" )
    
    
RegisterHam(Ham_Spawn "player" "Fw_PlayerSpawn")
    
RegisterHam(Ham_TakeDamage"player""Fw_TakeDamage")

    
register_forward(FM_PlayerPreThink,         "Fw_PlayerPreThink"

    
register_clcmd("say /clase""menu_hclasses")

    
g_MaxPlayers get_maxplayers()
    
g_msgSayText get_user_msgid("SayText"
    
g_msgHostageAdd get_user_msgid("HostagePos")
    
g_msgHostageDel get_user_msgid("HostageK")
        
    
set_task (1.0,"radar_scan",_,_,_,"b");

    for (new 
1<= 30i++) {
        if (!(
WEAPONS_BITSUM << i) && get_weaponname(iweapon_name23)) {
            
RegisterHam(Ham_Weapon_PrimaryAttackweapon_name"fw_Weapon_PrimaryAttack_Pre")
            
RegisterHam(Ham_Weapon_PrimaryAttackweapon_name"fw_Weapon_PrimaryAttack_Post"1)
        }
    }
}

public 
plugin_precache() {
    for( new 
0sizeof human_clasei++ ) precache_modelhuman_clase[i][v_model] )
    for( new 
0sizeof human_clasei++ ) precache_modelhuman_clase[i][p_model] )
}

public 
client_putinserver(id) {
    
g_conectado[id] = 
    jumpdoz
[id][0] = 0
    jumpdoz
[id][1] = 0
}


public 
client_disconnect(id) {
    
g_conectado[id] = 0
    jumpdoz
[id][0] = 0
    jumpdoz
[id][1] = 0
}

public 
Fw_PlayerPreThink(id) {
    if(
zp_get_user_zombie(id) || zp_get_user_nemesis(id)) return
    
    if(
is_user_alive(id)){
   
    if(
g_pushed_class[id] == ATLETA)    
        
set_pev(idpev_maxspeed290.0)
        
    if(
g_pushed_class[id] == ASTRONAUTA || g_pushed_class[id] == NINJA)
        
set_pev(idpev_gravity0.6)
        
    if(
g_pushed_class[id] == NINJA)
        
set_pev(idpev_flTimeStepSound999); 
        
    if(
g_pushed_class[id] == AURA)
        
set_pev(idpev_effectspev(idpev_effects) | EF_BRIGHTLIGHT)
    }
}


public 
Fw_PlayerSpawn(id) {    
    
g_pushed_class[id] = g_class_pre[id]
    
colored_print(id"^x04%s^x01 Este server corre con^x04 Clases Humanas V2.0^x01 , Escribe^x04 /clase^x01 para seleccionar tu^x04 clase de Humano"T4G)
}

public 
fw_Weapon_PrimaryAttack_Post(entity) {
    new 
id pev(entitypev_owner)
    if (!
zp_get_user_zombieid ) && is_user_alive id ) && g_pushed_class[id] == TIRADOR) {

    new 
Floatpush[3
    
pev(idpev_punchanglepush
    
xs_vec_sub(pushcl_pushangle[id], push
    
xs_vec_mul_scalar(push0.4 push
    
xs_vec_add(pushcl_pushangle[id], push
    
set_pev(idpev_punchanglepush
    return 
HAM_IGNORED;
    }
    return 
PLUGIN_HANDLED
}


public 
fw_Weapon_PrimaryAttack_Pre(entity) {
    new 
id pev(entitypev_owner)
    if (!
zp_get_user_zombie(id) && is_user_alive id ) && g_pushed_class[id] == TIRADOR) {
        
pev(idpev_punchanglecl_pushangle[id])
        return 
HAM_IGNORED;
    }
    return 
HAM_IGNORED;
}

public 
client_PreThink(id) {
    if(!
is_user_alive(id) || zp_get_user_zombie(id))
    return 
PLUGIN_CONTINUE

    
if(zp_get_user_nemesis(id) || zp_get_user_survivor(id)) 
    return 
PLUGIN_CONTINUE

    
new nzbut get_user_button(id)
    new 
ozbut get_user_oldbutton(id)

    if(
g_pushed_class[id] == MULTIJUMP && (nzbut IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(ozbut IN_JUMP)) {
        if(
jumpdoz[id][0] < 2) {
        
jumpdoz[id][1] = 1
        jumpdoz
[id][0]++
        return 
PLUGIN_CONTINUE
    
}
}
    if((
nzbut IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) {
        
jumpdoz[id][0] = 0
        
return PLUGIN_CONTINUE
    
}    
    return 
PLUGIN_CONTINUE
}

public 
client_PostThink(id) {
    if(
zp_get_user_nemesis(id)  || zp_get_user_survivor(id)) return PLUGIN_CONTINUE
    
    
if(jumpdoz[id][1] == 1) {
        new 
Float:velocity[3]    
        
entity_get_vector(id,EV_VEC_velocity,velocity)
        
velocity[2] = random_float(265.0,285.0)
        
entity_set_vector(id,EV_VEC_velocity,velocity)
        
jumpdoz[id][1] = 0
        
return PLUGIN_CONTINUE
    
}
    return 
PLUGIN_CONTINUE
}

public 
Ev_CurWeaponid ) {
    if(
zp_get_user_zombie(id) || !is_user_alive(id)) return
    
    if(
get_user_weapon(id) == CSW_KNIFE
        
replace_models(id)
}

replace_models(id) {
    if(
zp_get_user_zombie(id) || !is_user_alive(id)) return
    
    
set_pevidpev_viewmodel2human_clase[g_class_pre[id]][v_model])
    
set_pevidpev_weaponmodel2human_clase[g_class_pre[id]][p_model])
}


public 
Fw_TakeDamage(victiminflictorattackerFloat:damagedamage_typeiDmgBits) {
    if(
zp_get_user_zombie(attacker) && is_user_alive(attacker)) {     
        if(
get_user_weapon(attacker) == CSW_KNIFE && g_pushed_class[attacker] == BERSERKER)
        
SetHamParamFloat(4damage *= 3.0 )
        
        if(
get_pdata_int(victim75) == HIT_HEAD && g_pushed_class[attacker] == PRECISO)
        
SetHamParamFloat(4damage 2.0)
    }
}


public 
menu_hclasses(id) {    
    new 
class_menu menu_create("\wElegir clase de \r Humano:^n^n""menu_handler"
    
    new 
num[3], len[1024]
    for (new 
0sizeof human_clase i++) {
        
num_to_str(inum2)
        if(
g_class_pre[id] == i)
            
formatex(lensizeof len 1"\d %s [%s] \w- \r[Elegido]" human_clase[i][class_name] , human_clase[i][class_ability])
        else  
            
formatex(lensizeof len 1"\w %s \y [%s]" human_clase[i][class_name], human_clase[i][class_ability])
        
        
menu_additem(class_menulennum)
    }
    
    
menu_setprop(class_menuMPROP_BACKNAME"\yAtras"
    
menu_setprop(class_menuMPROP_NEXTNAME"\ySiguiente"
    
menu_setprop(class_menuMPROP_EXITNAME"\ySalir"
    
menu_display(idclass_menu0



public 
menu_handler(idclass_menuitem) {
    if(
item == MENU_EXIT) { 
        
menu_destroy(class_menu
        return 
PLUGIN_HANDLED 
    

    
    if (!
g_conectado[id]) return PLUGIN_HANDLED;
    
    new 
data[6], iName[64
    new 
accesscallback 
    menu_item_getinfo
(class_menuitemaccessdata,5iName63callback
    
    if( 
g_class_pre[item] && get_user_weapon(id) == CSW_KNIFE
        
replace_models(item)
    
    
g_class_pre[id] = item
    colored_print
(id"^x04%s^x01 En Tu Proximo Spawn, Tu Clase Sera^x03 %s"T4Ghuman_clase[item][class_name])
    return 
PLUGIN_HANDLED
}

public 
radar_scan() {    
    new 
zombie_count 0;
    new 
zombie_list[32];
    new 
ZombieCoords[3];
    new 
idi;
        
    for (new 
id=1id<=g_MaxPlayersid++) {
            
        if ((
zp_get_user_zombie(id))&&(is_user_alive(id))) {
            
zombie_count++;
            
zombie_list[zombie_count]=id;
        }
            
    }
        
    for (
id=1id<=g_MaxPlayersid++) {
        if (!
is_user_alive(id)) continue;
            
        if (
g_pushed_class[id] != RADAR || zp_get_user_zombie(id)) continue; 
            
        for (
i=1;i<=zombie_count;i++) {            
            
get_user_origin(zombie_list[i], ZombieCoords)
                
            
message_begin(MSG_ONE_UNRELIABLEg_msgHostageAdd, {0,0,0}, id)
            
write_byte(id)
            
write_byte(i)        
            
write_coord(ZombieCoords[0])
            
write_coord(ZombieCoords[1])
            
write_coord(ZombieCoords[2])
            
message_end()
                
            
message_begin(MSG_ONE_UNRELIABLEg_msgHostageDel, {0,0,0}, id)
            
write_byte(i)
            
message_end()
        }
    }
}


stock colored_print(id, const mensaje[], any:...) /* Stock de r0ma */ {
    if(!
g_conectado[id]) return
    
    static 
buffer[192]
    
vformat(buffercharsmax(buffer), mensaje3)
    
    
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_id)
    
write_byte(id)
    
write_string(buffer)
    
message_end()    

-Bueno como les especificaba en el plugin con restriccion les dejo adjunto el zombieplague.inc ya modificado para la restriccion de nivel.

zombieplague.inc

Y tambien les adjunto los models de cuchillo para cada Clase Humana.

model_clases.7z

-Les pido que todos sus comentarios sean constructivos, Para poder mejorar este pequeño esfuerzo.

De ante Mano gracias por su atencion.

PD: Cualquier Duda solo Diganlo
__________________
Clases Humanas v2.0 Con/Sin Restriccion de Niveles
El premio de una buena accion, es haberla hecho...
Te Amo GokuX <3
I Love those believed.

Last edited by 3MCy Daimont; 04-23-2013 at 21:47. Reason: Actualizado!
3MCy Daimont is offline
chetah
Senior Member
Join Date: Jan 2013
Location: BangBros
Old 04-13-2013 , 21:25   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#2

Muy Bueno, nunca me interese en un zp, tampoco nunca me ha gustado jugarlo, me servira como base para hacer uno
__________________
Minecraft Mod: | %15
"Tomorrowland <3"
chetah is offline
3MCy Daimont
Senior Member
Join Date: Oct 2012
Old 04-13-2013 , 21:28   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#3

Quote:
Originally Posted by chetah View Post
Muy Bueno, nunca me interese en un zp, tampoco nunca me ha gustado jugarlo, me servira como base para hacer uno

-Pronto voy a hacer una version con y sin niveles pero para cualquier modo.

edito: version 2.0 UPDATED, informacion en el plugin correspondiente.
__________________
Clases Humanas v2.0 Con/Sin Restriccion de Niveles
El premio de una buena accion, es haberla hecho...
Te Amo GokuX <3
I Love those believed.

Last edited by 3MCy Daimont; 04-14-2013 at 02:30.
3MCy Daimont is offline
Old 04-14-2013, 17:07
KermesS
This message has been deleted by KermesS. Reason: Me confundí
BlackFur
BANNED
Join Date: Apr 2012
Location: RCL
Old 04-14-2013 , 18:58   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#4

1.- new jumpznum[33] = 0
new bool:dozjump[33] = false

Esas 2 si editas un poco usas una no mas

2.- Usas Fm y Engine ( Think ) Podrias Editar Y Solo Usar 1

3.- Te Va A Lanzar Error En El Print Cuando Escojas Clase

4.- class_norecoil[33] Demas

5.- Take Damage Terriblemente

6.- Cur Weapon Por Item Deploy ( Ham )

7.- En El Precache En Ves De Hacer 2 For Podrias Hacer 1

...

Last edited by BlackFur; 04-15-2013 at 20:10.
BlackFur is offline
StrikerV2
Senior Member
Join Date: Nov 2012
Location: Chile , O Yes!
Old 04-15-2013 , 20:24   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#5

En PlayerPreThink deberias chequear si esta conectado para evitar posibles bugs y engine esta al p2 podrias solo usar fakemeta .
__________________
Mi firma era tan sexy .-.
StrikerV2 is offline
Send a message via MSN to StrikerV2
baneado
Veteran Member
Join Date: Dec 2012
Location: amxmodx-es.com
Old 04-16-2013 , 10:14   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#6

PHP Code:
if(zp_get_user_zombie(id) || zp_get_user_nemesis(id))
return; 
-->

PHP Code:
if (zp_get_user_zombie(id)) return; 
entre otras cosas

Last edited by baneado; 04-16-2013 at 10:15.
baneado is offline
3MCy Daimont
Senior Member
Join Date: Oct 2012
Old 04-16-2013 , 21:33   Re: [APORTE] Clases Humanas Con/Sin restriccion Por Niveles
#7

Quote:
Originally Posted by BlackFur View Post
1.- new jumpznum[33] = 0
new bool:dozjump[33] = false

Esas 2 si editas un poco usas una no mas

2.- Usas Fm y Engine ( Think ) Podrias Editar Y Solo Usar 1

3.- Te Va A Lanzar Error En El Print Cuando Escojas Clase

4.- class_norecoil[33] Demas

5.- Take Damage Terriblemente

6.- Cur Weapon Por Item Deploy ( Ham )

7.- En El Precache En Ves De Hacer 2 For Podrias Hacer 1

...
Como les decia, ahora apenas tenga tiempo lo actualizo y...

sobre el punto 3... probaste si tiraba error?, porque por lo menos a mi me muestra el print correspondiente a cada clase...

edito: actualizacion de funciones, mirar en el plugin correspondiente.
__________________
Clases Humanas v2.0 Con/Sin Restriccion de Niveles
El premio de una buena accion, es haberla hecho...
Te Amo GokuX <3
I Love those believed.

Last edited by 3MCy Daimont; 04-20-2013 at 15:31.
3MCy Daimont is offline
 


Thread Tools
Display Modes

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 13:25.


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