Bueno, para empezar vamos a aclarar (como ya la mayoría saben) que este tutorial NO es mio, si no que es de Kiske.
Este es un sistema de niveles básico, recomendado para los que recién comienzan con el scripting.
========================================================
Descripción: Si queres crear Niveles por AmmoPacks de una Forma Completa y Buena, entonces este Tutorial es para vos.
Nota: Este Tutorial lo recopile de varias partes, no es completamente mio, ni siquiera hize un 5% del Code de este Tutorial ^^
Yo lo hacia de otra forma, pero esta me resultaron mejores.
Nota2: Este Tutorial fue echo en el ZombiePlague 4.2
No se si anda en la 4.3(Funciona para 4.3 pero hay que cambiar algunas partes del code, yo mismo lo probe)
Como dice Kiske en su post:
Se responderan Dudas siempre y cuando:
→Se pregunte algo acorde al Tema.
→Se pregunte algo Logico y Entendible.
→No se responderan Dudas cuando:
→Se pregunte algo que no tenga que ver con el Tutorial.
→Se pregunte algo que no se entiende o que no tiene sentido.
Como por ejemplo:
→No me sube de Nivel. ¿ Por Que ? [Esto Sera Respondido]
Yo quiero que aparesca mi Nivel en el Hud. ¿ Como Hago ? [Esto NO Sera Respondido porque aqui solo Explica como CREAR Niveles.] Yo por mi parte, preguntas de estas no las voy a responder, si otro quiere, puede hacerlo.
Saludos!
Este es un sistema de niveles básico, recomendado para los que recién comienzan con el scripting.
========================================================
Descripción: Si queres crear Niveles por AmmoPacks de una Forma Completa y Buena, entonces este Tutorial es para vos.
Nota: Este Tutorial lo recopile de varias partes, no es completamente mio, ni siquiera hize un 5% del Code de este Tutorial ^^
Yo lo hacia de otra forma, pero esta me resultaron mejores.
Nota2: Este Tutorial fue echo en el ZombiePlague 4.2
No se si anda en la 4.3(Funciona para 4.3 pero hay que cambiar algunas partes del code, yo mismo lo probe)
Código PHP:
// Abajo de esa Constante creamos una Variable que contendra 33 Lugares.
new g_level[33]
// Nos dirigimos a la Forward:
public fw_PlayerKilled(victim, attacker, shouldgib)
{
// Adentro de este Public, buscamos la siguiente linea:
if (g_zombie[attacker] && (!g_nemesis[attacker] || !get_pcvar_num(cvar_nemignoreammo)))
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect)
// Y lo reemplazamos por esto:
if (g_zombie[attacker] && (!g_nemesis[attacker] || !get_pcvar_num(cvar_nemignoreammo)))
update_ap(attacker, get_pcvar_num(cvar_ammoinfect), 0)
// La Funcion "update_ap" la llamaremos mas tarde.
}
// Ahora nos dirigimos a la Forward:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
// Y adentro de este Public buscamos esta linea:
g_ammopacks[attacker]++
// La reemplazamos por:
update_ap(attacker, 1, 0)
// El primer numero(1), que esta despues del Index(attacker), son los AmmoPacks que recibira el Index(attacker=atacante).
// El otro numero no nos servira por ahora.
// En este mismo Public buscamos esta linea que se encuentra mas abajo:
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect) // ammo packs given to zombie for infection
// La reemplazamos por:
update_ap(attacker, get_pcvar_num(cvar_ammoinfect), 0) // ammo packs given to zombie for infection
}
// Buscamos el CLCMD:
public clcmd_buyammo(id)
{
// Y adentro de este Public buscamos esta linea:
g_ammopacks[id]--
// Y la reemplazamos por:
update_ap(id, -1, 0)
}
// Ahora buscamos lo siguiente en el Plugin:
buy_extra_item(id, itemid)
{
// Aca adentro buscamos una linea que diga lo siguiente:
// Deduce item cost
g_ammopacks[id] -= g_extraitem_cost[itemid]
// La reemplazamos por:
update_ap(id, 0 - g_extraitem_cost[itemid], 0)
}
// Ahora buscamos la Funcion:
infection_explode(ent)
{
// Aca adentro buscamos la siguiente Linea:
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect) // ammo packs given to zombie for infection
// Y la reemplazamos por:
update_ap(attacker, get_pcvar_num(cvar_ammoinfect), 0) // ammo packs given to zombie for infection
}
// Buscamos la Native:
public native_set_user_ammo_packs(id, amount)
{
// Reemplazamos todo lo que esta aca adentro por:
return update_ap(id, 0 - g_ammopacks[id] + amount, 0)
}
// Ahora nos vamos al FINAL DEL PLUGIN, incluso abajo de un: "#endif", y ponemos lo siguiente:
// FORMA DE SPEED! [CON EL "goto"]
// FORMA DE SPEED! [CON EL "goto"]
// FORMA DE SPEED! [CON EL "goto"]
public update_ap(id, amount, check)
{
if (check) goto check2 // Lo que hace el "goto" es, si la Funcion esta se llamo desde "check", el Plugin lo que hara, es llamar directamente a "check2".
// Aca detectamos que si es Nivel Maximo no suba mas.
if (g_ammopacks[id] + amount > NIVELES[sizeof NIVELES - 1] - 1)
return PLUGIN_HANDLED
// Le damos los APs correspondientes.
g_ammopacks[id] += amount
// Ya lo dijimos antes ^^.
check2:
if(amount < 0)
{
if(g_ammopacks[id] < NIVELES[g_level[id]] )
{
g_level[id]--
client_print(id, print_center, "Bajaste de nivel")
update_ap(id, -1, 1)
}
}
else
{
if(g_ammopacks[id] >= NIVELES[g_level[id]] )
{
g_level[id]++
client_print(id, print_center, "Subiste de nivel")
update_ap(id, 0, 1)
}
}
return PLUGIN_HANDLED
}
// FORMA DE CAPOSTRIKE93! [SIN EL "goto"]
// FORMA DE CAPOSTRIKE93! [SIN EL "goto"]
// FORMA DE CAPOSTRIKE93! [SIN EL "goto"]
public update_ap(id, amount, check)
{
if (!check)
{
if (g_ammopacks[id] + amount > NIVELES[sizeof NIVELES - 1] - 1)
return PLUGIN_HANDLED
g_ammopacks[id] += amount
}
else
{
if(amount < 0)
{
if(g_ammopacks[id] < NIVELES[g_level[id]])
{
g_level[id]--
client_print(id, print_center, "Bajaste de nivel")
update_ap(id, -1, 1)
}
}
else
{
if(g_ammopacks[id] >= NIVELES[g_level[id]])
{
g_level[id]++
client_print(id, print_center, "Subiste de nivel")
update_ap(id, 0, 1)
}
}
}
return PLUGIN_HANDLED
}
Se responderan Dudas siempre y cuando:
→Se pregunte algo acorde al Tema.
→Se pregunte algo Logico y Entendible.
→No se responderan Dudas cuando:
→Se pregunte algo que no tenga que ver con el Tutorial.
→Se pregunte algo que no se entiende o que no tiene sentido.
Como por ejemplo:
→No me sube de Nivel. ¿ Por Que ? [Esto Sera Respondido]
Yo quiero que aparesca mi Nivel en el Hud. ¿ Como Hago ? [Esto NO Sera Respondido porque aqui solo Explica como CREAR Niveles.] Yo por mi parte, preguntas de estas no las voy a responder, si otro quiere, puede hacerlo.
Saludos!