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

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

Рейтинг



Экспорт функций из движка

Планируется ли экспорт функций для работы со шрифтами и встроенным imagelib'ом в клиентку? Если я что-то просмотрел, и он есть, подскажите, как называется/какие заголовки подключать надо?

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

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

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

Рейтинг



Для работы со шрифтами есть функция gEngfuncs.pfnDrawCharacter
рисует шрифт creditsfont из gfx.wad. Других функций нет и не планируется. По крайней мере в Xash3D.
Для работы с имиджлибом есть функции в RenderAPI. Там достаточно большой набор.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 20-02-2014 15:58
-
domded
люби няшного котейку

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

Рейтинг



Спасибо. Именно то, что я искал. Ещё одной вещи не могу только найти - какие функции отвечают за показ курсора и захват клавиатурного ввода, либо их надо писать самому?

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

Старое сообщение 20-02-2014 16:40
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



domded курсор может эмулироваться через ВГУИ. Квар для этого есть. По крайней мере в СДК 2.3. В последней версии я почему-то не нашёл. Если этот код из вгуи модифицировать, можно рисовать любой спрайт вместо тгашного курсора.

Цитата:
domded писал:
захват клавиатурного ввода

Ковыряй TeamFortressViewport. Там есть примеры захвата клавиш. Вызывать свою функцию можно скорее всего из CHud::Redraw или CHud::Think. Это всё на клиентке в оригинальной халфе есть. Только вот в ксашмоде нету ВГУИ.

Отредактировано Ku2zoff 20-02-2014 в 16:53

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

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

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

Рейтинг



В input.cpp 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: Записан
Сообщение: 133689

Старое сообщение 20-02-2014 16:55
-
domded
люби няшного котейку

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

Рейтинг



Буду смотреть в сторону худ_кейевент. Это скорее всего тоже то, что мне нужно, только в ксашхт он находится в cdll_int.
А с вгуи проблема - его нет. Можно ли заблокировать перемещение мышы в худ_маусмув? Чтобы персонаж не двигал головой. С отрисовкой курсора я разберусь.

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

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

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

Рейтинг



Лучше в CL_CreateMove.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 20-02-2014 18:18
-
domded
люби няшного котейку

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

Рейтинг



Проверил я худ_кейевент. Почему он реагирует только на нажатие клавиши? при отпускании её событие не генерируется.

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

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

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

Рейтинг



да, действительно. Исправлю в новом билде.

Ну или сам исправь, чтобы не ждать.
В файлике keys.c функция void Key_Event( int key, qboolean down )

и там, где вот это условие:

C++ Source Code:
1
if( !down )
2
{
3
  kb = keys[key].binding;
4
 
5
  Key_AddKeyUpCommands( key, kb );
6
  return;
7
}

добавить вот так:
C++ Source Code:
1
if( !down )
2
{
3
  kb = keys[key].binding;
4
 
5
  if( cls.key_dest == key_game && ( key != K_ESCAPE ))
6
    clgame.dllFuncs.pfnKey_Event( down, key, kb );
7
  Key_AddKeyUpCommands( key, kb );
8
  return;
9
}

При этом может вылезти вообще всё что угодно. А может и не вылезти.
Но по идее должно работать.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Спасибо. Исправлю. И маленький последний вопрос. Есть следующий код рисования изображения на экране:

C++ Source Code:
1
pglLoadIdentity();
2
pglTranslatef((float)x,(float)y,(float)0);
3
pglBindTexture(GL_TEXTURE_2D,m_glIndexes[0]);
4
pglEnable(GL_BLEND);
5
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
6
pglTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
7
pglBegin(GL_QUADS);
8
pglTexCoord2f(0.0,0.0);pglVertex2f(0,0);
9
pglTexCoord2f(1.0,0.0);pglVertex2f((mw>0)?mw:m_w,0);
10
pglTexCoord2f(1.0,1.0);pglVertex2f((mw>0)?mw:m_w,(mh>0)?mh:m_h);
11
pglTexCoord2f(0.0,1.0);pglVertex2f(0,(mh>0)?mh:m_h);
12
pglEnd();
13
pglDisable(GL_BLEND);
14
pglBindTexture(GL_TEXTURE_2D,0);
15
pglLoadIdentity();

Рисует нормально, картинка отображается. Но если при нахождении картинки на экране подойти к триггеру, который вызывает message на экран (типа того, которое пишется около колёс пушек на карте xash_demo ), либо название главы в оригинальной халве, текст становится нечитабельным. То есть он рисуется, но вместо букв какая-то полупрозрачная мешанина из пикселей. Я не очень хорошо знаю опенгл, может быть что-то забыл отключить после вывода картинки?

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

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

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

Рейтинг



В ксаше нельзя использовать pglBind текстуре, поскольку это нарушает внутреннюю синхронизацию стейтов с движком.
Используй GL_Bind, внутреннюю движковую функцию. Она умная, она сама определить тип текстуры 1D\2D\3D\Cubemap и сама включит\выключит нужные стейты. Вообще, всё что касается текстур - надо использовать движковые функции для работы с ними, иначе похеришь стейты.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Исправил, заработало.

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

Старое сообщение 08-03-2014 16:18
- За что?
~ X ~
offline

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

Рейтинг



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


О, да... С перехватом клавиш гемор ещё тот!! Я так и не смог сделать нормальный перехват нажатий в доске почёта - если юзер кликнул на доске мышкой, этот клик заедает и игрок стреляет, даже если ЛМБ была авно отпущена.

Хыхы, как же вы любите ОГЛ дёргать из клиентки...

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

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

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

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

Рейтинг



Ну ты-то в вгуи хардкодил, а я пишу это всё нативно через гл и прочее.
Дядя Миша, раз уж тут раздел багрепорта плавно получился, то пишу сюда.
Проблема изменением pglBing на GL_Bind не решилась. То есть, если я в своём контроле вызываю gEngfuncs.pfnDrawCharacter после отрисовки картинки, то получается всё та же мешанина. Единствнный выход - поставить картинку порядком отрисовки ниже текста.
Так же есть ещё одна странная проблема: HUD_Key_Event ловит не все клавиши. Попробуйте поставить простой алерт и понажимать все подряд клавиши на клавиатуре. У меня, например, не ловятся кнопки m,n, ещё какие-то с правой части клавиатуры. Ваш багфикс ещё не имплементировал, дождусь официального обдейда. Если перепишу функцию в движке полностью по-нормальному, то выложу её сюда.
И ещё один вопрос. Так как png-шный шрифт я ещё не имплементировал, хочу сначала попробовать отточить всё на встроенном - появился неприятный глюк этого самого встроенного шрифта - невозможно управлять его прозрачностью. То есть, если я рисую подложку без прозрачности (255), а потом вызываю pfnDrawCharacter, то шрифт этот, который на подложку находит, не рисуется. У него прозрачность, что ли, захардкожена? Подложка рисуется следующим образом.

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(b_r,b_g,b_b,b_a);
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();

порядок вызова такой:
C++ Source Code:
drawPodlozhka(255,255,255,255);
drawText(255,0,0,255,"привет!\0");


Добавлено 09-03-2014 в 20:45:

С первой проблемой (HUD_KeyEvent ловит не все клавиши) разобрался. Нужно просто было поменять местами условия:
C++ Source Code:
1
if( !clgame.dllFuncs.pfnKey_Event(down,key,kb) )
2
{
3
  // handled in client.dll
4
}
5
else if( !kb )
6
{
7
  if( key >= 200 )
8
    Msg( "%s is unbound, use controls menu to set.\n", Key_KeynumToString( key ));
9
}

В движке.

Добавлено 09-03-2014 в 20:54:

Кстати, странно. Если я перекломпилрую движок (даже чистый) в релизе, то игра вылетает, даже не загружаясь. Билд 2643. В дебаге всё работает.
Может быть это связано с тем, что ксашмод от ноября 23-2013. Буду тестить ещё.

Добавлено 09-03-2014 в 20:55:

Пишет это:
Sys_LoadLibrary: Loading bin/client.dll - ok
CL_LoadProgs: found single callback export
CL_LoadProgs: failed to get address of HUD_ChatInputPosition proc
CL_LoadProgs: failed to get address of HUD_GetPlayerTeam proc
CL_LoadProgs: failed to get address of HUD_ClipMoveToEntity proc
Sys_Crash: call 1009DAC8 at address C0000005
Sys_FreeLibrary: Unloading xash.dll

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

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

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

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

Рейтинг



Да, с номером билда вышла ошибочка. Билд 2463, самый последний, тестовый. Если его прокомпилировать в релизной конфигурации (xash.dll), то он выдаёт лог, написанный выше. Не важно что, оригинальная халва, ксаш-мод или какие-либо другие моды (типа aom). В дебажной всё нормально, по крайней мере запускается и можно побегать.

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

И, да. Я всё-таки пытаюсь написать эдит, но столкнулся ещё с одной проблемой. Есть ли в клиентке функция для перевода кода клавиши из HUD_KeyEvent в код символа в зависимости от языка и нажатой клавиши шифт? Либо придётся писать полностью свой перехват клавиатуры? Конечно, можно в движке перекодить всю часть, отвечающую за ввод, и вытащить всё, что мне надо, из ввода в консоль, но это не вариант, ибо буду пользоваться своим новомодным поделием только я.

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

Старое сообщение 09-03-2014 23:11
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 15:09. Новая тема    Ответить
Страницы (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