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 nuevo...

Información importante

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