[Guía][SRC] Broadcast Custom para GMs
101Level - Foro

[Guía][SRC] Broadcast Custom para GMs

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado KMS

  • *
  • *
  • 260
  • 11
  • Actividad:
    0%
  • Sexo: Masculino
[Guía][SRC] Broadcast Custom para GMs
« en: 12 de Agosto de 2011, 16:21 »
[Guía][SRC]: Broadcast Custom para GMs
Realizada: Donatien
Editores: Hurakan, JakeRed, Donatien

Modificación custom de @broadcast by [Valaris]
 
Explicación:
Buscando en Divinero pude encontrar distintos NPC de Broadcast que servían mucho, el único problema que encontré que muchas veces significaba -para los usuarios y personas que se venían integrando como nuevas en el servidor- una molestia tener que distinguir quienes eran miembros del Staff de GMs y quienes no, a través de dichos mensajes Broadcast. Por lo que en conjunto con Hurakan decidimos buscar una manera de crear este comando, modificando uno ya existente, para que así se identifique claramente el Nombre, Cargo y Anuncio del miembro del staff que envíe el mensaje, además de un color distinto y característico que ayudara a diferenciarlo de los demás broadcast.


Paso 1:

Vayamos a ./src/map/atcommand.c

Buscamos dentro de ese archivo lo siguiente:

Código: [Seleccionar]
ACMD_FUNC(kami)
{
   unsigned long color=0;
   nullpo_retr(-1, sd);

   memset(atcmd_output, '\0', sizeof(atcmd_output));

   if(*(command + 5) != 'c' && *(command + 5) != 'C') {

      if (!message || !*message) {
         clif_displaymessage(fd, "Please, enter a message (usage: @kami <message>).");
         return -1;
      }

      sscanf(message, "%199[^\n]", atcmd_output);
      intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(command + 5) == 'b' || *(command + 5) == 'B') ? 0x10 : 0);
   
   } else {
   
      if(!message || !*message || (sscanf(message, "%lx %199[^\n]", &color, atcmd_output) < 2)) {
         clif_displaymessage(fd, "Please, enter color and message (usage: @kamic <color> <message>).");
         return -1;
      }
   
      if(color > 0xFFFFFF) {
         clif_displaymessage(fd, "Invalid color.");
         return -1;
      }
   
      intif_broadcast2(atcmd_output, strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0);
   }
   return 0;
}

y bajo eso agregamos nuestro código:

Código: [Seleccionar]
/*==========================================
 * @adm by Hurakan - Edit: Donatien
 * Para Lain Ragnarok Online
 * Edited by Jake Redgrave
 *------------------------------------------*/
ACMD_FUNC(adm)
{
   nullpo_retr(-1, sd);
   memset(atcmd_output, '\0', sizeof(atcmd_output));

   if(!message || !*message) {
         clif_displaymessage(fd, "Please, enter a message (usage: @adm <message>).");
         return -1;
      }
      sprintf(atcmd_output, "[Admin] %s : %s", sd->status.name, message);
      intif_broadcast2(atcmd_output, strlen(atcmd_output) + 1, 0xFF0000, 0x190, 12, 0, 0);

   return 0;
}

Paso 2:

Luego buscamos la siguiente línea:

Código: [Seleccionar]
AtCommandInfo atcommand_info[] = {
y al final de ésta, luego de:

Código: [Seleccionar]
   { "font",               1,1,      atcommand_font },
Agregar nuestro comando con el siguiente código:

Código: [Seleccionar]
   { "adm",      1,1,     atcommand_adm },
Terminado esto, Compilar el Emulador y listo, debería funcionar nuestro comando @adm


::: [Mini FAQ] :::

1.- ¿Cómo puedo modificar la etiqueta de [Admin]?

R: En la línea   
Citar
sprintf(atcmd_output, "[Admin] %s : %s", sd->status.name, message);
Modificar lo ennegrecido y agregar la etiqueta deseada.

2.- ¿Cómo puedo cambiar la etiqueta de comando a otro rango que no es Admin, por ejemplo GM o subGM?

R: Para esto, debemos modificar algunas partes del código; principalmente nos centramos en los siguientes:

Citar
ACMD_FUNC(adm)

Modificamos lo ennegrecido por lo que queremos, como ejemplo para SubGM yo elegí sgm y para GM usé gms.

Luego modificamos la línea:

Citar
clif_displaymessage(fd, "Please, enter a message (usage: @adm <message>).");

Para que cuando quien lo utilice falle aparezca la sintaxis correcta del comando.

Finalmente y muy importante aún:


Citar
{ "adm",      1,1,     atcommand_adm },

Modificamos aquello para; primero será el comando que utilizaremos tipo @ennegrecido (yo para mis subGMs y GMs utilizo "sgm" y "gms", respectivamente) y además modificar lo segundo ennegrecido que será relacionado con lo escrito o modificado en
Citar
ACMD_FUNC(adm)

Siguiendo el ejemplo anterior; en mi caso sería para el comando de subGM:
Citar
atcommand_sgm }

Y para el Comando de GMs:
Citar
atcommand_gms }

Con esto, compilamos y estaría listo.

3.- ¿Cómo cambio el color del anuncio?

R: Para realizar esto, primero que todo debemos saber que el color seleccionado debe ser en formato Hexadecimal ( Aquí hay uan tabla que encontré de colores hexadecimales http://www.webtaller.com/utilidades/csscoder/colores.php )

Elegido el color, debemos dirigirnos a la línea:


Citar
intif_broadcast2(atcmd_output, strlen(atcmd_output) + 1, 0xFF0000, 0x190, 12, 0, 0);

Y modificar lo ennegrecido. Terminado esto Compilar el Emulador y listo.

=========================
Debug 09.08.11:

- Agregado Archivo descargable del comando.
- Agregado Archivo atcommand.c con 3 variables del comando para SubGMs, GMs y Admin.
- Modificación del Post Tipo Guía (siguiendo el Formato señalado por Eves).

Debug 12.08.11:

-Agregado a sección Desarrollo y Pruebas de Usuarios
-Solicitud de Aprobación
[Pendiente]
« última modificación: 05 de Septiembre de 2011, 06:47 por Eves »


 

Guía para crear Custom Job con XRay.

Iniciado por black_zero_x

Respuestas: 5
Vistas: 9123
Último mensaje 13 de Mayo de 2007, 16:09
por Vladd
[Guia]Añadir custom job version actual del emulador (src)

Iniciado por ratalaika

Respuestas: 0
Vistas: 3757
Último mensaje 13 de Diciembre de 2008, 23:17
por ratalaika
[GUIA] Haciendo custom skill

Iniciado por Jubjub

Respuestas: 0
Vistas: 3311
Último mensaje 13 de Marzo de 2009, 08:16
por Jubjub