Форумы на Наша-Life
Home user CP  
Календарь событий Найти других пользователей Часто задаваемые Вопросы Поиск  
Автор
Тема
Создать Новую Тему    Ответить
Valera3D
(Малевич)

Зарегистрирован: Apr 2008
Проживает: Россия/Ярославль
Написал: 274 сообщений

Оценка: 19 Votes 19 чел.

Unhappy 
Нужна помощь...
Сообщение #983992
Всем привет. Решил создать тему на форуме, тк сам уже не знаю что делать... Недавно создал HUD-елемент, опираясь на Эту статью.
На первый взгляд все работало нормально, но потом я обнаружил странный косяк: текстурка рисуется только при crosshair 1 o_O Ничего общего с прицелом мой спрайт не имеет, как так? Вот код худа...
code:
#include "cbase.h"
#include "hudelement.h"
#include "hud_macros.h"
#include "iclientmode.h"
#include "view.h"
#include "util_shared.h"
#include <vgui_controls/Panel.h>
#include <vgui_controls/Frame.h>
#include <vgui/IScheme.h>
#include <vgui/ISurface.h>
#include <vgui/ILocalize.h>
#include <hud.h>
#include "vgui_controls/controls.h"
#include "IVRenderView.h"
#include "tier0/memdbgon.h"



class CHudInfo : public CHudElement, public vgui::Panel
{
DECLARE_CLASS_SIMPLE( CHudInfo, vgui::Panel );

public:
CHudInfo( const char *pElementName );
virtual bool ShouldDraw( void ) {return 1;};
virtual void Paint();
void MsgFunc_GetObj(bf_read &msg) { GetObj = msg.ReadOneBit();}

bool GetObj;

private:
int m_nTextureID;

};

DECLARE_HUD_MESSAGE( CHudInfo, GetObj );


DECLARE_HUDELEMENT( CHudInfo );

/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////

CHudInfo::CHudInfo( const char *pElementName ) : CHudElement( pElementName ), BaseClass(NULL, "HudInfo")
{

vgui::Panel *pParent = g_pClientMode->GetViewport();
SetParent( pParent );

m_nTextureID = vgui::surface()->CreateNewTextureID();

vgui::surface()->DrawSetTextureFile( m_nTextureID, "sprites/Info" , true, false);
SetPaintBackgroundEnabled( false );

SetHiddenBits( HIDEHUD_PLAYERDEAD );
HOOK_HUD_MESSAGE(CHudInfo, GetObj);

}

void CHudInfo::Paint( void )
{
CBasePlayer *local = CBasePlayer::GetLocalPlayer();


float x, y;
x = ScreenWidth()/2-200;
y = ScreenHeight()/2-200;

if (GetObj)
{
vgui::surface()->DrawSetTexture( m_nTextureID );
vgui::surface()->DrawTexturedRect(x-16, y-16, x+16, y+16);
}

}



Может, кто нибудь здесь знает в чем дело?
все верно...
Old Post 28-08-2010 16:31
Valera3D отсутствует Посмотреть данные 'Valera3D' Отправить Приватное Сообщение для 'Valera3D' Найти другие сообщения 'Valera3D' Добавить Valera3D в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Breever
(Добываю фероподы из мирмидонта)

Зарегистрирован: Jun 2009
Проживает: Россия/Красноярск
Написал: 95 сообщений

Оценка: 3 Votes 3 чел.

Сообщение #983999
Ну может у тебя при выключенном прицеле отсылается сообщение не то? Что вообще должно отсылаться в ф-ю?
void MsgFunc_GetObj(bf_read &msg) { GetObj = msg.ReadOneBit();}
Не существует границ, есть лишь препятствия
Old Post 28-08-2010 17:09
Breever отсутствует Посмотреть данные 'Breever' Отправить Приватное Сообщение для 'Breever' Посетить домашнюю страничку Breever Найти другие сообщения 'Breever' Добавить Breever в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Valera3D
(Малевич)

Зарегистрирован: Apr 2008
Проживает: Россия/Ярославль
Написал: 274 сообщений

Оценка: 19 Votes 19 чел.

Сообщение #984002
Сообщение отсылается когда мы смотри на какой-нибудь проп. Но тут все ок, дело явно не в GetObj, я даже для проверки вводил такой код:
code:
if (GetObj)
{
Warning(".");
vgui::surface()->DrawSetTexture( m_nTextureID );
vgui::surface()->DrawTexturedRect(x-16, y-16, x+16, y+16);
}


При этом в консоле появляются точки, т.е. само условие выполняется, но не выполняются ф-ции отрисовки
все верно...
Old Post 28-08-2010 17:35
Valera3D отсутствует Посмотреть данные 'Valera3D' Отправить Приватное Сообщение для 'Valera3D' Найти другие сообщения 'Valera3D' Добавить Valera3D в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Valera3D
(Малевич)

Зарегистрирован: Apr 2008
Проживает: Россия/Ярославль
Написал: 274 сообщений

Оценка: 19 Votes 19 чел.

Сообщение #984059
Заметил еще одну странность. Когда подбираешь оружие, на экране отображается одно лишь полупрозрачное пятно по форме спрайта>< Может дело не в коде, а в самой текстуре? У кого нибудь уже была такая проблема?
все верно...
Old Post 29-08-2010 07:52
Valera3D отсутствует Посмотреть данные 'Valera3D' Отправить Приватное Сообщение для 'Valera3D' Найти другие сообщения 'Valera3D' Добавить Valera3D в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
KLIMaka
(Президент Мира - Броука!)

Зарегистрирован: Dec 2007
Проживает: Украина/Запорожье
Написал: 456 сообщений

Оценка: 28 Votes 28 чел.

Сообщение #984070
Собсно весь ХУД использует общий контекст, поэтому значения прозрачности будут браться из предыдущих обращений к контексту. Посему перед тем как рисовать текстуру, нужно установить контекст в нужное тебе состояние, т.е. добавить еще

surface()->DrawSetColor( 255, 255, 255, 255 );
Old Post 29-08-2010 08:46
KLIMaka отсутствует Посмотреть данные 'KLIMaka' Отправить Приватное Сообщение для 'KLIMaka' Найти другие сообщения 'KLIMaka' Добавить KLIMaka в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Valera3D
(Малевич)

Зарегистрирован: Apr 2008
Проживает: Россия/Ярославль
Написал: 274 сообщений

Оценка: 19 Votes 19 чел.

Сообщение #984077
Помогло=) Спасибо, KLIMaka, выручил так выручил=) Я то уже всю голову сломал пока думал в чем дело, уже все перпробовал, вобщем держи +5 от меня =)
все верно...
Old Post 29-08-2010 09:30
Valera3D отсутствует Посмотреть данные 'Valera3D' Отправить Приватное Сообщение для 'Valera3D' Найти другие сообщения 'Valera3D' Добавить Valera3D в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
 
Все время в GMT . Сейчас 08:40.
Создать Новую Тему    Ответить

Быстрый ответ
Ваше Имя:
Хотите Зарегистрироваться?
Ваш Пароль:
Забыли свой Пароль?
Вы можете оставлять свои комментарии анонимно, просто введя свои имя и оставив пустым поле пароля.
Ваш ответ:

[проверить размер]
[транслит в win] | [?]
[русская клавиатура]

Дополнительно: Подтверждение по E-Mail


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

Правила форума:
Создание Тем не разрешено
Создание Сообщений разрешено
Создавать Вложения не разрешено
Редактирование Сообщений не разрешено
Коды HTML запрещены
Коды форума разрешены
Смайлики разрешены
Коды [IMG] запрещены