21/12/2017, 07:15 PM
Buenas, que tal?. Este es mi primer aporte para la comunidad, luego de tantos leer y leer, (creo) que no he visto ningun tutorial sobre esto, por ende y sin mas preambulos prosigo(tratare de explicarme lo mas que pueda);
Luego en fw_TakeDamage;
Luego en // Ham Player Spawn Post Forward
Buscan // Set Health and Gravity ( a veces sale diferente,dependiendo del zp que usen)
Luego en el mismo public, abajo de Set Health and Gravity( o como corno lo tengan) encontraremos esto;
Ahora seguimos con la seccion de habilidades ZOMBIE;
buscamos fw_PlayerPreThink(id) y dentro del public buscaran esta linea;
Bueno, espero hallan entendido algo de mi post(o casualmente repost).
Cualquier duda consulten.
PSDT; Faltan las mejoras ammount_zdamage/health/gravity.
Esto es para que los que quieran hacer copy/paste tengan que usar la cabeza.
PSDT2; Son variables de codigo de kikizon2(para que no me traten de cp ;c
Código PHP:
/* [ MEJORAS ] */
new g_gastados[33][2] // variable de puntos gastados
new g_mejorasH[33][5] // variable de habilidades humanas
new g_mejorasZ[33][5] // variable de habilidades zombies
new g_puntos[33][2] // variable de puntos
// MODIFICAR A GUSTO SI LO IMPLEMENTAN//
#define costo(%1) (%1 * 5) + 1 // aca definimos el costo de cada nivel, ej; nivel 1 daño = 5 puntos, y asi sucesivamente.
#define ammount_hdamage(%1) (%1 + 2) * 0.2 // aca definimos cuanto daño aumentara cada punto que le subamos al mismo
#define ammount_hhealth(%1) (%1 * 25) // lo mismo pero con la vida
#define ammount_hspeed(%1) (%1 * 4) // lo mismo pero con la velocidad
#define ammount_hgravity(%1) ((%1 * 0.02) * 2) // lo mismo pero con la gravedad
#define ammount_harmor(%1) (%1 * 25) // lo mismo pero con la armadura
#define ammount_zdamage(%1) (%1 + 3) * 0.2 // todo lo mismo,lean y comparen
#define ammount_zhealth(%1) (%1 * 10000)
#define ammount_zspeed(%1) (%1 * 2)
#define ammount_zgravity(%1) ((%1 * 0.03) * 1)
#define ammount_zdefense(%1) (%1 * 0.1)
new const mejoras_max[2][] = { // Modificar a gusto si lo implementan.
{ 9999, 35, 30, 25, 35 }, // Limite de mejoras humanas
{ 20, 9999, 30, 35, 20 } // Limite de mejoras zombies
}
new const mejoras_nombres[2][5][] = { // Modificar a gusto si lo implementan.
{
"Aumentar Ataque",
"Aumentar Vitalidad",
"Aumentar Velocidad", // Nombre de cada habilidad Humana
"Disminuir Gravedad",
"Aumentar Armadura"
}, {
"Aumentar Ataque",
"Aumentar Vitalidad",
"Aumentar Velocidad", // Nombre de cada habilidad zombie
"Disminuir Gravedad",
"Aumentar Defensa"
}
}
Luego en fw_TakeDamage;
Código PHP:
if (!g_zombie[attacker]) // Dentro de este if buscan el parametro del daño y lo cambian por este, esto hace que tome el daño humano(osea el nivel de la habilidad,etc..)
{
SetHamParamFloat(4, damage *= (ammount_hdamage(g_mejorasH[attacker][0]) + 1) / (ammount_zdefense(g_mejorasZ[victim][4]) + 1))
Luego en // Ham Player Spawn Post Forward
Buscan // Set Health and Gravity ( a veces sale diferente,dependiendo del zp que usen)
Código PHP:
// Set health and gravity
set_user_health(id, ArrayGetCell(g_hclass_hp, g_humanclass[id]) + ammount_hhealth(g_mejorasH[id][1]))
set_pev(id, pev_gravity, Float:ArrayGetCell(g_hclass_grav, g_humanclass[id]) - ammount_hgravity(g_mejorasH[id][3]))
cs_set_user_armor(id, ammount_harmor(g_mejorasH[id][4]), CS_ARMOR_KEVLAR)
// Este lo que hace, es basicamente lo mismo que la anterior,pero aqui seteamos vida,chaleco,velocidad,gravedad. obviamente obteniendo el nivel de la habilidad.
// x2; el g_humanclass[id] se usa en caso de tener clases humanas en su zp, si no tienen clases humanas[aunque lo dudo] borran esa variable y listo.
//¿ porque aparece la variable de g_humanclass ? ; esto es para que se le sume a la clase(que ya viene con vita,velocidad,gravedad seteados) y le de una equivalencia mas comoda, y que por ejemplo, clase humana ninja +150 hp, si le sumas dos puntos a vitalidad(en este caso aumenta 25 hp cada punto) quedaria en +200 de vitalidad porque se suma.
Luego en el mismo public, abajo de Set Health and Gravity( o como corno lo tengan) encontraremos esto;
Código PHP:
// Cache speed and name for player's class
ArrayGetString(g_hclass_name, g_humanclass[id], g_human_classname[id], charsmax(g_human_classname[]))
g_human_spd[id] = float(ArrayGetCell(g_hclass_spd, g_humanclass[id]) + ammount_hspeed(g_mejorasH[id][2]))
// Esto es simple,aca "cacheamos/precacheamos" la velocidad humana y/o clase humana, siguen sumandose,por ende precachearia las dos.
buscamos fw_PlayerPreThink(id) y dentro del public buscaran esta linea;
Código PHP:
// Check if proper CVARs are enabled and retrieve leap settings( yo lo tengo asi)
static Float:cooldown, Float:current_time
if (g_zombie[id])
{
set_pev(id, pev_maxspeed, g_zombie_spd[id] + ammount_zspeed(g_mejorasZ[id][2])) // seteamos la velocidad(dependiendo del nivel de la mejora) al zombie. y tambien lo obtiene de la clase zombie,por ende se suman.
Bueno, espero hallan entendido algo de mi post(o casualmente repost).
Cualquier duda consulten.
PSDT; Faltan las mejoras ammount_zdamage/health/gravity.
Esto es para que los que quieran hacer copy/paste tengan que usar la cabeza.
PSDT2; Son variables de codigo de kikizon2(para que no me traten de cp ;c
kissmeyearbasic-