Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 29 мар 2024, 20:25

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: HLSDK (Client) new colors msg print
СообщениеДобавлено: 25 апр 2016, 04:53 
Не в сети
Аватара пользователя
Зарегистрирован:
09 фев 2015, 02:46
Последнее посещение:
19 июл 2018, 16:07
Сообщения: 91
Откуда: Endcamp
I'm trying to add new colors
I do not succeed

as is the correct form?

Код:
int DrawConsoleString(int x, int y, const char *string, float *color)
{
   if (!string || !*string)
      return x;

   if (color != NULL)
      gEngfuncs.pfnDrawSetTextColor(color[0], color[1], color[2]);
   else
      gEngfuncs.pfnDrawConsoleString(x, y, " ");   // Reset color to con_color

   if (gHUD.m_pCvarColorText->value == 0)
      return gEngfuncs.pfnDrawConsoleString(x, y, (char*)string);

   char *c1 = (char*)string;
   char *c2 = (char*)string;
   float r, g, b;
   int colorIndex;
   while (true)
   {
      // Search for next color code
      colorIndex = -1;
      while (*c2 && *(c2 + 1) && !(*c2 == '^' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9'))
         c2++;
      if (*c2 == '^' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9')
      {
         colorIndex = *(c2 + 1) - '0';
         *c2 = 0;
      }
      // Draw current string
      x = gEngfuncs.pfnDrawConsoleString(x, y, c1);

      if (colorIndex >= 0)
      {
         // Revert change and advance
         *c2 = '^';
         c2 += 2;
         c1 = c2;

         // Return if next string is empty
         if (!*c1)
            return x;

         // Setup color
         if (color == NULL && colorIndex <= 8 && gHUD.m_pCvarColorText->value == 1)
         {
            r = g_iColorsCodes[colorIndex][0] / 256.0;
            g = g_iColorsCodes[colorIndex][1] / 256.0;
            b = g_iColorsCodes[colorIndex][2] / 256.0;
            gEngfuncs.pfnDrawSetTextColor(r, g, b);
         }
         else if (color != NULL)
            gEngfuncs.pfnDrawSetTextColor(color[0], color[1], color[2]);
         continue;
      }

      // Done
      break;
   }
   char *c3 = (char*)string;
   char *c4 = (char*)string;
   int colorIndexHL;
   while (true)
/*
$0
$1
$2
$3
$4
$5
$6
$7
$8
$9
*/
   {
      // Search for next color code
      colorIndexHL = -1;
      while (*c4 && *(c4 + 1) && !(*c4 == '$' && *(c4 + 1) >= '0' && *(c4 + 1) <= '9'))
         c4++;
      if (*c4 == '$' && *(c4 + 1) >= '0' && *(c4 + 1) <= '9')
      {
         colorIndexHL = *(c4 + 1) - '0';
         *c4 = 0;
      }
      // Draw current string
      x = gEngfuncs.pfnDrawConsoleString(x, y, c3);//error

      if (colorIndexHL >= 0)
      {
         // Revert change and advance
         *c4 = '$';
         c4 += 2;
         c3 = c4;

         // Return if next string is empty
         if (!*c3)
            return x;

         // Setup color
         if (color == NULL && colorIndexHL <= 8 && gHUD.m_pCvarColorText->value == 1)
         {
            r = g_iColorsCodesHL[colorIndexHL][0] / 256.0;
            g = g_iColorsCodesHL[colorIndexHL][1] / 256.0;
            b = g_iColorsCodesHL[colorIndexHL][2] / 256.0;
            gEngfuncs.pfnDrawSetTextColor(r, g, b);
         }
         else if (color != NULL)
            gEngfuncs.pfnDrawSetTextColor(color[0], color[1], color[2]);
         continue;
      }

      // Done
      break;
   }
   return x;
}
2 message
Изображение
Изображение

_________________
Gennaro.R+
Изображение


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 25 апр 2016, 05:22 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
You did a copy of the cycle (while) that prints text. So now you have print it twice. Once with using ^0-^9 as color codes and once with $0-$9.
I think it should be clear if you look at the code that if you print twice it will be output twice, isn't it?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 25 апр 2016, 06:16 
Не в сети
Аватара пользователя
Зарегистрирован:
09 фев 2015, 02:46
Последнее посещение:
19 июл 2018, 16:07
Сообщения: 91
Откуда: Endcamp
right
you can help me solve this?

_________________
Gennaro.R+
Изображение


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 25 апр 2016, 09:18 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Just increase g_iColorsCodes size, add your colors and expand check to include $.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 27 апр 2016, 05:58 
Не в сети
Аватара пользователя
Зарегистрирован:
09 фев 2015, 02:46
Последнее посещение:
19 июл 2018, 16:07
Сообщения: 91
Откуда: Endcamp
This is fine?
Код:
int g_iColorsCodes[20][3] = 
{
   { 0xFF, 0xAA, 0x00 },   // ^0 orange
   { 0xFF, 0x00, 0x00 },   // ^1 red
   { 0x00, 0xFF, 0x00 },   // ^2 green
   { 0xFF, 0xFF, 0x00 },   // ^3 yellow
   { 0x00, 0x00, 0xFF },   // ^4 blue
   { 0x00, 0xFF, 0xFF },   // ^5 cyan
   { 0xFF, 0x00, 0xFF },   // ^6 magenta
   { 0x88, 0x88, 0x88 },   // ^7 grey
   { 0xFF, 0xFF, 0xFF },   // ^8 white
                     // ^9 con_color
   { 0xff, 0xe4, 0xe1 },   // $0 MediumVioletRed   /*Nuevos colores*/
   { 0xff, 0xe4, 0xb5 },   // $1 MidnightBlue
   { 0xff, 0xde, 0xad },   // $2 MintCream
   { 0x00, 0x00, 0x80 },   // $3 MistyRose
   { 0xfd, 0xf5, 0xe6 },   // $4 Moccasin
   { 0x80, 0x80, 0x00 },   // $5 NavajoWhite
   { 0x6b, 0x8e, 0x23 },   // $6 Navy
   { 0xff, 0x45, 0x00 },   // $7 OldLace
   { 0xda, 0x70, 0xd6 },   // $8 Olive
   { 0xee, 0xe8, 0xaa },   // $9 Olivedrab
};
I do not understand how to add the new symbol
Код:
      while(*c2 && *(c2 + 1) && !(*c2 == '^' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9'))
      //while(*c2 && *(c2 + 1) && !(*c2 == '^' && '$' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9'))
         c2++;
      if (*c2 == '^' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9')
      //if (*c2 == '^' && '$' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9')
      {
         colorIndex = *(c2 + 1) - '0';
         *c2 = 0;
      }

_________________
Gennaro.R+
Изображение


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 27 апр 2016, 09:30 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Код:
int g_iColorsCodes[20][3] = 
{
   { 0xFF, 0xAA, 0x00 },   // ^0 orange
   { 0xFF, 0x00, 0x00 },   // ^1 red
   { 0x00, 0xFF, 0x00 },   // ^2 green
   { 0xFF, 0xFF, 0x00 },   // ^3 yellow
   { 0x00, 0x00, 0xFF },   // ^4 blue
   { 0x00, 0xFF, 0xFF },   // ^5 cyan
   { 0xFF, 0x00, 0xFF },   // ^6 magenta
   { 0x88, 0x88, 0x88 },   // ^7 grey
   { 0xFF, 0xFF, 0xFF },   // ^8 white

   { 0xFF, 0xFF, 0xFF },   // ^9 con_color (these color values are not used)

   { 0xff, 0xe4, 0xe1 },   // $0 MediumVioletRed   /*Nuevos colores*/
   { 0xff, 0xe4, 0xb5 },   // $1 MidnightBlue
   { 0xff, 0xde, 0xad },   // $2 MintCream
   { 0x00, 0x00, 0x80 },   // $3 MistyRose
   { 0xfd, 0xf5, 0xe6 },   // $4 Moccasin
   { 0x80, 0x80, 0x00 },   // $5 NavajoWhite
   { 0x6b, 0x8e, 0x23 },   // $6 Navy
   { 0xff, 0x45, 0x00 },   // $7 OldLace
   { 0xda, 0x70, 0xd6 },   // $8 Olive
   { 0xee, 0xe8, 0xaa },   // $9 Olivedrab
};

      // Search for next color code
      colorIndex = -1;
      while (*c2 && *(c2 + 1) && !((*c2 == '^' || *c2 == '$') && *(c2 + 1) >= '0' && *(c2 + 1) <= '9'))
         c2++;
      if (*c2 == '^' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9')
      {
         colorIndex = *(c2 + 1) - '0';
         *c2 = 0;
      }
      if (*c2 == '$' && *(c2 + 1) >= '0' && *(c2 + 1) <= '9')
      {
         colorIndex = *(c2 + 1) - '0' + 10;
         *c2 = 0;
      }
      if (colorIndex >= 0)
      {
         // Revert change and advance
         *c2 = colorIndex > 9 ? '$' : '^';
...
         // Setup color
         if (color == NULL && colorIndex != 9 && gHUD.m_pCvarColorText->value == 1)
         {
            r = g_iColorsCodes[colorIndex][0] / 256.0;
            g = g_iColorsCodes[colorIndex][1] / 256.0;
            b = g_iColorsCodes[colorIndex][2] / 256.0;
            gEngfuncs.pfnDrawSetTextColor(r, g, b);
         }
         else if (color != NULL)
            gEngfuncs.pfnDrawSetTextColor(color[0], color[1], color[2]);



Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 29 апр 2016, 02:33 
Не в сети
Аватара пользователя
Зарегистрирован:
09 фев 2015, 02:46
Последнее посещение:
19 июл 2018, 16:07
Сообщения: 91
Откуда: Endcamp
the same colors are displayed

^1 = Red
$1 = Red

I need to add the $?
Код:
if (colorIndex >= 0)
      {
         // Revert change and advance
         *c2 = '^';
         c2 += 2;
         c1 = c2;

_________________
Gennaro.R+
Изображение


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 16 май 2016, 01:22 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Sorry, forgot to answer here. I fixed typo in the code above and added the missing part about reverting. You can test this one, if you are not yet solved it.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: HLSDK (Client) new colors msg print
СообщениеДобавлено: 16 май 2016, 16:59 
Не в сети
Аватара пользователя
Зарегистрирован:
09 фев 2015, 02:46
Последнее посещение:
19 июл 2018, 16:07
Сообщения: 91
Откуда: Endcamp
Thank you Lev
works correctly *-*

_________________
Gennaro.R+
Изображение


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB