MOD Smash Bros
#1
AUTOR: Skylar
VERSIÓN: 2.1
CRÉDITOS:
  • Tano (Idea del modo - usuario de otro foro)
  • TioWinny (Mapa del modo - usuario de otro foro)
  • Totopizza (Mejoras de algunas funciones)
  • Hypnotize (Mejoras de algunas funciones)

DESCRIPCIÓN: El modo está basado en el juego Super Smash Bros en el cual se enfrentan 2 jugadores en una plataforma aérea y gana el que le quite toda la vida al enemigo o el que logra tirar al enemigo de la plataforma.
La diferencia de este modo con el juego, es que en la plataforma aérea se enfrentan todos contra todos y cuentan con cuchillo, 250 de vida y dos habilidades.

HABILIDADES:
  • Doble Salto (Máximo de saltos configurables por cvars)
  • Empujar (Esta habilidad se utiliza con el click izquierdo[click primario])

CVARS:
  • sm_mod_active(default 1 - cualquier valor diferente a 0 activa el mod ) - activar/desactivar modo.
  • sm_min_players(default 2) - mínimo de jugadores que se requieren para comenzar el modo.
  • sm_health(default 250) - vida de los usuarios.
  • sm_radius(default 150.0) - radio en el que se puede empujar a los enemigos.
  • sm_maxjumps(default 1) - cantidad de saltos que el usuario puede dar.
  • sm_time_hability(default 3.0) - conteo en el que se puede usar la habilidad empujar.

REQUERIMIENTOS:
IMÁGENES:
[Imagen: 3zw51uE.jpg]
[Imagen: AEzO9c1.jpg]
[Imagen: er2A7ls.jpg]
[Imagen: PGxbTvG.jpg]

Algún problema, bug o duda me lo comentan.
Todo tipo de sugerencia y mejoras al código son bienvenidas!

EDIT: Me olvidé de modificar las categorías, si algún moderador me haría el favor de editarlas se lo agradecería mucho!

Gracias Nothingdohere


Archivos adjuntos
.rar   MOD Smash Bros.rar (Tamaño: 9.58 KB / Descargas: 34)
.rar   Sm_Mario_Sky&Winny.rar (Tamaño: 393.52 KB / Descargas: 39)

Responder
#2
En que ayude yo? xdxd
Ahora me lo veo

esto
Código PHP:
RANK_DATA 
jamas lo usas xd



Código PHP:
public event_RoundStart( ) {
    if( 
get_playersnum( ) < get_pcvar_numg_CvarsCVAR_MIN_PLAYERS ] ) ) {
        
cc0"%s Se requieren minimo^4 %d players^1 para comenzar el modo."g_szPrefixget_pcvar_numg_CvarsCVAR_MIN_PLAYERS ] ) );
        
server_cmd"sv_restartround 1" );
    }

    for( new 
0get_maxplayers( ); i++ )
        
fn_ManageDatai);


deberías checar si los 4 players ya tienen team

cachea el valor de get_maxplayers( ) en plugin_init()
Código PHP:
for( new 0get_maxplayers( ); i++ ) 
---->
Código PHP:
for( new 1<= get_maxplayers( ); i++ ) 


me parece mejor un sistema de cuentas o guardado pro steamID para que no te roben Whatever
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#3
(24/11/2018, 07:56 PM)Hypnotize escribió: En que ayude yo? xdxd
Ahora me lo veo

esto
Código PHP:
RANK_DATA 
jamas lo usas xd



Código PHP:
public event_RoundStart( ) {
    if( 
get_playersnum( ) < get_pcvar_numg_CvarsCVAR_MIN_PLAYERS ] ) ) {
        
cc0"%s Se requieren minimo^4 %d players^1 para comenzar el modo."g_szPrefixget_pcvar_numg_CvarsCVAR_MIN_PLAYERS ] ) );
        
server_cmd"sv_restartround 1" );
    }

    for( new 
0get_maxplayers( ); i++ )
        
fn_ManageDatai);


deberías checar si los 4 players ya tienen team

cachea el valor de get_maxplayers( ) en plugin_init()
Código PHP:
for( new 0get_maxplayers( ); i++ ) 
---->
Código PHP:
for( new 1<= get_maxplayers( ); i++ ) 


me parece mejor un sistema de cuentas o guardado pro steamID para que no te roben Whatever

Listo, gracias Nothingdohere

Responder
#4
Si tienes como requerimiento AMX 1.8.3 deberias de poner soporte para 1.8.2, ademas de utilizar el print color de amx 1.8.3.

En fnShowhud vuelves a obtener el nombre, aunque ya este cacheado en una variable.

Lo vi por encima y solo eso encontre, aunque tambien podrias hacerlo exclusivo para amx 1.9 asi se empieza a utilizar mas xd
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#5
(24/11/2018, 09:38 PM)kikizon2 escribió: Si tienes como requerimiento AMX 1.8.3 deberias de poner soporte para 1.8.2, ademas de utilizar el print color de amx 1.8.3.

En fnShowhud vuelves a obtener el nombre, aunque ya este cacheado en una variable.

Lo vi por encima y solo eso encontre, aunque tambien podrias hacerlo exclusivo para amx 1.9 asi se empieza a utilizar mas xd

Listo, gracias Nothingdohere

Lo armé en amx 1.9, se me olvidó y anoté 1.8.3, la costumbre Roflmao
Mas adelante le agrego soporte para 1.8.2.

Gracias de nuevo!

Responder
#6
GRacias por mencionarme en los creditos
Responder
#7
Si usas AMXX >= 1.8.3 deberías usar:
Código:
for( new i = 1; i < g_MaxPlayers; i++ )
->
Código:
for( new i = 1; i <= MaxClients; i++ )

Además, creo que es mejor usar create_cvar + bind_pcvar_num. Después, podrás usar AutoExecConfig también.. Puedes ver un ejemplo aquí: Shield Teleport v1.0. Usando esto no hara faltá usar más get_pcvar_*.

Código:
new bool:g_DoJump[ 33 ] = false;
->
Código:
new bool:g_DoJump[ MAX_PLAYERS+1 ];
Constantes (asi con todas las demás variables) + no hace falta poner false porque es false desde el principio.

Formateamos g_PlayerName solo una vez, y si el jugador cambia de nombre? Además, con el AMXX >= 1.8.3 apenas hay que usar get_user_name u otra cosa para saber el nombre del usuario. Tenemos "%n".

Ejemplo:
Código:
client_print(0, print_chat, "Name of the player: %n", id);

Código:
set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | (1<<3) | (1<<5) );
->
Código:
enum { flags = 1 };
set_msg_arg_int( flags, ARG_BYTE, get_msg_arg_int( flags ) | (1<<3) | (1<<5) );

Código:
if( g_DoJump[ id ] == true )
->
Código:
if( g_DoJump[ id ] )
No hace falta poner "== true" al igual que "== false". Para false sería por ejemplo "if(!g_DoJump)"

Código:
iName[ 32 ]
->
Código:
szName[ MAX_NAME_LENGTH ]
Constantes + correcto nombre (i = int = número entero).
Plugins:
En GitHub
Responder
#8
(25/11/2018, 04:43 PM)w0w escribió: If you use AMXX >= 1.8.3 you should change it:
Código:
for( new i = 1; i < g_MaxPlayers; i++ )
->
Código:
for( new i = 1; i <= MaxClients; i++ )

Moreover, I think it's better to use create_cvar + bind_pcvar_num. Then, you can use AutoExecConfig, too. You can see an example here: Shield Teleport v1.0. By using it you don't need to use always get_pcvar_*.

Código:
new bool:g_DoJump[ 33 ] = false;
->
Código:
new bool:g_DoJump[ MAX_PLAYERS+1 ];
Constantes (asi con todas las demás variables) + no hace falta poner false porque es false desde el principio.

Formateamos g_PlayerName solo una vez, y si el jugador cambia de nombre? Además, con el AMXX >= 1.8.3 apenas hay que usar get_user_name u otra cosa para saber el nombre del usuario. Tenemos "%n".

Ejemplo:
Código:
client_print(0, print_chat, "Name of the player: %n", id);

Código:
set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | (1<<3) | (1<<5) );
->
Código:
enum { flags = 1 };
set_msg_arg_int( flags, ARG_BYTE, get_msg_arg_int( flags ) | (1<<3) | (1<<5) );

Código:
if( g_DoJump[ id ] == true )
->
Código:
if( g_DoJump[ id ] )
No hace falta poner "== true" al igual que "== false". Para false sería por ejemplo "if(!g_DoJump)"

Código:
iName[ 32 ]
->
Código:
szName[ MAX_NAME_LENGTH ]
Constantes + correcto nombre (i = int = número entero).

Al menos para mi es lo mismo Whatever


SI quiere poner == o no da lo mismo, cada quien programa a gusto

I = integer
sz = string

pero como dije arriba si el quiere programar así déjalo, aunque esta muy bien tu consejo

para los que les de duda por que lo corrige así, es por algo de la notación hungara o algo así xd

PD; esto es un foro en ESPAÑOL
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#9
(25/11/2018, 04:53 PM)Hypnotize escribió:
(25/11/2018, 04:43 PM)w0w escribió: If you use AMXX >= 1.8.3 you should change it:
Código:
for( new i = 1; i < g_MaxPlayers; i++ )
->
Código:
for( new i = 1; i <= MaxClients; i++ )

Moreover, I think it's better to use create_cvar + bind_pcvar_num. Then, you can use AutoExecConfig, too. You can see an example here: Shield Teleport v1.0. By using it you don't need to use always get_pcvar_*.

Código:
new bool:g_DoJump[ 33 ] = false;
->
Código:
new bool:g_DoJump[ MAX_PLAYERS+1 ];
Constantes (asi con todas las demás variables) + no hace falta poner false porque es false desde el principio.

Formateamos g_PlayerName solo una vez, y si el jugador cambia de nombre? Además, con el AMXX >= 1.8.3 apenas hay que usar get_user_name u otra cosa para saber el nombre del usuario. Tenemos "%n".

Ejemplo:
Código:
client_print(0, print_chat, "Name of the player: %n", id);

Código:
set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | (1<<3) | (1<<5) );
->
Código:
enum { flags = 1 };
set_msg_arg_int( flags, ARG_BYTE, get_msg_arg_int( flags ) | (1<<3) | (1<<5) );

Código:
if( g_DoJump[ id ] == true )
->
Código:
if( g_DoJump[ id ] )
No hace falta poner "== true" al igual que "== false". Para false sería por ejemplo "if(!g_DoJump)"

Código:
iName[ 32 ]
->
Código:
szName[ MAX_NAME_LENGTH ]
Constantes + correcto nombre (i = int = número entero).

Al menos para mi es lo mismo Whatever


SI quiere poner == o no da lo mismo, cada quien programa a gusto

I = integer
sz = del string

pero como dije arriba si el quiere programar así déjalo, aunque esta muy bien tu consejo

PD; esto es un foro en ESPAÑOL

Simplemente consejos para que el código sea mejor. Por eso mismo he dicho lo de i y sz. En este caso sería szName y no iName u otra cosa porque es una string.

¿Qué significa que el foro es en español? ¿He hecho algo malo Confundido?
PD: Ya me di cuenta, me entretuve y empecé a escribir en inglés : D. Ya lo he cambiado.
Plugins:
En GitHub
Responder
#10
excelente mod lo probare
Responder
#11
(25/11/2018, 07:43 PM)angel escribió: excelente mod lo probare

Gracias



(25/11/2018, 04:59 PM)w0w escribió:
(25/11/2018, 04:53 PM)Hypnotize escribió:
(25/11/2018, 04:43 PM)w0w escribió: If you use AMXX >= 1.8.3 you should change it:
Código:
for( new i = 1; i < g_MaxPlayers; i++ )
->
Código:
for( new i = 1; i <= MaxClients; i++ )

Moreover, I think it's better to use create_cvar + bind_pcvar_num. Then, you can use AutoExecConfig, too. You can see an example here: Shield Teleport v1.0. By using it you don't need to use always get_pcvar_*.

Código:
new bool:g_DoJump[ 33 ] = false;
->
Código:
new bool:g_DoJump[ MAX_PLAYERS+1 ];
Constantes (asi con todas las demás variables) + no hace falta poner false porque es false desde el principio.

Formateamos g_PlayerName solo una vez, y si el jugador cambia de nombre? Además, con el AMXX >= 1.8.3 apenas hay que usar get_user_name u otra cosa para saber el nombre del usuario. Tenemos "%n".

Ejemplo:
Código:
client_print(0, print_chat, "Name of the player: %n", id);

Código:
set_msg_arg_int( 1, ARG_BYTE, get_msg_arg_int( 1 ) | (1<<3) | (1<<5) );
->
Código:
enum { flags = 1 };
set_msg_arg_int( flags, ARG_BYTE, get_msg_arg_int( flags ) | (1<<3) | (1<<5) );

Código:
if( g_DoJump[ id ] == true )
->
Código:
if( g_DoJump[ id ] )
No hace falta poner "== true" al igual que "== false". Para false sería por ejemplo "if(!g_DoJump)"

Código:
iName[ 32 ]
->
Código:
szName[ MAX_NAME_LENGTH ]
Constantes + correcto nombre (i = int = número entero).

Al menos para mi es lo mismo Whatever


SI quiere poner == o no da lo mismo, cada quien programa a gusto

I = integer
sz = del string

pero como dije arriba si el quiere programar así déjalo, aunque esta muy bien tu consejo

PD; esto es un foro en ESPAÑOL

Simplemente consejos para que el código sea mejor. Por eso mismo he dicho lo de i y sz. En este caso sería szName y no iName u otra cosa porque es una string.

¿Qué significa que el foro es en español? ¿He hecho algo malo Confundido?
PD: Ya me di cuenta, me entretuve y empecé a escribir en inglés : D. Ya lo he cambiado.

Gracias, actualicé y edité algunas sugerencias!

Responder
#12
Actualizado a la versión 2.1: - Agregado soporte para amx 1.8.2.

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)