Saludos esta es mi primera guía y espero hacerlo bien xDDD
Al grano les voy a enseñar como poner zombie por niveles a su basebuilder ya que muchas personas me lo andan pidiendo y puff mejor les ago una guia así ya todos saven no es nada del otro mundo ......
Comencemos,.................
#1 Vamos a
Agregamos
#2 Vamos a
Buscamos esto
Agregamos
Quedaría asi........
#3 Van a su menú de zombie
Lo remplazan por este...
#4 Vamos a
Lo remplazan por este..
#5 Mas abajo agregan
Quedaría.....
Me orvide de esto xD...........
Para agregar un zombie por niveles hacer lo siguiente...
agregar..
Y van a Y agregan...........
Quedaria...
Les pase el public native_register_zombie_class entero por si algo me falto :$......
Bueno asta aca la guia....
Si algo me falto....O estube mal en algun lugar aganmelo saber...........
Gracias ..
Espero que a muchos les sirva..
Al grano les voy a enseñar como poner zombie por niveles a su basebuilder ya que muchas personas me lo andan pidiendo y puff mejor les ago una guia así ya todos saven no es nada del otro mundo ......
Comencemos,.................
#1 Vamos a
Código PHP:
//Zombie Classes
Agregamos
Código PHP:
new Array:g_zclass_level // Level
#2 Vamos a
Código PHP:
public plugin_precache()
Buscamos esto
Código PHP:
g_zclass_name = ArrayCreate(32, 1)
g_zclass_info = ArrayCreate(32, 1)
g_zclass_modelsstart = ArrayCreate(1, 1)
g_zclass_modelsend = ArrayCreate(1, 1)
g_zclass_playermodel = ArrayCreate(32, 1)
g_zclass_modelindex = ArrayCreate(1, 1)
g_zclass_clawmodel = ArrayCreate(32, 1)
g_zclass_hp = ArrayCreate(1, 1)
g_zclass_spd = ArrayCreate(1, 1)
g_zclass_grav = ArrayCreate(1, 1)
g_zclass_admin = ArrayCreate(1, 1)
g_zclass_credits = ArrayCreate(1, 1)
g_zclass2_realname = ArrayCreate(32, 1)
g_zclass2_name = ArrayCreate(32, 1)
g_zclass2_info = ArrayCreate(32, 1)
g_zclass2_modelsstart = ArrayCreate(1, 1)
g_zclass2_modelsend = ArrayCreate(1, 1)
g_zclass2_playermodel = ArrayCreate(32, 1)
g_zclass2_clawmodel = ArrayCreate(32, 1)
g_zclass2_hp = ArrayCreate(1, 1)
g_zclass2_spd = ArrayCreate(1, 1)
g_zclass2_grav = ArrayCreate(1, 1)
g_zclass2_admin = ArrayCreate(1, 1)
g_zclass2_credits = ArrayCreate(1, 1)
g_zclass_new = ArrayCreate(1, 1)
g_boolArraysCreated = true
return;
}
Agregamos
Código PHP:
g_zclass_level = ArrayCreate(1, 1)
Código PHP:
g_zclass_name = ArrayCreate(32, 1)
g_zclass_info = ArrayCreate(32, 1)
g_zclass_modelsstart = ArrayCreate(1, 1)
g_zclass_modelsend = ArrayCreate(1, 1)
g_zclass_playermodel = ArrayCreate(32, 1)
g_zclass_modelindex = ArrayCreate(1, 1)
g_zclass_clawmodel = ArrayCreate(32, 1)
//Aca lo agregamos
g_zclass_level = ArrayCreate(1, 1)
//
g_zclass_hp = ArrayCreate(1, 1)
g_zclass_spd = ArrayCreate(1, 1)
g_zclass_grav = ArrayCreate(1, 1)
g_zclass_admin = ArrayCreate(1, 1)
g_zclass_credits = ArrayCreate(1, 1)
g_zclass2_realname = ArrayCreate(32, 1)
g_zclass2_name = ArrayCreate(32, 1)
g_zclass2_info = ArrayCreate(32, 1)
g_zclass2_modelsstart = ArrayCreate(1, 1)
g_zclass2_modelsend = ArrayCreate(1, 1)
g_zclass2_playermodel = ArrayCreate(32, 1)
g_zclass2_clawmodel = ArrayCreate(32, 1)
g_zclass2_hp = ArrayCreate(1, 1)
g_zclass2_spd = ArrayCreate(1, 1)
g_zclass2_grav = ArrayCreate(1, 1)
g_zclass2_admin = ArrayCreate(1, 1)
g_zclass2_credits = ArrayCreate(1, 1)
g_zclass_new = ArrayCreate(1, 1)
g_boolArraysCreated = true
return;
}
#3 Van a su menú de zombie
Lo remplazan por este...
Código PHP:
public show_zclass_menu(id,offset)
{
if(offset<0) offset = 0
new keys, curnum, menu[512], szCache1[32], szCache2[32], iCache3
for(new i=offset;i<g_iZClasses;i++)
{
ArrayGetString(g_zclass_name, i, szCache1, charsmax(szCache1))
ArrayGetString(g_zclass_info, i, szCache2, charsmax(szCache2))
iCache3 = ArrayGetCell(g_zclass_admin, i)
/*---Nivel---*/
new Nivel = ArrayGetCell(g_zclass_level, i)
if (Variable_de_nivel[id] >= Nivel)
{
if (i == g_iZombieClass[id]) format(menu,511,"%s^n\d%d. %s %s \r%s", menu, curnum+1, szCache1, szCache2, iCache3 == ADMIN_ALL ? "" : "(Solo Para Admins)")
else format(menu,511,"%s^n\w%d. \r%s \y%s \r%s", menu, curnum+1, szCache1, szCache2, iCache3 == ADMIN_ALL ? "" : "(Solo Para Admins)")
}
/*---Si el nivel no es mayor o igual Le muestra el Menu con Nivel requerido---*/
else format(menu,511,"%s^n\w%d. \d%s %s \r[Nivel:\w%d\r ] %s", menu, curnum+1, szCache1, szCache2, Nivel, iCache3 == ADMIN_ALL ? "" : "(Solo Para Admins)")
g_iMenuOptions[id][curnum] = i
keys += (1<<curnum)
curnum++
if(curnum==8)
break;
}
format(menu,511,"\r[ZiL] \ySeleccione su clase:^n\w%s^n", menu)
if(curnum==8 && offset<12)
{
keys += (1<<8)
format(menu,511,"%s^n\w9. Next",menu)
}
if(offset)
{
keys += (1<<9)
format(menu,511,"%s^n\w0. Back",menu)
}
show_menu(id,keys,menu,-1,"ZClassSelect")
}
public zclass_pushed(id,key)
{
if(key<8)
{
new szCache1[32]
new Nivel = ArrayGetCell(g_zclass_level, g_iMenuOptions[id][key])
if(Variable_de_nivel[id] >= Nivel)
{
if (g_iMenuOptions[id][key] == g_iZombieClass[id])
{
client_cmd(id, "spk %s", LOCK_FAIL);
print_color(id, "%s ^x04%L", MODNAME, LANG_SERVER, "CLASS_CURRENT")
show_zclass_menu(id,g_iMenuOffset[id])
return ;
}
new iCache3 = ArrayGetCell(g_zclass_admin, g_iMenuOptions[id][key])
if ((iCache3 != ADMIN_ALL || !iCache3) && !access(id, iCache3))
{
print_color(id, "%s %L", MODNAME, LANG_SERVER, "CLASS_NO_ACCESS")
show_zclass_menu(id,g_iMenuOffset[id])
return ;
}
g_iNextClass[id] = g_iMenuOptions[id][key]
ArrayGetString(g_zclass_name, g_iMenuOptions[id][key], szCache1, charsmax(szCache1))
if (!g_isZombie[id] || (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime)))
print_color(id, "%s ^x04Has seleccionado el ^x03%s", MODNAME, szCache1)
if (!g_isAlive[id])
print_color(id, "%s x04%L", MODNAME, LANG_SERVER, "CLASS_RESPAWN")
g_iMenuOffset[id] = 0
if (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime))
ExecuteHamB(Ham_CS_RoundRespawn, id)
ExecuteForward(g_fwClassPicked, g_fwDummyResult, id, g_iZombieClass[id]);
}
else
{
print_color(id, "%s ^x04Necesitas ser nivel %d para elegir ^x03%s", MODNAME, Nivel, szCache1);
return;
}
}
else
{
if(key==8)
g_iMenuOffset[id] += 8
if(key==9)
g_iMenuOffset[id] -= 9
show_zclass_menu(id,g_iMenuOffset[id])
}
}
#4 Vamos a
Código PHP:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback, adminflags, credits)
Lo remplazan por este..
Código PHP:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], Nivel, hp, speed, Float:gravity, Float:knockback, adminflags, credits)
#5 Mas abajo agregan
Código PHP:
ArrayPushCell(g_zclass_level, Nivel)
Quedaría.....
Código PHP:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], Nivel, hp, speed, Float:gravity, Float:knockback, adminflags, credits)
{
if (!g_boolArraysCreated)
return 0;
// Strings passed byref
param_convert(1)
param_convert(2)
param_convert(3)
param_convert(4)
// Add the class
ArrayPushString(g_zclass_name, name)
ArrayPushString(g_zclass_info, info)
ArrayPushCell(g_zclass_modelsstart, ArraySize(g_zclass_playermodel))
ArrayPushString(g_zclass_playermodel, model)
ArrayPushCell(g_zclass_modelsend, ArraySize(g_zclass_playermodel))
ArrayPushCell(g_zclass_modelindex, -1)
ArrayPushString(g_zclass_clawmodel, clawmodel)
ArrayPushCell(g_zclass_level, Nivel)
ArrayPushCell(g_zclass_hp, hp)
ArrayPushCell(g_zclass_spd, speed)
ArrayPushCell(g_zclass_grav, gravity)
ArrayPushCell(g_zclass_admin, adminflags)
ArrayPushCell(g_zclass_credits, credits)
// Set temporary new class flag
ArrayPushCell(g_zclass_new, 1)
// Override zombie classes data with our customizations
new i, k, buffer[32], Float:buffer2, nummodels_custom, nummodels_default, prec_mdl[100], size = ArraySize(g_zclass2_realname)
for (i = 0; i < size; i++)
{
ArrayGetString(g_zclass2_realname, i, buffer, charsmax(buffer))
// Check if this is the intended class to override
if (!equal(name, buffer))
continue;
// Remove new class flag
ArraySetCell(g_zclass_new, g_iZClasses, 0)
// Replace caption
ArrayGetString(g_zclass2_name, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_name, g_iZClasses, buffer)
// Replace info
ArrayGetString(g_zclass2_info, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_info, g_iZClasses, buffer)
nummodels_custom = ArrayGetCell(g_zclass2_modelsend, i) - ArrayGetCell(g_zclass2_modelsstart, i)
nummodels_default = ArrayGetCell(g_zclass_modelsend, g_iZClasses) - ArrayGetCell(g_zclass_modelsstart, g_iZClasses)
// Replace each player model and model index
for (k = 0; k < min(nummodels_custom, nummodels_default); k++)
{
ArrayGetString(g_zclass2_playermodel, ArrayGetCell(g_zclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArraySetString(g_zclass_playermodel, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k, buffer)
// Precache player model and replace its modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArraySetCell(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k, engfunc(EngFunc_PrecacheModel, prec_mdl))
}
// We have more custom models than what we can accommodate,
// Let's make some space...
if (nummodels_custom > nummodels_default)
{
for (k = nummodels_default; k < nummodels_custom; k++)
{
ArrayGetString(g_zclass2_playermodel, ArrayGetCell(g_zclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArrayInsertStringAfter(g_zclass_playermodel, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, buffer)
// Precache player model and retrieve its modelindex
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArrayInsertCellAfter(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, engfunc(EngFunc_PrecacheModel, prec_mdl))
}
// Fix models end index for this class
ArraySetCell(g_zclass_modelsend, g_iZClasses, ArrayGetCell(g_zclass_modelsend, g_iZClasses) + (nummodels_custom - nummodels_default))
}
// Replace clawmodel
ArrayGetString(g_zclass2_clawmodel, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_clawmodel, g_iZClasses, buffer)
// Precache clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl)
// Replace health
buffer[0] = ArrayGetCell(g_zclass2_hp, i)
ArraySetCell(g_zclass_hp, g_iZClasses, buffer[0])
// Replace speed
buffer[0] = ArrayGetCell(g_zclass2_spd, i)
ArraySetCell(g_zclass_spd, g_iZClasses, buffer[0])
// Replace gravity
buffer2 = Float:ArrayGetCell(g_zclass2_grav, i)
ArraySetCell(g_zclass_grav, g_iZClasses, buffer2)
// Replace admin flags
buffer2 = ArrayGetCell(g_zclass2_admin, i)
ArraySetCell(g_zclass_admin, g_iZClasses, buffer2)
// Replace credits
buffer2 = ArrayGetCell(g_zclass2_credits, i)
ArraySetCell(g_zclass_credits, g_iZClasses, buffer2)
}
// If class was not overriden with customization data
if (ArrayGetCell(g_zclass_new, g_iZClasses))
{
// Precache default class model and replace modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", model, model)
ArraySetCell(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses), engfunc(EngFunc_PrecacheModel, prec_mdl))
// Precache default clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", clawmodel)
engfunc(EngFunc_PrecacheModel, prec_mdl)
}
g_iZClasses++
return g_iZClasses-1
}
Me orvide de esto xD...........
Para agregar un zombie por niveles hacer lo siguiente...
agregar..
Código PHP:
const zclass1_level = 1 //Nivel del zm
Y van a
Código PHP:
public plugin_precache()
Código PHP:
zclass1_level
Quedaria...
Código PHP:
/*================================================================================
-----------------------------------
-*- [BB] Default Zombie Classes -*-
-----------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
This plugin adds the default zombie classes from Zombie Plague
into Base Builder. All credit belongs to MeRcyLeZZ.
All classes have been balanced, but feel free to edit them if
you are not satisfied.
================================================================================*/
#include <amxmodx>
#include <basebuilder>
#include <hamsandwich>
#include <fun>
#include <cstrike>
/*================================================================================
[Plugin Customization]
=================================================================================*/
// Classic Zombie Attributes
new const zclass1_name[] = { "Classic Zombie" }
new const zclass1_info[] = { "=Balanced=" }
new const zclass1_model[] = { "bb_classic" }
new const zclass1_clawmodel[] = { "v_bloodyhands" }
const zclass1_level = 1 //Nivel del zm
const zclass1_health = 2500
const zclass1_speed = 260
const Float:zclass1_gravity = 1.0
const zclass1_adminflags = ADMIN_ALL
/*============================================================================*/
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
bb_register_zombie_class(zclass1_name, zclass1_info, zclass1_model, zclass1_clawmodel, zclass1_level, zclass1_health, zclass1_speed, zclass1_gravity, 0.0, zclass1_adminflags)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/
Bueno asta aca la guia....
Si algo me falto....O estube mal en algun lugar aganmelo saber...........
Gracias ..
Espero que a muchos les sirva..