HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Экспорт функций из движка
Вопрос
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Пытаюсь сделать так, чтобы код символа получить, но он корректно получает символы только для цифр в верхней части клавиатуры. Этот же код в хуке простом для записи символов в файл в моём старом проекте работает. Где я ошибся?

C++ Source Code:
1
char scantoc(int vkc)
2
{
3
  BYTE k[256];
4
  for (int i = 0; i < 256; i++) k[ i ] = GetKeyState(i);
5
  WORD r = 0;
6
  HKL h = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),0));
7
  if ( ToAsciiEx(vkc,MapVirtualKeyEx(vkc,0,h),k,&r,0,h) ) return r; else return 0;
8
 
9
}

vkc - это значение из HUD_KeyEvent

Добавлено 10-03-2014 в 15:59:

То есть, в зависимости от раскладки эта функция возвращает символы при нажатой клавише шифт над числовой клавиатурой, но буквы не возвращает - пишет цифры.

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

Старое сообщение 10-03-2014 11:59
- За что?
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Так и не смог побороть вышеназванную проблему, плюс хотелось бы комментариев по моему багрепорту.

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

Старое сообщение 18-03-2014 20:57
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
domded писал:
Проблема изменением pglBing на GL_Bind не решилась. То есть, если я в своём контроле вызываю gEngfuncs.pfnDrawCharacter после отрисовки картинки, то получается всё та же мешанина.

ты картинки рисуешь через glBegin что ли?
Цитата:
domded писал:
То есть, если я рисую подложку без прозрачности (255), а потом вызываю pfnDrawCharacter, то шрифт этот, который на подложку находит, не рисуется. У него прозрачность, что ли, захардкожена?

Я ничего не понял, но вот в консоли буквы рисуются, они же нормально выглядят?
Цитата:
domded писал:
Подложка рисуется следующим образом.

Цитата:
domded писал:
pglLoadIdentity();pglTranslatef((float)x,(float)y,(float)0);

Это что за гамно? Ты зачем сбил ортогональную матрицу?
Цитата:
domded писал:
pglDisable(GL_TEXTURE_2D);

яж тебе сказал - никаких операций с текстурами без участия движка.
либо должен очень хорошо представлять что ты делаешь. Подложку можно нарисовать через FillRGBA.
Цитата:
domded писал:
Есть ли в клиентке функция для перевода кода клавиши из HUD_KeyEvent в код символа в зависимости от языка и нажатой клавиши шифт?

Там есть ровно то, чего требует халфа. Я не знаю чего ты хочешь.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 19-03-2014 14:24
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Картинки я рисую через GL_QUAD с натянутой текстурой. А как ещё?
pglBind я уже не использую, вместо него - GL_Bind. Сбрасываю текстуру после рисования GL_Bind(GL_TEXTURE_2D,0). Всё равно глюки.
Про перевод символа - классическая задача на хуки клавиатуры. Как я понял, в HUD_KeyEvent передаётся сканкод клавиши - от 0 до 255. Кстати, я писал, вы внимания не обратили, что он ловит не все клавиши, а только те, которые есть в текущей таблице биндов, вроде как. Так вот, я его пытаюсь преобразовать в код символа, как указано выше. В хуке это работает. Тут - нет. Не понимаю, в чём причина.

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

Старое сообщение 19-03-2014 19:28
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
domded писал:
Сбрасываю текстуру после рисования GL_Bind(GL_TEXTURE_2D,0).

Не сбрасываешь. Во первых GL_Bind не даст тебе её так сбросить:
C++ Source Code:
1
void GL_Bind( GLint tmu, GLenum texnum )
2
{
3
  gltexture_t	*texture;
4
 
5
  // missed texture ?
6
  if( texnum <= 0 ) texnum = tr.defaultTexture;

во вторых, это не нужно.
Цитата:
domded писал:
я писал, вы внимания не обратили, что он ловит не все клавиши, а только те, которые есть в текущей таблице биндов, вроде как

Ну логично, HUD_KeyEvent обрабатывает нажатие от забинденных клавиш.
Тебе нужен CL_CharEvent - там остальные символы.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 19-03-2014 19:35
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Про Translatef - я затупил. Всё равно потом матрицу восстанавливаю, так что это не критично.
Про FillRGBA - невозможно нарисовать непрозрачный прямоугольник, да и со скруглениями в апи движка туго. Всё равно придётся использовать TRIANGLE_FAN для скруглённых углов.

Добавлено 19-03-2014 в 23:47:

Где лежит этот самый CL_CharEvent? В каком файле? Быстрай поиск по проекту ничего не дал.

Добавлено 19-03-2014 в 23:47:

Где лежит этот самый CL_CharEvent? В каком файле? Быстрый поиск по проекту ничего не дал.

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

Старое сообщение 19-03-2014 19:47
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
domded писал:
Про FillRGBA - невозможно нарисовать непрозрачный прямоугольник

А, это да. Ну рисуй через SPR_Draw.
Цитата:
domded писал:
со скруглениями в апи движка туго. Всё равно придётся использовать TRIANGLE_FAN для скруглённых углов.

Никто никогда не рисует эти скругления вручную. Их рисуют на текстуре, а потом делают маску в альфа-канале. Не занимайся ерундой.

Цитата:
domded писал:
Где лежит этот самый CL_CharEvent? В каком файле? Быстрай поиск по проекту ничего не дал.

Ну вот смотри, я открываю папку engine и нахожу эту функцию ВИНДОВЫМ поиском, менее чем за секунду. Никаких студий, ничего.
Как вы ищите...

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 20-03-2014 12:23
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
и нахожу эту функцию ВИНДОВЫМ поиском, менее чем за секунду. Никаких студий, ничего.
Как вы ищите...

В win 7 и новее поиск по содержимому файла не работает с исходниками. Поэтому я всегда ищу через студию. domded а ты точно правильно искал?

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

Старое сообщение 20-03-2014 19:45
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
В win 7 и новее поиск по содержимому файла не работает с исходниками

Зато она занимает 15 гигабайт на харде!

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 20-03-2014 20:22
-
~ X ~
offline

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

Рейтинг



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


В вантузе 5.1/5.2 поиск тоже непредсказуемый. Особенно после установки офиса. Может найти слово "жуй" в .доках, а в исходникак злово "void" в упор не видеть. Ищите через ваши ИДЕ.

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

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

Старое сообщение 20-03-2014 20:48
- За что?
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Я ищу в клиент.длл. Ладно, буду сам думать над этим вопросом.
Всмысле через SPR_Draw? Мне не спрайт рисовать. Мне надо нарисовать просто цветной прямоугольник. И как его на текстурах делать? Радиус углов-то может быть разный.

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

Старое сообщение 21-03-2014 05:55
- За что?
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Я не те вопросы задаю, что ли? Вроде раньше спрашивал про вещи сложнее, а тут про ваш собственный движок спрашиваю, ответы как-то слабо применимы к реальности. После месяца методом тыка выяснено, что картинка рисуется нормально и не сбивает всё остальное по порядку отрисовки только при использовании GL_Bind(GL_TEXTURE0,index). Во всех остальных случаях ( GL_TEXTURE_2D и прочее ) она всё равно сбивает всё остальное. Так же - баг, либо просто в халфе нет непрозрачного pfnDrawChar. Ещё раз говорю, наверное, в третий уже раз.
Рисую белую непрозрачную подложку.

C++ Source Code:
1
pglLoadIdentity();
2
pglTranslatef((float)x,(float)y,(float)0);
3
pglDisable(GL_TEXTURE_2D);
4
pglEnable( GL_BLEND );
5
pglDisable( GL_ALPHA_TEST );
6
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
7
pglColor4ub(255,255,255,255);
8
pglBegin(GL_QUADS);
9
pglVertex2f(0,h);
10
pglVertex2f(w,h);
11
pglVertex2f(w,0);
12
pglVertex2f(0,0);
13
pglEnd();
14
pglEnable(GL_TEXTURE_2D);
15
pglLoadIdentity();

Сразу говорю про пгл енабле и дизабле по текстуре - если не использвать, то получается просто месиво из текстур, при передвижении персонажа с какого-то бодуна этот рект мигает, заливается рандомным светом, в общем получается форменная цветомузыка.
Рисую символ на подложке:
gEngfuncs.pfnDrawCharacter(0,0,"A",255,0,0);
Он не отображается. Не отображается, и всё тут.
Так же, если посавить цвет подложки в непрозрачный чёрный либо любой другой - символ отображается. Что это за бред? Я пытаюсь уже месяц ответа добиться. За это время успел дописать пнгшный и тгашный шрифт уже. Думаю, на этот встроенный с такими раскладами лучше забить.

Отредактировано domded 21-03-2014 в 10:09

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

Старое сообщение 21-03-2014 10:01
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Дядя Миша писал:
GL_Bind(GL_TEXTURE_2D,0).

Я только сейчас эту чуш заметил. Почему ты туда суешь GL_TEXTURE_2D, где ты такое увидел? Ты не мог вообще в ксаш-моде посмотреть как правильно?
Ты понимаешь, что ты суешь что попало и куда попало, а потом спрашиваешь, а почему не работает.
Цитата:
domded писал:
Я ищу в клиент.длл.

нету там, в движке есть
Цитата:
domded писал:
а тут про ваш собственный движок спрашиваю, ответы как-то слабо применимы к реальности

Какие вопросы, такие и ответы. Сначала ты суешь GL_TEXTURE_2D в GL_Bind, а потом спрашиваешь, а почему не работает. Ну вот - поэтому.
Цитата:
domded писал:
Сразу говорю про пгл енабле и дизабле по текстуре - если не использвать, то получается просто месиво из текстур, при передвижении персонажа с какого-то бодуна этот рект мигает, заливается рандомным светом, в общем получается форменная цветомузыка.

Ты понимаешь, что opengl - это стейт-машина, и стейт проставленный фиг знает где, может вылезти именно сейчас. И мне твой кусочек кода вообще ни о чём не говорит, кроме того, что ты попрежнему юзаешь glTranslate.
А смысл вообще что-то советовать, если ты меня не слушаешь?

Добавлено 21-03-2014 в 16:39:

И эта. Долго объяснять почему, но заливку фоном лучше сделать при помощи белой текстуры, вместо её отключения.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-03-2014 12:39
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Я отказался от транслейтф уже.
И про стейт-машину понимаю. Я все стейты вызываю синхронно. То что дисейблю - то енейблю в конце и наоборот.
Про GL_TEXTURE_2D - я всегда им пользовался. В ванильной халве, когда добавлял поддержку пнг, когда пробовал рисовать прицел на винтовке. Мне казалось, что это просто канал для текстуры, как и все остальные. В интернете все примеры для работы с текстурированием квада используют его. GL_TEXTURE0 я вообще нигде не видел, пока не стал копаться в ксаш-ХТ.
Могу выложить недописанный проект ( поскольку логику работы кода и вызовов описывать - страницы на две хватит ).

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

Старое сообщение 21-03-2014 22:46
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
domded писал:
Про GL_TEXTURE_2D - я всегда им пользовался

Ну ты же понимаешь, что это движковые функции, а не OpenGL. И было бы неплохо узнать, перед тем как ими пользоваться.
Цитата:
domded писал:
Мне казалось, что это просто канал для текстуры, как и все остальные

Это - подсказка, как рассматривать текущую текстуру.
Цитата:
domded писал:
Могу выложить недописанный проект

Ну это на твоё усмотрение. Я тебе хочу дать хороший совет - не трогай матрицы вообще. Они уже давно за тебя настроены. А в 2D их вообще трогать не нужно, разве что захочешь сделать крутящиеся картинки.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 22-03-2014 13:44
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 04:17. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Экспорт функций из движка
Вопрос
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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