Raised This Month: $ Target: $400
 0% 

HUD and dHUD not playing along nicely?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
aron9forever
Veteran Member
Join Date: Feb 2013
Location: Rromania
Old 02-05-2018 , 15:59   HUD and dHUD not playing along nicely?
Reply With Quote #1

Before I start, please know that there is a chance I misunderstood how huds and dhuds work and affect eachother in which case please correct my misassumptions.

The following code might look fat and unappealing at first but at a closer look, it's just some handy constants and stocks I created for use in my projects. All this code is doing is spamming 4 HUD messages on channels 1 to 4 every 0.5 seconds. It it also creating 5 DHUD messages every 5 seconds with a hold time of 5 seconds.

What I'm expecting is to have 9 permanent huds nicely sitting on my screen. What I have is 4 permanent HUDs, and a broken clusterfuck of dHUDS.

I was under the impression that dHUDs can also be used as a permanent display as long as the information does not need to be updated quicker than hold time (so not for health display, but maybe a clock?). However after creating a dHUD clock that displays every second with a holdtime of 1 second; other HUDs interfere and make my clock disappear even though there are no other dHUDs being displayed. So basically a single permanent dHUD is being broken by several other permanent HUDs once they pick up enough intensity.

Here's what it looks like: https://youtu.be/V0Is77y7Yh8

My problem in production (2 permanent HUDs, 1 dHUD and they don't work together) https://www.youtube.com/watch?v=FtyDvOJOvLg

Any help would be appreciated. I still have 1 hud channel free that I was saving for something else and now I'm worried everything will collide to crap because I am probably doing something wrong.
Code:
#include <amxmodx>

enum _:HUDLOCATIONS{
  HUD_CENTER,
  HUD_CENTER_UPPER,
  HUD_CENTER_LOWER,
  HUD_LEFT_CENTER,
  HUD_LEFT_UPPER,
  HUD_LEFT_LOWER,
  HUD_LEFT_LOWER_LOWER,
  HUD_RIGHT_CENTER,
  HUD_RIGHT_UPPER,
  HUD_RIGHT_LOWER,
  HUD_RIGHT_LOWER_LOWER
};

static const Float:HUD_COORDINATES[HUDLOCATIONS][] = {
  {-1.0, -1.0},
  {-1.0, 0.2},
  {-1.0, 0.9},
  {0.02, -1.0},
  {0.02, 0.2},
  {0.02, 0.75},
  {0.01, 0.92},
  {0.85, -1.0},
  {0.85, 0.2},
  {0.85, 0.85},
  {0.85, 0.92}
};

enum _:HUDCOLORS{
  HUD_COLOR_WHITE,
  HUD_COLOR_RED,
  HUD_COLOR_GREEN,
  HUD_COLOR_BLUE,
  HUD_COLOR_YELLOW,
  HUD_COLOR_MAGENTA,
  HUD_COLOR_CYAN,
  HUD_COLOR_ORANGE,
  HUD_COLOR_OCEAN,
  HUD_COLOR_MAROON
};

static const HUD_COLORS[HUDCOLORS][] = {
  {255, 255, 255},
  {255, 0, 0},
  {0, 255, 0},
  {0, 0, 255},
  {255, 255, 0},
  {255, 0, 255},
  {0, 255, 255},
  {227, 96, 8},
  {45, 89, 116},
  {103, 44, 38}
};

stock print_to_dhud_time(const id, const location, const color, const Float:holdtime, const input[], any:...) {
  static msg[191];
  vformat(msg, charsmax(msg), input, 6);

  set_dhudmessage(HUD_COLORS[color][0], HUD_COLORS[color][1], HUD_COLORS[color][2], HUD_COORDINATES[location][0], HUD_COORDINATES[location][1], 0, 3.0, holdtime, 0.15, 0.15);
  show_dhudmessage(id, msg);
}

stock print_to_hud_chan(const id, const location, const color, const chan = -1, const input[], any:...) {
  static msg[191];
  vformat(msg, charsmax(msg), input, 6);

  set_hudmessage(HUD_COLORS[color][0], HUD_COLORS[color][1], HUD_COLORS[color][2], HUD_COORDINATES[location][0], HUD_COORDINATES[location][1], 0, 3.0, 5.0, 0.15, 0.15, chan);
  show_hudmessage(id, msg);
}

public plugin_init() {
  set_task(1.0, "flash_stuff", 1337);

  set_task(1.0, "flash_Dstuff", 13379);
}

public flash_stuff() {
  print_to_hud_chan(0, HUD_LEFT_LOWER, HUD_COLOR_RED, 1, "XXXXXXXXXXXXXXXXX");
  print_to_hud_chan(0, HUD_RIGHT_LOWER, HUD_COLOR_RED, 2, "XXXXXXXXXXXXXXXXX");
  print_to_hud_chan(0, HUD_LEFT_UPPER, HUD_COLOR_RED, 3, "XXXXXXXXXXXXXXXXX");
  print_to_hud_chan(0, HUD_RIGHT_UPPER, HUD_COLOR_RED, 4, "XXXXXXXXXXXXXXXXX");
  set_task(0.5, "flash_stuff", 1337);
}

public flash_Dstuff() {
  print_to_dhud_time(0, HUD_CENTER_UPPER, HUD_COLOR_CYAN, 5.0, "DDDDDDDDDDDDDDDD");
  print_to_dhud_time(0, HUD_CENTER, HUD_COLOR_CYAN, 5.0, "DDDDDDDDDDDDDDDD");
  print_to_dhud_time(0, HUD_CENTER_LOWER, HUD_COLOR_CYAN, 5.0, "DDDDDDDDDDDDDDDD");
  print_to_dhud_time(0, HUD_LEFT_LOWER_LOWER, HUD_COLOR_CYAN, 5.0, "DDDDDDDDDDDDDDDD");
  print_to_dhud_time(0, HUD_RIGHT_LOWER_LOWER, HUD_COLOR_CYAN, 5.0, "DDDDDDDDDDDDDDDD");

  set_task(5.0, "flash_Dstuff", 13379);
}
__________________
Meanwhile, in 2050:
Quote:
Originally Posted by aron9forever
useless small optimizations
Quote:
Originally Posted by Black Rose View Post
On a map that is 512x512x128 units you end up with 3,355,443,200,000 different "positions". To store each one of those positions individually in the variable "user_or" you need 12 terabytes of memory.
aron9forever is offline
DjSoftero
Veteran Member
Join Date: Nov 2014
Location: Lithuania
Old 02-06-2018 , 04:55   Re: HUD and dHUD not playing along nicely?
Reply With Quote #2

I think the max channels for the huds is 8. 9 might be the problem. try with lower quantity. also, make sure the previous dhud is deleted before its updated, or it might use 10 or even bigger channel, in which case, it would remove all of them, or the first one. That's my theory behind it
__________________
retired chump

Last edited by DjSoftero; 02-06-2018 at 04:56.
DjSoftero is offline
aron9forever
Veteran Member
Join Date: Feb 2013
Location: Rromania
Old 02-06-2018 , 08:47   Re: HUD and dHUD not playing along nicely?
Reply With Quote #3

Quote:
Originally Posted by DjSoftero View Post
I think the max channels for the huds is 8. 9 might be the problem. try with lower quantity. also, make sure the previous dhud is deleted before its updated, or it might use 10 or even bigger channel, in which case, it would remove all of them, or the first one. That's my theory behind it
I thought hud and dhud had nothing to do with eachother
huds have 4 channels and dhuds have 8(but you can't set the channel, it selects automatically), so theoretically you should be able to display 12 huds and dhuds at the same time on the screen.
__________________
Meanwhile, in 2050:
Quote:
Originally Posted by aron9forever
useless small optimizations
Quote:
Originally Posted by Black Rose View Post
On a map that is 512x512x128 units you end up with 3,355,443,200,000 different "positions". To store each one of those positions individually in the variable "user_or" you need 12 terabytes of memory.
aron9forever is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:59.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode