Sistema de Reset + Niveles
#1
holiwis, estube aburrido y me puse hacer un sistema de niveles y reset e_e ok aqui va el code.
Creditos
CSaxel = por El menu Handled del reset ^^
Código PHP:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Menu_Reset"
#define VERSION "1.0"
#define AUTHOR "Killkeo.-"

new g_reset[33], g_level[33], g_aps[33], g_dano[33]

const 
MAX_RESET 15
const LEVEL_REQ 24
const COSTO_DAMAGE 200
#define costo_aps(%1)             (%1 * %1 * 10)

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /reset""menu_reset_pj")
    
    
// Registracion de Ham
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
}

public 
fw_TakeDamagevictiminflictorattackerFloat:damagedamage_type )
{
    
g_dano[attacker] += floatround(damage)
    
    while (
g_dano[attacker] >= COSTO_DAMAGE)
    {
        
g_aps[attacker]+= 10
        g_dano
[attacker] -= 200
        sistema_level
(attacker)
    }
}
        
public 
sistema_level(id) {
    new 
level g_level[id]
    
    
check:
    if (
g_aps[id] >= costo_aps(level)) {
        
level++
        goto 
check
    
}
    else if (
g_aps[id] < costo_aps(( level 2))) {
        
level--
        goto 
check
    
}
    
    if (
level g_level[id])
    {
        
client_print(idprint_center"Subiste al Nivel %d"level)
    }
    else if (
g_level[id] < level) {
        
client_print(idprint_center"Bajaste al Nivel %d"level)
    }
    
g_level[id] = level
}

public 
menu_reset_pj(id) {
    new 
menu menu_create("\yResetear mi Personaje^n^n\wAl resetear Perderas todos tus aps niveles reset etc...""menu_reset")
    
    if (
g_level[id] >= LEVEL_REQ)
            
menu_additem(menu"\wResetear personaje""1")
    else
            
menu_additem(menu"\dAun No Puedes Resetear""1")
            
    
menu_display(idmenu0)
}

public 
menu_reset(idmenuitem) {
    if (
item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED;
    }
    
    if (
g_level[id] < LEVEL_REQ || g_reset[id] >= MAX_RESET) {
        
menu_reset_pj(id)
        return 
PLUGIN_HANDLED;
    }
    
    
g_reset[id]++
    
g_level[id] = 1
    g_aps
[id] = 1
    client_print
(idprint_center"has reseteado tu aps son %d tu nivel %d tu Reset %d"g_aps[id], g_level[id], g_reset[id])
    
menu_reset_pj(id)
    return 
PLUGIN_HANDLED;
}
          
public 
client_putinserver(id) {
    
g_level[id] = g_reset[id] = g_aps[id] = g_dano[id] = 1

Espero que Les Guste Gran sonrisa
Crab Crab Crab Crab
Responder
#2
Para que sirve el goto??? ..
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
Responder
#3
(25/09/2014, 10:05 AM)ivan escribió:
(25/09/2014, 09:46 AM)Cr3470r escribió: Para que sirve el goto??? ..

Para checkear mejor las cosas evite bug y todo eso ._.

Hm no esta mal hecho lo de goto check?= y no creo que sea esa la explicacion correcta.

PD: nunca lo he usado

Un poco C&P la verdad pero supongo que ala gente le podria interesar para sus dudas

Código PHP:
public update_level(idamounthamountfcheck// Es el que usa good, pero arreglado, el de good esta mal. 

    
// Lo que hace el "goto" es, si la funcion esta se llamo desde "check", 
    // el plugin lo que hara, es llamar directamente a "check2". 
    
if(check) goto check2 
     
    
// Aca detectamos que si es nivel maximo no suba mas. 
    
if(g_frags[1][id] + amountf FRAGS_ZM[sizeof FRAGS_ZM 1] - || 
        
g_frags[id][0] + amount FRAGS_HM[sizeof FRAGS_HM 1] - 1
        return 
PLUGIN_HANDLED 
     
    
// Le damos los frags correspondientes. 
    
g_frags[id][0] += amounth 
    g_frags
[id][1] += amountf 
-->
Código PHP:
check2
        if(
amount 0
        { 
            if(
g_frags[id][0] < FRAGS_HM[g_level[id]] || g_frags[1][id] < FRAGS_ZM[g_level[id]]) 
            { 
                
g_level[id]-- 
                
client_print(idprint_center"[ZP] Level DOWN UP !!!"
                
update_level(id, -11
            } 

        } 
        else 
        { 
            if(
g_frags[id][0] >= FRAGS_HM[g_level[id]] || g_frags[id][0] >= FRAGS_ZM[g_level[id]]) 
            { 
                
g_level[id]++ 
                
client_print(idprint_center"[ZP] Level UP !!!"
                
update_level(id01
            } 
        } 
         
        return 
PLUGIN_HANDLED 

[Imagen: 76561198066347799.png]
Responder
#4
(25/09/2014, 10:05 AM)ivan escribió: Para checkear mejor las cosas evite bug y todo eso ._.

Genius

si no tienes ni idea, tan solo dilo.


no me parece bien que un usuario haga un tutorial con cosas que ni él entiende, de seguro que lo sacaste de otro lado. eso del goto ya lo ví hace años...

hay muchos ejemplos ya de "sistemas" de niveles y reset, abundan por todos lados, no me parece necesario añadir otro más al montón. no destaca en nada al resto.
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#5
Cuestión de buscar
http://es.wikipedia.org/wiki/GOTO

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)