![](//detler.ucoz.ru/diz/113.jpg) |
|
Ironsight Overlay
| |
Dark_Alex | Дата: Среда, 01.06.2011, 16:22 | Сообщение # 1 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Интересует вопрос,как можно прописать Overlay - эффект,при использовании Ironsight ? В голове крутиться псевдо-код а-ля if Ironsight=1 итп... Но никак привести это к завершению немогу. Есть какие-либо идеи?
|
|
| |
Strider | Дата: Среда, 01.06.2011, 16:55 | Сообщение # 2 |
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
| Code if( ironsighed ) { OVERLAY_BLA_BLA_BLA("sdjkfshnf"); }
|
|
| |
HellMapper | Дата: Среда, 01.06.2011, 19:05 | Сообщение # 3 |
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
| А если точнее 1) PRECAHE 2) Тутор про кровь на экране
Я живу в будущем City 15
Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
|
|
| |
Dark_Alex | Дата: Среда, 01.06.2011, 21:44 | Сообщение # 4 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Quote (HellMapper) А если точнее 1) PRECAHE 2) Тутор про кровь на экране Про кровь чтал,но там выполнено в отдельных cpp и h файлах. Нельзя ли например Code if( ironsighed ) { OVERLAY_BLA_BLA_BLA("sdjkfshnf"); } Воткнуть в weapon_parse.cpp или в baseviewmodel_shared.cpp А-ля Code //THIS IS ALREADY IN THE CODE, just so you know where we are #define VIEWMODEL_ANIMATION_PARITY_BITS 3 #define SCREEN_OVERLAY_MATERIAL "vgui/screens/vgui_overlay" //ALL BELOW IS NEW #if defined( CLIENT_DLL ) void ExpWpnTestOffset(ConVar *pConVar, char *pszString);
if( ironsighed ) \\ADED { OVERLAY_BLA_BLA_BLA("sdjkfshnf"); \\ADED }
Было отредактированно - Dark_Alex - Среда, 01.06.2011, 21:44 |
|
| |
Strider | Дата: Среда, 01.06.2011, 22:22 | Сообщение # 5 |
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
| *вспоминает где есть покадровое обновление*
Попробуй в конструктор BaseViewModel_shared
|
|
| |
Dark_Alex | Дата: Четверг, 02.06.2011, 14:52 | Сообщение # 6 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Quote (Strider) if( ironsighed ) { OVERLAY_BLA_BLA_BLA("sdjkfshnf"); } Кстате,интересно,сработает ли этот код,почему-то кажется что нет=)
|
|
| |
Strider | Дата: Четверг, 02.06.2011, 16:19 | Сообщение # 7 |
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
| Dark_Alex, Конечно нет, так как вместо OVERLAY_BLA_BLA_BLA("sdjkfshnf"); нужно сунуть код самого оверлея
|
|
| |
Dark_Alex | Дата: Четверг, 02.06.2011, 16:33 | Сообщение # 8 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Quote (Strider) так как вместо OVERLAY_BLA_BLA_BLA("sdjkfshnf") Это ясно там скорей что то типо того должно получится
Code if( ironsight ) { OVERLAY_MATERIAL "vgui/screens/vgui_overlay" }
|
|
| |
HellMapper | Дата: Четверг, 02.06.2011, 16:44 | Сообщение # 9 |
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
| где-то так
Я живу в будущем City 15
Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
|
|
| |
Andreazzz | Дата: Суббота, 04.06.2011, 11:24 | Сообщение # 10 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| Да легко! Лично я делал это HUD'ом Если надо могу дать код.
|
|
| |
Dark_Alex | Дата: Суббота, 04.06.2011, 12:42 | Сообщение # 11 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Quote (Andreazzz) Если надо могу дать код. Надо=) Буду благодарен
|
|
| |
Andreazzz | Дата: Суббота, 04.06.2011, 13:41 | Сообщение # 12 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| Code #include "cbase.h" #include "hud.h" #include "hudelement.h" #include "hud_macros.h" #include "hud_numericdisplay.h" #include "iclientmode.h" #include "c_basehlplayer.h" #include "c_hl2_player.h" #include "vguimatsurface/IMatSystemSurface.h" #include "materialsystem/IMaterial.h" #include "materialsystem/IMesh.h" #include "materialsystem/imaterialvar.h"
#include <vgui/IScheme.h> #include <vgui/ISurface.h> #include <KeyValues.h> #include <vgui_controls/AnimationController.h>
// memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h"
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CHudIronsight : public vgui::Panel, public CHudElement { DECLARE_CLASS_SIMPLE( CHudIronsight, vgui::Panel );
public: CHudIronsight( const char *pElementName ); bool ShouldDraw( void ); void Init( void ); void LevelInit( void );
protected: virtual void ApplySchemeSettings(vgui::IScheme *scheme); virtual void Paint( void );
private:
bool m_bIronSights; bool m_bPainted; float m_flStartTime;
CMaterialReference m_Material; };
DECLARE_HUDELEMENT( CHudIronsight );
using namespace vgui;
//----------------------------------------------------------------------------- // Purpose: Constructor //----------------------------------------------------------------------------- CHudIronsight::CHudIronsight( const char *pElementName ) : CHudElement(pElementName), BaseClass(NULL, "HudIronsights") { vgui::Panel *pParent = g_pClientMode->GetViewport(); SetParent( pParent ); //SetHiddenBits( HIDEHUD_HEALTH | HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT ); }
//----------------------------------------------------------------------------- // Purpose: standard hud element init function //----------------------------------------------------------------------------- void CHudIronsight::Init( void ) { m_bIronSights = false; m_bPainted = false; m_flStartTime = -999.0f; m_Material.Init( "vgui/zoom", TEXTURE_GROUP_VGUI ); }
//----------------------------------------------------------------------------- // Purpose: standard hud element init function //----------------------------------------------------------------------------- void CHudIronsight::LevelInit( void ) { Init(); }
//----------------------------------------------------------------------------- // Purpose: sets scheme colors //----------------------------------------------------------------------------- void CHudIronsight::ApplySchemeSettings( vgui::IScheme *scheme ) { BaseClass::ApplySchemeSettings(scheme);
SetPaintBackgroundEnabled(false); SetPaintBorderEnabled(false); SetFgColor(scheme->GetColor("ZoomReticleColor", GetFgColor()));
int screenWide, screenTall; GetHudSize(screenWide, screenTall); SetBounds(0, 0, screenWide, screenTall); }
//----------------------------------------------------------------------------- // Purpose: Save CPU cycles by letting the HUD system early cull // costly traversal. Called per frame, return true if thinking and // painting need to occur. //----------------------------------------------------------------------------- bool CHudIronsight::ShouldDraw( void ) { bool bNeedsDraw = false;
C_BaseHLPlayer *pPlayer = dynamic_cast<C_BaseHLPlayer *>(C_BasePlayer::GetLocalPlayer()); if ( pPlayer == NULL ) return false;
//C_HL2MP_Player *pHL2Player = dynamic_cast<C_HL2MP_Player*>(C_HL2MP_Player::GetLocalPlayer()); C_BaseCombatWeapon *wpn = pPlayer->GetActiveWeapon(); // Don't draw hud if we're using Iron Sights. -HairyPotter if ( wpn && wpn->m_bIsIronsighted ) { bNeedsDraw = true; } /*else if ( m_bPainted ) { // keep painting until state is finished bNeedsDraw = true; }*/
return ( bNeedsDraw && CHudElement::ShouldDraw() ); }
#define ZOOM_FADE_TIME 0.4f //----------------------------------------------------------------------------- // Purpose: draws the zoom effect //----------------------------------------------------------------------------- void CHudIronsight::Paint( void ) { m_bPainted = false;
C_BaseHLPlayer *pPlayer = dynamic_cast<C_BaseHLPlayer *>(C_BasePlayer::GetLocalPlayer()); C_BaseCombatWeapon *wpn = pPlayer->GetActiveWeapon();
if ( pPlayer == NULL ) return;
if ( wpn ) { if ( wpn->m_bIsIronsighted && m_bIronSights == false ) { m_bIronSights = true; m_flStartTime = gpGlobals->curtime; } else if ( wpn->m_bIsIronsighted == false && m_bIronSights ) { m_bIronSights = false; m_flStartTime = gpGlobals->curtime; } }
// draw the appropriately scaled zoom animation float deltaTime = ( gpGlobals->curtime - m_flStartTime ); float scale = clamp( deltaTime / ZOOM_FADE_TIME, 0.0f, 1.0f ); float alpha;
if ( m_bIronSights ) { alpha = scale; } else { if ( scale >= 1.0f ) return;
alpha = ( 1.0f - scale ) * 0.25f; scale = 1.0f - ( scale * 0.5f ); }
Color col = GetFgColor(); col[3] = alpha * 64;
surface()->DrawSetColor( col ); // draw zoom circles int wide, tall; GetSize(wide, tall);
// draw the darkened edges, with a rotated texture in the four corners CMatRenderContextPtr pRenderContext( materials ); pRenderContext->Bind( m_Material ); IMesh *pMesh = pRenderContext->GetDynamicMesh( true, NULL, NULL, NULL );
float x0 = 0.0f, x1 = wide / 2.0f, x2 = wide; float y0 = 0.0f, y1 = tall / 2.0f, y2 = tall;
float uv1 = 1.0f - (1.0f / 255.0f); float uv2 = 0.0f + (1.0f / 255.0f);
struct coord_t { float x, y; float u, v; }; coord_t coords[16] = { // top-left { x0, y0, uv1, uv2 }, { x1, y0, uv2, uv2 }, { x1, y1, uv2, uv1 }, { x0, y1, uv1, uv1 },
// top-right { x1, y0, uv2, uv2 }, { x2, y0, uv1, uv2 }, { x2, y1, uv1, uv1 }, { x1, y1, uv2, uv1 },
// bottom-right { x1, y1, uv2, uv1 }, { x2, y1, uv1, uv1 }, { x2, y2, uv1, uv2 }, { x1, y2, uv2, uv2 },
// bottom-left { x0, y1, uv1, uv1 }, { x1, y1, uv2, uv1 }, { x1, y2, uv2, uv2 }, { x0, y2, uv1, uv2 }, };
CMeshBuilder meshBuilder; meshBuilder.Begin( pMesh, MATERIAL_QUADS, 4 );
for (int i = 0; i < 16; i++) { meshBuilder.Color4f( 0.0, 0.0, 0.0, alpha ); meshBuilder.TexCoord2f( 0, coords[i].u, coords[i].v ); meshBuilder.Position3f( coords[i].x, coords[i].y, 0.0f ); meshBuilder.AdvanceVertex(); }
meshBuilder.End(); pMesh->Draw();
m_bPainted = true; }
Если нужно для HL2DM то просто поменяй объявление игрока на нужное (те. C_BaseHLPlayer *pPlayer = dynamic_cast<C_BaseHLPlayer *>(C_BasePlayer::GetLocalPlayer()) например на C_HL2MP_Player *pPlayer = dynamic_cast<C_HL2MP_Player*>(C_HL2MP_Player::GetLocalPlayer())) и инклюд с_hl2_player.h на c_hl2mp_player.h
Было отредактированно - Andreazzz - Суббота, 04.06.2011, 13:54 |
|
| |
Strider | Дата: Суббота, 04.06.2011, 13:43 | Сообщение # 13 |
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
| Andreazzz, Quote (Andreazzz) я делал это HUD'ом Индус штолеа? Чем тебя обычный оверлей не устроил?
|
|
| |
Andreazzz | Дата: Суббота, 04.06.2011, 13:49 | Сообщение # 14 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| Quote (Strider) Индус штолеа? Чем тебя обычный оверлей не устроил? Он очень туп и прост, а тут с эффектами и не надо редактировать сторонние файлы.
Было отредактированно - Andreazzz - Суббота, 04.06.2011, 13:51 |
|
| |
Dark_Alex | Дата: Суббота, 04.06.2011, 15:28 | Сообщение # 15 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Andreazzz, Я насколько вижу ты это отдельным hud элементом проделывал? Тобишь создать hud_ironshight.cpp например,и туды сунуть сие чудоДобавлено (04.06.2011, 15:28) --------------------------------------------- Andreazzz, Не так всё просто как мне казалось. Прошу меня простить,но не мог бы ты скинуть мне все файлы связанные с ironshight(если у тебя конечно сделано всё)(h.cpp) Я насколько понял тут ещё регить команды типа ('m_bIsIronsighted) в C_BaseCombatWeapon нужно итп...
Ошибок вылезает... например Code 1>c:\Tutur\src\game\client\hud_ironshight.h(114) : error C2039: 'm_bIsIronsighted' : is not a member of 'C_BaseCombatWeapon' 1> c:\Tutur\src\game\shared\basecombatweapon_shared.h(130) : see declaration of 'C_BaseCombatWeapon' 1>c:\Tutur\src\game\client\hud_ironshight.h(143) : error C2039: 'm_bIsIronsighted' : is not a member of 'C_BaseCombatWeapon' 1> c:\Tutur\src\game\shared\basecombatweapon_shared.h(130) : see declaration of 'C_BaseCombatWeapon' 1>c:\Tutur\src\game\client\hud_ironshight.h(148) : error C2039: 'm_bIsIronsighted' : is not a member of 'C_BaseCombatWeapon' 1> c:\Tutur\src\game\shared\basecombatweapon_shared.h(130) : see declaration of 'C_BaseCombatWeapon' 1>..\shared\baseviewmodel_shared.cpp(200) : error C2601: 'C_BaseViewModel::SetControlPanelsActive' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(217) : error C2601: 'C_BaseViewModel::SpawnControlPanels' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(333) : error C2601: 'C_BaseViewModel::DestroyControlPanels' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(350) : error C2601: 'C_BaseViewModel::SetOwner' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(363) : error C2601: 'C_BaseViewModel::SetIndex' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(372) : error C2601: 'C_BaseViewModel::ViewModelIndex' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(380) : error C2601: 'C_BaseViewModel::AddEffects' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(393) : error C2601: 'C_BaseViewModel::RemoveEffects' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(407) : error C2601: 'C_BaseViewModel::SetWeaponModel' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(443) : error C2601: 'C_BaseViewModel::GetOwningWeapon' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(452) : error C2601: 'C_BaseViewModel::SendViewModelMatchingSequence' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>c:\Tutur\src\game\client\ivieweffects.h(52) : error C2624: 'C_BaseViewModel::Spawn::IViewEffects' : local classes cannot be used to declare 'extern' variables 1>..\shared\baseviewmodel_shared.cpp(480) : error C2601: 'C_BaseViewModel::CalcViewModelView' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(530) : error C2601: 'C_BaseViewModel::CalcViewModelLag' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(597) : error C2267: 'RecvProxy_Weapon' : static functions with block scope are illegal 1>..\shared\baseviewmodel_shared.cpp(597) : error C2601: 'RecvProxy_Weapon' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(616) : error C2267: 'CCBaseViewModelFactory' : static functions with block scope are illegal 1>..\shared\baseviewmodel_shared.cpp(616) : error C2601: 'CCBaseViewModelFactory' : local function definitions are illegal 1> ..\shared\baseviewmodel_shared.cpp(171): this line contains a '{' which has not yet been matched 1>..\shared\baseviewmodel_shared.cpp(618) : error C2870: 'DT_BaseViewModel' : a namespace definition must appear either at file scope or immediately within another namespace definition 1>..\shared\baseviewmodel_shared.cpp(618) : error C2655: 'C_BaseViewModel::m_pClassRecvTable' : definition or redeclaration illegal in current scope 1> c:\tutur\src\game\shared\baseviewmodel_shared.h(38) : see declaration of 'C_BaseViewModel::m_pClassRecvTable' 1>..\shared\baseviewmodel_shared.cpp(618) : error C2086: 'RecvTable *C_BaseViewModel::m_pClassRecvTable' : redefinition 1> c:\tutur\src\game\shared\baseviewmodel_shared.h(38) : see declaration of 'm_pClassRecvTable' 1>..\shared\baseviewmodel_shared.cpp(618) : error C2267: '_C_BaseViewModel_CreateObject' : static functions with block scope are illegal 1>..\shared\baseviewmodel_shared.cpp(618) : error C2086: 'ClientClass __g_C_BaseViewModelClientClass' : redefinition 1> ..\shared\baseviewmodel_shared.cpp(618) : see declaration of '__g_C_BaseViewModelClientClass' 1>..\shared\baseviewmodel_shared.cpp(620) : error C2951: template declarations are only permitted at global, namespace, or class scope 1>..\shared\baseviewmodel_shared.cpp(620) : error C2870: 'DT_BaseViewModel' : a namespace definition must appear either at file scope or immediately within another namespace definition 1>..\shared\baseviewmodel_shared.cpp(620) : error C2951: template declarations are only permitted at global, namespace, or class scope 1>..\shared\baseviewmodel_shared.cpp(620) : error C2870: 'DT_BaseViewModel' : a namespace definition must appear either at file scope or immediately within another namespace definition 1>..\shared\baseviewmodel_shared.cpp(620) : error C2086: 'RecvTable DT_BaseViewModel::g_RecvTable' : redefinition 1> ..\shared\baseviewmodel_shared.cpp(618) : see declaration of 'DT_BaseViewModel::g_RecvTable' 1>..\shared\baseviewmodel_shared.cpp(620) : fatal error C1506: unrecoverable block scoping error
|
|
| |
HellMapper | Дата: Суббота, 04.06.2011, 18:18 | Сообщение # 16 |
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
| Для начала надо бы сам прицел через мушку сделать, а потом подключить и его.
Я живу в будущем City 15
Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
|
|
| |
Dark_Alex | Дата: Суббота, 04.06.2011, 22:10 | Сообщение # 17 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| HellMapper, Ясное дело,просто смотря как делать. Есть разные туторы.Добавлено (04.06.2011, 22:10) --------------------------------------------- А если подключать тот код что написал добрый Andreazzz, (за что ему большое спасибо) то нужно и прицел создавать соответственно как это делал он.
|
|
| |
Andreazzz | Дата: Воскресенье, 05.06.2011, 10:03 | Сообщение # 18 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| Dark_Alex, я делал сие чудо по альтернативному туториалу http://developer.valvesoftware.com/wiki/Adding_Ironsights
|
|
| |
Dark_Alex | Дата: Воскресенье, 05.06.2011, 12:08 | Сообщение # 19 |
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
| Andreazzz, Вот. Буду делать,хоть таким образом и сложнее,но за-то появляется возможностей по изменению больше. Кстате,когда-то месяца три назад пытался по этому тутору сделать,вот мороки то было В итоге так и не сделал Буду делать сейчас,вдруг получится
|
|
| |
Strider | Дата: Воскресенье, 05.06.2011, 12:38 | Сообщение # 20 |
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
| Я, кстати, по этому тутору и делал. + на все оружия сделал огромный разброс если стрелять без мушки
|
|
| |
|
![](//detler.ucoz.ru/16.jpg) |
Помощь в разработке форума: HOMiE7 |
![](/.s/img/cp/7.gif) |
![](//detler.ucoz.ru/17.jpg) | |
|