¡Bienvenido Invitado!

Hola, te damos la bienvenida a SZ, una pequeña comunidad de amantes y jugadores del Counter-Strikeregistrate y crea una cuenta para que descubras todas las herramientas que tenemos para ti,estamos en el proceso de apertura de un servidor Zombie Plague, esperamos que estés allí con nosotros para probarlo!

SZ Community

Comunidad Gaming


No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

mrsrz
#1

el Vie Dic 20, 2013 10:36 pm

avatar
Fundador
Nombre del Tutorial: Crear Niveles por AmmoPacks.
Autor del Tutorial: Kiske
Version del Tutorial: 1.2

Descripción: Bueno amigos vengo con otro tutorial, bueno y muy util para la gente que le gusta el zombie plague, Creando niveles por ammo packs, bueno les dejo el tuto, nota, el tutorial no es mio, disfruten!

Ojo: El tutorial esta en base a la version 4.2 del ZP con la 4.3 no se ha probado.

Abajo de los Includes de tu ZombiePlague, pones:

Código:
new const NIVELES[5] = { 0, 5, 10, 20, 50 }


Como veran, ahi estamos Creando una Constante con el Nombre "NIVELES" que abarcara (Para Explicarlo de una Manera que lo Entiendan), unos 5 Niveles.

Si van a poner mas Niveles, deberan cambiar ese "5" por la Cantidad de Niveles que vayan a poner.

Abajo de esa Constante creamos una Variable que contendra 33 Lugares.

Código:
new g_level[33]


Nos dirigimos a la Forward:

Código:
public fw_PlayerKilled(victim, attacker, shouldgib)
{


Adentro de este Public, buscamos la siguiente linea:

Código:
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:

Código:
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.

Código:
}


Ahora nos dirigimos a la Forward:

Código:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{


Y adentro de este Public buscamos esta linea:

Código:
g_ammopacks[attacker]++


La remplazaremos por esta:

Código:
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:

Código:
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect) // ammo packs given to zombie for infection


La reemplazamos por:

Código:
update_ap(attacker, get_pcvar_num(cvar_ammoinfect), 0) // ammo packs given to zombie for infection

}


Buscamos el CLCMD:

Código:
public clcmd_buyammo(id)
{


Y adentro de este Public buscamos esta linea:

Código:
g_ammopacks[id]--


Y la reemplazamos por:

Código:
update_ap(id, -1, 0)

}


Ahora buscamos lo siguiente en el Plugin:

Código:
buy_extra_item(id, itemid)
{


Aca adentro buscamos una linea que diga lo siguiente:

Deduce item cost

Código:
g_ammopacks[id] -= g_extraitem_cost[itemid]


La reemplazamos por:

Código:
update_ap(id, 0 - g_extraitem_cost[itemid], 0)

}


Ahora buscamos la Funcion:

Código:
infection_explode(ent)
{


Aca adentro buscamos la siguiente Linea:

Código:
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect) // ammo packs given to zombie for infection


Y la reemplazamos por:

Código:
update_ap(attacker, get_pcvar_num(cvar_ammoinfect), 0) // ammo packs given to zombie for infection

}


Buscamos la Native:

Código:
public native_set_user_ammo_packs(id, amount)
{


Reemplazamos todo lo que esta aca adentro por:

Código:
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:

Código:
// 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.

Código:
 if (g_ammopacks[id] + amount > NIVELES[sizeof NIVELES - 1] - 1)
        return PLUGIN_HANDLED


Le damos los APs correspondientes.

Código:
 g_ammopacks[id] += amount


Ya lo dijimos antes.

Código:
 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

Ver perfil de usuario
Rondon
#2

el Mar Dic 31, 2013 1:39 am

avatar
30 - 69 posts | Usp
30 - 69 posts | Usp
Esta muy bueno pero no esta sumamente bien explicado y se hace muy largo, eso lo hace un defecto. u_u

Ver perfil de usuario
GodTheWar
#3

el Mar Dic 31, 2013 1:49 am

avatar
70 - 109 posts | Deagle
70 - 109 posts | Deagle
Si issisisisis es muy ladilloso, creo que dañe un zp por ese tutorial alguna vez.

Ver perfil de usuario
Contenido patrocinado
#4


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.