Funcionamiento completo de Director Hud.
#1
Hola,
Voy a explicar un poco el funcionamiento del DHUD, que funciona casi un 100% igual que un HUD normal.

Post de aporte del include: [INC]Director Hud Message

El DHUD, puede aparecer 8 veces en pantalla a la vez 9na vez que se llama, el primero que apareció desaparece, quedando nuevamente 8 DHUDs. Lo bueno de esto es que el DHUD en pantalla es más grande (Solo en algunas resoluciones más grandes) y se pueden poner 8, en vez de 4 como es el Hud normal (por canales) y lo malo es que no trabaja con canales como lo es el Hud común que todos conocemos.



Código PHP:
set_dhudmessage(red 0green 160blue 0Float:= -1.0Float:0.65effects 2Float:fxtime 6.0Float:holdtime 3.0Float:fadeintime 0.1Float:fadeouttime 1.5bool:reliable false
  • red: Representa TODA la gama de colores ROJOS.
  • green: Representa TODA la gama de colores VERDES.
  • blue: Representa TODA la gama de colores AZULES.
Para más información sobre colores en RGB, visitá el artículo en Wikipedia que explica todo acerca del tema propiamente mencionado: RGB
Acá pueden encontrar una gran paleta de combinaciones: https://web.njit.edu/~kevin/rgb.txt.html
  • Float:x: Representa la posición de DHUD de Izquierda a Derecha.
  • Float:y: Representa la posición de DHUD de Arriba hacia Abajo.
  • effects: Representa los efectos del DHUD:
  • ---> en "0" el Hud aparece y desaparece en forma suave (sin efectos)
  • ---> en "1" el Hud aparece y desaparece titilando, además cuándo está en pantalla titila.
  • ---> en "2" el Hud aparece letra por letra, pero al desaparecer lo hace normalmente (cuándo está en pantalla no titila).
  • Float:fxtime: Esto en realidad solo funciona cuando el efecto está puesto en "2", pero por algo extraño en DHUD no funciona, por eso se pone "0.0" (en un Hud normal sí funciona).
  • Float:holdtime: Esto representa el tiempo en segundos que el DHUD permanecerá en pantalla.
  • Float:fadeintime: Esto representa el tiempo en segundos que en DHUD tardará en aparecer desde el momento en qué es llamado.
  • Float:fadeouttime: Esto representa el tiempo en segundos que en DHUD tardará en desaparecer desde el momento en qué es llamado, hasta que termina.
  • bool:reliable: Explicación a continuación.

true:
Si es id, entonces será MSG_ONE.
Si es 0, entonces será MSG_ALL.

false (defecto):
Si es id, entonces será MSG_ONE_UNRELIABLE.
Si es 0, entonces será MSG_BROADCAST.


meTaLiCroSS escribió:MSG_ONE, con MSG_ONE_UNRELIABLE tienen la particular de enviar un mensaje a un cliente en especifico, solo con 2 diferencias:

MSG_ONE "espera" a que el envío del mensaje llegue correctamente a su destino, de no ser asi puede enviar un error o crashear, o incluso freezearse el servidor, no tengo claro ese punto. La ventaja es que el mensaje nunca fallará al ser enviado y recibido por el cliente, pero en caso de, puede traer consecuencias.

MSG_ONE_UNRELIABLE solo se encarga de enviar el mensaje, pero no esta consciente de saber si llego correctamente o no a su destinatario, simplemente lo envía y el server continua normal. Ahora, si el cliente recibe o no el mensaje, puede variar por distintos factores.

Lo mismo ocurre con MSG_ALL y MSG_BROADCAST respectivamente.
https://forums.alliedmods.net/showpost.p...ostcount=3

De ahí es que verán eso en "send_dhudMessage":
Código PHP:
message_begin__dhud_reliable ? ( index MSG_ONE MSG_ALL ) : ( index MSG_ONE_UNRELIABLE MSG_BROADCAST ), SVC_DIRECTOR_index ); 

A mi parecer, es algo que esta puesto innecesariamente pero sirve igual podríamos decir.
Por defecto esta en false, lo cual se usará MSG_ONE_UNRELIABLE o MSG_BROADCAST.



Código PHP:
show_dhudmessage(index, const message[], any:...) 
  • index: Esto es para identificar a quién o quienes se les mostrará el mensaje, si es "0" se mostrará a todos.
  • const message[]: Sirve para escribir el mensaje (entre comillas "..")
  • any:...: Sirve para poner variables, vectores, etc, que identifiquen "algo".

Gracias por haber leído esta simpleza. Roflmao
Cualquier duda pregunten.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#2
no veo ningun tutorial creo que iria en aportes
(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
#3
Arkshine escribió:Sending empty string is the worst way you could use. This is not a solution, nor a worth trick, it will lead only to overflow issue and would be a nightmare to handle things properly, especially with 8 buffers.

And no, dHud doesn't offer a way to clear/overlay specific buffer, it doesn't work with channel and it has not been designed to be used like normal hud.

You have 8 stacked buffers.

It means server will have to track 8 buffers per player.
It means to clear one buffer, you will have to resend up to 8 client messages.

You can imagine issues will be :

- Broken message duration time
- Broken message effect on refresh
- Message flickering on refresh
- Client overflow

Of course, there are things you could do to handle some of these issues.
Though the biggest issue is the client overflow as nowadays plugins send already a lot of messages.

But at the end, just for a small functionality, you will have to deal with a lot of trouble/code.
You can't really call that a proper solution here.
Responder
#4
(18/04/2014, 01:40 AM)K.- escribió: no veo ningun tutorial creo que iria en aportes

Tenes razón, tal vez me equivoque de sección.

(18/04/2014, 01:46 AM)Destro escribió:
Arkshine escribió:Sending empty string is the worst way you could use. This is not a solution, nor a worth trick, it will lead only to overflow issue and would be a nightmare to handle things properly, especially with 8 buffers.

And no, dHud doesn't offer a way to clear/overlay specific buffer, it doesn't work with channel and it has not been designed to be used like normal hud.

You have 8 stacked buffers.

It means server will have to track 8 buffers per player.
It means to clear one buffer, you will have to resend up to 8 client messages.

You can imagine issues will be :

- Broken message duration time
- Broken message effect on refresh
- Message flickering on refresh
- Client overflow

Of course, there are things you could do to handle some of these issues.
Though the biggest issue is the client overflow as nowadays plugins send already a lot of messages.

But at the end, just for a small functionality, you will have to deal with a lot of trouble/code.
You can't really call that a proper solution here.

Si, ya lo había leído. Pero muchos no saben o no entienden.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#5
(18/04/2014, 01:51 AM)Federicomb escribió:
(18/04/2014, 01:40 AM)K.- escribió: no veo ningun tutorial creo que iria en aportes

Tenes razón, tal vez me equivoque de sección.

(18/04/2014, 01:46 AM)Destro escribió:
Arkshine escribió:Sending empty string is the worst way you could use. This is not a solution, nor a worth trick, it will lead only to overflow issue and would be a nightmare to handle things properly, especially with 8 buffers.

And no, dHud doesn't offer a way to clear/overlay specific buffer, it doesn't work with channel and it has not been designed to be used like normal hud.

You have 8 stacked buffers.

It means server will have to track 8 buffers per player.
It means to clear one buffer, you will have to resend up to 8 client messages.

You can imagine issues will be :

- Broken message duration time
- Broken message effect on refresh
- Message flickering on refresh
- Client overflow

Of course, there are things you could do to handle some of these issues.
Though the biggest issue is the client overflow as nowadays plugins send already a lot of messages.

But at the end, just for a small functionality, you will have to deal with a lot of trouble/code.
You can't really call that a proper solution here.

Si, ya lo había leído. Pero muchos no saben o no entienden.

Al parecer tú no lo sabes ni lo entiendes.
Hi [R]ak CrabCrab
Responder
#6
Mete esto en un combo y dps mira tus logs.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#7
(18/04/2014, 10:50 AM)roccoxx escribió: Mete esto en un combo y dps mira tus logs.

Nunca dije que funcione para un combo o que sea una forma de hacer combos, igual esta en cada uno hacer lo que quiera.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#8
no neceseramiente en combos puede ser.

si vas a hacer un tutorial informate antes.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#9
yo sinceramente pense que ibas a explicar los efectos que se le puede dar al dhud...


code viejo de mi zp y no es mi code...xD

Código PHP:
public countdown()
{
    new 
random(250)
    new 
random(250)
    new 
random(250)
    if (
countdown_timer >= 0)
    { 
        
emit_sound(0CHAN_VOICEsound_countdown[countdown_timer], 1.0ATTN_NORM0PITCH_NORM);
        
set_dhudmessage(rgb0.380.3016.00.1)    
        
        if (
countdown_timer 0)
        {
            
show_dhudmessage(0,     "===================^n\
            ..:::> Modo En %i <:::..^n\
            ==================="
countdown_timer);
        }
    }
    
    --
countdown_timer;
    
    if (
countdown_timer 0)
    {
        
set_task(1.0"countdown"TASK_COUNTDOWN);
    }
    else
    {
        
remove_task(TASK_COUNTDOWN);
    }


no se me suporpone..


@roccoxx

yo digo que va a ser un solo lio de numeros en la pantalla...... xD
[Guia] Granada de Droga [actulizado 01/04/14]
[Guia] Cambio de leap zp 4.2 a 4.3

Zp 4.2 Extincion [Beta+Lvl] Edicion 0.1 (%95) terminado
Responder
#10
(18/04/2014, 12:41 PM)Nike escribió: yo sinceramente pense que ibas a explicar los efectos que se le puede dar al dhud...


code viejo de mi zp y no es mi code...xD

Código PHP:
public countdown()
{
    new 
random(250)
    new 
random(250)
    new 
random(250)
    if (
countdown_timer >= 0)
    { 
        
emit_sound(0CHAN_VOICEsound_countdown[countdown_timer], 1.0ATTN_NORM0PITCH_NORM);
        
set_dhudmessage(rgb0.380.3016.00.1)    
        
        if (
countdown_timer 0)
        {
            
show_dhudmessage(0,     "===================^n\
            ..:::> Modo En %i <:::..^n\
            ==================="
countdown_timer);
        }
    }
    
    --
countdown_timer;
    
    if (
countdown_timer 0)
    {
        
set_task(1.0"countdown"TASK_COUNTDOWN);
    }
    else
    {
        
remove_task(TASK_COUNTDOWN);
    }


no se me suporpone..


@roccoxx

yo digo que va a ser un solo lio de numeros en la pantalla...... xD

Porq compruebas 2 veces lo mismo

Código PHP:
if (countdown_timer 0

No le veo carácter de tutorial no veo q expliques nada
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#11
Perdon a todos, ya voy a acomodar el post, ahora estoy desde el cel y no puedo, cuando este en la PC explico todo y agrego un par de cosas.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#12
Thread corregido.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#13
(18/04/2014, 11:39 PM)Federicomb escribió: Thread corregido.

Ahora esta mejor, pero imaginate q estaba usando otro canal del dhudmsj al mismo tiempo
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#14
(18/04/2014, 11:57 PM)mongito100 escribió: Ahora esta mejor, pero imaginate q estaba usando otro canal del dhudmsj al mismo tiempo

otro canal? el dhud no tiene canal...


Me parece que todo lo explicas muy bien, pero el problema ya te lo dijeron.

Aparte de que si utilizas en todos lados los dhud de esa forma muchos no se van a mostrar...
(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
#15
(21/04/2014, 01:57 PM)RauliTop escribió:
(18/04/2014, 11:57 PM)mongito100 escribió: Ahora esta mejor, pero imaginate q estaba usando otro canal del dhudmsj al mismo tiempo

otro canal? el dhud no tiene canal...


Me parece que todo lo explicas muy bien, pero el problema ya te lo dijeron.

Aparte de que si utilizas en todos lados los dhud de esa forma muchos no se van a mostrar...

El DHUD, no tiene canales, en realidad es 1 solo, en el cual se pueden mostrar 8 a la vez. Yo le llamé canal a cada DHUD que aparece, por eso puse los 8.

Y esto no es para que utilicen el DHUD así, es solo para un conteo que lo tomé como ejemplo que sería el caso de problema, porque si lo haces así nomás se superpone y queda horrible. Si es para mostrar 1 solo texto, solo pones un "show_dhudmessage" con lo que necesitas.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#16
no me entendiste bien.

quiero decir que si estás utilizando un dhud en otra parte solo llamando 1 vez a la native, si a la vez, utilizas ese contoneo que pusiste, no se mostrará el otro.
(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
#17
Ya modifique todo el Thread, espero que parezca más un tutorial de esta forma, también le agregue mis ideas personales, y si quieren pueden preguntar algo que les gustaría hacer y lo agrego como un FAQ más.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#18
http://amxmodx-es.com/Thread-AYUDA-dhud-...9#pid15489
Responder
#19
(18/05/2014, 04:30 PM)LNATIC escribió: http://amxmodx-es.com/Thread-AYUDA-dhud-...9#pid15489

No entiendo a lo que vas.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#20
Enviando 8 dhuds vacios para limpiar canales?

Espero sea una broma para videomatch Roflmao
Responder
#21
en vez de mandar 8 dhud vacíos para que desaparezcan los demás numero que es desastroso diría yo.... podrías jugar con lo que explicaste

"Float:holdtime: Esto representa el tiempo en segundos que el DHUD permanecerá en pantalla.
Float:fadeintime: Esto representa el tiempo en segundos que en DHUD tardará en aparecer desde el momento en qué es llamado.
Float:fadeouttime: Esto representa el tiempo en segundos que en DHUD tardará en desaparecer desde el momento en qué es llamado, hasta que termina.
"

que para eso esta....
(17/11/2014, 11:25 PM)meTaLiCroSS escribió:
Código PHP:
#define GRANDE 1
#define CHICO 0

mipeneesgrande = (tamañopene 50) ? GRANDE CHICO 

Whatever
Item Extra En Menu De Armas
Responder
#22
(27/12/2014, 09:17 PM)meTaLiCroSS escribió: Enviando 8 dhuds vacios para limpiar canales?

Espero sea una broma para videomatch Roflmao

No, lamento decirte que no es una broma. Leiste lo que Arkshine escribió? Lo que estoy haciendo ahí es hacer un overflow para borrar, pero en un momento el hud deja de aparecer si se hace demasiadas veces. Lo que todavía no puedo lograr es "limpiar" por así decirlo, el hud sin tener que hacer overflow. Supongo que ya lo sabrás, pero lo digo para el que no sepa.

Al hacerle overflow el efecto que hace al aparecer despacio (si es que lo queres) no lo hace, si yo lo "limpiaría" eso no sucedería, no habría overflow, no habría pérdidas. Podría llamar muchas veces el hud sin perder el mensaje, pero no he logrado hacerlo todavía. Si alguien tiene algo mejor con gusto lo modifico.



(30/12/2014, 06:12 PM)Sambuseti escribió: en vez de mandar 8 dhud vacíos para que desaparezcan los demás numero que es desastroso diría yo.... podrías jugar con lo que explicaste

"Float:holdtime: Esto representa el tiempo en segundos que el DHUD permanecerá en pantalla.
Float:fadeintime: Esto representa el tiempo en segundos que en DHUD tardará en aparecer desde el momento en qué es llamado.
Float:fadeouttime: Esto representa el tiempo en segundos que en DHUD tardará en desaparecer desde el momento en qué es llamado, hasta que termina.
"

que para eso esta....

Si, ya se. Pero te lo explico fácil, queres hacer un mensaje en la pantalla que quede hasta que haces algo bien o mal, después lo borras, simple. Cito a el ejemplo de registro que tiene Axel, a eso me refiero pero también lo podes usar para otras cosas.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#23
(08/01/2015, 03:14 PM)Federicomb escribió: No, lamento decirte que no es una broma. Leiste lo que Arkshine escribió? Lo que estoy haciendo ahí es hacer un overflow para borrar, pero en un momento el hud deja de aparecer si se hace demasiadas veces. Lo que todavía no puedo lograr es "limpiar" por así decirlo, el hud sin tener que hacer overflow. Supongo que ya lo sabrás, pero lo digo para el que no sepa.

Al hacerle overflow el efecto que hace al aparecer despacio (si es que lo queres) no lo hace, si yo lo "limpiaría" eso no sucedería, no habría overflow, no habría pérdidas. Podría llamar muchas veces el hud sin perder el mensaje, pero no he logrado hacerlo todavía. Si alguien tiene algo mejor con gusto lo modifico.

Arkshine escribió:Sending empty string is the worst way you could use. This is not a solution, nor a worth trick, it will lead only to overflow issue and would be a nightmare to handle things properly, especially with 8 buffers.

And no, dHud doesn't offer a way to clear/overlay specific buffer, it doesn't work with channel and it has not been designed to be used like normal hud.
[..]
Arkshine escribió:Yes, but the context is different.

You have 8 stacked buffers.

It means server will have to track 8 buffers per player.
It means to clear one buffer, you will have to resend up to 8 client messages.

You can imagine issues will be :

- Broken message duration time
- Broken message effect on refresh
- Message flickering on refresh
- Client overflow

Of course, there are things you could do to handle some of these issues.
Though the biggest issue is the client overflow as nowadays plugins send already a lot of messages.

But at the end, just for a small functionality, you will have to deal with a lot of trouble/code.
You can't really call that a proper solution here.
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#24
(08/01/2015, 03:21 PM)Kane escribió:
(08/01/2015, 03:14 PM)Federicomb escribió: No, lamento decirte que no es una broma. Leiste lo que Arkshine escribió? Lo que estoy haciendo ahí es hacer un overflow para borrar, pero en un momento el hud deja de aparecer si se hace demasiadas veces. Lo que todavía no puedo lograr es "limpiar" por así decirlo, el hud sin tener que hacer overflow. Supongo que ya lo sabrás, pero lo digo para el que no sepa.

Al hacerle overflow el efecto que hace al aparecer despacio (si es que lo queres) no lo hace, si yo lo "limpiaría" eso no sucedería, no habría overflow, no habría pérdidas. Podría llamar muchas veces el hud sin perder el mensaje, pero no he logrado hacerlo todavía. Si alguien tiene algo mejor con gusto lo modifico.

Arkshine escribió:Sending empty string is the worst way you could use. This is not a solution, nor a worth trick, it will lead only to overflow issue and would be a nightmare to handle things properly, especially with 8 buffers.

And no, dHud doesn't offer a way to clear/overlay specific buffer, it doesn't work with channel and it has not been designed to be used like normal hud.
[..]
Arkshine escribió:Yes, but the context is different.

You have 8 stacked buffers.

It means server will have to track 8 buffers per player.
It means to clear one buffer, you will have to resend up to 8 client messages.

You can imagine issues will be :

- Broken message duration time
- Broken message effect on refresh
- Message flickering on refresh
- Client overflow

Of course, there are things you could do to handle some of these issues.
Though the biggest issue is the client overflow as nowadays plugins send already a lot of messages.

But at the end, just for a small functionality, you will have to deal with a lot of trouble/code.
You can't really call that a proper solution here.

Con eso no me ayudas, ya lo vi muchas veces. Si me hubiese servido ya le hubiese encontrado otra solución.

Se que el DHUD no se puede usar como un hud normal, ya que no tiene canales como para eliminar y reemplazar el mensaje, pero alguna forma hay de hacerlo.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#25
Actualizado!

Aclaré otras cosas más y agregue un stock en cual está explicado. Ya logré lo que hace rato estaba buscando.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)