Allied Modders en español
DUDA de niveles. - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: AMX Mod X - Scripting (/Forum-AMX-Mod-X-Scripting)
+--- Foro: Scripting (/Forum-Scripting)
+--- Tema: DUDA de niveles. (/Thread-DUDA-de-niveles)



DUDA de niveles. - injurefect - 10/01/2019 10:56 PM

eh usado los niveles de kiske y el check level se bugea, no me sube los niveles, hasta el reinicio del mapa.
Quería saber que niveles por ammopacks me recomiendan.


RE: DUDA de niveles. - El pirucho XP-007 - 10/01/2019 11:36 PM

No seria mejor que pases el código o modificación que usaste en tu ZP.

No se digo yo :/


RE: DUDA de niveles. - injurefect - 11/01/2019 12:15 AM

(10/01/2019 11:36 PM)El pirucho XP-007 escribió:  No seria mejor que pases el código o modificación que usaste en tu ZP.

No se digo yo :/

No se en que parte se podría encontrar el bug.

Código PHP:
// Abajo de los Includes de tu ZombiePlague, pones:
new const NIVELES[5] = { 05102050 }
// 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(victimattackershouldgib)
{

// 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(attackerget_pcvar_num(cvar_ammoinfect), 0)

// La Funcion "update_ap" la llamaremos mas tarde.

}


// Ahora nos dirigimos a la Forward:
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{

// Y adentro de este Public buscamos esta linea:
g_ammopacks[attacker]++
// La reemplazamos por:
update_ap(attacker10)
// 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(attackerget_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, -10)

}


// Ahora buscamos lo siguiente en el Plugin:
buy_extra_item(iditemid)
{

// Aca adentro buscamos una linea que diga lo siguiente:
// Deduce item cost
g_ammopacks[id] -= g_extraitem_cost[itemid]
// La reemplazamos por:
update_ap(idg_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(attackerget_pcvar_num(cvar_ammoinfect), 0// ammo packs given to zombie for infection

}


// Buscamos la Native:
public native_set_user_ammo_packs(idamount)
{

// Reemplazamos todo lo que esta aca adentro por:
return update_ap(idg_ammopacks[id] + amount0)

}


// 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(idamountcheck)
{
    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(idprint_center"Bajaste de nivel")
            
update_ap(id, -11)
        }

    }
    else
    {
        if(
g_ammopacks[id] >= NIVELES[g_level[id]] )
        {
            
g_level[id]++
            
client_print(idprint_center"Subiste de nivel")
            
update_ap(id01
        }
    }
    
    return 
PLUGIN_HANDLED




RE: DUDA de niveles. - totopizza - 11/01/2019 01:45 AM

Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-definitiva-de-Sistemas-de-Niveles-Zombie-Plague-y-Normal-10-11-18


RE: DUDA de niveles. - GoldenCosta - 11/01/2019 03:14 AM

(11/01/2019 01:45 AM)totopizza escribió:  Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-definitiva-de-Sistemas-de-Niveles-Zombie-Plague-y-Normal-10-11-18

ese es por damage o daño acumulado y es xp... y tampoco detecta cuando un usuario baja de nivel al gastar packs

en fin... cuando haces la deteccion de subir 1 lvl chequea tanto la bajada como subida de levels
Código PHP:
public update_ap(idamountcheck)
{
    if (
check) goto check2 
    
    
    
if (g_ammopacks[id] + amount levels[sizeof levels 1] - 1)
        return 
PLUGIN_HANDLED
    
    
    g_ammopacks
[id] += amount
    
    
    check2
:
    if(
amount 0)
    {
        if(
g_ammopacks[id] < levels[g_level[id] - 1] )
        {    
            
g_level[id]--
            
client_print(idprint_center"Bajaste de nivel")
            
update_ap(id, -11)
        }
        
    }
    else
    {
        if(
g_ammopacks[id] >= levels[g_level[id]] )
        {
            
g_level[id]++
            
client_print(idprint_center"Subiste de nivel!")
            
update_ap(id01
        }
    }
    
    return 
PLUGIN_HANDLED


------------------------------->>>>>>>>>>>>>>>>>>>>

esta parte esta en fw_PlayerKilled... lo unico que hace es chequear al momento de matar si das packs o no....
Código PHP:
// 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(attackerget_pcvar_num(cvar_ammoinfect), 0

--------------------------->>>>>>

aca es la parte mas importante public fw_TakeDamage

aca solo vamos a poner
Código PHP:
// Reward ammo packs for every [ammo damage] dealt
            
while (g_damagedealt[attacker] >= ammodamage)
            {
                
g_ammopacks[attacker]++
                
g_damagedealt[attacker] -= ammodamage
            

---------------------
Código PHP:
// Reward ammo packs for every [ammo damage] dealt
            
while (g_damagedealt[attacker] >= ammodamage)
            {
                
g_ammopacks[attacker]++
                                
update_ap(attacker10)
                
g_damagedealt[attacker] -= ammodamage
            


mas abajo tambien cuando infectamos un jugador
Código PHP:
// Infection allowed
    
SendDeathMsg(attackervictim// send death notice
    
FixDeadAttrib(victim// fix the "dead" attrib on scoreboard
    
UpdateFrags(attackervictimget_pcvar_num(cvar_fragsinfect), 11// add corresponding frags and deaths
    
    
zombieme(victimattacker00// turn into zombie
    
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect// ammo packs given to zombie for infection
        
update_ap(attacker10)
    
fm_set_user_health(attackerpev(attackerpev_health)+get_pcvar_num(cvar_zombiebonushp)) // attacker gets bonus HP for the infection 

ahora algo que no esta en ese code.... la bajada de lvl cuando gastas packs

te vas a buy_extra_item(id, itemid)
buscas dentro del public
Código PHP:
// Deduce item cost
    
g_ammopacks[id] -= g_extraitem_cost[itemid
cambias por-------
Código PHP:
update_ap(idg_extraitem_cost[itemid], 0

tambien en las natives para los extra items
Código PHP:
// Native: zp_set_user_ammo_packs
public native_set_user_ammo_packs(idamount)
{
    
g_ammopacks[id] = amount;

-----------------------
Código PHP:
// Native: zp_set_user_ammo_packs
public native_set_user_ammo_packs(idamount)
{
    return 
update_ap(idg_ammopacks[id] + amount0)



y asi en varios lugares mas donde veas que das o restar ammopacks tienes que hacer el chequeo....


RE: DUDA de niveles. - injurefect - 11/01/2019 12:14 PM

(11/01/2019 01:45 AM)totopizza escribió:  Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-definitiva-de-Sistemas-de-Niveles-Zombie-Plague-y-Normal-10-11-18

Lo tomo como una buena opción, pero busque un party como opción y el que vi, es por aps, como debería de hacer para que el daño que se acumulo sea lo que se reparta multiplicado y no los aps