Mod Surf! Ayudita X2 [RESUELTO]
#1
Buenas alguien me puede editar este plugin?
Necesito un par de cosas:

- Un comando para quitar todo los niveles , que les setee el nivel a 1. [RESUELTO]
- Un comando para quitar toda la XP, que le setee la XP a 1. [RESUELTO]
- Un comando para ver los level /level [RESUELTO]
- Un comando para ver la experiencia que tengo /xp [RESUELTO]
- Un comando para ver la experiencia restante para pasar de nivel /nextlevel [RESUELTO]
- También necesito cambiar el Sistema de Macro por un Sistema normal en el que yo elija la experiencia para cada nivel [RESUELTO]

- Por ultimo en el EventoMuerte que yo elija la experiencia que te van a dar por una muerte a Cuchillo, Headshot, Normal. [RESUELTO]
Código PHP:
public EventDeathMsg()
{
new 
killer read_data)
new 
victim read_data)
new 
headshot read_data)
new 
xphs

if(PLEVEL[killer] > PLEVEL[victim]) xp 20 
if(PLEVEL[killer] < PLEVELvictim ]) xp 30 
if(PLEVEL[killer] == PLEVEL[victim]) xp 25 

PKS
victim ] = 0

if( victim == killer ) return PLUGIN_CONTINUE;

if(
headshot)
{
xp xp 20  
hs 
10
}

if(
PKS[killer] < 20PKS[killer]++

xp xp PKS[killer]

add_xp(killerxphs)
check_level(killer)

return 
PLUGIN_CONTINUE;
}

public 
add_xpidxphs )
{
new 
newlevel LEVELS[PLEVELid ]]-PXPid ]

PXPid ] = PXPid ] + xp 
Algo como esto que yo entiendo mejor en el EventoMuerte


Gracias, el que pueda ayudar con lo que sea se agradece eso es todo.

Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include hamsandwich
#include fakemeta
#include adv_vault

#define NivelSiguente(%1) (%1 * 400 + 200)
#define NivelMax 400

new Nivel[33], exp[33], gBlock[33]
new 
g_maxplayerscvar_expHS

new g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
cvar_expHS register_cvar("Puntos_HS""3");
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}

public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim)) 
        return 
        
    
exp[attacker]+= 30
    
if(get_pcvar_num(cvar_expHS)) {
        if(
hsexp[attacker]+= 10
    
}
    
    if(
weaponid == CSW_KNIFE) {
        
exp[attacker]+= 15
    
}
        
    
ver_nivel(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente(Nivel[id]) && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente(Nivel[id]))
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);

Responder
#2
Saludos Carlos,
1*:
Código PHP:
register_concmd("zone_quitar_lvl""cmd_quitarlvl"ADMIN_RCON"<Nombre>"
Código PHP:
public cmd_quitarlvl(idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33]
    
read_argv(1argcharsmax(arg))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"El player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = 1
    exp
[Player] = 0
    
    
return PLUGIN_HANDLED;


2*
Código PHP:
register_clcmd("/level""verlevel"
Código PHP:
public verlevel(id)
{
    
client_print(idprint_chat"^3tu nivel es ^4%d"Nivel[id])

3*
Código PHP:
register_clcmd("/xp""VerExp"
Código PHP:
public VerExp(id)
{
    
client_print(idprint_chat"^3tu exp es ^4%d"exp[id])

4*
Código PHP:
register_clcmd("/nextlevel""nextlevel"
Código PHP:
public nextlevel (id)
{
        new 
nextlvl = (NivelSiguente(Nivel[id]) - exp[id])
    
client_print(idprint_chat"^3Siguiente nivel en ^4%d XP"nextlvl)

Responder
#3
Cuál es tu problema con la macros, no hay nada mejor que eso (?
Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

#define NivelSiguente(%1) (%1 * 400 + 200)
#define NivelMax 400

new Nivel[33], exp[33], gBlock[33]
new 
g_maxplayers;

new 
g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")

    
register_clcmd"say /level""verNivel" );
    
register_clcmd"say /xp""verEXP" );
    
register_clcmd"say /nextlevel""verNextLvl" );
    
register_concmd("surf_quitarnivel""iQuitarTodo"ADMIN_IMMUNITY);
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}
public 
verNiveliID )    client_printiIDprint_chat"tu nivel es: %i"NiveliID ] );
public 
verEXPiID client_printiIDprint_chat"Tu experiencia es: %i"expiID ] );
public 
verNextLvliID ){
    new 
siglvl = ( NivelSiguente(NiveliID ]) - expiID ] );
    
client_printiIDprint_chat"Te hace falta %i de experiencia para el nuevo nivel"siglvl );
}
public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);

    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return

    
//normal
    
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25

    
//headshot
    
if(hsexp[attacker]+= 10
    
//cuchillo
    
if(weaponid == CSW_KNIFE)    exp[attacker]+= 15

    ver_nivel
(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente(Nivel[id]) && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente(Nivel[id]))
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}
public 
iQuitarTodo(idlevelcid
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED
    
    
static arg[32], Playernombre[32];
    
read_argv(1argsizeof arg);

    
Player cmd_target(idargCMDTARGET_ALLOW_SELF);

    
get_user_name(Playernombrecharsmax(nombre));

    if(!
Player)
        return 
PLUGIN_HANDLED
    
    Nivel
[Player] = 1
    exp
[Player] = 0

    client_print
(Playerprint_chat"Te han borrado todos tus datos de tu cuenta!")
    
    
ver_nivel(Player)
    
    return 
PLUGIN_HANDLED

Responder
#4
(16/08/2017, 11:16 PM)AagF escribió: Saludos Carlos,
1*:
Código PHP:
register_concmd("zone_quitar_lvl""cmd_quitarlvl"ADMIN_RCON"<Nombre>"
Código PHP:
public cmd_quitarlvl(idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33]
    
read_argv(1argcharsmax(arg))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"El player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = 1
    exp
[Player] = 0
    
    
return PLUGIN_HANDLED;


2*
Código PHP:
register_clcmd("/level""verlevel"
Código PHP:
public verlevel(id)
{
    
client_print(idprint_chat"^3tu nivel es ^4%d"Nivel[id])

3*
Código PHP:
register_clcmd("/xp""VerExp"
Código PHP:
public VerExp(id)
{
    
client_print(idprint_chat"^3tu exp es ^4%d"exp[id])

4*
Código PHP:
register_clcmd("/nextlevel""nextlevel"
Código PHP:
public nextlevel (id)
{
    
client_print(idprint_chat"^3Siguiente nivel en ^4%d XP"NivelSiguente(Nivel[id]))


Muchisimas Gracias!!!

(16/08/2017, 11:19 PM)SoundBlaster escribió: Cuál es tu problema con la macros, no hay nada mejor que eso (?
Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

#define NivelSiguente(%1) (%1 * 400 + 200)
#define NivelMax 400

new Nivel[33], exp[33], gBlock[33]
new 
g_maxplayers;

new 
g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")

    
register_clcmd"say /level""verNivel" );
    
register_clcmd"say /xp""verEXP" );
    
register_clcmd"say /nextlevel""verNextLvl" );
    
register_concmd("surf_quitarnivel""iQuitarTodo"ADMIN_IMMUNITY);
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}
public 
verNiveliID )    client_printiIDprint_chat"tu nivel es: %i"NiveliID ] );
public 
verEXPiID client_printiIDprint_chat"Tu experiencia es: %i"expiID ] );
public 
verNextLvliID ){
    new 
siglvl = ( NivelSiguente(NiveliID ]) - expiID ] );
    
client_printiIDprint_chat"Te hace falta %i de experiencia para el nuevo nivel"siglvl );
}
public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);

    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return

    
//normal
    
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25

    
//headshot
    
if(hsexp[attacker]+= 10
    
//cuchillo
    
if(weaponid == CSW_KNIFE)    exp[attacker]+= 15

    ver_nivel
(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente(Nivel[id]) && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente(Nivel[id]))
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}
public 
iQuitarTodo(idlevelcid
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED
    
    
static arg[32], Playernombre[32];
    
read_argv(1argsizeof arg);

    
Player cmd_target(idargCMDTARGET_ALLOW_SELF);

    
get_user_name(Playernombrecharsmax(nombre));

    if(!
Player)
        return 
PLUGIN_HANDLED
    
    Nivel
[Player] = 1
    exp
[Player] = 0

    client_print
(Playerprint_chat"Te han borrado todos tus datos de tu cuenta!")
    
    
ver_nivel(Player)
    
    return 
PLUGIN_HANDLED


No lo se utilizar, utilizo 1010 niveles y no se cual es el macro exacto para que todo vaya bien y ordenado.

Con el sistema normal puedo añadir la experiencia de cada nivel.
Responder
#5
Sí tu lo dices.

Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

#define NivelMax 400
new const NivelSiguente[NivelMax] =
{
    
50,
    
100,
    
200,
    
400,
    
600,
    
800,
    ...
}

new 
Nivel[33], exp[33], gBlock[33]
new 
g_maxplayers;

new 
g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")

    
register_clcmd"say /level""verNivel" );
    
register_clcmd"say /xp""verEXP" );
    
register_clcmd"say /nextlevel""verNextLvl" );
    
register_concmd("surf_quitarnivel""iQuitarTodo"ADMIN_IMMUNITY);
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}
public 
verNiveliID )    client_printiIDprint_chat"tu nivel es: %i"NiveliID ] );
public 
verEXPiID client_printiIDprint_chat"Tu experiencia es: %i"expiID ] );
public 
verNextLvliID ){
    new 
siglvl NivelSiguenteNiveliID ] ]-expiID ]
    
client_printiIDprint_chat"Te hace falta %i de experiencia para el nuevo nivel"siglvl );
}
public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);

    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return

    
//normal
    
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25

    
//headshot
    
if(hsexp[attacker]+= 10
    
//cuchillo
    
if(weaponid == CSW_KNIFE)    exp[attacker]+= 15

    ver_nivel
(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente[Nivelid ]] && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente[Nivel[id]])
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}
public 
iQuitarTodo(idlevelcid
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED
    
    
static arg[32], Playernombre[32];
    
read_argv(1argsizeof arg);

    
Player cmd_target(idargCMDTARGET_ALLOW_SELF);

    
get_user_name(Playernombrecharsmax(nombre));

    if(!
Player)
        return 
PLUGIN_HANDLED
    
    Nivel
[Player] = 1
    exp
[Player] = 0

    client_print
(Playerprint_chat"Te han borrado todos tus datos de tu cuenta!")
    
    
ver_nivel(Player)
    
    return 
PLUGIN_HANDLED

Responder
#6
(16/08/2017, 11:33 PM)SoundBlaster escribió: Sí tu lo dices.

Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

#define NivelMax 400
new const NivelSiguente[NivelMax] =
{
    
50,
    
100,
    
200,
    
400,
    
600,
    
800,
    ...
}

new 
Nivel[33], exp[33], gBlock[33]
new 
g_maxplayers;

new 
g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")

    
register_clcmd"say /level""verNivel" );
    
register_clcmd"say /xp""verEXP" );
    
register_clcmd"say /nextlevel""verNextLvl" );
    
register_concmd("surf_quitarnivel""iQuitarTodo"ADMIN_IMMUNITY);
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}
public 
verNiveliID )    client_printiIDprint_chat"tu nivel es: %i"NiveliID ] );
public 
verEXPiID client_printiIDprint_chat"Tu experiencia es: %i"expiID ] );
public 
verNextLvliID ){
    new 
siglvl NivelSiguenteNiveliID ] ]-expiID ]
    
client_printiIDprint_chat"Te hace falta %i de experiencia para el nuevo nivel"siglvl );
}
public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);

    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return

    
//normal
    
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25

    
//headshot
    
if(hsexp[attacker]+= 10
    
//cuchillo
    
if(weaponid == CSW_KNIFE)    exp[attacker]+= 15

    ver_nivel
(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente[Nivelid ]] && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente[Nivel[id]])
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}
public 
iQuitarTodo(idlevelcid
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED
    
    
static arg[32], Playernombre[32];
    
read_argv(1argsizeof arg);

    
Player cmd_target(idargCMDTARGET_ALLOW_SELF);

    
get_user_name(Playernombrecharsmax(nombre));

    if(!
Player)
        return 
PLUGIN_HANDLED
    
    Nivel
[Player] = 1
    exp
[Player] = 0

    client_print
(Playerprint_chat"Te han borrado todos tus datos de tu cuenta!")
    
    
ver_nivel(Player)
    
    return 
PLUGIN_HANDLED


Pero si tu dices que es mejor explicame como es para ponerlo.

Me puedes decir que cambiaste? Porque ya edite el sma
Responder
#7
Todo lo que pediste.
Responder
#8
(16/08/2017, 11:33 PM)SoundBlaster escribió: Sí tu lo dices.

Código PHP:
/*
Creditos:
1-Destro (Por si guardado adv_vault)
2-Kikizon (Por su sistema de cuentas)
3-NkkI (aclare dudas de item deploy)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <colorchat>
#include <dhudmessage>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

#define NivelMax 400
new const NivelSiguente[NivelMax] =
{
    
50,
    
100,
    
200,
    
400,
    
600,
    
800,
    ...
}

new 
Nivel[33], exp[33], gBlock[33]
new 
g_maxplayers;

new 
g_contra[33][20], g_contra2[33][20], g_cuenta[33][32];

new 
g_vault,g_MsgVguig_MsgShowMenu;
new 
g_Estado[33], g_Can[33], g_Fecha[33][32];

// CONST & ENUMS
enum {
    
LVL,
    
EXP,
    
FECHA,
    
PASSWORD,
    
DATA_M
};
enum {
    
NOREGISTRADO 0,
    
REGISTRADO,
    
LOGUEADO,
    
ESTADOS
};
new const 
Estado[ESTADOS][] = { "Sin Registrar""Registrado""Logueado" };
new 
g_campo[DATA_M];

new const 
WEAPONENTNAMES[][] = { """weapon_hegrenade""weapon_xm1014""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_g3sg1""weapon_deagle""weapon_ak47""weapon_knife"
}

// MODELS & SOUND
new const Glock181[] = "models/Surf/v_Glock18-1.mdl"USP[] = "models/Surf/v_Usp-1.mdl"Knife1[] = "models/Surf/v_Knife-1.mdl"
Knife2[] = "models/Surf/v_Knife-2.mdl"Knife3[] = "models/Surf/v_Knife-3.mdl"Knife4[] = "models/Surf/v_Knife-4.mdl"
Deagle1[] = "models/Surf/v_Deagle-1.mdl"Deagle2[] = "models/Surf/v_Deagle-2.mdl"Deagle3[] = "models/Surf/v_Deagle-3.mdl"
MP51[] = "models/Surf/v_Mp5-1.mdl"Ak471[] = "models/Surf/v_Ak47-1.mdl"Ak472[] = "models/Surf/v_Ak47-2.mdl",  
M4a11[] = "models/Surf/v_M4a1-1.mdl"M4a12[] = "models/Surf/v_M4a1-2.mdl"M31[] = "models/Surf/v_M3-1.mdl",
M32[] = "models/Surf/v_M3-2.mdl"M33[] = "models/Surf/v_M3-3.mdl"M34[] = "models/Surf/v_M3-4.mdl",
Awp1[] = "models/Surf/v_Awp-1.mdl"Awp2[] = "models/Surf/v_Awp-2.mdl"Awp3[] = "models/Surf/v_Awp-3.mdl"
Taka1[] = "models/Surf/v_Taka-1.mdl"Taka2[] = "models/Surf/v_Taka-2.mdl"Taka3[] = "models/Surf/v_Taka-3.mdl"
Xm10141[] = "models/Surf/v_Xm1014-1.mdl"Xm10142[] = "models/Surf/v_Xm1014-2.mdl"Xm10143[] = "models/Surf/v_Xm1014-3.mdl",   
He1[] = "models/Surf/v_Hegranade-1.mdl"He2[] = "models/Surf/v_Hegranade-2.mdl"He3[] = "models/Surf/v_Hegranade-3.mdl"M249[] = "models/Surf/v_m249.mdl"

new const sonido[] = "Nivel/Nivel.wav"
new const Ambient[] = "sound/surfSound/ambient.mp3"

public plugin_init()
{
    
register_plugin("Surf""2.0""Nazi.-")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("DeathMsg""EventoMuerte""a")
    
    
RegisterHam(Ham_TakeDamage"player""fwHamTakeDamage");
    for (new 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        
    
register_concmd("sf_lvl""cmd_lvl"ADMIN_RCON"<Nombre> <Nivel>")
    
register_concmd("sf_exp""cmd_exp"ADMIN_RCON"<Nombre> <Experiencia>")

    
register_clcmd"say /level""verNivel" );
    
register_clcmd"say /xp""verEXP" );
    
register_clcmd"say /nextlevel""verNextLvl" );
    
register_concmd("surf_quitarnivel""iQuitarTodo"ADMIN_IMMUNITY);
    
    
register_clcmd("INGRESAR_PASSWORD""Contra");
    
register_clcmd("nightvision""menuprim")
    
    
g_maxplayers get_maxplayers()
    
    
g_MsgVgui get_user_msgid("VGUIMenu");
    
g_MsgShowMenu get_user_msgid("ShowMenu");
    
register_message(g_MsgVgui"message_VGUImenu");
    
register_message(g_MsgShowMenu"message_VGUImenu");
    
register_forward(FM_ClientUserInfoChanged"fw_clientinfo_changed");
    
    
g_vault adv_vault_open("Cuentas"false);
    
g_campo[EXP] = adv_vault_register_field(g_vault"EXP")
    
g_campo[LVL] = adv_vault_register_field(g_vault"LVL")
    
g_campo[FECHA] = adv_vault_register_field(g_vault"FECHA"DATATYPE_STRING32);
    
g_campo[PASSWORD] = adv_vault_register_field(g_vault"PW"DATATYPE_STRING20);
    
adv_vault_init(g_vault);
    
    
set_task(0.9,"hudjuego",_,_,_,"b")
}
public 
verNiveliID )    client_printiIDprint_chat"tu nivel es: %i"NiveliID ] );
public 
verEXPiID client_printiIDprint_chat"Tu experiencia es: %i"expiID ] );
public 
verNextLvliID ){
    new 
siglvl NivelSiguenteNiveliID ] ]-expiID ]
    
client_printiIDprint_chat"Te hace falta %i de experiencia para el nuevo nivel"siglvl );
}
public 
plugin_cfg() {
    
server_cmd("mp_autoteambalance 1")
    
server_cmd("mp_startmoney 16000")
    
server_cmd("mp_freezetime 0")
}

public 
plugin_precache() {
    
set_lights("h")
    
precache_model(Glock181)
    
precache_model(USP)
    
precache_model(Knife1)
    
precache_model(Knife2)
    
precache_model(Knife3)
    
precache_model(Knife4)
    
precache_model(Deagle1)
    
precache_model(Deagle2)
    
precache_model(Deagle3)
    
precache_model(MP51)
    
precache_model(Ak471)
    
precache_model(Ak472)
    
precache_model(M4a11)
    
precache_model(M4a12)
    
precache_model(M31)
    
precache_model(M32)
    
precache_model(M33)
    
precache_model(M34)
    
precache_model(Awp1)
    
precache_model(Awp2)
    
precache_model(Awp3)
    
precache_model(Taka1)
    
precache_model(Taka2)
    
precache_model(Taka3)
    
precache_model(Xm10141)
    
precache_model(Xm10142)
    
precache_model(Xm10143)
    
precache_model(He1)
    
precache_model(He2)
    
precache_model(He3)
    
precache_model(M249)
    
precache_generic(Ambient)
    
precache_sound(sonido)
}
public 
client_putinserver(id) {
    
get_user_name(idg_cuenta[id], 31);
    
get_time("%c"g_Fecha[id], 31);
    
g_contra[id][0] = '^0';
    
g_Estado[id] = NOREGISTRADO;
    
    
g_Can[id] = 0;
    
Nivel[id] = 
    exp
[id] = 0
    
    Cargar
(id);
}
public 
client_disconnect(id) {
    
Guardar(id);
}

public 
event_round_start() {
    
    for(new 
1<= get_maxplayers();i++) {
        if(!
is_user_connected(i))continue
        
gBlock[i] = 0
    
}
}

public 
EventoMuerte() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker);

    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return

    
//normal
    
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25

    
//headshot
    
if(hsexp[attacker]+= 10
    
//cuchillo
    
if(weaponid == CSW_KNIFE)    exp[attacker]+= 15

    ver_nivel
(attacker)
}

public 
ver_nivel(id) {
    new 
subido false
    
while(exp[id] >= NivelSiguente[Nivelid ]] && Nivel[id] < NivelMax) {
        
Nivel[id]++ 
        
subido true;
    }

    if(
subido) {
        
client_cmd(id"spk ^"%s^""sonido);
        
ColorChat(idNORMAL"^3Felicitaciones, subiste al nivel ^4%d"Nivel[id])
        
subido false
    
}
}

public 
fw_Item_Deploy_Post(wpn) {
    static 
idid get_weapon_ent_owner(wpn);
    
    if (!
pev_valid(id) || !is_user_aliveid )) return;
    
    static 
WeaponIDWeaponID cs_get_weapon_id(wpn); 
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Knife1);
    if(
WeaponID == CSW_GLOCK18) if(Nivel[id] >= 10set_pev(idpev_viewmodel2Glock181);
    if(
WeaponID == CSW_USP) if(Nivel[id] >= 10set_pev(idpev_viewmodel2USP);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 15set_pev(idpev_viewmodel2Deagle1);
    if(
WeaponID == CSW_MP5NAVY) if(Nivel[id] >= 60set_pev(idpev_viewmodel2MP51);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 50set_pev(idpev_viewmodel2Ak471);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 60set_pev(idpev_viewmodel2M4a11);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 40set_pev(idpev_viewmodel2M31);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Awp1);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 100set_pev(idpev_viewmodel2Taka1);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 70set_pev(idpev_viewmodel2Xm10141);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 25set_pev(idpev_viewmodel2He1);
    if(
WeaponID == CSW_M249) if(Nivel[id] >= 320set_pev(idpev_viewmodel2M249);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 110set_pev(idpev_viewmodel2Knife2);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Deagle2);
    if(
WeaponID == CSW_AK47) if(Nivel[id] >= 240set_pev(idpev_viewmodel2Ak472);
    if(
WeaponID == CSW_M4A1) if(Nivel[id] >= 250set_pev(idpev_viewmodel2M4a12);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 130set_pev(idpev_viewmodel2M32);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 200set_pev(idpev_viewmodel2Awp2);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 130set_pev(idpev_viewmodel2Taka2);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 150set_pev(idpev_viewmodel2Xm10142);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 170set_pev(idpev_viewmodel2He2);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 250set_pev(idpev_viewmodel2Knife3);
    if(
WeaponID == CSW_DEAGLE) if(Nivel[id] >= 340set_pev(idpev_viewmodel2Deagle3);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 260set_pev(idpev_viewmodel2M33);
    if(
WeaponID == CSW_AWP) if(Nivel[id] >= 380set_pev(idpev_viewmodel2Awp3);
    if(
WeaponID == CSW_G3SG1) if(Nivel[id] >= 300set_pev(idpev_viewmodel2Taka3);
    if(
WeaponID == CSW_XM1014) if(Nivel[id] >= 400set_pev(idpev_viewmodel2Xm10143);
    if(
WeaponID == CSW_HEGRENADE) if(Nivel[id] >= 260set_pev(idpev_viewmodel2He3);
    
    if(
WeaponID == CSW_KNIFE) if(Nivel[id] >= 350set_pev(idpev_viewmodel2Knife4);
    if(
WeaponID == CSW_M3) if(Nivel[id] >= 380set_pev(idpev_viewmodel2M34);
}

public 
fwHamTakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_connected(attacker))
    return 
HAM_IGNORED 
    
    
new weapon get_user_weapon(attacker)
    
    switch(
weapon)
    {
        case 
CSW_GLOCK18 : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_USP : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_KNIFE : if(Nivelattacker ] >= 10)SetHamParamFloat(4damage 1.2)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 15)SetHamParamFloat(4damage 1.2)
        case 
CSW_MP5NAVY : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_AK47 : if(Nivelattacker ] >= 50)SetHamParamFloat(4damage 1.2)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 60)SetHamParamFloat(4damage 1.2)
        case 
CSW_M3 : if(Nivelattacker ] >= 40)SetHamParamFloat(4damage 1.2)
        case 
CSW_AWP : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 100)SetHamParamFloat(4damage 1.2)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 70)SetHamParamFloat(4damage 1.2)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 25)SetHamParamFloat(4damage 1.2)
        case 
CSW_M249 : if(Nivelattacker ] >= 330)SetHamParamFloat(4damage 1.2)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 110)SetHamParamFloat(4damage 1.4)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_AK47 : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.4)
        case 
CSW_M4A1 : if(Nivelattacker ] >= 250)SetHamParamFloat(4damage 1.4)
        case 
CSW_M3 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_AWP : if(Nivelattacker ] >= 200)SetHamParamFloat(4damage 1.4)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 130)SetHamParamFloat(4damage 1.4)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 150)SetHamParamFloat(4damage 1.4)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 170)SetHamParamFloat(4damage 1.4)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 240)SetHamParamFloat(4damage 1.6)
        case 
CSW_DEAGLE : if(Nivelattacker ] >= 340)SetHamParamFloat(4damage 1.6)
        case 
CSW_M3 : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
        case 
CSW_AWP : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 1.6)
        case 
CSW_G3SG1 : if(Nivelattacker ] >= 300)SetHamParamFloat(4damage 1.6)
        case 
CSW_XM1014 : if(Nivelattacker ] >= 400)SetHamParamFloat(4damage 1.6)
        case 
CSW_HEGRENADE : if(Nivelattacker ] >= 260)SetHamParamFloat(4damage 1.6)
    }
    switch(
weapon)
    {
        case 
CSW_KNIFE : if(Nivelattacker ] >= 350)SetHamParamFloat(4damage 2.0)
        case 
CSW_M3 : if(Nivelattacker ] >= 380)SetHamParamFloat(4damage 2.0)
    }
    return 
PLUGIN_CONTINUE;
}

public 
hudjuego(id) {
    for(new 
id 1id <= g_maxplayersid++) {
        if(!
is_user_connected(id)) continue;
        
        new 
name[33]
        
get_user_name(id,name,32)
        
        if(
is_user_alive(id)) {
            
set_dhudmessage(17200, -1.00.7906.01.0)
            
show_dhudmessage(id"[Informacion]^n[Nivel: %d/%d]^n[Exp: %d/%d]"Nivel[id], NivelMaxexp[id], NivelSiguente[Nivel[id]])
            
            
set_dhudmessage(0311840.00.2106.01.0)
            
show_dhudmessage(id"[Nombre: %s]"name)
        } else {
            new 
spect pev(idpev_iuser2);
                
            if(!
spect) return;
                
            new 
nombre[32]
            
get_user_name(spectnombrecharsmax(nombre))
            new 
salud get_user_health(spect)
            new 
armor get_user_armor(spect)
            
            
set_dhudmessage(1901901900.00.2106.01.0)
            
show_dhudmessage(id"Espiando ---> %s^nSalud: %d^nArmadura: %d^nNivel: %d"nombresaludarmorNivel[spect])
        }
    }
}

public 
ShowLogMenu(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit), "Sistema de cuentas by \dkikizon^n\wBienvenido \r%s^n\wESTADO: \r%s^n\wTu ultima visita fue: \r%s"g_cuenta[id], Estado[g_Estado[id]], g_Fecha[id]);
    
    new 
menu menu_create(Tit,"menu_log");
    
    
menu_additem(menu, (g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Loguearse":"\dLoguearse""1");
    
menu_additem(menu, (g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id]))?"Registrarse^n":"\dRegistrarse^n""2");
    
menu_additem(menu, (g_Estado[id] == LOGUEADO && !g_Can[id])?"Cambiar Contra":"\dCambiar Contra""3");
    
    
menu_display(idmenu0);
}
public 
menu_log(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0: {
            if(
g_Estado[id] == REGISTRADO && adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa tu PASSWORD para entrar a tu cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }
        }
        case 
1: {
            if(
g_Estado[id] == NOREGISTRADO && !adv_vault_get_prepare(g_vault_g_cuenta[id])) {
                
client_print(idprint_center"Ingresa una PASSWORD para crear una cuenta");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No puedes elegir esta opcion");
                return 
PLUGIN_HANDLED;
            }    
        }
        case 
2: {
            if(
g_Estado[id] == LOGUEADO && !g_Can[id]) {
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
                
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            } else {
                
client_print(idprint_center"No estas logueado o ya cambiaste tu password durante el mapa");
                return 
PLUGIN_HANDLED;
            }
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
Confirmar(id) {
    new 
Tit[128];
    
formatex(Titcharsmax(Tit),"La password sera \r%s^n^n\yConfirmar?"g_contra2[id]);
    
    new 
menu menu_create(Tit,"menu_confirmar");
    
    
menu_additem(menu,"\rSi\w, confirmar","1");
    
menu_additem(menu,"\rNo\w, deseo reescribirla","2");
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
    
menu_display(idmenu0);
}
public 
menu_confirmar(idmenuitem) {
    switch(
item) {
        case 
0: {
            switch(
g_Estado[id]) {
                case 
LOGUEADO: {
                    
copy(g_contra[id], 19 ,g_contra2[id]);
                    
Guardar(id);
                    
client_print(idprint_center"Tu password ha sido cambiada satisfactoriamente");
                    
g_Can[id] = 1;
                }
                case 
NOREGISTRADO: {    
                    
client_print(idprint_center"Tu cuenta ha sido creada satisfactoriamente");
                    
client_cmd(id"spk ^"%s^""sonido)
                    
copy(g_contra[id], 31g_contra2[id]);
                    
Guardar(id);
                    
jTeam(id);
                }
            }
        }
        case 
1: {
            
menu_destroy(menu);
            
client_cmd(id,"messagemode INGRESAR_PASSWORD");
            if(
g_Estado[id] == LOGUEADO)
                
client_print(idprint_center"Ingresa tu nueva PASSWORD");
            else
                
client_print(idprint_center"Ingresa la PASSWORD para tu nueva cuenta");
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
menuprim(id) {
    new 
menu menu_create("\wMenu\r Surf""handlerprim")
    
menu_additem(menu"\wCuenta\d (Datos)""1")
    
menu_additem(menu"\wCambiar\r Equipo""2")
    
menu_additem(menu"\wGuardar\d (Datos)""3")
    
    
menu_display(idmenu0)
}

public 
handlerprim(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item) {
        case 
0ShowLogMenu(id)
        case 
1mostrar_team(id)
        case 
2: {
            
Guardar(id)
            
ColorChat(idNORMAL"^4DATOS GUARDADOS^3 CORRECTAMENTE")
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED;
}

public 
mostrar_team(id) {
    new 
menu menu_create("\wElije un\r Equipo:""menu_handler")
    
menu_additem(menu"\wAnti-Terroristas""1")
    
menu_additem(menu"\wTerroristas""2")
    
menu_additem(menu"\wEspectador""3")
    
    
menu_display(idmenu0);
}

public 
menu_handler(idmenuitem) {
    if(
gBlock[id]) {
        
ColorChat(idNORMAL"^4No puedes cambiar de equipo durante esta^3 Ronda")
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
MENU_EXIT:{
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
        case 
0: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_CT)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Anti-Terroristas")
        }
        case 
1: {
            
user_silentkill(id)
            
cs_set_user_team(id,CS_TEAM_T)
            
ColorChat(idNORMAL"^4Ahora estas en el equipo ^3Terroristas")
        }
        case 
2: {
            if(
cs_set_user_team(id,CS_TEAM_SPECTATOR)) {
                
user_silentkill(id)
                
cs_set_user_team(id,CS_TEAM_SPECTATOR)
                
ColorChat(idNORMAL"^4Ahora estas como ^3Espectador")
            }
        }
    }
    
gBlock[id] = 1;
    
menu_destroymenu );
    return 
PLUGIN_HANDLED
}

public 
fw_clientinfo_changed(idbuffer) {
    if(
is_user_connected(id)) {
        if(
g_Estado[id] == LOGUEADO) {
            static 
OldName[33];
            
            
engfunc(EngFunc_InfoKeyValuebuffer"name"OldNamesizeof OldName 1);
            
            if(
equal(OldNameg_cuenta[id])) 
                return 
FMRES_IGNORED;
            
            
set_user_info(id"name"g_cuenta[id]);
            
client_cmd(id"setinfo ^"name^" ^"%s^""g_cuenta[id]);
        }
    }
    return 
FMRES_IGNORED;    
}

public 
Guardar(id) {
    if(!
is_user_connected(id)) return;
    
    
adv_vault_set_start(g_vault);
    
adv_vault_set_field(g_vaultg_campo[EXP], exp[id])
    
adv_vault_set_field(g_vaultg_campo[LVL], Nivel[id])
    
adv_vault_set_field(g_vaultg_campo[FECHA], g_Fecha[id]);
    
adv_vault_set_field(g_vaultg_campo[PASSWORD], g_contra[id]);
    
adv_vault_set_end(g_vault0g_cuenta[id]);
}
public 
Cargar(id) {
    if(!
adv_vault_get_prepare(g_vault_g_cuenta[id])) {
        
g_Estado[id] = NOREGISTRADO;
        return;
    } else {
        
g_Estado[id] = REGISTRADO;
        
exp[id] = adv_vault_get_field(g_vaultg_campo[EXP]);
        
Nivel[id] = adv_vault_get_field(g_vaultg_campo[LVL]);
        
adv_vault_get_field(g_vaultg_campo[FECHA], g_Fecha[id], charsmax(g_Fecha[]));
        
adv_vault_get_field(g_vaultg_campo[PASSWORD], g_contra[id], charsmax(g_contra[]));
    }
    
}

public 
Contra(id) {
    
read_args(g_contra[id], charsmax(g_contra));
    
remove_quotes(g_contra[id]);trim(g_contra[id]);
    
    if(
equal(g_contra[id],"") || containi(g_contra[id]," ") != -) {
        
client_print(idprint_center"Tu password contiene errores");
        return 
1;
    }
    
    switch(
g_Estado[id]) {
        case 
NOREGISTRADO: {
            
client_print(idprint_center"Confirma tu password para proseguir");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
        case 
REGISTRADO: {
            new 
buffer[40];
            
adv_vault_get_prepare(g_vault_g_cuenta[id]);
            
adv_vault_get_field(g_vaultg_campo[PASSWORD], buffercharsmax(buffer));
            
            if(
equal(bufferg_contra[id])) {
                
Guardar(id);
                
client_print(idprint_center"Te logueaste satisfactoriamente en tu cuenta");
                
client_cmd(id"spk ^"%s^""sonido)
                
jTeam(id);
            } else {
                
ShowLogMenu(id);
                
client_print(idprint_center"Password Incorrecta.");
            }
        }
        case 
LOGUEADO: {
            if(
g_Can[id]) {
                
client_print(idprint_center"Ya cambiaste tu contra en este mapa");
                return 
PLUGIN_HANDLED;
            }
            
client_print(idprint_center"Confirma tu password para cambiarla...");
            
copy(g_contra2[id], 19g_contra[id]);
            
Confirmar(id);
        }
    }
    return 
PLUGIN_HANDLED;
}
public 
message_VGUImenu(msgiddestid) {
    if(
g_Estado[id] != LOGUEADO)
        
ShowLogMenu(id);

    return 
1;
}
public 
jTeam(id){
    static 
teammsg_blockteammsg_block_vguirestorevgui;
    
    
restore get_pdata_int(id510);
    
vgui restore & (1<<0);
    
    if (
vgui)
        
set_pdata_int(id510restore & ~(1<<0));
    
    
teammsg_block get_msg_block(g_MsgShowMenu);
    
teammsg_block_vgui get_msg_block(g_MsgVgui);
    
    
set_msg_block(g_MsgShowMenuBLOCK_ONCE);
    
set_msg_block(g_MsgVguiBLOCK_ONCE);
    
    
engclient_cmd(id"jointeam""5");
    
engclient_cmd(id"joinclass""5");
    
    
set_msg_block(g_MsgShowMenuteammsg_block);
    
set_msg_block(g_MsgVguiteammsg_block_vgui);
    
    if (
vgui
        
set_pdata_int(id510restore);
        
    
g_Estado[id] = LOGUEADO;
}

public 
cmd_lvl (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
Nivel[Player] = str_to_num(arg2)
    
    return 
PLUGIN_HANDLED;
}

public 
cmd_exp (idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
    
    new 
arg[33], arg2[10]
    
read_argv(1argcharsmax(arg))
    
read_argv(2arg2charsmax(arg2))
    
    new 
Player cmd_target(idarg,CMDTARGET_ONLY_ALIVE)
    
    if (!
Player)
    {
        
client_print(idprint_console"Player no esta.")
        return 
PLUGIN_HANDLED;
    }
    
    
exp[Player]+= str_to_num(arg2)
    
ver_nivel(id)
    
    return 
PLUGIN_HANDLED;


stock get_weapon_ent_owner(ent){
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}
public 
iQuitarTodo(idlevelcid
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED
    
    
static arg[32], Playernombre[32];
    
read_argv(1argsizeof arg);

    
Player cmd_target(idargCMDTARGET_ALLOW_SELF);

    
get_user_name(Playernombrecharsmax(nombre));

    if(!
Player)
        return 
PLUGIN_HANDLED
    
    Nivel
[Player] = 1
    exp
[Player] = 0

    client_print
(Playerprint_chat"Te han borrado todos tus datos de tu cuenta!")
    
    
ver_nivel(Player)
    
    return 
PLUGIN_HANDLED


Gracias amigo, me podrias explicar esto por favor

Código PHP:
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25 

Que es esto de 20, 30, 25 osea como se cual es la que me va a dar, es que soy nuevo en esto que significa < > == , eso ps. Para ayudarme en un futuro
o de 20, 30, 25 osea como se cual es la que me va a dar, es que soy nuevo en esto que significa < > == , eso ps. Para ayudarme en un futuro
Responder
#9
Son condicionales, deberías de leer algo sobre programación
Código PHP:
if(Nivel[attacker] > Nivel[victim]) expattacker ] += 20 //Si el atacante es nivel más arriba que la victima gana 20
    
if(Nivel[attacker] < Nivelvictim ]) expattacker ] += 30//Si el atacante es nivel inferior que la victima gana 30
    
if(Nivel[attacker] == Nivel[victim]) expattacker ] += 25//Si el atacante y la victima son el mismo nivel gana 25 
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)