HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Class menu ;/ problem
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
daku
Частый гость

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

Рейтинг



Class menu ;/ problem

Hi i have trouble with class menu ( same classes in 2 teams ;/ )

code:
// Creation CClassMenuPanel::CClassMenuPanel(int iTrans, int iRemoveMe, int x,int y,int wide,int tall) : CMenuPanel(iTrans, iRemoveMe, x,y,wide,tall) { // don't show class graphics at below 640x480 resolution bool bShowClassGraphic = true; if ( ScreenWidth < 640 ) { bShowClassGraphic = false; } memset( m_pClassImages, 0, sizeof(m_pClassImages) ); // Get the scheme used for the Titles CSchemeManager *pSchemes = gViewPort->GetSchemeManager(); // schemes SchemeHandle_t hTitleScheme = pSchemes->getSchemeHandle( "Title Font" ); SchemeHandle_t hClassWindowText = pSchemes->getSchemeHandle( "Briefing Text" ); // color schemes int r, g, b, a; // Create the title Label *pLabel = new Label( "", CLASSMENU_TITLE_X, CLASSMENU_TITLE_Y ); pLabel->setParent( this ); pLabel->setFont( pSchemes->getFont(hTitleScheme) ); pSchemes->getFgColor( hTitleScheme, r, g, b, a ); pLabel->setFgColor( r, g, b, a ); pSchemes->getBgColor( hTitleScheme, r, g, b, a ); pLabel->setBgColor( r, g, b, a ); pLabel->setContentAlignment( vgui::Label::a_west ); pLabel->setText(gHUD.m_TextMessage.BufferedLocaliseTextString("#Title_SelectYourClass")); // Create the Scroll panel m_pScrollPanel = new CTFScrollPanel( CLASSMENU_WINDOW_X, CLASSMENU_WINDOW_Y, CLASSMENU_WINDOW_SIZE_X, CLASSMENU_WINDOW_SIZE_Y ); m_pScrollPanel->setParent(this); //force the scrollbars on, so after the validate clientClip will be smaller m_pScrollPanel->setScrollBarAutoVisible(false, false); m_pScrollPanel->setScrollBarVisible(true, true); m_pScrollPanel->setBorder( new LineBorder( Color(255 * 0.7,170 * 0.7,0,0) ) ); m_pScrollPanel->validate(); int clientWide=m_pScrollPanel->getClient()->getWide(); //turn scrollpanel back into auto show scrollbar mode and validate m_pScrollPanel->setScrollBarAutoVisible(false,true); m_pScrollPanel->setScrollBarVisible(false,false); m_pScrollPanel->validate(); // Create the Class buttons for (int i = 0; i <= PC_RANDOM; i++) { char sz[256]; int iYPos = CLASSMENU_TOPLEFT_BUTTON_Y + ( (CLASSMENU_BUTTON_SIZE_Y + CLASSMENU_BUTTON_SPACER_Y) * i ); char sz1[256]; // ChangeClass buttons if(g_iTeamNumber == 1) sprintf(sz1, "sTFClassSelection[i]"); else if(g_iTeamNumber == 2) sprintf(sz1, "sTFClassSelection1[i]"); ActionSignal *pASignal = new CMenuHandler_StringCommandClassSelect( sz1, true ); // Class button sprintf(sz, "%s", CHudTextMessage::BufferedLocaliseTextString( sLocalisedClasses[i] ) ); m_pButtons[i] = new ClassButton( i, sz, CLASSMENU_TOPLEFT_BUTTON_X, iYPos, CLASSMENU_BUTTON_SIZE_X, CLASSMENU_BUTTON_SIZE_Y, true); // RandomPC uses '0' if ( i >= 1 && i <= 9 ) { sprintf(sz,"%d",i); } else { sprintf(sz,"0"); } m_pButtons[i]->setBoundKey( sz[0] ); m_pButtons[i]->setContentAlignment( vgui::Label::a_west ); m_pButtons[i]->addActionSignal( pASignal ); m_pButtons[i]->addInputSignal( new CHandler_MenuButtonOver(this, i) ); m_pButtons[i]->setParent( this ); // Create the Class Info Window //m_pClassInfoPanel[i] = new CTransparentPanel( 255, CLASSMENU_WINDOW_X, CLASSMENU_WINDOW_Y, CLASSMENU_WINDOW_SIZE_X, CLASSMENU_WINDOW_SIZE_Y ); m_pClassInfoPanel[i] = new CTransparentPanel( 255, 0, 0, clientWide, CLASSMENU_WINDOW_SIZE_Y ); m_pClassInfoPanel[i]->setParent( m_pScrollPanel->getClient() ); //m_pClassInfoPanel[i]->setVisible( false ); // don't show class pic in lower resolutions int textOffs = XRES(8); if ( bShowClassGraphic ) { textOffs = CLASSMENU_WINDOW_NAME_X; } // Create the Class Name Label if(g_iTeamNumber == 1) sprintf(sz, "#Title_%s", sTFClassSelection[i]); else if(g_iTeamNumber == 2) sprintf(sz, "#Title_%s", sTFClassSelection1[i]); char* localName=CHudTextMessage::BufferedLocaliseTextString( sz ); Label *pNameLabel = new Label( "", textOffs, CLASSMENU_WINDOW_NAME_Y ); pNameLabel->setFont( pSchemes->getFont(hTitleScheme) ); pNameLabel->setParent( m_pClassInfoPanel[i] ); pSchemes->getFgColor( hTitleScheme, r, g, b, a ); pNameLabel->setFgColor( r, g, b, a ); pSchemes->getBgColor( hTitleScheme, r, g, b, a ); pNameLabel->setBgColor( r, g, b, a ); pNameLabel->setContentAlignment( vgui::Label::a_west ); //pNameLabel->setBorder(new LineBorder()); pNameLabel->setText(localName); // Create the Class Image if ( bShowClassGraphic ) { for ( int team = 0; team < 2; team++ ) { //if ( team == 1 ) //{ if(g_iTeamNumber == 1) sprintf( sz, "%sred", sTFClassSelection[i] ); //} else if(g_iTeamNumber == 2) //{ sprintf( sz, "%sblue", sTFClassSelection1[i] ); //} m_pClassImages[team][i] = new CImageLabel( sz, 0, 0, CLASSMENU_WINDOW_TEXT_X, CLASSMENU_WINDOW_TEXT_Y ); CImageLabel *pLabel = m_pClassImages[team][i]; pLabel->setParent( m_pClassInfoPanel[i] ); //pLabel->setBorder(new LineBorder()); if ( team != 1 ) { pLabel->setVisible( false ); } // Reposition it based upon it's size int xOut, yOut; pNameLabel->getTextSize( xOut, yOut ); pLabel->setPos( (CLASSMENU_WINDOW_TEXT_X - pLabel->getWide()) / 2, yOut /2 ); } } // Create the Player count string gHUD.m_TextMessage.LocaliseTextString( "#Title_CurrentlyOnYourTeam", m_sPlayersOnTeamString, STRLENMAX_PLAYERSONTEAM ); m_pPlayers[i] = new Label( "", textOffs, CLASSMENU_WINDOW_PLAYERS_Y ); m_pPlayers[i]->setParent( m_pClassInfoPanel[i] ); m_pPlayers[i]->setBgColor( 0, 0, 0, 255 ); m_pPlayers[i]->setContentAlignment( vgui::Label::a_west ); m_pPlayers[i]->setFont( pSchemes->getFont(hClassWindowText) ); // Open up the Class Briefing File if(g_iTeamNumber == 1) sprintf(sz, "classes/short_%s.txt", sTFClassSelection[i]); else if(g_iTeamNumber == 2) sprintf(sz, "classes/short_%s.txt", sTFClassSelection1[i]); char *cText = "Class Description not available."; char *pfile = (char *)gEngfuncs.COM_LoadFile( sz, 5, NULL ); if (pfile) { cText = pfile; } // Create the Text info window TextPanel *pTextWindow = new TextPanel(cText, textOffs, CLASSMENU_WINDOW_TEXT_Y, (CLASSMENU_WINDOW_SIZE_X - textOffs)-5, CLASSMENU_WINDOW_SIZE_Y - CLASSMENU_WINDOW_TEXT_Y); pTextWindow->setParent( m_pClassInfoPanel[i] ); pTextWindow->setFont( pSchemes->getFont(hClassWindowText) ); pSchemes->getFgColor( hClassWindowText, r, g, b, a ); pTextWindow->setFgColor( r, g, b, a ); pSchemes->getBgColor( hClassWindowText, r, g, b, a ); pTextWindow->setBgColor( r, g, b, a ); // Resize the Info panel to fit it all int wide,tall; pTextWindow->getTextImage()->getTextSizeWrapped( wide,tall); pTextWindow->setSize(wide,tall); int xx,yy; pTextWindow->getPos(xx,yy); int maxX=xx+wide; int maxY=yy+tall; //check to see if the image goes lower than the text //just use the red teams [0] images if(m_pClassImages[0][i]!=null) { m_pClassImages[0][i]->getPos(xx,yy); if((yy+m_pClassImages[0][i]->getTall())>maxY) { maxY=yy+m_pClassImages[0][i]->getTall(); } } m_pClassInfoPanel[i]->setSize( maxX , maxY ); if (pfile) gEngfuncs.COM_FreeFile( pfile ); //m_pClassInfoPanel[i]->setBorder(new LineBorder()); } // Create the Cancel button m_pCancelButton = new CommandButton( gHUD.m_TextMessage.BufferedLocaliseTextString( "#Menu_Cancel" ), CLASSMENU_TOPLEFT_BUTTON_X, 0, CLASSMENU_BUTTON_SIZE_X, CLASSMENU_BUTTON_SIZE_Y); m_pCancelButton->setParent( this ); m_pCancelButton->addActionSignal( new CMenuHandler_TextWindow(HIDE_TEXTWINDOW) ); m_iCurrentInfo = 0; }


how to make it work with teams ?

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

Старое сообщение 11-03-2012 14:05
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 27

Рейтинг



Make two different menus? Or send message from server about team.

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

Старое сообщение 14-03-2012 18:44
- За что?
daku
Частый гость

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

Рейтинг



there are 2 colors in team ( if you in team 1 you are blue and in class menu is blue text ) but if i make section to check it game is crashing ;/

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

Старое сообщение 14-03-2012 19:55
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 27

Рейтинг



hmm.. try not copypast the code, and write you new code.

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

Старое сообщение 14-03-2012 20:07
- За что?
Ghoul [BB]
МРАЗЬ ОПАСНАЯ

Дата регистрации: Jan 2006
Проживает: ...и прожигает...
Сообщений: 2567

Рейтинг



А разве исходники ХЛВЕ не открыты? Там все это уже есть.

http://half-life.ru/forum/showthread.php?threadid=13964

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

Старое сообщение 15-03-2012 17:02
- За что?
daku
Частый гость

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

Рейтинг



no there is one class system ( 2 teams with same classes ) i want 2 teams with 2 classes system

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

Старое сообщение 17-03-2012 09:47
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
daku писал:
i want 2 teams with 2 classes system

So what's a problem? Write your own new VGUI class menu with checking of g_iTeamNumber. It's not so difficult like it seems at first glance. See my team menu code for example. It has interesting feature: black-and-white inactive buttons

Вложение: vgui_teamselectmenu.7z (2.0 кб)
Этот файл был скачан 152 раз.

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

Старое сообщение 17-03-2012 14:42
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 19:14. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Class menu ;/ problem
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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