DUDA de niveles.
#1
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.
Responder
#2
No seria mejor que pases el código o modificación que usaste en tu ZP.

No se digo yo :/
Responder
#3
(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

Responder
#4
Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-defin...l-10-11-18
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#5
(11/01/2019, 01:45 AM)totopizza escribió: Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-defin...l-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....
Responder
#6
(11/01/2019, 01:45 AM)totopizza escribió: Te recomiendo mejor leer este: https://amxmodx-es.com/Thread-Guia-defin...l-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
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)