void __MsgFunc_HapSetDrag( bf_read &msg ) { #ifdef WIN32 float drag = msg.ReadFloat(); HapticsHandleMsg_HapSetDrag( drag ); #endif // WIN32 }
//----------------------------------------------------------------------------- // Purpose: Receive messages from the server // Input : classID - class to receive the message // &msg - message in question //----------------------------------------------------------------------------- void C_GrenadeHopwire::ReceiveMessage( int classID, bf_read &msg ) { if ( classID != GetClientClass()->m_ClassID ) { // Message is for subclass BaseClass::ReceiveMessage( classID, msg ); return; } int messageType = msg.ReadByte(); switch( messageType ) { case HOPWIRE_START_EXPLOSION: { m_ExplosionEffect.SetActive(); m_ExplosionEffect.SetOwner( this ); m_ExplosionEffect.StartExplosion(); } break; case HOPWIRE_STOP_EXPLOSION: { m_ExplosionEffect.StopExplosion(); } break; default: break; } }
// Server to client message received void C_NPC_Advisor::ReceiveMessage( int classID, bf_read &msg ) { if ( classID != GetClientClass()->m_ClassID ) { // message is for subclass BaseClass::ReceiveMessage( classID, msg ); return; } int messageType = msg.ReadByte(); switch( messageType ) { case ADVISOR_MSG_START_BEAM: { int eindex = msg.ReadLong(); StartBeamFX(IndexToEntity(eindex)); } break; case ADVISOR_MSG_STOP_BEAM: { int eindex = msg.ReadLong(); StopBeamFX(IndexToEntity(eindex)); } break; case ADVISOR_MSG_STOP_ALL_BEAMS: { ParticleProp()->StopEmission(); } break; case ADVISOR_MSG_START_ELIGHT: { StartElight(); } break; case ADVISOR_MSG_STOP_ELIGHT: { StopElight(); } break; default: AssertMsg1( false, "Received unknown message %d", messageType); } }
//----------------------------------------------------------------------------- // Purpose: Reads in a player's Chat text from the server //----------------------------------------------------------------------------- void CBaseHudChat::MsgFunc_SayText2( bf_read &msg ) { // Got message during connection if ( !g_PR ) return; int client = msg.ReadByte(); bool bWantsToChat = msg.ReadByte(); wchar_t szBuf[6][256]; char untranslated_msg_text[256]; wchar_t *msg_text = ReadLocalizedString( msg, szBuf[0], sizeof( szBuf[0] ), false, untranslated_msg_text, sizeof( untranslated_msg_text ) ); // keep reading strings and using C format strings for subsituting the strings into the localised text string ReadChatTextString ( msg, szBuf[1], sizeof( szBuf[1] ) ); // player name ReadChatTextString ( msg, szBuf[2], sizeof( szBuf[2] ) ); // chat text ReadLocalizedString( msg, szBuf[3], sizeof( szBuf[3] ), true ); ReadLocalizedString( msg, szBuf[4], sizeof( szBuf[4] ), true ); g_pVGuiLocalize->ConstructString( szBuf[5], sizeof( szBuf[5] ), msg_text, 4, szBuf[1], szBuf[2], szBuf[3], szBuf[4] ); char ansiString[512]; g_pVGuiLocalize->ConvertUnicodeToANSI( ConvertCRtoNL( szBuf[5] ), ansiString, sizeof( ansiString ) ); if ( bWantsToChat ) { int iFilter = CHAT_FILTER_NONE; if ( client > 0 && (g_PR->GetTeam( client ) != g_PR->GetTeam( GetLocalPlayerIndex() )) ) { iFilter = CHAT_FILTER_PUBLICCHAT; } // print raw chat text ChatPrintf( client, iFilter, "%s", ansiString ); Msg( "%s\n", RemoveColorMarkup(ansiString) ); CLocalPlayerFilter filter; C_BaseEntity::EmitSound( filter, SOUND_FROM_LOCAL_PLAYER, "HudChat.Message" ); } else { // print raw chat text ChatPrintf( client, GetFilterForString( untranslated_msg_text), "%s", ansiString ); } }
// Message handler for PyNetworkCls void __MsgFunc_PyNetworkCls( bf_read &msg ) { int iClassID; char networkName[PYNETCLS_BUFSIZE]; iClassID = msg.ReadWord(); msg.ReadString( networkName, PYNETCLS_BUFSIZE ); DbgStrPyMsg( "__MsgFunc_PyNetworkCls: Registering Python network class message %d %s\n", iClassID, networkName ); // Get module path const char *pch = V_strrchr( networkName, '.' ); if( !pch ) { Warning( "Invalid python class name %s\n", networkName ); return; } int n = pch - networkName + 1; char modulePath[PYNETCLS_BUFSIZE]; V_strncpy( modulePath, networkName, n ); // Make sure the client class is imported SrcPySystem()->Import( modulePath ); // Read which client class we are modifying PyClientClassBase *p = FindPyClientClassByID( iClassID ); if( !p ) { Warning( "__MsgFunc_PyNetworkCls: Invalid networked class %d\n", iClassID ); return; } // Read network class name V_strncpy( p->m_strPyNetworkedClassName, networkName, sizeof( p->m_strPyNetworkedClassName ) ); // Attach if a network class exists unsigned short lookup = m_NetworkClassDatabase.Find( networkName ); if ( lookup != m_NetworkClassDatabase.InvalidIndex() ) { m_NetworkClassDatabase.Element(lookup)->AttachClientClass( p ); } else { Warning( "__MsgFunc_PyNetworkCls: Invalid networked class %s\n", networkName ); } }
static void MsgFunc_ShowObjectives( bf_read &msg ) { CASWHudObjective *pObjectives = GET_HUDELEMENT( CASWHudObjective ); if ( !pObjectives ) return; pObjectives->ShowObjectives( msg.ReadFloat() ); }
//----------------------------------------------------------------------------- // Purpose: // Input : *pszName - // iSize - // *pbuf - //----------------------------------------------------------------------------- void CForceFeedback::MsgFunc_ForceFeedback( bf_read &msg ) { byte msgType = msg.ReadByte(); switch ( msgType ) { default: { Warning( "Bad parse in MsgFunc_ForceFeedback!\n" ); } break; case FFMSG_STOPALL: { Internal_StopAllEffects(); } break; case FFMSG_START: { FORCEFEEDBACK_t effectType = (FORCEFEEDBACK_t)msg.ReadByte(); FFBaseParams_t params; params.m_flDirection = 360.0f * ( (byte)msg.ReadByte() / 255.0f ); params.m_flDuration = (float)msg.ReadLong() / 1000.0f; params.m_flGain = ( (byte)msg.ReadByte() / 255.0f ); params.m_nPriority = msg.ReadByte(); params.m_bSolo = msg.ReadByte() == 0 ? false : true; if ( effectType >= 0 && effectType < NUM_FORCE_FEEDBACK_PRESETS ) { Internal_StartEffect( effectType, params ); } else { Warning( "Bad parse in MsgFunc_ForceFeedback, FFMSG_START (%i)!\n", effectType ); } } break; case FFMSG_STOP: { FORCEFEEDBACK_t effectType = (FORCEFEEDBACK_t)msg.ReadByte(); Internal_StopEffect( effectType ); } break; case FFMSG_PAUSE: { Internal_PauseAll(); } break; case FFMSG_RESUME: { Internal_ResumeAll(); } break; } }
void __MsgFunc_SPHapWeapEvent( bf_read &msg ) { #ifdef WIN32 int iActivity = msg.ReadLong(); HapticsHandleMsg_SPHapWeapEvent( iActivity ); #endif // WIN32 }
void CHud::MsgFunc_SendAudio( bf_read &msg ) { char szString[2048]; msg.ReadString( szString, sizeof(szString) ); CLocalPlayerFilter filter; C_BaseEntity::EmitSound( filter, SOUND_FROM_LOCAL_PLAYER, szString ); }
void __MsgFunc_ReloadEffect( bf_read &msg ) { int iPlayer = msg.ReadShort(); C_SDKPlayer *pPlayer = dynamic_cast< C_SDKPlayer* >( C_BaseEntity::Instance( iPlayer ) ); if ( pPlayer ) pPlayer->PlayReloadEffect(); }
void __MsgFunc_LessonLearned( bf_read &msg ) { char szString[256]; msg.ReadString(szString, sizeof(szString)); C_SDKPlayer* pPlayer = C_SDKPlayer::GetLocalSDKPlayer(); pPlayer->Instructor_LessonLearned(szString); }
void CVoiceStatus::HandleVoiceMaskMsg(bf_read &msg) { unsigned long dw; for(dw=0; dw < VOICE_MAX_PLAYERS_DW; dw++) { m_AudiblePlayers.SetDWord(dw, (unsigned long)msg.ReadLong()); m_ServerBannedPlayers.SetDWord(dw, (unsigned long)msg.ReadLong()); if( voice_clientdebug.GetInt()) { Msg("CVoiceStatus::HandleVoiceMaskMsg\n"); Msg(" - m_AudiblePlayers[%d] = %lu\n", dw, m_AudiblePlayers.GetDWord(dw)); Msg(" - m_ServerBannedPlayers[%d] = %lu\n", dw, m_ServerBannedPlayers.GetDWord(dw)); } } m_bServerModEnable = msg.ReadByte(); }
//----------------------------------------------------------------------------- // Purpose: Handle an item pickup event from the server //----------------------------------------------------------------------------- void CHudHistoryResource::MsgFunc_ItemPickup( bf_read &msg ) { char szName[1024]; msg.ReadString( szName, sizeof(szName) ); // Add the item to the history AddToHistory( HISTSLOT_ITEM, szName ); }
void CASW_Hud_Squad_Hotbar::MsgFunc_ASWOrderStopItemFX( bf_read &msg ) { int iMarine = msg.ReadShort(); C_ASW_Marine *pMarine = dynamic_cast<C_ASW_Marine*>(ClientEntityList().GetEnt(iMarine)); // turn iMarine ent index into the marine if ( !pMarine ) return; bool bShouldDelay = msg.ReadOneBit() ? true : false; bool bFailed = msg.ReadOneBit() ? true : false; // loops through to see if we already have an order effect for this marine if ( bFailed ) StopItemFX( pMarine, gpGlobals->curtime + 2.0f, true ); else if ( bShouldDelay ) StopItemFX( pMarine, gpGlobals->curtime + 2.0f ); else StopItemFX( pMarine ); }
void CHudLessonPanel::MsgFunc_HintText( bf_read &msg ) { // Read the string(s) char szString[255]; msg.ReadString( szString, sizeof(szString) ); char *tmpStr = hudtextmessage->LookupString( szString, NULL ); LocalizeAndDisplay( tmpStr, szString ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CHudNotificationPanel::MsgFunc_HudNotifyCustom( bf_read &msg ) { // Ignore notifications in minmode ConVarRef cl_hud_minmode( "cl_hud_minmode", true ); if ( cl_hud_minmode.IsValid() && cl_hud_minmode.GetBool() ) return; // Reload the base LoadControlSettings( "resource/UI/notifications/base_notification.res" ); char szText[256]; char szIcon[256]; msg.ReadString( szText, sizeof(szText) ); msg.ReadString( szIcon, sizeof(szIcon) ); int iBackgroundTeam = msg.ReadByte(); SetupNotifyCustom( szText, szIcon, iBackgroundTeam ); }
void HandlePacket_FORCE_PASSWORD_CHANGE( bf_read &buf, const CIPAddr &ipFrom ) { char newPassword[512]; buf.ReadString( newPassword, sizeof( newPassword ) ); Msg( "Got a FORCE_PASSWORD_CHANGE (%s) packet.\n", newPassword ); SetPassword( newPassword ); if ( g_pConnMgr ) g_pConnMgr->SendCurStateTo( -1 ); }
//----------------------------------------------------------------------------- // Purpose: // Input : *pszName - // iSize - // *pbuf - //----------------------------------------------------------------------------- void CHudChat::MsgFunc_SayText( bf_read &msg ) { char szString[256]; int client = msg.ReadByte(); msg.ReadString( szString, sizeof(szString) ); bool bWantsToChat = msg.ReadByte(); if ( bWantsToChat ) { // print raw chat text ChatPrintf( client, "%s", szString ); } else { // try to lookup translated string Printf( "%s", hudtextmessage->LookupString( szString ) ); } Msg( "%s", szString ); }
void CHoloShipComm::MsgFunc_HoloMessage( bf_read &msg ) { char szDisplayName[ 128 ]; char szWaveName[ 128 ]; msg.ReadString( szDisplayName, sizeof( szDisplayName ) ); msg.ReadString( szWaveName, sizeof( szWaveName ) ); const float flDuration = msg.ReadFloat(); //Msg( "Holo message received: %s, %s, %f\n", szDisplayName, szWaveName, flDuration ); wchar_t wszFormatted[ 64 ]; g_pVGuiLocalize->ConstructString( wszFormatted, sizeof( wszFormatted ), SafeLocalizeInline( "#holo_gui_comm_incoming" ).Get(), 1, SafeLocalizeInline( szDisplayName ).Get() ); m_pLabelHeader->SetText( wszFormatted ); m_flResetTimer = flDuration; m_flFlashTimer = 0.5f; ResetWaveForm( szWaveName ); }
void CHudGameMessage::MsgFunc_GameMessage( bf_read &msg ) { // Read in our string char szString[256]; msg.ReadString( szString, sizeof(szString) ); // Convert it to localize friendly unicode g_pVGuiLocalize->ConvertANSIToUnicode( szString, m_pText, sizeof(m_pText) ); // Setup our time trackers m_flStartTime = gpGlobals->curtime; m_flDuration = 5.0f; }
/*======================================================= Protocol: EventType [long] teamid [long] userid [long] =======================================================*/ void CHudFlagCarrier::MsgFunc_UpdateFlagCarrier( bf_read& data ) { int event = data.ReadLong(); int teamid = data.ReadLong(); int flagteamid = data.ReadLong(); int userid = data.ReadLong(); if ( event == HFLG_PICKUP ) { int teamIndex = flagteamid; m_FlagState[ teamIndex ] = HFLG_PICKUP; UpdateFlagState( teamIndex ); m_iTakenByPlayer[ teamIndex ] = userid; UpdateTakenAvatar( teamIndex ); } else if ( event == HFLG_DROPPED || event == HFLG_DROPPED_TIMER ) { m_DroppedMaxTime = data.ReadFloat(); int teamIndex = flagteamid; m_FlagState[ teamIndex ] = HFLG_DROPPED_TIMER; m_DroppedTimer[ teamIndex ].Reset(); m_DroppedTimer[ teamIndex ].Start( 0.0f ); UpdateFlagState( teamIndex ); m_iTakenByPlayer[ teamIndex ] = TAKEN_INVALID_PLAYER; } else if ( event == HFLG_RETURNED ) { int teamIndex = flagteamid; m_FlagState[ teamIndex ] = HFLG_BASE; m_DroppedTimer[ teamIndex ].Reset(); UpdateFlagState( teamIndex ); m_iTakenByPlayer[ teamIndex ] = TAKEN_INVALID_PLAYER; } }
//----------------------------------------------------------------------------- // Purpose: // Input : length - // *data - // Output : void //----------------------------------------------------------------------------- void ReceiveMessage( int classID, bf_read &msg ) { if ( classID != GetClientClass()->m_ClassID ) { // message is for subclass BaseClass::ReceiveMessage( classID, msg ); return; } int messageType = msg.ReadByte(); switch( messageType ) { case GUNSHIP_MSG_STREAKS: { Vector pos; msg.ReadBitVec3Coord( pos ); m_cannonFX.SetRenderOrigin( pos ); m_cannonFX.EffectInit( entindex(), LookupAttachment( "BellyGun" ) ); m_cannonFX.LimitTime( GUNSHIPFX_BIG_SHOT_TIME ); } break; case GUNSHIP_MSG_BIG_SHOT: { Vector tmp; msg.ReadBitVec3Coord( tmp ); m_cannonFX.SetTime( GUNSHIPFX_BIG_SHOT_TIME ); m_cannonFX.LimitTime( 0 ); } break; case GUNSHIP_MSG_DEAD: { m_cannonFX.EffectShutdown(); } break; } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CHudNotificationPanel::MsgFunc_HudNotify( bf_read &msg ) { // Ignore notifications in minmode ConVarRef cl_hud_minmode( "cl_hud_minmode", true ); if ( cl_hud_minmode.IsValid() && cl_hud_minmode.GetBool() ) return; int iType = msg.ReadByte(); LoadControlSettings( GetNotificationByType( iType ) ); // set up the fade time m_flFadeTime = gpGlobals->curtime + tf_hud_notification_duration.GetFloat(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CHudHealth::MsgFunc_Damage( bf_read &msg ) { int armor = msg.ReadByte(); // armor int damageTaken = msg.ReadByte(); // health long bitsDamage = msg.ReadLong(); // damage bits bitsDamage; // variable still sent but not used Vector vecFrom; vecFrom.x = msg.ReadBitCoord(); vecFrom.y = msg.ReadBitCoord(); vecFrom.z = msg.ReadBitCoord(); // Actually took damage? if ( damageTaken > 0 || armor > 0 ) { if ( damageTaken > 0 ) { // start the animation g_pClientMode->GetViewportAnimationController()->StartAnimationSequence("HealthDamageTaken"); } } }
//----------------------------------------------------------------------------- // Purpose: // Input : *pszName - // iSize - // *pbuf - //----------------------------------------------------------------------------- void CBaseHudChat::MsgFunc_SayText( bf_read &msg ) { char szString[256]; int client = msg.ReadByte(); msg.ReadString( szString, sizeof(szString) ); bool bWantsToChat = msg.ReadByte(); if ( bWantsToChat ) { // print raw chat text ChatPrintf( client, CHAT_FILTER_NONE, "%s", szString ); } else { // try to lookup translated string Printf( CHAT_FILTER_NONE, "%s", hudtextmessage->LookupString( szString ) ); } CLocalPlayerFilter filter; C_BaseEntity::EmitSound( filter, SOUND_FROM_LOCAL_PLAYER, "HudChat.Message" ); Msg( "%s", szString ); }
void MsgListenerWrapper::OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter) { cell_t res; size_t size = _FillInPlayers(g_MsgPlayers, pFilter); g_ReadBitBuf.StartReading(bf->GetBasePointer(), bf->GetNumBytesWritten()); m_Hook->PushCell(msg_id); m_Hook->PushCell(g_ReadBufHandle); m_Hook->PushArray(g_MsgPlayers, size); m_Hook->PushCell(size); m_Hook->PushCell(pFilter->IsReliable()); m_Hook->PushCell(pFilter->IsInitMessage()); m_Hook->Execute(&res); }
ResultType MsgListenerWrapper::InterceptUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter) { cell_t res = static_cast<cell_t>(Pl_Continue); size_t size = _FillInPlayers(g_MsgPlayers, pFilter); g_ReadBitBuf.StartReading(bf->GetBasePointer(), bf->GetNumBytesWritten()); m_Intercept->PushCell(msg_id); m_Intercept->PushCell(g_ReadBufHandle); m_Intercept->PushArray(g_MsgPlayers, size); m_Intercept->PushCell(size); m_Intercept->PushCell(pFilter->IsReliable()); m_Intercept->PushCell(pFilter->IsInitMessage()); m_Intercept->Execute(&res); return static_cast<ResultType>(res); }
void C_WalkerStrider::ReceiveMessage( int classID, bf_read &msg ) { if ( classID != GetClientClass()->m_ClassID ) { // message is for subclass BaseClass::ReceiveMessage( classID, msg ); return; } Vector vHitPos; msg.ReadBitVec3Coord( vHitPos ); CStriderBeamEffect eff; eff.m_vHitPos = vHitPos; eff.m_flStartTime = gpGlobals->curtime; m_BeamEffects.AddToTail( eff ); }
//----------------------------------------------------------------------------- // Purpose: Receive messages from the server // Input : classID - class to receive the message // &msg - message in question //----------------------------------------------------------------------------- void C_GrenadeHopwire::ReceiveMessage( int classID, bf_read &msg ) { if ( classID != GetClientClass()->m_ClassID ) { // Message is for subclass BaseClass::ReceiveMessage( classID, msg ); return; } int messageType = msg.ReadByte(); switch( messageType ) { case HOPWIRE_START_EXPLOSION: { m_ExplosionEffect.SetActive(); m_ExplosionEffect.SetOwner( this ); #ifdef C17 C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if (pPlayer) { //pPlayer->EmitSound( "Weapon_AR3.Geiger" ); pPlayer->EmitSound("Weapon_AR3.BlackHole"); } else { //No player? //Emit from the blackhole instead. //EmitSound( "Weapon_AR3.Geiger" ); EmitSound("Weapon_AR3.BlackHole"); } #endif m_ExplosionEffect.StartExplosion(); } break; case HOPWIRE_STOP_EXPLOSION: { m_ExplosionEffect.StopExplosion(); } break; default: break; } }
void CHudDHLRoundTime::MsgFunc_RoundEnd( bf_read &msg ) { bool bSuccess = false; byte val = msg.ReadByte(); if ( val == 255 ) //Arbitrary "round draw" value { wcsncpy( wszHudText, g_pVGuiLocalize->Find( "#DHL_ROUND_DRAW" ), 50 ); bSuccess = true; } else { if ( DHLRules()->IsTeamplay() ) { //Val indicates winning team # C_Team* pTeam = GetGlobalTeam( val ); if ( pTeam ) { wchar_t wszTeamName[32]; g_pVGuiLocalize->ConvertANSIToUnicode( pTeam->Get_Name(), wszTeamName, sizeof(wszTeamName) ); g_pVGuiLocalize->ConstructString( wszHudText, sizeof( wszHudText ), g_pVGuiLocalize->Find( "#DHL_ROUNDPLAY_WINNER" ), 1, wszTeamName ); bSuccess = true; } } else { //Val indicates winning player's index C_BasePlayer *pPlayer = UTIL_PlayerByIndex( val ); if ( pPlayer ) { wchar_t wszPlayerName[MAX_PLAYER_NAME_LENGTH]; g_pVGuiLocalize->ConvertANSIToUnicode( pPlayer->GetPlayerName(), wszPlayerName, sizeof(wszPlayerName) ); g_pVGuiLocalize->ConstructString( wszHudText, sizeof( wszHudText ), g_pVGuiLocalize->Find( "#DHL_LMS_WINNER" ), 1, wszPlayerName ); bSuccess = true; } } } static ConVarRef restartDelay( "dhl_roundrestartdelay" ); if ( bSuccess ) flHudTextTime = gpGlobals->curtime + restartDelay.GetFloat(); }