Entendiendo el ChatColor
#1
En este tutorial explicaré cada parte del ChatColor con detalles, pues he visto que muchos quieren usarlo sin tener la menor idea de cómo funciona. El principal objetivo no es que quienes lean este tutorial entiendan a la perfección el chatcolor, pero sí que sepan usarlo adecuadamente y dejen de utilizar esos stocks tan horrorosos de chatcolor que andan sueltos por ahí.

Al final del tutorial dejaré una recopilación de diferentes stocks Chatcolor "óptimos", para diferentes usos.

  1. ¿Qué hay en un stock de chatcolor?
    • Veamos un clásico stock chatcolor mal hecho:
      Código PHP:
      stock chatcolor(id, const input[], any:...)
      {
          static 
      countplayers[32], msg[191], msgSayText;
          
      vformat(msg190input3)   
          
          if (!
      msgSayText)
              
      msgSayText get_user_msgid("SayText");

          
      replace_all(msg190"!g""^4")
          
      replace_all(msg190"!y""^1")
          
      replace_all(msg190"!team""^3")
          
          if (
      id)
          {
              
      players[0] = id;
              
      count 1;
          }
          else
              
      get_players(playerscount"c");

          for (new 
      0counti++)
          {
              
      message_begin(MSG_ONE_UNRELIABLEmsgSayText_players[i])
              
      write_byte(players[i]);
              
      write_string(msg);
              
      message_end();
          }



      Las partes del stock

    • Código PHP:
      vformat(msg190input3
      Esta native nos sirve para dar formato a un texto segun una referencia (La referencia es el any:...). Indicamos el string donde obtendremos el texto con el formato, la longitud máxima, el string del texto que se va a formatear y el número del argumento de referencia (la posición del any:...).

    • Código PHP:
      if (!msgSayText)
          
      msgSayText get_user_msgid("SayText"); 
      Aquí se obtiene el ID de los mensajes SayText. Se hace así porque el ID de los mensajes no va a cambiar en medio del juego, no es necesario llamar a la native cada vez que necesitemos este ID, con una vez es suficiente.

    • Código PHP:
      replace_all(msg190"!g""^4"); 
      Esto es algo totalmente inútil a mi parecer, pero muchos lo usan. Simplemente reemplaza todos los '!g' por '^4'. Los mensajes que enviamos por SayText se pueden mostrar en color segun estos carácteres: ^1 (cvar con_color, por defecto amarillo), ^3 (color del team de quien envia el mensaje) y ^4 (color verde).

    • Código PHP:
      get_players(playerscount"c"); 
      Por desgracia esto está presente en muchos stocks de chatcolor, más adelante explicaré por qué no tendría que estar.

    • Código PHP:
      message_begin(MSG_ONE_UNRELIABLEmsgSayText_players[i])
      write_byte(players[i]);
      write_string(msg);
      message_end(); 
      Llegamos a la parte más importante. Esto es el chatcolor, esto envia nuestro mensaje a color, todo lo demás sirve de adorno.

  2. Ahora que conocemos el "verdadero" chatcolor, veamos cómo funciona.
    • Primero, voy a darles una noción básica de los mensajes en HL. Los mensajes son el "lenguaje de comunicación" entre el servidor de HL y los clientes. Lo que hacemos en el stock de chatcolor es enviar un mensaje "SayText". Hay muchos tipos de mensajes que usa HL, conozco 2 que nos pueden imprimir mensajes en el chat, pero "SayText" es el que nos va a permitir mostrar color.
    • Este mensaje tiene 2 argumentos: el "remitente" y el "mensaje". (Sí, como una carta!). El remitente es el índice de un jugador (entre 1 y 32, si usamos 0 el mensaje no tendrá color) (byte) y el mensaje, pues el texto a mostrar ^^ (string).
    • Regresando al tema de los mensajes de HL, los mensajes se pueden enviar a destinos predefinidos por HL. Los principales son: MSG_ONE, MSG_ALL y sus contrapartes en el unreliable channel: MSG_ONE_UNRELIABLE y MSG_BROADCAST. También está MSG_SPEC y otros 4 que no entiendo ni explicaré.

    • Código PHP:
      message_begin(MSG_ONEg_msgSayText_id
      ‪Cuando llamamos a la native message_begin(), le indicamos el destino de nuestro mensaje. Recomiendo usar MSG_ONE_UNRELIABLE y MSG_BROADCAST, ya que la diferencia con sus contrapartes es que estos mensajes se pueden perder en el camino sin generar "daños", mientras si los otros mensajes se pierden (por loss, desconexión) generalmente hacen que el servidor colesione (CRASH).
    • Si ponemos MSG_ONE_UNRELIABLE, tenemos que indicarle un ID de un jugador a quien se va a dirigir el mensaje. Con MSG_BROADCAST, el mensaje va a TODOS O.O, sí, a todos! Por eso no se debería de usar get_players en el stock de chatcolor si con MSG_BROADCAST ya enviamos el mensaje a todos. También podemos usar MSG_SPEC, que enviará el mensaje a los clientes HLTV.
    • message_begin() también nos permite establecer el origen del mensaje, aunque esto no es necesario en absoluto para enviar mensajes de chat.

    • Código PHP:
      write_byte(id
      Vamos otra vez con "SayText". El primer argumento en este mensaje es un byte, que es el ID del jugador que envia el mensaje. El color depende del equipo de este jugador. El id puede ser un jugador no conectado, no tendremos problemas con ello, en este caso el color será el del equipo del último jugador que tuvo ese número de ID.
      DATO (Gracias Destro por la información): Podemos "hacer creer" a los jugadores que el jugador (o entidad) con ID 33, 34, 35, etc pertenece a un equipo, así al utilizar estos IDs en este byte del mensaje obtendremos los colores deseados. (Más info en los stocks).

    • Código PHP:
      write_string(msg
      ‪El segundo argumento es el mensaje, con nuestros códigos de color. El código de color ^3 hace que nuestro mensaje tenga el color del equipo del jugador que envia el mensaje (vease write_byte arriba). Si el jugador no está conectado o está de espectador, nos mostrará gris; si es CT, nos mostrará Azul y si es TT, nos mostrará Rojo.
      Nota: La longitud del mensaje no puede exceder los 189 carácteres, o el servidor colapsará.

    • Código PHP:
      message_end() 
      ‪Luego de haber especificado estos argumentos, enviamos el mensaje con message_end().

  3. Recopilación de Chatcolor
    • Chatcolor simple para mostrar un mensaje a todos los jugadores, sin formato.
      Código PHP:
      stock chatcolor_all(input[])
      {
          static 
      msgSayText;
          
          if (!
      msgSayText)
              
      msgSayText get_user_msgid("SayText");
          
          if (
      strlen(input) >= 190)
              
      input[190] = '^0';
          
          
      message_begin(MSG_BROADCASTmsgSayText);
          
      write_byte(33);
          
      write_string(input);
          
      message_end();


      Modo de uso:
      Código PHP:
      chatcolor_all("^4[AMXX]^1 Bienvenidos a^3 Mi super Server"
      Color verde - ^4
      Color amarillo - ^1
      Color blanco - ^3

    • Chatcolor con formato, para un jugador o para todos.
      Código PHP:
      stock chatcolor(id, const input[], any:...)
      {
          static 
      szMsg[191], msgSayText;
          
          if (!
      msgSayText)
              
      msgSayText get_user_msgid("SayText");
          
          
      vformat(szMsg190input3);

          
      replace_all(szMsg190"!g""^4");
          
      replace_all(szMsg190"!y""^1");
          
      replace_all(szMsg190"!team""^3");
          
          
      message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id);
          
      write_byte(id id 33);
          
      write_string(szMsg);
          
      message_end();


      Modo de uso:
      Código PHP:
      new name[32]; get_user_name(idname31);
      chatcolor(id"!g[AMXX] !yBienvenido a !teamMi super Server, !g%s"name
      Color verde - !g
      Color amarillo - !y
      Color de team - !team

      Si el index es un ID, el color de !team será el de su equipo. Si el index es 0, el color de !team será blanco.

    • Un "chatcolor" más avanzado y elegante (Printf), permite elegir el color (Hecho por [R]ak - Sacado de aquí). Sólo envia un mensaje a un jugador, no index 0.
      Código PHP:
      enum {

          DEFAULT,

          
      RED,

          
      BLUE,

          
      GRAY,

          
      GREEN

      }



      stock printf(idcolor, const msg[], any:...) {
          

          static 
      Buffer[192], MsgSayTextMsgTeamInfoTeam[11]

          
          if(!
      MsgSayText) {

              
              
      MsgTeamInfo get_user_msgid("TeamInfo")


              
      MsgSayText get_user_msgid("SayText")

              
          }
              

          
      vformat(Buffer[1], charsmax(Buffer) - 1msg4)
          

          static const 
      g_Teams[4][11] = {

              
      "UNASSIGNED",

              
      "TERRORIST",

              
      "CT",

              
      "SPECTATOR"

          
      }
          

          if(
      color) {
              

              if(
      color == GREEN) {

                  
                  
      Buffer[0] = 0x04

               
                  message_begin
      (MSG_ONE_UNRELIABLEMsgSayText_id

              
                  
      write_byte(id

              
                  
      write_string(Buffer)   
              

                  
      message_end()

                  
              }

              else {

                  
                  
      Buffer[0] = 0x03

              
                  get_user_team
      (idTeamcharsmax(Team))

                  
                  
      message_begin(MSG_ONE_UNRELIABLEMsgTeamInfo_id

              
                  
      write_byte(id

              
                  
      write_string(g_Teams[color])   

             
                  
      message_end()

                  
                  
      message_begin(MSG_ONE_UNRELIABLEMsgSayText_id

              
                  
      write_byte(id

              
                  
      write_string(Buffer)   

              
                  
      message_end()

              
                  
      message_begin(MSG_ONE_UNRELIABLEMsgTeamInfo_id

              
                  
      write_byte(id

              
                  
      write_string(Team)   

              
                  
      message_end()
                  
              }

          }

          else {
              
              
      Buffer[0] = 0x01

              
              message_begin
      (MSG_ONE_UNRELIABLEMsgSayText_id

              
              
      write_byte(id

              
              
      write_string(Buffer)   

              
              
      message_end()

          }



      Modo de uso:
      Código PHP:
      printf(id, DEFAULT, "%s Acme Inc.- %s"AUTHORPLUGIN// comun
      printf(idRED"%s Acme Inc.- %s"AUTHORPLUGIN// rojo
      printf(idBLUE"%s Acme Inc.- %s"AUTHORPLUGIN// azul
      printf(idGRAY"%s Acme Inc.- %s"AUTHORPLUGIN// gris
      printf(idGREEN"^%s Acme Inc.- %s"AUTHORPLUGIN// verde 
    • El printf del Panda editado para soportar index 0 (Para todos).
      Código PHP:
      enum {

          DEFAULT,

          
      RED,

          
      BLUE,

          
      GRAY,

          
      GREEN

      }

      stock printf(idcolor, const msg[], any:...) {
          
          static 
      Buffer[192], MsgSayTextMsgTeamInfoTeam[32]
          
          if(!
      MsgSayText) {
              
              
      MsgTeamInfo get_user_msgid("TeamInfo")
              
              
      MsgSayText get_user_msgid("SayText")
              
          }
              
          
      vformat(Buffer[1], charsmax(Buffer) - 1msg4)
          
          static const 
      Teams[2][10] = {
              
      "TERRORIST",
              
      "CT"
          
      }

          switch (
      color) {
              
              case DEFAULT: {
                  
                  
      Buffer[0] = 0x01
              
                  printf_do
      (idid id 33BufferMsgSayText)
              }
              
              case 
      GREEN: {
                  
                  
      Buffer[0] = 0x04
                  
                  printf_do
      (idid id 33BufferMsgSayText)
                  
              }
              
              case 
      GRAY: {
                  
                  
      Buffer[0] = 0x03
                  
                  printf_do
      (id33BufferMsgSayText)
                  
              }
              
              case 
      REDBLUE: {
                  
                  
      Buffer[0] = 0x03
                  
                  
      if (id) {
                      
                      if (
      get_user_team(idTeamcharsmax(Team)) == color) {
                          
                          
      printf_do(ididBufferMsgSayText)
                          
                      }
                      else {
                          
                          
      printf_do(ididTeams[color-1], MsgTeamInfo)
                          
                          
      printf_do(ididBufferMsgSayText)
                          
                          
      printf_do(ididTeamMsgTeamInfo)
                          
                      }
                  
                  }
                  
                  else {
                  
                      static 
      Num;
                      
                      
      get_players(TeamNum"e"Teams[color-1]);
                      
                      if (
      Num) {
                          
                          
      printf_do(idTeam[0], BufferMsgSayText)
                          
                      }
                      else {
                          
                          
      get_players(TeamNum"h");
                          
                          if (!
      Num) {
                              
                              return;
                              
                          }
                          
                          
      Num Team[0];
                          
                          
      get_user_team(NumTeamcharsmax(Team));
                          
                          
      printf_do(NumNumTeams[color-1], MsgTeamInfo)
              
                          
      printf_do(idNumBufferMsgSayText)
              
                          
      printf_do(NumNumTeamMsgTeamInfo)
                          
                      }
                      
                  }
                  
              }
              
          }
      }

      printf_do(idsender, const data[], MsgID) {
          
          
      message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTMsgID_id
              
          
      write_byte(sender
              
          
      write_string(data)   
              
          
      message_end()
          


      Modo de uso: Igual que el anterior.

    • Stock capaz de mostrar el color deseado de una forma más eficiente (lo hice basándome en este, gracias Destro)
      Código PHP:
      // Va al inicio
      enum Colors
      {
          
      Gris 33,
          
      Rojo,
          
      Azul
      }

      // Si ya tienes client_putinserver, solo agregas la linea
      public client_putinserver(id)
      {
          
      set_task(0.2"chatcolor_send_teaminfo"id);
      }

      // Al final o donde quieras
      stock chatcolor(idColors:colormsg[], any:...)
      {
          static 
      szMsg[191], msgSayText;
          
      #define teaminfo_sent(%0) (TeamInfoSent & (1<<%0))
          
          
      if (!msgSayText)
              
      msgSayText get_user_msgid("SayText");
          
          
      vformat(szMsg190msg4);

          
      replace_all(szMsg190"!g""^4");
          
      replace_all(szMsg190"!y""^1");
          
      replace_all(szMsg190"!color""^3");
          
          
      message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id);
          
      write_byte(color ? (_:color) : 33);
          
      write_string(szMsg);
          
      message_end();
      }

      public 
      chatcolor_send_teaminfo(id)
      {
          if (!
      is_user_connected(id))
              return;
          
          static 
      msgTeamInfo;
          if (!
      msgTeamInfo)
              
      msgTeamInfo get_user_msgid("TeamInfo");
          
          static const 
      pTeams[][] = { """TERRORIST""CT" };
          
          for (new 
      pid 0pid 3pid++)
          {
              
      message_begin(MSG_ONE_UNRELIABLEmsgTeamInfo, .player id)
              
      write_byte(pid+33)
              
      write_string(pTeams[pid])
              
      message_end()
          }

      Modo de uso:
      Código PHP:
      new name[32]; get_user_name(idname31);

      // Saldrá del color del team de "id"
      chatcolor(idid"!g[ZP]!y Hola y bienvenido, !color%s!"name);

      // Color azul
      chatcolor(idAzul"!g[ZP]!y Hola y bienvenido, !color%s!"name);

      // Color rojo
      chatcolor(idRojo"!g[ZP]!y Hola y bienvenido, !color%s!"name);

      // Color gris
      chatcolor(idGris"!g[ZP]!y Hola y bienvenido, !color%s!"name); 
      Color verde - !g
      Color amarillo - !y
      Color definido - !color
Eso es todo amigos Whatever
Responder
#2
Buen tutorial. Me diste ideas.

[Imagen: favicon.ico]
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#3
Muy buen tutorial.- Proud
Responder
#4
(16/07/2014, 01:52 AM)Federicomb escribió: Buen tutorial. Me diste ideas.

(16/07/2014, 11:34 AM)AGustiN escribió: Muy buen tutorial.- Proud

Gracias a los 2! ^^
PD: BUMP! Muchos tienen que leer esto Whatdone
Responder
#5
Recien lo leo, buen tutorial, no sabia de unas cositas como ^3, Gracias Gran sonrisa... Ya mas adelante lo ponemos en practica Gran sonrisa
Responder
#6
Como lo uso ? osea para mandar mensajes en verde , amarillo ?

Código PHP:
stock chatcolor_all(input[])
{
    static 
msgSayText;
    
    if (!
msgSayText)
        
msgSayText get_user_msgid("SayText");
    
    if (
strlen(input) >= 190)
        
input[190] = '^0';
    
    
message_begin(MSG_BROADCASTmsgSayText);
    
write_byte(1);
    
write_string(input);
    
message_end();

(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#7
(20/07/2014, 04:11 AM)K.- escribió: Como lo uso ? osea para mandar mensajes en verde , amarillo ?

Código PHP:
stock chatcolor_all(input[])
{
    static 
msgSayText;
    
    if (!
msgSayText)
        
msgSayText get_user_msgid("SayText");
    
    if (
strlen(input) >= 190)
        
input[190] = '^0';
    
    
message_begin(MSG_BROADCASTmsgSayText);
    
write_byte(1);
    
write_string(input);
    
message_end();

Código PHP:
chatcolor_all("Hola a todos"// Le envias el mensaje a todos los que esten en el sv 
Exacto.. Es solo para mensajes en color verde y default

Con este soporta index
Código PHP:
stock chatcolor(id, const input[], any:...)
{
    static 
szMsg[191], msgSayText;
    
    if (!
msgSayText)
        
msgSayText get_user_msgid("SayText");
    
    
vformat(szMsg190input3);
    
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id);
    
write_byte(id id 1);
    
write_string(szMsg);
    
message_end();

Y soporta los formates en color del team, verde y default.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#8
sisi Genius ya se xD pero osea quisiera saber como mandar esos mensajes , ej :

chatcolor_all(id, "!gColor verde !yColor default") osea nose como mandar los mensajes en color..
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#9
Una pregunta, no es mejor usar charsmax?

Código PHP:
vformat(msg190input3);

replace_all(msg190"!g""^4"); 

-->

Código PHP:
vformat(msgcharsmax(msg), input3);

replace_all(msgcharsmax(msg), "!g""^4"); 
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#10
(20/07/2014, 05:02 AM)Federicomb escribió: Una pregunta, no es mejor usar charsmax?

Código PHP:
vformat(msg190input3);

replace_all(msg190"!g""^4"); 

-->

Código PHP:
vformat(msgcharsmax(msg), input3);

replace_all(msgcharsmax(msg), "!g""^4"); 

Si, tenes razón.

Lo que hace charsmax es no dejar celdas sin uso ..

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
#11
(20/07/2014, 05:02 AM)Federicomb escribió: Una pregunta, no es mejor usar charsmax?

Código PHP:
vformat(msg190input3);

replace_all(msg190"!g""^4"); 

-->

Código PHP:
vformat(msgcharsmax(msg), input3);

replace_all(msgcharsmax(msg), "!g""^4"); 

No. Es como meter charsmax en get_user_name, la longitud del mensaje no puede exceder a 190 o tendras un lindo crash en tu servidor.
Responder
#12
mario , me decis como hago el color verde y amarillo ? solo nesesito eso.. osea como mandarlos en un mensaje un ejemplo
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#13
^4 para verde, ^1 amarillo.
EDIT: Ya le puse el !y, !g, y !team Whatdone
Responder
#14
Código PHP:
stock chatcolor(id, const input[], any:...)
{
    static 
szMsg[191], msgSayText;
    
    if (!
msgSayText)
        
msgSayText get_user_msgid("SayText");

    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!y""^1");
    
replace_all(msg190"!team""^3");
    
    
vformat(szMsg190input3);
    
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id);
    
write_byte(id id 33);
    
write_string(szMsg);
    
message_end();


Código:
msg
->
szMsg

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
Puedo usar varios stock verdad perdón por mi pregunta estúpida, ustedes se preguntaran porque.. bueno porque quiero que en el cs se muestren el color blanco,verde,amarillo(default),rojo,azul y en los stock que recién vi solo se ve que el blanco esta en un solo stock.
Responder
#16
El gris aparece cuando usas ^3 y estás de espectador o sin equipo.
O usando el stock donde elegis el color que queres usar independientemente del equipo donde estés.

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#17
Buen tuto mario Ar. Me gusta
Responder
#18
(21/07/2014, 02:56 PM)kirito escribió: Puedo usar varios stock verdad perdón por mi pregunta estúpida, ustedes se preguntaran porque.. bueno porque quiero que en el cs se muestren el color blanco,verde,amarillo(default),rojo,azul y en los stock que recién vi solo se ve que el blanco esta en un solo stock.

Whatdone
Parece que sólo viste la parte de recopilación de stocks. Si lees la guia completa entenderás qué necesitas. Si no encuentras un stock para tus necesidades, lo puedes hacer Whatever
Responder
#19
el motivo de por qué no se utiliza MSG_BROADCAST para enviar el mensaje a todos los jugadores y se hace con un loop con MSG_ONE_UNRELIABLE es básicamente porque si alguien intenta poner para mandar color de equipo, siendo broadcast se mandará con color gris (de espectador) en vez de con el color del equipo correcto.
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#20
(28/07/2014, 05:33 PM)RauliTop escribió: el motivo de por qué no se utiliza MSG_BROADCAST para enviar el mensaje a todos los jugadores y se hace con un loop con MSG_ONE_UNRELIABLE es básicamente porque si alguien intenta poner para mandar color de equipo, siendo broadcast se mandará con color gris (de espectador) en vez de con el color del equipo correcto.

No RauliTop.
El color dependerá del equipo de quien envía el mensaje (el primer byte del mensaje). Si mandas MSG_BROADCAST y en el byte pones el ID de un terrorista, todos recibirán el mensaje con color Rojo donde corresponde color de team.

EDIT: Si te refieres a que se vea el color del equipo de quien recibe (Algo a lo que no le veo sentido) entonces sería necesario ese bucle.
Responder
#21
hace tiempo que hice un test, lo puse así:
write_byte(index? index : 1)

me salía en color gris, supongo porque el jugador no estaba conectado (no había nadie en espectador), que pasaría con 33 o.O

por eso, no tendrá su color de equipo que es lo que precisamente quiere, sino el color del que lo envió
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#22
Quién quiere algo así? O.O

Con cualquier ID fuera de rango en el primer byte obtendrás gris, pero no recomiendo hacer esto (tuve algunos crash haciendo pruebas). Usar 33 es seguro, por eso lo puse en los stocks.
Responder
#23
de siempre cuando alguien pone el ^3 en el mensaje a color es para:
si el jugador que lo recibe es T le salga rojo
si es CT le salga azul
y sino gris

con broadcast cuando pongas ^3 en un mensaje con index 0, siempre saldrá el mismo color a todos da igual de que equipo sean
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#24
(29/07/2014, 05:51 AM)RauliTop escribió: de siempre cuando alguien pone el ^3 en el mensaje a color es para:
si el jugador que lo recibe es T le salga rojo
si es CT le salga azul
y sino gris

con broadcast cuando pongas ^3 en un mensaje con index 0, siempre saldrá el mismo color a todos da igual de que equipo sean

Algún ejemplo donde eso sea útil? Yo jamás le vi utilidad a eso, y cuando no entendía cómo funcionaba el chatcolor y usaba esos stocks horribles siempre me molestó eso.
Si el byte es 0 no tendrás ningún color, todo va a salir de amarillo. Usa un index de 1 a 33, entre 1 y 32 obtendrás el color del team del jugador (gris si no está conectado). 33 siempre será gris.
Responder
#25
bueno, intentando cambiar el loop de jugadores para utilizar broadcast hice esto:
Código PHP:
fnColorPrint(indexindex2Msg[], any:...) {
    new 
Buffer[190];
    
vformat(Buffercharsmax(Buffer), Msg3)

    
message_begin(index MSG_ONE MSG_BROADCASTg_iMsgSayText_index)
    
write_byte(index2 index2 33)
    
write_string(Buffer)
    
message_end()


el problema es que ahora cuando pongo un %s o %d o algún parámetro al mensaje, se bugea repitiéndose o no mostrando el valor correcto, esto por ejemplo:
Código PHP:
fnColorPrint(0id"^4[SuperMod o.O]^3 %s ^1te dice hola!"g_iUserName[id]) 
se muestra así
Código:
[SuperMod o.O] [SuperMod o.O] ElNombre te dice hola! te dice hola!

eso era en caso de string, en caso de entero muestra un valor no correcto, por ejemplo:
Código PHP:
fnColorPrint(00"^4[...]^1 VAIS A MORIR en:^3 %d segundos"floatround(g_variable)) // g_variable sé que vale 50.0 
se muestra esto:
Código:
[...] VAIS A MORIR en: 4 segundos
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)