Jump to content
  • ¡Hola, Invitado! Únete a nuestra comunidad y construyamos juntos algo increíble.

    ¡Bienvenido a nuestra comunidad! Al unirte, formarás parte de una comunidad apasionada por MAPPING. Para participar activamente, simplemente haz clic en el botón ‘Conectarse’ o ‘Registrarse’. Una vez registrado, podrás publicar mensajes, compartir tus experiencias y explorar los diversos foros disponibles. ¡Esperamos verte pronto y compartir momentos increíbles juntos!

[Tutorial] Crear Niveles por Ammopacks

Valorar este tema


Publicaciones recomendadas

Publicado

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

 

Nota: Este Tutorial lo recopile de varias partes, no es completamente mio, ni siquiera hize un 5% del Code de este Tutorial

Yo lo hacia de otra forma, pero esta me resultaron mejores.

 

Nota2: Este Tutorial fue echo en el ZombiePlague 4.2

No se si anda en la 4.3

 

 

// 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
}

 

 

Listo esto fue todo para hacer Niveles.

 

 

Creditos a Kiske por el verdadero Thread

Ciio Desing

 

firmaciiodesing.png

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.

Conectar ahora
×
×
  • Crear nuevo...

Información importante

Al utilizar nuestra web, aceptas nuestras Política de privacidad estás de acuerdo con las condiciones establecidas.