HNS ExpMod (hns con niveles)
#1
Bueno, publico mi hns expmod, lo publique en alliedmods pero nunca le di soporte, aca le voy a dar soporte y ademas solucione algunos bugs que tenia el plugin, ahi va:

Hide&Seek con NIVELES!

• Sistema de niveles/rangos (De la Z a la A) por EXP
• Sistema de mejoras/habilidades por puntos y por plata
• Sistema de loteria (Por EXP): Si acertas al numero te llevas el pozo, sino si sos el que mas cerca estubo del numero te llevas tu EXP multiplicada por 10
• Sistema de SHOP (Por Niveles/Rangos, Incluye una Super Granada con doble de daño)
• Sistema de mejoras (Frost Grenade Impacto, Multi-Jump, Granada Frostnova, Chance de arma, Multiplicador de exp, Poder para la Deagle, Multiplicador de plata)
• Sistema de habilidades CT/TT/CARNAGE:
CTs: Vida, Daño, Chaleco, Tiempo de congelación
TTs: Vida, Daño, Chaleco, Tiempo de congelación
CARNAGE: Mejorar recoil, Aumentar velocidad, Aumentar velocidad de disparo, Disminuir daño recibido
• Sistema de logros (CTs, TTs, Generales, 43 e/todos)
• Sistema de Happy/After Hour
• Sistema de clases
• Hud Completamente modificable
• Sistema de party (3 jugadores maxs)
• Modos (Carnage/Deagle/Cuchi/Lider)
• Muchas cosas mas...

Lista de comandos/cvars:
Comandos:
• amx_reloadpremiums (Recarga los premiums del archivo premiums.ini en caso de ser modificado)
• +multijump (Para usar la mejora Multi-Jump en caso de comprarla y tenerla activada)
Say:
• /Menu: Muestra el menu principal
• /Combo: Muestra el combo party actual
• /Carnage: Muestra cuantas rondas faltan para el modo carnage
• /Top: Muestra un top
• /Shop: Muestra el menu de shop
• /Compras y /Reglas: Pueden editarlo, pongan un archivo .txt en cstrike con el nombre reglas y compras .txt
• /Loteria: Abre el menu para jugar a la loteria
• /Suerte: Prueba tu suerte!
Cvars: (amxmodx/configs/expmod_cfg.cfg)

Changelog:
Código:
- v2.0.0: Lanzamiento del plugin
- v2.0.1: Se agrega el define ADMIN_ACCESS_ALL (Acceso menu de admin/realizar loteria)
- v2.0.2: Se corrigen algunos bugs de SQL Injection y de messagemode

Plugins:
• HidenSeek ExpMod v2.0.2 by Gonza.-*
• Clases HidenSeek ExpMod v1.0.0 by Gonza.-*

Plugins adicionales: (Incluidos en el rar)
• LaserMines v2.3 by SandStriker
• Parachute v1.3 by KRoTaL/JTP10181

Eso es todo espero que lo disfruten, si encuentran algun error o algo por el estilo sientanse libres de hacermelo saber para poder solucionarlo, o postear la solucion asi actualizo el post, saludos!


Archivos adjuntos
.sma   Descargar AMXX / hns_expmod.sma (Tamaño: 329.12 KB / Descargas: 1,367)
.rar   HNS-ExpMod_files.rar (Tamaño: 1.56 MB / Descargas: 1,395)
.sma   Descargar AMXX / hns_expmod_clases.sma (Tamaño: 1.46 KB / Descargas: 835)
Responder
#2
Bravo Gonza Gran sonrisa
Responder
#3
Código:
- v2.0.2: Se corrigen algunos bugs de SQL Injection

yo los sigo viendo CrabCrabCrab

Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Responder
#4
Mostrame al menos uno (Si es que es verdad)

Edit: Encontre uno mas, y lo tape tambien; habia que tener acceso a ADMIN_ACCESS_ALL igual para utilizarlo
Responder
#5
Hay tantos hns exp o level o con tanta basura.... ;D

Buen aporte xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Responder
#6
exagerastes un poco xD

a muchos les va a servir seguro Whatever
Responder
#7
Gracias por el aporte, no juego nunca HNS pero para gente novata como yo seguro que me aporta algo!

Si lo pruebo tranquilo que te busco bugs Lengua

P.D.: Claans no es por nada pero si ves errores en el SQL podrías ponerlos? Gracias.

Saludos!
Responder
#8
(14/01/2014, 11:19 PM)[Anti] escribió: exagerastes un poco xD

a muchos les va a servir seguro Whatever

xDDD, Le va a servir para cagar un server xDD
Responder
#9
(14/01/2014, 12:48 PM)Kikeado escribió: Hay tantos hns exp o level o con tanta basura.... ;D

Buen aporte xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Que clase de problemas tenes?
Responder
#10
Grosso! gran trabajo Gran sonrisa

Saludos!
CENSURADO
Responder
#11
Todavia me acuerdo cuando en AM te puteaban porque le cagaste el laburo a muchos jajajaj

PD: Esos bugs que muchos veian ya estan solucionados?
Responder
#12
Si señor! Los bugs de SQL Injection estan solucionados! No se si habra otro tipo de bug, pero si lo hay dudo mucho que afecte al juego en lo mas minimo!
Responder
#13
buen plugin (y)

jamas tendran un plugin anti roccoxx Whatever
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#14
Código PHP:
public INGRESAR_RESPUESTA(id)
{
    if (
p_status[id] != STATUS_REGISTERED)
    {
        
server_cmd("kick #%d ^"Ocurrio un error con tu usuario^""get_user_userid(id))
        return
    }
    
    if (
p_password_intentos[id] <= 0)
    {
        
server_cmd("kick #%d ^"%s^""get_user_userid(id), szKickMsg)
        return
    }
    
    
read_args(p_respuesta[id], charsmax(p_respuesta[]))
    
remove_quotes(p_respuesta[id])
    
trim(p_respuesta[id])
    
    if (!
strlen(p_respuesta[id]))
    {
        
ColorChat(idGREEN"%s^x01 La^x04 Respuesta^x01 no contiene digitos"szPrefix)
        
        
set_hudmessage(2552552550.0250.2006.06.00.01.0)
        
ShowSyncHudMsg(idg_SyncHud"La Respuesta no contiene digitos")
        
        return
    }
    
    
g_query SQL_PrepareQuery(g_hTuple"SELECT respuesta, password FROM cuentas WHERE nombre COLLATE NOCASE LIKE ^"%s^""p_name[id])
    
    if (
SQL_Execute(g_query))
    {
        static 
respuesta[192]; SQL_ReadResult(g_query0respuestacharsmax(respuesta))
        
        if (
equal(p_respuesta[id], respuesta))
        {
            static 
password[192]; SQL_ReadResult(g_query1passwordcharsmax(password))
            
            
ColorChat(idGREEN"%s^x01 Respuesta correcta, tu contraseña es:^x04 %s"szPrefixpassword)
            
            
set_hudmessage(2552552550.0250.2006.06.00.01.0)
            
ShowSyncHudMsg(idg_SyncHud"Respuesta correcta, tu contraseña es:^n%s"password)
            
            
menu_registrarse(id)
        }
        
        else
        {
            
p_password_intentos[id]--
            
            
ColorChat(idGREEN"%s^x01 Respuesta incorrecta, tenes^x04 %d^x01 intento%s mas"szPrefixp_password_intentos[id], p_password_intentos[id] >= "s" "")
            
            
set_hudmessage(2552552550.0250.2006.06.00.01.0)
            
ShowSyncHudMsg(idg_SyncHud"Respuesta incorrecta^ntenes %d intento%s mas^n\
            Para cancelar presiona ^"
ESCAPE^""p_password_intentos[id], p_password_intentos[id] >= "s" "")
            
            
client_cmd(id"messagemode INGRESAR_RESPUESTA")
        }
    }
    
    else
    {
        
ColorChat(idGREEN"%s^x01 Ocurrio un error con tu cuenta"szPrefix)
        
        
set_hudmessage(2552552550.0250.2006.06.00.01.0)
        
ShowSyncHudMsg(idg_SyncHud"Ocurrio un error con tu cuenta")
        
        return
    }


Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Responder
#15
y que hay con eso?
Responder
#16
Se puede hacer injeccion

Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Responder
#17
Y como? Decime como lo fixeo o donde esta el bug, yo en esa funcion veo todo bien, y sin posibilidad de hacer injection, ya que la consulta es la siguiente:
Código:
g_query = SQL_PrepareQuery(g_hTuple, "SELECT respuesta, password FROM cuentas WHERE nombre COLLATE NOCASE LIKE ^"%s^"", p_name[id])
y con el nombre no podes poner ", por ende no podes hacer injection en esa funcion, si sabes verdaderamente como, decime! gracias
Responder
#18
(21/01/2014, 03:16 AM)Gonza.-* escribió: Y como? Decime como lo fixeo o donde esta el bug, yo en esa funcion veo todo bien, y sin posibilidad de hacer injection, ya que la consulta es la siguiente:
Código:
g_query = SQL_PrepareQuery(g_hTuple, "SELECT respuesta, password FROM cuentas WHERE nombre COLLATE NOCASE LIKE ^"%s^"", p_name[id])
y con el nombre no podes poner ", por ende no podes hacer injection en esa funcion, si sabes verdaderamente como, decime! gracias
Ponete de nombre "DROP TABLE cuentas;#
Que yo recuerde si había forma de ponerse " en el nombre...
Responder
#19
Nope, no hay forma...
[Imagen: s52cCiM_x2gyq8nAjdUD.png]
name.cfg: name algo";DROP TABLE
Responder
#20
Había un caracter para escaparlo y poder verlo ingame si no recuerdo mal... no estoy seguro.
Responder
#21
igualmente, al conectarse checkea si el nombre contiene caracteres prohibidos, y al cambiarse el nombre tambien lo chequea, asi que seria imposible...
Código PHP:
public client_putinserver(id)
{
    if (!
g_pluginenable) return
    
    
set_task(0.1"range_check"id+TASK_RANGE__"b")
    if (
is_user_bot(id)) p_bot[id] = 1
    
else set_task(0.2"spec_check"id+TASK_SPECTATOR__"b")
    
    static 
simbol[2], reti
    get_user_name
(idp_name[id], 32)
    
    if (
contain_restricted(p_name[id], simbol1))
    {
        
server_cmd("kick #%d ^"Tu nombre contiene un caracter no permitido [%s]^""get_user_userid(id), simbol)
        return
    }
    else if (
equali(p_name[id], "loteria"))
    {
        
server_cmd("kick #%d ^"Tu nombre esta restringido^""get_user_userid(id))
        return
    }
    
    
p_alive[id] = 0
    p_bot
[id] = 0
    p_name
[id] = ""
    
p_email[id] = ""
    
p_skype[id] = ""
    
p_password[id] = ""
    
p_password_intentos[id] = get_pcvar_num(pCvar_password_intentos)
    
p_status[id] = STATUS_UNREGISTERED
    ExecuteForward
(g_fwStatusretidSTATUS_UNREGISTERED)
    
p_level[id] = 1
    p_rango
[id] = 0
    p_class
[id] = 0
    p_class_next
[id] = -1
    p_points
[id] = 10
    p_exp
[id][EXP_LEVEL] = 0
    p_exp
[id][EXP_NORMAL] = 0
    p_plata
[id] = 0
    p_monedas
[id] = 0
    p_damage
[id][DAMAGE_HECHO] = 0
    p_damage
[id][DAMAGE_RECIBIDO] = 0
    p_frags
[id][FRAGS_TOTAL] = 0
    p_frags
[id][FRAGS_KNIFE] = 0
    p_frags
[id][FRAGS_LASER] = 0
    p_frags
[id][FRAGS_WEAPON] = 0
    p_frags
[id][FRAGS_RECIBIDOS] = 0
    p_frags
[id][FRAGS_CARNAGE] = 0
    p_hud
[id][HUD_RED] = 255
    p_hud
[id][HUD_GREEN] = 0
    p_hud
[id][HUD_BLUE] = 0
    p_hud
[id][HUD_EFFECT] = 0
    p_hud
[id][HUD_MIN] = 0
    p_hud
[id][HUD_AB] = 0
    p_hud
[id][HUD_DESAC] = 0
    p_hudx
[id] = 0.0
    p_hudy
[id] = 0.15
    
for (04i++)
    {
        
p_hab[id][HAB_TT][i] = 0
        p_hab
[id][HAB_CT][i] = 0
        p_hab
[id][HAB_CARNAGE][i] = 0
    
}
    
/* Informacion de p_party_info
    * 0 = Esta en party
    * 1 = Es creador del party
    * 2 = ID Del party
    * 3 = Envio de invitaciones
    * 4 = Acepta o no party
    * 5 = Combo de exp
    */
    
p_party_info[id][0] = 0
    p_party_info
[id][1] = 0
    p_party_info
[id][2] = 0
    p_party_info
[id][3] = 0
    p_party_info
[id][4] = 1
    p_party_info
[id][5] = 0
    p_mult
[id] = 1
    p_mult_venc
[id] = ""
    
p_menu_top[id] = 0
    p_menu_admin
[id][0] = 0
    p_menu_admin
[id][1] = 0
    p_menu_mejoras
[id] = 0
    p_menu_logros
[id] = LOGRO_TT
    p_menu_desbanear
[id] = ""
    
p_buy[id] = 0
    p_super_granada
[id] = 0
    p_gravedad
[id] = 0
    p_velocidad
[id] = 0
    p_noflash
[id] = 0
    p_frosted
[id] = 0
    
for (0sizeof(Mejoras[]); i++)
    {
        
p_mejoras[id][i][0] = 0
        p_mejoras
[id][i][1] = 0
    
}
    for (
0sizeof(Logros_TT[]); i++) p_logros_tt[id][i] = 0
    
for (0sizeof(Logros_CT[]); i++) p_logros_ct[id][i] = 0
    
for (0sizeof(Logros_GENERALES[]); i++) p_logros_generales[id][i] = 0
    
for (new MENUES:i2i2 MENUESi2++) p_menu_page[id][i2] = 0
    p_matados
[id][MATADO_KNIFE] = 0
    p_matados
[id][MATADO_COMUN] = 0
    p_matados
[id][MATADO_RAYO] = 0
    p_matados
[id][MATADO_LASER] = 0
    p_round_buy
[id] = 0
    p_round_vida
[id] = 0
    p_grenade_mode
[id] = 0
    p_multijump
[id] = 0
    p_poder_deagle
[id] = 0
    p_apostado
[id][0] = 0
    p_apostado
[id][1] = 0
    p_apostado
[id][2] = 0
    p_suerte
[id][0] = 0
    p_suerte
[id][1] = 0
    p_suerte
[id][2] = 0
    p_round_mult
[id] = 0
    p_respawn
[id] = 0
}

public 
fw_InfoChanged(idbuffer)
{
    static 
szNName[33]
    if (
is_user_connected(id) && p_status[id] == STATUS_LOGED)
    {
        
engfunc(EngFunc_InfoKeyValuebuffer"name"szNNamecharsmax(szNName))

        if(
equal(szNNamep_name[id]))
            return 
FMRES_IGNORED

        engfunc
(EngFunc_SetClientKeyValueidbuffer"name"p_name[id])
        
client_cmd(id"name ^"%s^""p_name[id])
        
client_print(idprint_console"No puedes cambiarte el nombre, ya que es tu usuario")
        
ColorChat(idGREEN"%s^x01 No puedes cambiarte el nombre, ya que es tu usuario"szPrefix)
        return 
FMRES_SUPERCEDE
    
}
    
    else if (
is_user_connected(id) && p_status[id] != STATUS_LOGED)
    {
        static 
simbol[2]

        
engfunc(EngFunc_InfoKeyValuebuffer"name"szNNamecharsmax(szNName))

        if(
equal(szNNamep_name[id]))
            return 
FMRES_IGNORED
        
        
if (contain_restricted(szNNamesimbol1))
        {
            
client_print(idprint_console"Caracter Prohibido [%s]"simbol)
            
ColorChat(idGREEN"%s^x01 Caracter Prohibido^x04 [%s]"szPrefixsimbol)
            
engfunc(EngFunc_SetClientKeyValueidbuffer"name"p_name[id])
            
client_cmd(id"name ^"%s^""p_name[id])
            return 
FMRES_SUPERCEDE
        
}
        
        else if (
equali(szNName"loteria"))
        {
            
ColorChat(idGREEN"%s^x01 Ese nombre esta restringido"szPrefix)
            
engfunc(EngFunc_SetClientKeyValueidbuffer"name"p_name[id])
            
client_cmd(id"name ^"%s^""p_name[id])
            return 
FMRES_SUPERCEDE
        
}

        
engfunc(EngFunc_SetClientKeyValueidbuffer"name"szNName)
        
client_cmd(id"name ^"%s^""szNName)
        
p_name[id] = szNName
        menu_registrarse
(id)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}

stock contain_restricted(const string[], character[], len)
{
    static 
i
    
for (0sizeof(RESTRICTED_CHARS); i++)
    {
        if (
containi(stringRESTRICTED_CHARS[i]) != -1)
        {
            
formatex(characterlen"%s"RESTRICTED_CHARS[i])
            return 
1
        
}
    }
    return 
0
}

// Caracteres prohibidos
new const RESTRICTED_CHARS[][] = {"/""("")""\", "'", "%", "^""} 
Responder
#22
"\" => "\\"
Responder
#23
Ahi lo arregle y actualiza el plugin del post!
Responder
#24
Compilando hns_expmod_clases.sma + hns_expmod_laser.sma aparece:

Warning: Symbol is never used: "RANGOS" on line...

Iba a borrar pero donde está?

Otra cosa, se te olvido el modelo parachute.mdl Gran sonrisa

Saludos!
Responder
#25
esta en el include, ya lo saque, y tambien agregue el model parachute.mdl al .rar
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)