HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Страницы (260): « Первая ... « 107 108 109 110 [111] 112 113 114 115 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 63
Возраст: 25

Рейтинг



Хочу сделать vgui-класс, выводящий текст на родительской Panel (это только лишь в данный момент хочется чтобы только лишь выводил).

Текст располагается относительно своей позиции, делая отступ в зависимости от textLocation.

Как сейчас я понимаю принцип работы панелей:
1) Создали мы экземпляр класса, унаследованного от Panel;
2) Задали родителя, который вызывает paint'ы дочерних элементов;
3) Вот тут уже под вопросом. Внутри paint'а самого экземпяра система координат либо относительная (К примеру, drawSetTextPos(0, 0) ==getPos(varX, varY), то есть положение экземпляра на родителе), либо абсолютная (drawSetTextPos(varX, varY)==getPos(varX, varY), может мутно, но надеюсь, вы меня поняли :-) )
В итоге, отрисовка только фона, притом, что в конструкторе задал false. текста нету.

C++ Source Code:
1
using namespace vgui;
2
 
3
class CLinkLabel : public Panel {
4
public:
5
  CLinkLabel() {
6
    setPaintBackgroundEnabled(false);
7
    m_textLocation=Location::l_left;
8
  }
9
  CLinkLabel(const char* text) : m_linkValue(text) { CLinkLabel(); }
10
  CLinkLabel(const String& str) : m_linkValue(str) { CLinkLabel(); }
11
 
12
  enum Location { l_left=0, l_right=1, l_center=2 };
13
 
14
  void setText(const char* text) {
15
    m_linkValue=text;
16
  }
17
  void setTextLocationOnPos(CLinkLabel::Location argLocation) {
18
    m_textLocation=argLocation;
19
  }
20
private:
21
  void paint() {
22
    const char* text=m_linkValue.getChars();
23
    int textLength=m_linkValue.getCount();
24
 
25
    CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
26
    SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
27
    Font* pFont=pSchemes->getFont(hTitleFontScheme);
28
 
29
    drawSetTextFont(pFont);
30
    drawSetTextColor(64, 128, 228, 0);
31
 
32
    int x, y, wide, tall;
33
    getPos(x, y);
34
    pFont->getTextSize(text, wide, tall);
35
 
36
    switch(m_textLocation) {
37
    case l_left:
38
        break;
39
    case l_right:
40
        x-=wide;
41
      break;
42
    case l_center:
43
        x-=wide/2;
44
    }
45
 
46
    drawSetTextPos(x, y);
47
 
48
    drawPrintText(text, textLength);
49
  }
50
private:
51
  String m_linkValue;
52
  Location m_textLocation;
53
 
54
  //Font* m_pFont;
55
};


C++ Source Code:
1
// Где-то в конструкторе родителя
2
// CLinkLabel* m_pLinkLabel; // объявление в заголовочном файле
3
 
4
m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
5
m_pLinkLabel->setParent(this);
6
m_pLinkLabel->setPos(325, 250);
7
m_pLinkLabel->setSize(300, 60);


Размеры элементы задал на всякий крайний, вдруг он внутри самого себя отрисовку делает, то есть drawSetTextPos(0, 0)==m_pLinkLabel->setPos(325, 250).

Отредактировано Smykov 21-04-2018 в 15:36

Сообщить модератору | | IP: Записан
Сообщение: 172332

Старое сообщение 21-04-2018 15:31
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Меня малость напрягает
void setText(const char* text) {
m_linkValue=text;
}

к моменту вызова paint() указатель точно валидный? дебаггером смотрел?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 172354

Старое сообщение 23-04-2018 08:38
- За что?
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 63
Возраст: 25

Рейтинг



~ X ~ там конструкторы есть, которые инициализируют m_linkValue.
Сейчас уже кое-что прояснилось, система координат относительная, а проблема была в том, что у объекта не было size'а, он отрисовывался, но не было места куда выводить.
Другая проблема.

Создаём объект

C++ Source Code:
1
m_pLinkLabel=new CLinkLabel("SampleText1 it's ROAR");
2
m_pLinkLabel->setParent(this);
3
m_pLinkLabel->setPos(15, 60);
4
m_pLinkLabel->setSize(300, 150);


Стандартное значение m_textLocaition равно l_left, то есть текст "не съезжает" никуда.

Функция paint, у которой для теста мы зададим x и y координаты текста.
C++ Source Code:
1
const char* text=m_linkValue.getChars();
2
int textLength=m_linkValue.getCount();
3
 
4
CSchemeManager *pSchemes=gViewPort->GetSchemeManager();
5
SchemeHandle_t hTitleFontScheme=pSchemes->getSchemeHandle("Briefing Text");
6
Font* pFont=pSchemes->getFont(hTitleFontScheme);
7
 
8
drawSetTextFont(pFont);
9
drawSetTextColor(64, 128, 228, 0);
10
 
11
int x=0, y=0, wide, tall;
12
pFont->getTextSize(text, wide, tall);
13
 
14
switch(m_textLocation) {
15
case l_left:
16
    break;
17
case l_right:
18
    x-=wide;
19
  break;
20
case l_center:
21
    x-=wide/2;
22
}
23
 
24
drawSetTextPos(x, y);
25
drawPrintText(text, textLength);


Я приведу несколько примеров, изменяя x. Всё это на Xash3D

1) x=0 y=0


2) x=-10 y=0


3) x=-11 y=0
Вроде всё нормас, на один пиксель сместились


4) x=-12 y=0
И ещё на один пиксель, и аж на два символа сместились


Вот всё это к чему, и опять таки повторюсь. Может я неправильно расставляю позиции, или ещё что делаю не так?
Просто у меня догадок особо не стало, когда этот же код на GoldSrc (SDK 2005 с этого сайта вроде бы) скопировал, и там нормально работает, по крайней мере без всяких этих тестов, уже текст нормально позиционируется.

GoldSrc. Зададим уже сразу l_center
x=getPosX(/*функция для наглядности*/)-wide/2; y=0


Думаю в подробностях объяснил свой вопрос, что посоветуете?

Сообщить модератору | | IP: Записан
Сообщение: 172365

Старое сообщение 23-04-2018 19:07
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



А gaitsequence как-то влияет на viewangles и направление движения игрока как энтити или оно просто для красоты, для модельки? И есть ли в ХЛ какой-то ограничитель скорости поворота игрока? (при thirdperson)

Сообщить модератору | | IP: Записан
Сообщение: 172369

Старое сообщение 24-04-2018 07:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Crystallize только для модельки

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 172371

Старое сообщение 24-04-2018 08:00
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


VGUI - это местный ад для хл-моддеров. В него ссылают по плохим указателям... )
Я сам уже не помню, каким чудом что-то там сделал. Хотя, нет. Так и не сделал. Меню с игроками появляется не там где я изначально хотел

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 172375

Старое сообщение 24-04-2018 09:51
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Математический вопрос есть по эффекту дымка из паранои, который я использовал как базу для своих эффектов, вернее по его размеру, он там при отскакивании от стены с нуля увеличиваться к тому времени к которому он должен исчезнуть до своего полного размера:

C++ Source Code:
1
float frac = (time - birthTime) / m_fLife;
2
if (frac > 1)
3
  return 1; // delete object
4
 
5
float size = PuffSize * frac;


А как правильно сделать наоборот, чтобы он заранее появлялся в своем полном размере, и уменьшался до нуля к frac 1? Я пробовал как-то так но мне что-то кажется что это не совсем корректно: size = PuffSize - (frac*PuffSize);

Сообщить модератору | | IP: Записан
Сообщение: 172467

Старое сообщение 28-04-2018 10:09
+ За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


frac = 1 - frac;
перед умножением

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 172468

Старое сообщение 28-04-2018 10:21
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



XaeroX спасибо, работает, я чуть по другому сделал: size = PuffSize * (1 - frac); по идее так тоже пойдет?

Сообщить модератору | | IP: Записан
Сообщение: 172470

Старое сообщение 28-04-2018 11:19
+ За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Chyvachok да, конечно, это все то же самое. Вопрос вкуса.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 172475

Старое сообщение 28-04-2018 13:06
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 63
Возраст: 25

Рейтинг



makevfont
1) можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.
2) Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе? то есть, есть у меня ttf Terminus, windows открывает его своим стандартным приложением просмотра шрифтов, в котором можно установить шрифт.

Сообщить модератору | | IP: Записан
Сообщение: 172482

Старое сообщение 29-04-2018 14:54
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Smykov писал:
можно ли с его помощью создать шрифт с Кириллицей? Если да, то подробнее пожалуйста.

makevfont или makefont? Если первое, то да, должен поидее. Если второе, то только ксашевская реализация.

Добавлено 29-04-2018 в 22:25:

Цитата:
Smykov писал:
Правильно ли я понимаю, в значении параметра font нужно указывать шрифт, который установлен в системе?

Правильно. Я так для римейка кваки делал шрифты.

Добавлено 29-04-2018 в 22:26:

ЗЫ. Имя шрифта нужно указывать именно так как он в системе отображается со всеми пробелами и заключать в кавычки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 172483

Старое сообщение 29-04-2018 19:26
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 63
Возраст: 25

Рейтинг



Дядя Миша всё понял спасибо.
Сразу назревает вопрос, что не так я делаю?
makevfont.exe -font "Times New Roman" -pointsize 16 "1024_MyFont.tga"
И на месте где должна быть кириллица "кракозябра"

Сообщить модератору | | IP: Записан
Сообщение: 172485

Старое сообщение 30-04-2018 08:02
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Надо его исправлять значит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 172487

Старое сообщение 30-04-2018 08:33
-
Smykov
Частый гость

Группа: Неопытный
Дата регистрации: Jul 2017
Проживает: Unknown City
Сообщений: 63
Возраст: 25

Рейтинг



Не совсем понял, makevfont? Если вы про него, то может, чисто ради эксперимента, у вас на компьютере есть makevfont. Не зальёте ли его на файлообменник? буду признателен

Добавлено 30-04-2018 в 13:09:

Отмена с "заливом".
Нашёл интересный пост: https://hlfx.ru/forum/showthread.php?threadid=1827
Он меня натолкнул на решение проблемы со шрифтом TTF, установленным пользователем. Может кому пригодится.
Установил, скаченный из интернета, Terminus. До этого у меня проблем с ним не было, потому что в программах задавал путь к файлу ttf. А тут не получается -font "Terminus". Зашел в реестр (путь из того поста, только не в FontSubstitutes, а Fonts). И увидел там свой шрифт - Terminus (TTF) (там у всех шрифтов в конце дописывается "%пробел% (TrueType)"). В итоге font "Terminus (TTF)" прокатил. но кракозябры остались. Вот тут уже пошёл по совету автора поста - сделать RUSSIAN_CHARSET в функции CreateFont проекта makevfont. Только сегодня скачал full sdk, и увидел эти проекты. Единственное, что осталось "одолеть", это makefont, с первого раза не получилось сделать.

Сообщить модератору | | IP: Записан
Сообщение: 172488

Старое сообщение 30-04-2018 10:09
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 19:00. Новая тема    Ответить
Страницы (260): « Первая ... « 107 108 109 110 [111] 112 113 114 115 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024