Poner zombie por niveles (Basebuilder Niveles)
#1
Saludos esta es mi primera guía y espero hacerlo bien xDDD GeniusGenius

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(321)
g_zclass_info ArrayCreate(321)
g_zclass_modelsstart ArrayCreate(11)
g_zclass_modelsend ArrayCreate(11)
g_zclass_playermodel ArrayCreate(321)
g_zclass_modelindex ArrayCreate(11)
g_zclass_clawmodel ArrayCreate(321)
g_zclass_hp ArrayCreate(11)
g_zclass_spd ArrayCreate(11)
g_zclass_grav ArrayCreate(11)
g_zclass_admin ArrayCreate(11)
g_zclass_credits ArrayCreate(11)

g_zclass2_realname ArrayCreate(321)
g_zclass2_name ArrayCreate(321)
g_zclass2_info ArrayCreate(321)
g_zclass2_modelsstart ArrayCreate(11)
g_zclass2_modelsend ArrayCreate(11)
g_zclass2_playermodel ArrayCreate(321)
g_zclass2_clawmodel ArrayCreate(321)
g_zclass2_hp ArrayCreate(11)
g_zclass2_spd ArrayCreate(11)
g_zclass2_grav ArrayCreate(11)
g_zclass2_admin ArrayCreate(11)
g_zclass2_credits ArrayCreate(11)
g_zclass_new ArrayCreate(11)

g_boolArraysCreated true

return;


Agregamos

Código PHP:
g_zclass_level ArrayCreate(11
Quedaría asi........

Código PHP:
g_zclass_name ArrayCreate(321)
g_zclass_info ArrayCreate(321)
g_zclass_modelsstart ArrayCreate(11)
g_zclass_modelsend ArrayCreate(11)
g_zclass_playermodel ArrayCreate(321)
g_zclass_modelindex ArrayCreate(11)
g_zclass_clawmodel ArrayCreate(321)
//Aca lo agregamos
g_zclass_level ArrayCreate(11)
//
g_zclass_hp ArrayCreate(11)
g_zclass_spd ArrayCreate(11)
g_zclass_grav ArrayCreate(11)
g_zclass_admin ArrayCreate(11)
g_zclass_credits ArrayCreate(11)

g_zclass2_realname ArrayCreate(321)
g_zclass2_name ArrayCreate(321)
g_zclass2_info ArrayCreate(321)
g_zclass2_modelsstart ArrayCreate(11)
g_zclass2_modelsend ArrayCreate(11)
g_zclass2_playermodel ArrayCreate(321)
g_zclass2_clawmodel ArrayCreate(321)
g_zclass2_hp ArrayCreate(11)
g_zclass2_spd ArrayCreate(11)
g_zclass2_grav ArrayCreate(11)
g_zclass2_admin ArrayCreate(11)
g_zclass2_credits ArrayCreate(11)
g_zclass_new ArrayCreate(11)

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<0offset 0
        
        
new keyscurnummenu[512], szCache1[32], szCache2[32], iCache3
        
        
for(new i=offset;i<g_iZClasses;i++)
        {
            
ArrayGetString(g_zclass_nameiszCache1charsmax(szCache1))
            
ArrayGetString(g_zclass_infoiszCache2charsmax(szCache2))
            
iCache3 ArrayGetCell(g_zclass_admini)
            
            
/*---Nivel---*/
            
new Nivel ArrayGetCell(g_zclass_leveli)
            
            if (
Variable_de_nivel[id] >= Nivel)
            {
                if (
== g_iZombieClass[id]) format(menu,511,"%s^n\d%d. %s %s \r%s"menucurnum+1szCache1szCache2iCache3 == ADMIN_ALL "" "(Solo Para Admins)")
                else 
format(menu,511,"%s^n\w%d. \r%s \y%s \r%s"menucurnum+1szCache1szCache2iCache3 == 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"menucurnum+1szCache1szCache2NiveliCache3 == 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==&& 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_levelg_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"MODNAMELANG_SERVER"CLASS_CURRENT")
                    
show_zclass_menu(id,g_iMenuOffset[id])
                    return ;
                }
                
                new 
iCache3 ArrayGetCell(g_zclass_adming_iMenuOptions[id][key])
                
                if ((
iCache3 != ADMIN_ALL || !iCache3) && !access(idiCache3))
                {
                    
print_color(id"%s %L"MODNAMELANG_SERVER"CLASS_NO_ACCESS")
                    
show_zclass_menu(id,g_iMenuOffset[id])
                    return ;
                }
                
                
g_iNextClass[id] = g_iMenuOptions[id][key]
                
                
ArrayGetString(g_zclass_nameg_iMenuOptions[id][key], szCache1charsmax(szCache1))
                
                if (!
g_isZombie[id] || (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime)))
                    
print_color(id"%s ^x04Has seleccionado el ^x03%s"MODNAMEszCache1)
                
                if (!
g_isAlive[id])
                    
print_color(id"%s x04%L"MODNAMELANG_SERVER"CLASS_RESPAWN")
                
                
g_iMenuOffset[id] = 0
                
                
if (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime))
                    
ExecuteHamB(Ham_CS_RoundRespawnid)
                
                
ExecuteForward(g_fwClassPickedg_fwDummyResultidg_iZombieClass[id]);
            }
            else 
            {
                
print_color(id"%s ^x04Necesitas ser nivel %d para elegir ^x03%s"MODNAMENivelszCache1); 
                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[],  hpspeedFloat:gravityFloat:knockbackadminflagscredits

Lo remplazan por este..
Código PHP:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], NivelhpspeedFloat:gravityFloat:knockbackadminflagscredits

#5 Mas abajo agregan

Código PHP:
    ArrayPushCell(g_zclass_levelNivel

Quedaría.....

Código PHP:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], NivelhpspeedFloat:gravityFloat:knockbackadminflagscredits)
    {
        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_namename)
        
ArrayPushString(g_zclass_infoinfo)
        
        
ArrayPushCell(g_zclass_modelsstartArraySize(g_zclass_playermodel))
        
ArrayPushString(g_zclass_playermodelmodel)
        
ArrayPushCell(g_zclass_modelsendArraySize(g_zclass_playermodel))
        
ArrayPushCell(g_zclass_modelindex, -1)
        
ArrayPushString(g_zclass_clawmodelclawmodel)
        
ArrayPushCell(g_zclass_levelNivel)  
        
ArrayPushCell(g_zclass_hphp)
        
ArrayPushCell(g_zclass_spdspeed)
        
ArrayPushCell(g_zclass_gravgravity)
        
ArrayPushCell(g_zclass_adminadminflags)
        
ArrayPushCell(g_zclass_creditscredits)
        
        
// Set temporary new class flag
        
ArrayPushCell(g_zclass_new1)
        
        
// Override zombie classes data with our customizations
        
new ikbuffer[32], Float:buffer2nummodels_customnummodels_defaultprec_mdl[100], size ArraySize(g_zclass2_realname)
        for (
0sizei++)
        {
            
ArrayGetString(g_zclass2_realnameibuffercharsmax(buffer))
            
            
// Check if this is the intended class to override
            
if (!equal(namebuffer))
                continue;
            
            
// Remove new class flag
            
ArraySetCell(g_zclass_newg_iZClasses0)
            
            
// Replace caption
            
ArrayGetString(g_zclass2_nameibuffercharsmax(buffer))
            
ArraySetString(g_zclass_nameg_iZClassesbuffer)
            
            
// Replace info
            
ArrayGetString(g_zclass2_infoibuffercharsmax(buffer))
            
ArraySetString(g_zclass_infog_iZClassesbuffer)
            
            
nummodels_custom ArrayGetCell(g_zclass2_modelsendi) - ArrayGetCell(g_zclass2_modelsstarti)
            
nummodels_default ArrayGetCell(g_zclass_modelsendg_iZClasses) - ArrayGetCell(g_zclass_modelsstartg_iZClasses)
            
            
// Replace each player model and model index
            
for (0min(nummodels_customnummodels_default); k++)
            {
                
ArrayGetString(g_zclass2_playermodelArrayGetCell(g_zclass2_modelsstarti) + kbuffercharsmax(buffer))
                
ArraySetString(g_zclass_playermodelArrayGetCell(g_zclass_modelsstartg_iZClasses) + kbuffer)
                
                
// Precache player model and replace its modelindex with the real one
                
formatex(prec_mdlcharsmax(prec_mdl), "models/player/%s/%s.mdl"bufferbuffer)
                
ArraySetCell(g_zclass_modelindexArrayGetCell(g_zclass_modelsstartg_iZClasses) + kengfunc(EngFunc_PrecacheModelprec_mdl))
            }
            
            
// We have more custom models than what we can accommodate,
            // Let's make some space...
            
if (nummodels_custom nummodels_default)
            {
                for (
nummodels_defaultnummodels_customk++)
                {
                    
ArrayGetString(g_zclass2_playermodelArrayGetCell(g_zclass2_modelsstarti) + kbuffercharsmax(buffer))
                    
ArrayInsertStringAfter(g_zclass_playermodelArrayGetCell(g_zclass_modelsstartg_iZClasses) + 1buffer)
                    
                    
// Precache player model and retrieve its modelindex
                    
formatex(prec_mdlcharsmax(prec_mdl), "models/player/%s/%s.mdl"bufferbuffer)
                    
ArrayInsertCellAfter(g_zclass_modelindexArrayGetCell(g_zclass_modelsstartg_iZClasses) + 1engfunc(EngFunc_PrecacheModelprec_mdl))
                }
                
                
// Fix models end index for this class
                
ArraySetCell(g_zclass_modelsendg_iZClassesArrayGetCell(g_zclass_modelsendg_iZClasses) + (nummodels_custom nummodels_default))
            }
            
            
// Replace clawmodel
            
ArrayGetString(g_zclass2_clawmodelibuffercharsmax(buffer))
            
ArraySetString(g_zclass_clawmodelg_iZClassesbuffer)
            
            
// Precache clawmodel
            
formatex(prec_mdlcharsmax(prec_mdl), "models/%s.mdl"buffer)
            
engfunc(EngFunc_PrecacheModelprec_mdl)
            
            
// Replace health
            
buffer[0] = ArrayGetCell(g_zclass2_hpi)
            
ArraySetCell(g_zclass_hpg_iZClassesbuffer[0])
            
            
// Replace speed
            
buffer[0] = ArrayGetCell(g_zclass2_spdi)
            
ArraySetCell(g_zclass_spdg_iZClassesbuffer[0])
            
            
// Replace gravity
            
buffer2 Float:ArrayGetCell(g_zclass2_gravi)
            
ArraySetCell(g_zclass_gravg_iZClassesbuffer2)
            
            
// Replace admin flags
            
buffer2 ArrayGetCell(g_zclass2_admini)
            
ArraySetCell(g_zclass_adming_iZClassesbuffer2)
            
            
// Replace credits
            
buffer2 ArrayGetCell(g_zclass2_creditsi)
            
ArraySetCell(g_zclass_creditsg_iZClassesbuffer2)
        }
        
        
// If class was not overriden with customization data
        
if (ArrayGetCell(g_zclass_newg_iZClasses))
        {
            
// Precache default class model and replace modelindex with the real one
            
formatex(prec_mdlcharsmax(prec_mdl), "models/player/%s/%s.mdl"modelmodel)
            
ArraySetCell(g_zclass_modelindexArrayGetCell(g_zclass_modelsstartg_iZClasses), engfunc(EngFunc_PrecacheModelprec_mdl))
            
            
// Precache default clawmodel
            
formatex(prec_mdlcharsmax(prec_mdl), "models/%s.mdl"clawmodel)
            
engfunc(EngFunc_PrecacheModelprec_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 //Nivel del zm 

Y van a
Código PHP:
public plugin_precache() 
Y agregan...........

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 //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_namezclass1_infozclass1_modelzclass1_clawmodelzclass1_levelzclass1_healthzclass1_speedzclass1_gravity0.0zclass1_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 }
*/ 
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 ..NothingdohereNothingdohereNothingdohereNothingdohere

Espero que a muchos les sirva..Fuck yeahFuck yeah
Responder
#2
Oie cy
Responder
#3
Buena Guia! lastima Las Faltas de Ortografia!
Responder
#4
¿Para que hacer un tutorial que ya esta echo? Acà.
No le veo sentido alguno.
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Crash'
Responder
#5
(28/07/2015, 08:27 AM)Elaion escribió: ¿Para que hacer un tutorial que ya esta echo? Acà.
No le veo sentido alguno.

Es para ZP, esta es para bb ._.
Responder
#6
(28/07/2015, 08:27 AM)Elaion escribió: ¿Para que hacer un tutorial que ya esta echo? Acà.
No le veo sentido alguno.
Parecen lo mismo solo es adaptarlo
Responder
#7
Como dijo death esto es para basebuilder . ...... es bien diferente a un zp..........

Muchas personas no saben adaptarlo . ...
Responder
#8
(28/07/2015, 11:59 AM)-.- escribió: Como dijo death esto es para basebuilder . ...... es bien diferente a un zp..........

Muchas personas no saben adaptarlo . ...

Deberías hacer un tuto de sistema de niveles
Responder
#9
En ningun momento estas explicando para que estas creando las Array/variables...
[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
#10
(28/07/2015, 09:48 AM)DeathKing escribió:
(28/07/2015, 08:27 AM)Elaion escribió: ¿Para que hacer un tutorial que ya esta echo? Acà.
No le veo sentido alguno.

Es para ZP, esta es para bb ._.

es fácil es lo mismo ¬¬



debería ir en aportes

en todo caso gracias por aportar Whatever

(28/07/2015, 03:15 PM)DeathKing escribió:
(28/07/2015, 11:59 AM)-.- escribió: Como dijo death esto es para basebuilder . ...... es bien diferente a un zp..........

Muchas personas no saben adaptarlo . ...

Deberías hacer un tuto de sistema de niveles
solo es adaptar..
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#11
Disculpen por revivir...

Aunque este baneado dejo esta informacion para los que usen esta "guia"

En basebuilder.inc reemplazar esto

Cita:native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback = 0.0, adminflags = ADMIN_ALL, credits = 0 )

------------------>

Cita:native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], level, hp, speed, Float:gravity, Float:knockback = 0.0, adminflags = ADMIN_ALL, credits = 0 )

Si no hacen eso les tirara error al compilar
Responder
#12
me salta error perdon por revivir


Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Undefined symbol "Variable_de_nivel" on line 3020
Warning: Expression has no effect on line 3020
Error: Expected token: ";", but found "]" on line 3020
Error: Invalid expression, assumed zero on line 3020
Error: Too many error messages on one line on line 3020

Compilation aborted.
4 Errors.
Could not locate output file C:\Program Files (x86)\Counter-Strike 1.62\cstrike\addons\amxmodx\plugins\basebuilder65.amx (compile failed).
Responder
#13
(28/03/2017, 04:46 AM)OverRick_NVO escribió: me salta error perdon por revivir


Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Undefined symbol "Variable_de_nivel" on line 3020
Warning: Expression has no effect on line 3020
Error: Expected token: ";", but found "]" on line 3020
Error: Invalid expression, assumed zero on line 3020
Error: Too many error messages on one line on line 3020

Compilation aborted.
4 Errors.
Could not locate output file C:\Program Files (x86)\Counter-Strike 1.62\cstrike\addons\amxmodx\plugins\basebuilder65.amx (compile failed).

DafuqGenius
Debes reemplazar variable de nivel por tu variable.

Responder
#14
Open in the right way but I have 4 problems and it is the only problem I cannot fix it and how to fix it

Error: Undefined symbol "Variable_de_nivel" on line 2276
Warning: Expression has no effect on line 2276
Error: Expected token: ";", but found "]" on line 2276
Error: Invalid expression, assumed zero on line 2276
Error: Too many error messages on one line on line 2276
Responder
#15
no existe esa variable, tienes que reemplazarla por tu variables nivel, aparte existe alliedmodders ingles ya que acá se habla puro español. :lo que sea:
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)