aparezcan palabras estilo amxx
#1
hola quiero hacer que cada cierto tiempo salga " Super evento exp x4"
y suene un sonido cuando ese texto aparesca lv_fruit1.wav
Zombie Plague Demolition 1.2.9
fix del sma 10%
Zombie Escape Niveles 1.0
en desarrollo
Responder
#2
https://amxmodx-es.com/Thread-Hacer-tu-propio-chat

(22/06/2014, 12:33 PM)RauliTop escribió: Bueno, en realidad no es que tuviera ganas de hacer esto pero viendo los tutoriales que hay por ahí... no ví ninguno de estos y los que ví están mal hechos. Por eso mismo me he propuesto hacer yo uno propio.

Sinceramente no sé si existe una forma mejor, simplemente yo utilizo esta y os la voy a enseñar. Es simple, es la forma que utiliza el admin chat colors.

Seguramente muchas veces habréis intentado hookear el say pero luego había incompatibilidad de plugins que hookean el say cada uno para su cosa y etc.
Pues aquí os enseño como crear el vuestro propio.

Código PHP:
// forward llamada cuando carga el plugin e inicia mapa (1 vez por mapa)
public plugin_init()
{
    
// registramos los comandos que utiliza el cliente para mandar los mensajes que saldrán en el chat
    
register_clcmd("say""clcmd_say")
    
register_clcmd("say_team""clcmd_team_say")
}

// nuestro chat general se hace aquí
public clcmd_say(id)
{
    static 
said[191// creamos la variable que servirá para almacenar todo nuestro string relacionado con el chat
    
read_args(saidcharsmax(said)) // obtenemos lo que escribimos (ej: say "hola soy yo") ahí obtenemos "hola soy yo"
    
remove_quotes(said// le quitamos las comillas al string
    
replace_all(saidcharsmax(said), "%"" "// reemplazamos el % en caso de que alguien lo escriba para evitarnos el famoso bug
    
    // comprobamos que el mensaje sea válido, si no lo es para la función
    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE;
    
    
// variable para almacenar el equipo (la utilizamos después) y otro string para añadir prefijos etc. a lo que dijimos
    
static color[11], prefix[91]
    
get_user_team(idcolorcharsmax(color))
    
    
// hacemos uso de nuestro string anterior
    // la primera variable servirá para saber si está vivo el jugador, si no tienen ninguna creada pues utilicen is_user_alive
    // la segunda variable es un ejemplo, por si quieren añadir más cosas, yo le puse el ejemplo de (VIP)
    // tercera variable seguro que la utilizan, la mayoría de los que quieren hacer esto con el chat es para mostrar el nivel de la persona que habla, ni falta decir que g_level es otro ejemplo
    // cuarta variable será el nombre del jugador, si no la tienen cacheada en una variable, pues tendrán que crear una aquí y utilizar get_user_name
    
formatex(prefixcharsmax(prefix), "%s%s[Nivel:^x04 %d^x01]^x03 %s"g_isalive[id] ? "^x01" "^x01*MUERTO* "g_vip[id] ? "(VIP) " ""g_level[id], g_playername[id])
    
    
// formatex es más rápido, pero aquí conviene utilizar format para no tener que crear 1 variable de más
    // ahora chequeamos que si es admin/VIP (como ejemplo) le ponga lo que dice en verde
    
if (is_user_admin(id) || g_vip[id]) format(saidcharsmax(said), "^x04%s"said)
    
// le añadimos el prefijo a lo que dijo para tenerlo todo en 1 solo string en vez de 2 por separado
    
format(saidcharsmax(said), "%s^x01 :  %s"prefixsaid)
    
    static 
iteam[11// variables que utilizaremos para el loop de jugadores, con team obtenemos su equipo porque hará falta cambiarlo para enviar el mensaje con el color correcto de equipo
    
for (1<= g_maxplayersi++) // g_maxplayers es otro ejemplo de variable, su valor es get_maxplayers() cacheado en plugin_init
    
{
        
// otra variable cacheada, si no la tienen utilicen is_user_connected
        // si no está conectado el jugador del loop, paramos y seguimos con otro
        
if (!g_isconnected[i]) continue;

        
// pueden leer el mensaje que se escribió si:
        // es admin el jugador que lo recibirá
        // el que lo envió y el que lo recibirá están los dos vivos
        // el que lo envió y el que lo recibirá están los dos muertos
        // la variable g_isalive ya la expliqué anteriormente
        
if (is_user_admin(i) || g_isalive[id] && g_isalive[i] || !g_isalive[id] && !g_isalive[i])
        {
            
// obtenemos el equipo del que va a recibir el mensaje
            
get_user_team(iteamcharsmax(team))
            
// le cambiamos el equipo para que se muestre en el color correcto el ^x03
            
changeTeamInfo(icolor)
            
// le mandamos el mensaje
            
writeMessage(isaid)
            
// le dejamos el equipo como lo tenía antes
            
changeTeamInfo(iteam)
        }
    }
    
    
// importante para que funcionen otros plugins que hookeen el chat con comandos
    
return PLUGIN_HANDLED_MAIN;
}

// nuestro chat de equipo se hace aquí
public clcmd_team_say(id)
{
    static 
said[191// creamos la variable que servirá para almacenar todo nuestro string relacionado con el chat
    
read_args(saidcharsmax(said)) // obtenemos lo que escribimos (ej: say "hola soy yo") ahí obtenemos "hola soy yo"
    
remove_quotes(said// le quitamos las comillas al string
    
replace_all(saidcharsmax(said), "%"" "// reemplazamos el % en caso de que alguien lo escriba para evitarnos el famoso bug
    
    // comprobamos que el mensaje sea válido, si no lo es para la función
    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE;

    
// variable para almacenar el equipo (la utilizamos después) y otra variable en la cual le pondremos el nombre de equipo
    
static playerTeamplayerTeamName[19]
    
playerTeam get_user_team(id)
    
// según el equipo al que pertenezca le ponemos un nombre
    
switch (playerTeam)
    {
        case 
1copy (playerTeamName6"Holas"// T
        
case 2copy (playerTeamName8"Adioses"// CT
        
default: copy (playerTeamName11"Espectador"// distinto de 1 y 2
    
}
    
    
// variable para almacenar el equipo (la utilizamos después) y otro string para añadir prefijos etc. a lo que dijimos
    
static color[11], prefix[111]
    
get_user_team(idcolorcharsmax(color))
    
    
// hacemos uso de nuestro string anterior
    // la primera variable servirá para saber si está vivo el jugador, si no tienen ninguna creada pues utilicen is_user_alive
    // la segunda variable es el equipo que pusimos antes
    // tercera variable seguro que la utilizan, la mayoría de los que quieren hacer esto con el chat es para mostrar el nivel de la persona que habla, ni falta decir que g_level es otro ejemplo
    // cuarta variable será el nombre del jugador, si no la tienen cacheada en una variable, pues tendrán que crear una aquí y utilizar get_user_name
    
formatex(prefixcharsmax(prefix), "%s-%s- [Nivel:^x04 %d^x01]^x03 %s"g_isalive[id] ? "^x01" "^x01*MUERTO* "playerTeamNameg_level[id], g_playername[id])
    
    
// formatex es más rápido, pero aquí conviene utilizar format para no tener que crear 1 variable de más
    // ahora chequeamos que si es admin/VIP (como ejemplo) le ponga lo que dice en verde
    
if (is_user_admin(id) || g_vip[id]) format(saidcharsmax(said), "^x04%s"said)
    
// le añadimos el prefijo a lo que dijo para tenerlo todo en 1 solo string en vez de 2 por separado
    
format(saidcharsmax(said), "%s^x01 :  %s"prefixsaid)
    
    static 
iteam[11// variables que utilizaremos para el loop de jugadores, con team obtenemos su equipo porque hará falta cambiarlo para enviar el mensaje con el color correcto de equipo
    
for (1<= g_maxplayersi++) // g_maxplayers es otro ejemplo de variable, su valor es get_maxplayers() cacheado en plugin_init
    
{
        
// otra variable cacheada, si no la tienen utilicen is_user_connected
        // si no está conectado el jugador del loop, paramos y seguimos con otro
        
if (!g_isconnected[i]) continue;

        
// es del mismo equipo, seguiremos chequeando a ver...
        
if (get_user_team(i) == playerTeam)
        {
            
// si el que envió el mensaje está vivo y él también, lo podrá leer
            // si el que envió el mensaje está muerto y él también, lo podrá leer
            
if (g_isalive[id] && g_isalive[i] || !g_isalive[id] && !g_isalive[i])
            {
                
// obtenemos el equipo del que va a recibir el mensaje
                
get_user_team(iteamcharsmax(team))
                
// le cambiamos el equipo para que se muestre en el color correcto el ^x03
                
changeTeamInfo(icolor)
                
// le mandamos el mensaje
                
writeMessage(isaid)
                
// le dejamos el equipo como lo tenía antes
                
changeTeamInfo(iteam)
            }
        }
    }
    
    
// importante para que funcionen otros plugins que hookeen el chat con comandos
    
return PLUGIN_HANDLED_MAIN;
}

// esta función lo que hace es cambiar el equipo
// player es el index del jugador
// team es el equipo al que cambiará
public changeTeamInfo(playerteam[])
{
    
// importante que sea MSG_ONE, para asegurarnos de que se envía
    // g_msgTeamInfo es una variable chacheada en plugin_init cuyo valor es get_user_msgid("TeamInfo")
    
message_begin(MSG_ONEg_msgTeamInfo_player)
    
write_byte(player)
    
write_string(team)
    
message_end()
}

// esta función enviará el mensaje por chat
// player es el index del jugador
// message será el mensaje (string) que se enviará
public writeMessage(playermessage[])
{
    
// importante que sea MSG_ONE, para asegurarnos de que se envía
    // g_msgSayText es una variable chacheada en plugin_init cuyo valor es get_user_msgid("SayText")
    
message_begin(MSG_ONEg_msgSayText, {000}, player)
    
write_byte(player)
    
write_string(message)
    
message_end()
}

// Stock -counts number of characters in a string-
// es un stock que encontré por ahí y lo modifiqué un poco
stock ValidMessage(text[], maxcount) {
    static 
lenicount
    len 
strlen(text)
    
count 0
    
    
if (!len)
        return 
false;
    
    for (
0leni++) {
        if (
text[i] != ' ') {
            
count++
            if (
count >= maxcount)
                return 
true;
        }
    }
    
    return 
false;


Para el chat recuerden:
Código:
^x01 -> color naranja o amarillo... según como lo vean (color default del chat)
^x04 -> color verde, aquí no soy daltónico
^x03 -> color del equipo

En fin, seguramente haya algo mal explicado o alguna cosa que me haya faltado, solo digan y se edita fácil

Saludos!
[Imagen: jrXxqRT.png]
*Maper Del Cstrike* - *Estudiante De Sistema*
(03/09/2018, 08:32 PM)Skylar escribió: Obviamente, no va a hablar con super pro para que le mueva el thread
(04/01/2019, 05:12 PM)Pan Bimbo (? escribió: QUE HICISTE QUE??????? YO QUERIA LA PLACA DE VIDEO PORQUE LA TIRASTE CTM
(15/01/2019, 04:08 AM)FreDDy escribió:
(15/01/2019, 03:45 AM)Hernandez escribió: Qué más dan las palabras si a donde vayas están en tetas protestando sin sentido

No todas salen en tetas y no todas protestan sin sentido. Estás generalizando algo que sólo unas pocas lo hacen a diferencia de las muchas que realmente tienen un motivo para protestar.
(17/01/2019, 12:34 PM)totopizza escribió: el orden de los factores no altera el producto xD
(23/01/2019, 01:10 AM)GoldenCosta escribió:
Cita:E visto que este ZP , ESTA AQUI EN EL FORO PERO NO ES EL ORIGINAL POR QUE? , LE FALTAN MILES DE COSAS ESTA BUGEADO , LE FALTAN CÓDIGOS NI SE IMAGINAN , BUENO EL MOD ESTE SE VENDE POR 70 DOLARES , ACEPTO PAYPAL Y EN PESOS CHILENOS $42.584
ya esta publicado.... y 70 us en arg son 2625,35 pesos... estas loco con esa guita neel mantiene el foro por 2 años
(23/01/2019, 01:17 AM)Skylar escribió:
(22/01/2019, 10:30 PM)el_juan_fail escribió:
(22/01/2019, 10:03 AM)Neeeeeeeeeel.- escribió: Por favor subir las cosas al foro y no links a blogs externos. Solamente en caso de que haya recursos que no se pudiesen subir por un tema de tamaño, poenr un link de descarga directo (tipo mega) de los recursos y subir los plugins y demás archivos livianos al foro.

deberia ponerle en un link mediante el mediafire o mega o link externo lo que sea pero no es bueno dejar cosa agregada sin descargar solo por el blog no se puede se puede bajar el recurso o que haya sido creado disculpa neeeeel. estaba leyendose las reglas u.uMario

Dijiste lo mismo que dijo Neeel!
(27/02/2019, 08:00 PM)Sugisaki escribió:
(27/02/2019, 05:37 PM)Pan Bimbo (? escribió:
(27/02/2019, 12:06 AM)luxor xD escribió: Hola, si precacheo algo en un plugin, no es necesario precachearlo en otro plugin?

Si yo cargo una caja en un camion, mi amigo puede cargar la MISMA caja en el camion?, y no porque ya esta cargada.
[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
(14/03/2019, 10:26 PM)KrR10VnZl escribió: en Venezuela aprendes a ser desde bombas molotov hasta velas, es algo así como supervivencia al desnudo jaja
(18/04/2019, 11:04 PM)Jose88 escribió:
(18/04/2019, 09:55 PM)Hypnotize escribió: arriba marica

papa me va perdonar pero aquí no sale ningún download. solo sale esto

Código PHP:
PDNiños Ratas eviten sacar el autor jaja.
REMOVIDO POR TUTOR Y SLOWHACK
(21/04/2019, 09:38 AM)SHENK! =D escribió: ASDASD

Si nos organizamos cojemos todos.
(11/08/2019, 05:11 PM)Cr3470r escribió: Todo Software es crackeable ... No importa cuantas validaciones hagan, la ventaja siempre la tenemos nosotros ...
(28/07/2015, 09:34 PM)Nazi.- escribió: :ohgodwhy buen aporte

PD: situación sentimental: Sin internetOh god why

Sigue así Proud

(28/02/2020, 12:23 AM)Skylar escribió:
(27/02/2020, 11:28 PM)4evergaming escribió: Ya me puse como autor y lo subi a mi empresa


Abrazos

FIX
Responder
#3
Proba, no se sí es esto lo qué pedís porqué no explicas un carajo.

btw; no está testeado.


Código PHP:
/* Sublime AMXX Editor v2.2 */

/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < hamsandwich >

new const szPluginInfo [ ][ ] = {
    
    { 
"[BG] AMXX Experience Event" },
    
    { 
"1.0" },
    
    { 
"Chema" }
    
};

#pragma compress 1

new const g_szPrefix [ ] = "!g[BREAKING GAMING]!y";
new const 
g_szUncompress[ ] = "no_amxx_uncompress";

new const 
szSound [ ] = "BG_HNS/lv_fruit1.wav"

new const szHoras [ ] = { 121317180102 };

new 
bool:iEventHour;

new 
g_iFrags 33 ];

public 
plugin_precache ( ) {

        
precache_sound szSound );


public 
plugin_init ( ) {
    
    
register_plugin szPluginInfo ], szPluginInfo ], szPluginInfo ] );
    
    
Register_Commands "evento""function_Event"ADMIN_ALLtrue );

    
register_event "HLTV""RoundStart""a""1=0""2=0" );

    
RegisterHam Ham_Killed"player""fw_killed");
}

public 
client_putinserver iIndex ) {

    
g_iFrags iIndex ] = 0;
}

public 
RoundStart ( ) {

    new 
iDate 12 
    
get_time "%H"iDate12 );
    new 
iTime str_to_num iDate );
    
    for ( new 
iIndex 0iIndex sizeof szHorasiIndex++ ) {     
        
        if ( 
iTime != szHorasiIndex ] ) continue;
        
        
iEventHour true 
        
break;
    }
    
    if( 
iEventHour ) {

        
SayPrint 0"%s^1 El super evento de experiencia !gx4!y comenzó."g_szPrefix );
        
client_cmd 0"spk %s"szSound ); 
    }
}

public 
fw_killed victimattackershouldgibs ) {
    
    if ( !
is_user_connected attacker ) || !is_user_connected victim ) || attacker == victim )
        return;
    
    if ( 
iEventHour ) {

        
g_iFrags attacker ] += 2;
        
//ChequearNivel ( attacker ) Tú función para hacer el check level.
    
}
    else {

        
g_iFrags attacker ] += 1;
        
//ChequearNivel ( attacker ) Tú función para hacer el check level.
    
}
}

public 
function_Event iIndex ) {

    if ( !
is_user_connected iIndex ) ) return PLUGIN_HANDLED;
    
    
SayPrintiIndex"%s Horarios para eventos de experiencia."g_szPrefix );

// 12, 13, 17, 18, 01, 02 };
    
SayPrintiIndex"%s !g12:00 AM!y a !g13:00 PM !t-!g 17:00 PM a 18:00 PM !t-!g 01:00 AM a 02:00 AM!y."g_szPrefix );
    
    return 
PLUGIN_HANDLED;
}

stock SayPrint ( const iIndex, const Text [ ], any:... ) { 
    
    new 
Say 192 ];
    
    
vformat Saysizeof Say ), Text);
    
    
replace_all Saysizeof Say ), "!y""^1" );
    
replace_all Saysizeof Say ), "!g""^4" );
    
replace_all Saysizeof Say ), "!t""^3" );
    
    
//Acentos
    /*replace_all ( Say, sizeof ( Say ), "á", "á" );
    replace_all ( Say, sizeof ( Say ), "é", "é" );
    replace_all ( Say, sizeof ( Say ), "í", "Ã*" );
    replace_all ( Say, sizeof ( Say ), "ó", "ó" );
    replace_all ( Say, sizeof ( Say ), "ú", "ú" );
    replace_all ( Say, sizeof ( Say ), "ñ", "ñ" );
    
    replace_all ( Say, sizeof ( Say ), "Á", "Ã" );
    replace_all ( Say, sizeof ( Say ), "É", "É" );
    replace_all ( Say, sizeof ( Say ), "Í", "Í" );
    replace_all ( Say, sizeof ( Say ), "Ó", "Ó" );
    replace_all ( Say, sizeof ( Say ), "Ú", "Ú" );
    replace_all ( Say, sizeof ( Say ), "Ñ", "Ñ" );*/
    
    
    
message_begin iIndex MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid "SayText" ), .player iIndex );
    
write_byte iIndex iIndex 33 );
    
write_string Say );
    
message_end (  );
    
    
}

stock Register_Commands ( const szSayCommand [ ], const szFunction [ ], const szFlagsbool:ComandoTrue ) { 
    
    new 
LenSay 127 ];
    new 
LenSayTeam 127 ];
    
    if ( 
ComandoTrue ) { 
    
        
formatex LenSaysizeof LenSay ), "say .%s"szSayCommand );
        
formatex LenSayTeamsizeof LenSayTeam ), "say_team .%s"szSayCommand );
    }
    
    else {
        
formatex LenSaysizeof LenSay ), "say %s"szSayCommand );
        
formatex LenSayTeamsizeof LenSayTeam ), "say_team %s"szSayCommand );    
    
    }
    
    
register_clcmd LenSayszFunctionszFlags );
    
register_clcmd LenSayTeamszFunctionszFlags );
    
    

Responder
#4
que feo se ven esos códigos con espacios y todo pacman

si pretendes usar los acentos este está mal..
Código PHP:
replace_all Saysizeof Say ), "í""Ã*" ); 
->
Código PHP:
replace_all Saysizeof Say ), "í""í" ); 

http://prntscr.com/k6tk86
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#5
(15/07/2018, 08:06 PM)OsweRRR escribió: que feo se ven esos códigos con espacios y todo pacman

si pretendes usar los acentos este está mal..
Código PHP:
replace_all Saysizeof Say ), "í""Ã*" ); 
->
Código PHP:
replace_all Saysizeof Say ), "í""í" ); 

http://prntscr.com/k6tk86

Comente ese trozo de código porque estoy usando Sublime Text, y al archivo lo guardo con UTF-8.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)