Please ensure Javascript is enabled for purposes of website accessibility[Tutorial] Hook say
Zona 1
[Tutorial] Hook say Zona_110
Zona 1
[Tutorial] Hook say Zona_110

Cargando avatar...
Nivel Respeto:

Mensajes:

Registrado


Mensaje para el usuario:
Presentamos a nuestros miembros más activo del mes y más popular, es un verdadero orgullo para Z1 tenerte en nuestra familia.
Afiliarnos
Ultimas Sugerencias

Mas !
Conectarse

Recuperar mi contraseña

Mejores posteadores
Dalex
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Sarai
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Rey
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Fabby
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Dayath
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Saber
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Lucy
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Adhela
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Erion
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 
Laila
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 

Últimos temas
» Infografía Neptuno (Hyperdimension Neptunia)
por Dalex Vie Nov 08, 2024 2:13 pm

» Como REPARAR Disco Duro dañado✅ Externo o Interno | Con Victoria HDD SSD
por Dalex Sáb Ago 31, 2024 2:55 pm

» El usuario de arriba se merece, Beso, Abrazo, Golpe, Patada, Mordisco?
por Dalex Lun Ago 19, 2024 7:08 pm

» Donde quisieras estar y haciendo que??
por Dalex Lun Ago 19, 2024 7:07 pm

» A qué le tienes miedo y porque?
por Dalex Lun Ago 19, 2024 7:07 pm

» Desactivar servicios que consume Internet en Windows 10
por Dalex Dom Jul 21, 2024 8:49 pm

» Editor de Mapa para Minecraft
por Dalex Mar Sep 19, 2023 9:53 pm

» Nunca digas SI y NO, Falso , Verdadero , etc
por Sarai Dom Mar 19, 2023 3:22 am

» [Juego] Decir una mentira propia
por Sarai Dom Mar 19, 2023 3:21 am

» Que harías si fueras invisible???
por Sarai Dom Mar 19, 2023 3:21 am

» DI una mentira del miembro de arriba
por Sarai Dom Mar 19, 2023 3:19 am

» Deseo concedido y arruinado
por Sarai Dom Mar 19, 2023 3:19 am

» Elije un poder,arma o forma y mata al de arriba?
por Sarai Dom Mar 19, 2023 3:18 am

» [Juego] Quien llegue al numero 200 Gana!!
por Sarai Dom Mar 19, 2023 3:18 am

» Quéjate!!!
por Sarai Dom Mar 19, 2023 3:17 am

» Regala algo!
por Sarai Dom Mar 19, 2023 3:17 am

» ¿Qué palabra viene a tu mente cuando digo?
por Sarai Dom Mar 19, 2023 3:17 am

» ¿Que harias si volverías al pasado?
por Janifer Sáb Mar 18, 2023 11:25 pm

» ¿Qué llevarías contigo a una isla desierta?
por Sarai Vie Mar 17, 2023 1:54 pm

» ¿Porque entraste en este foro?
por Janifer Vie Mar 17, 2023 8:39 am

» ¿Por qué tienes este avatar?
por Janifer Jue Mar 16, 2023 11:54 pm

» Si supieras que mañana moriré que me dirías??
por Sarai Jue Mar 16, 2023 11:52 pm

» ¿Por qué tienes tu Nombre de Usuario?
por Janifer Jue Mar 16, 2023 11:44 pm

» El últimos post gana
por Sarai Jue Mar 16, 2023 11:37 pm

» Que harías si Fueras Millonario?
por Sarai Jue Mar 16, 2023 11:26 pm

» ¿Qué estas haciendo en este momento?
por Sarai Jue Mar 16, 2023 11:25 pm

» Carlos Medellín ( olvido )
por Sarai Sáb Mar 11, 2023 11:40 pm

» prueba de nuevo seleccionar
por Dalex Vie Mar 10, 2023 3:01 pm

» Ella es Shesu mi tierna
por Sharoneko Vie Mar 10, 2023 2:49 pm

» Hola, me presento!!
por Dalex Vie Mar 10, 2023 2:47 pm

» Vista de la Iglesia El Calvario
por Sharoneko Vie Mar 10, 2023 2:36 pm

» Parque Nacional Volcán Masaya
por Jaymi Castillo Mar Mar 07, 2023 1:34 pm

» Parque jurásico en Nindirí
por Jaymi Castillo Mar Mar 07, 2023 1:28 pm

» Mirador y Parque Ecológico Cerro El Calvario
por Jaymi Castillo Mar Mar 07, 2023 1:23 pm

» Salto Santa Emilia Matagalpa
por Jaymi Castillo Mar Mar 07, 2023 1:18 pm

» Cascada La Luna
por Jaymi Castillo Mar Mar 07, 2023 1:14 pm

» Visita al Volcán Cosigüina
por Jaymi Castillo Mar Mar 07, 2023 1:08 pm

» Bocana las Peñitas
por Jaymi Castillo Mar Mar 07, 2023 12:58 pm

» [DNG] Morgan Freeman y El Misterio - Capitulo 1
por Jaymi Castillo Dom Mar 05, 2023 9:21 pm

» Di una verdad que nadie acepta.
por Jaymi Castillo Dom Mar 05, 2023 9:19 pm

» [Presentación] Lucia Rosales llegó a la Familia
por Erika Dom Mar 05, 2023 8:55 pm

» Avatar de nuestra bella Janifer
por Dalex Sáb Mar 04, 2023 11:09 pm

» Que opinan de mi avatar
por Ximena Vie Mar 03, 2023 6:19 pm

» Que rango de staff quieres y porque
por Lucia Rosales Jue Mar 02, 2023 10:04 pm

» Finca Neblina del Bosque
por Lucia Rosales Jue Mar 02, 2023 9:55 pm

» hablemos de cualquier cosa?
por Yuking Mar Feb 28, 2023 7:59 pm

» Trailer del nuevo juego Undawn
por Yuking Mar Feb 28, 2023 7:47 pm

» Hola a todos
por Yuking Mar Feb 28, 2023 7:15 pm

» [Receta] Repostería de Brioches Cremosos
por Lucy Mar Feb 28, 2023 3:22 pm

» [Receta] Tortilla de Ariana y Queso
por Lucy Mar Feb 28, 2023 3:19 pm

» [Receta] Pancillo de Queso
por Lucy Mar Feb 28, 2023 3:14 pm

» [Receta] Albóndigas en Salsa
por Lucy Mar Feb 28, 2023 3:09 pm

» [Receta] Pollo Enchilado
por Lucy Mar Feb 28, 2023 3:05 pm

» [Receta] Leche frita con maicena
por Lucy Mar Feb 28, 2023 2:53 pm

» Arañita pequeña
por Dalex Lun Feb 27, 2023 10:20 pm

» [Recurso] Elimina las Marcas de Agua de tus Imágenes de forma Online
por Dalex Lun Feb 27, 2023 8:07 pm

» [Recurso] Reduce el Tamaño y peso de tus Imágenes de forma online
por Dalex Lun Feb 27, 2023 8:01 pm

» [Recurso] Cambia el formato de tus imagenes en png,jpeg,webp de forma online
por Dalex Lun Feb 27, 2023 7:55 pm

» [Recurso] Elimina fondo de tus fotos y agrega efectos de forma online
por Dalex Lun Feb 27, 2023 7:46 pm

» [Recurso] Aumeta la Resolucion de tus fotos de forma Online
por Dalex Lun Feb 27, 2023 7:36 pm

» [Sugerencia] Zona DNG Privada
por Lucy Lun Feb 27, 2023 10:47 am

» Habla con Eriol de cualquier cosa.
por Lucy Lun Feb 27, 2023 10:39 am

» [Presentación] Kendra llegó a la Familia
por Lucy Lun Feb 27, 2023 10:37 am

» [Presentación] Laila se presenta a los de Nicaragua xd
por Lucy Lun Feb 27, 2023 10:36 am

» [Presentación] Jeymi la Teniente más Bella se presenta
por Lucy Lun Feb 27, 2023 10:35 am

» [Presentación] Sarai se presenta en la pagina
por Lucy Lun Feb 27, 2023 10:35 am

» [Presentación] Hola ,me presento..!soy Melissa .
por Lucy Lun Feb 27, 2023 10:34 am

» Rocio se presenta en la pagina
por Lucy Lun Feb 27, 2023 10:33 am

» [Presentación] Janifer se presenta
por Lucy Lun Feb 27, 2023 10:29 am

» [Juego] El primero que llegue a la Z gana
por Sarai Lun Feb 27, 2023 5:33 am

Últimos Anuncio

Mas !
¿Quién está en línea?
En total hay 6 usuarios en línea: 0 Registrados, 0 Ocultos y 6 Invitados

Ninguno

[ Ver toda la lista ]


El record de usuarios en línea fue de 253 durante el Dom Mayo 02, 2021 7:57 pm
Afiliados
zona1.crearforo.net

https://www.facebook.com/nanisess/

Crear foro

·:Urbe mi sitio tu sitio:·

wikitiki.foroactivo.com
últimos usuarios conectados
Los posteadores más activos del mes
Dalex
[Tutorial] Hook say Vote_lcap[Tutorial] Hook say Voting_bar[Tutorial] Hook say Vote_rcap 

Contador de Visitas

[Tutorial] Hook say

Ver el tema anterior Ver el tema siguiente Ir abajo

Tutorial Oficial [Tutorial] Hook say

Mensaje por Saber Miér Ago 08, 2018 5:39 pm

Muchos se preguntaran como hook el say, para crear su propio chat, con sus tags definidos, pues entonces quedate y ve este tutorial
para realizar el tutorial necesitamos saber lo basico en pawn, y tener el include del chatcolor, o usar estos stocks que les pondre

paso 1: Registramos el SAY en plugin_init()
Código:
public plugin_init() {
   register_plugin("Hook say", "1.0", "Alguien")
   register_clcmd("say", "CmdHookSay") //Hookeamos el SAY
}

paso 2:Creamos la funcion y definimos las variables STATICS que usaremos
Código:
public CmdHookSay(id)
{
   static szSay[192]; //Definimos la variable que contendra el chat, los maximos caracteres son 192
   static Nombre[40]; //Creamos la variable que contendra el nombre del usuario

paso 3:Empezamos a Hook las variables, o mejor dicho setearles un valor
Código:
static szSay[192]; //Definimos la variable que contendra el chat, los maximos caracteres son 192
   static Nombre[40]; //Creamos la variable que contendra el nombre del usuario
   
   //Comenzamos a definir el say
   read_args(szSay, charsmax(szSay)) //Guardamos el mensaje en la variable szSay[192];
   remove_quotes(szSay) //Eliminamos las " "
   replace_all(szSay, charsmax(szSay), "%", "") //eliminamos que el mensaje contenga el % por un error
   get_user_name(id, Nombre, charsmax(Nombre)) //Guardamos el nombre  del usuario en la variable
   if(!ValidMessage(szSay, 1)) //Si el mensaje es invalido
   {
      return PLUGIN_HANDLED; //no lo manda
   }

Paso 4:Creamos la estructura del chat
Código:
format(szSay, charsmax(szSay), "%s:%s", Nombre, szSay) //Formamos la estructura del chat

paso 5:Mandamos el mensaje
Código:
ColorChat(0, szSay) //No ponemos el index (id) porque el mensaje ira para todos, se pone 0, y mostramos el chat szSay.

Muchas partes de este codigo, usa stocks. Los stocks son funciones como las librerias, del amx

stocks
Código:
stock ValidMessage(text[], maxcount) {
   static len, i, count
   len = strlen(text)
   count = 0
   
   if (!len)
      return false;
   
   for (i = 0; i < len; i++) {
      if (text[i] != ' ') {
         count++
         if (count >= maxcount)
            return true;
      }
   }
   return false;
}
stock ColorChat(id, const input[], any:...) {
   new count = 1, players[32];
   static msg[191];
   vformat(msg, 190, input, 3);
   
   replace_all(msg, 190, "!g", "^4"); // Verde
   replace_all(msg, 190, "!y", "^1"); // Default
   replace_all(msg, 190, "!t", "^3"); // Color del Equipo
   
   if (id) players[0] = id; else get_players(players, count, "ch"); {
      for (new i = 0; i < count; i++)  {
         if (is_user_connected(players[i])) {
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
            write_byte(players[i]);
            write_string(msg);
            message_end();
         }
      }
   }
}

El code quedaria asi

Código:
#include <amxmodx>
#include <amxmisc>

public plugin_init() {
   register_plugin("Hook say", "1.0", "Alguien")
   register_clcmd("say", "CmdHookSay")
}

public CmdHookSay(id)
{
   static szSay[192]; //Definimos la variable que contendra el chat, los maximos caracteres son 192
   static Nombre[40]; //Creamos la variable que contendra el nombre del usuario
   
   //Comenzamos a definir el say
   read_args(szSay, charsmax(szSay)) //Guardamos el mensaje en la variable szSay[192];
   remove_quotes(szSay) //Eliminamos las " "
   replace_all(szSay, charsmax(szSay), "%", "") //eliminamos que el mensaje contenga el % por un error
   get_user_name(id, Nombre, charsmax(Nombre)) //Guardamos el nombre  del usuario en la variable
   if(!ValidMessage(szSay, 1)) //Si el mensaje es invalido
   {
      return PLUGIN_HANDLED; //no lo manda
   }
   format(szSay, charsmax(szSay), "%s:%s", Nombre, szSay) //Formamos la estructura del chat
   ColorChat(0, szSay) //No ponemos el index (id) porque el mensaje ira para todos, se pone 0, y mostramos el chat szSay.
}
// ==========[STOCKS]==========
stock ValidMessage(text[], maxcount) {
   static len, i, count
   len = strlen(text)
   count = 0
   
   if (!len)
      return false;
   
   for (i = 0; i < len; i++) {
      if (text[i] != ' ') {
         count++
         if (count >= maxcount)
            return true;
      }
   }
   return false;
}
stock ColorChat(id, const input[], any:...) {
   new count = 1, players[32];
   static msg[191];
   vformat(msg, 190, input, 3);
   
   replace_all(msg, 190, "!g", "^4"); // Verde
   replace_all(msg, 190, "!y", "^1"); // Default
   replace_all(msg, 190, "!t", "^3"); // Color del Equipo
   
   if (id) players[0] = id; else get_players(players, count, "ch"); {
      for (new i = 0; i < count; i++)  {
         if (is_user_connected(players[i])) {
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
            write_byte(players[i]);
            write_string(msg);
            message_end();
         }
      }
   }
}

LOS STOCKS SE AGREGAN AL FINAL.
Saber
Saber
Avanzado
Avanzado

Créditos : 2392
Mensajes : 326
Reputación : 11
Edad : 22
Carrera/Profesión : Scripter de CS 1.6
Provincia/Departamento : Venezuela
Venezuela


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.