Masacre Comunity
Masacre Comunity


• Si no quieres perderte nada del foro, regístrate, es muy rápido, sencillo y no te arrepentirás.

• Tendrás acceso a todo el contenido dentro del foro, podrás ver tutoriales,
descargar plugins, mods, mapas y muchas cosas mas.

• También podrás disfrutar junto a nosotros dentro de nuestros servers de 32 slots con los mejores mods.



[ZP] Crear Niveles por AmmoPacks [Forma Completa y Buena]

Ver el tema anterior Ver el tema siguiente Ir abajo

[ZP] Crear Niveles por AmmoPacks [Forma Completa y Buena]

Mensaje por SkiGz el Mar Oct 18, 2011 9:15 pm

Descripcion: Si queres crear Niveles por AmmoPacks de una Forma Completa y Buena, entonces este Tutorial es para vos.

Nota2: Este Tutorial fue echo en el ZombiePlague 4.2
No se si anda en la 4.3

Código:

// Abajo de los Includes de tu ZombiePlague, pones:
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.
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
}
avatar
SkiGz

Mensajes Mensajes : 44
Edad : 24
Localización : Venezuela

http://www.counters-acs.es.tl

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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