Raised This Month: $12 Target: $400
 3% 

Third Person View (actually)


Post New Thread Reply   
 
Thread Tools Display Modes
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-27-2022 , 22:50   Re: Third Person View (actually)
Reply With Quote #21

About the rendering, maybe FM_AddToFullPack is being used the wrong way by a plugin, that's why it renders the w_usp model (not sure). Because I've never seen the camera model in all the tests I've done.

Talking now about the "complicated" code, you made me curious to see how you managed to make the aim of the player be the same as the camera, you can share your code if you want to.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-27-2022 at 23:00.
EFFx is offline
georgik57
Veteran Member
Join Date: Oct 2008
Location: 🎧Music World
Old 03-27-2022 , 23:44   Re: Third Person View (actually)
Reply With Quote #22

I didn't refer to visually rendering it. Just rendering and eating up client performance even if invisible. That's why a small sprite file(which can also be precached as a model) is preferred over a 3d model.

A single entity is also a very good optimization since it's a very limited engine we're working with.

As for the complicated part what i meant is i don't see the point of messing with damage and/or tracelines(as far as i understood, that's how your plug-in works). Sorry if i misunderstood and ignore this part if so.
__________________

Last edited by georgik57; 03-27-2022 at 23:46.
georgik57 is offline
Send a message via MSN to georgik57 Send a message via Yahoo to georgik57 Send a message via Skype™ to georgik57
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-27-2022 , 23:52   Re: Third Person View (actually)
Reply With Quote #23

I had to mess with them trace attacks and damage. The main post explains why.

Is there actually a big difference of rendering just the w_usp model than the radio.spr? Both are small.

Also, I'm still curious about how would you use a single entity for 32 players at the same time, show us your work.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo
EFFx is offline
georgik57
Veteran Member
Join Date: Oct 2008
Location: 🎧Music World
Old 03-28-2022 , 14:02   Re: Third Person View (actually)
Reply With Quote #24

PHP Code:
/*
To do:

T = needs testing
X = done
- = cancelled

[X] custom camera entity instead of using engine's set_view native
v0.1.3
[X] distance the camera a bit towards the player from the entity it hits in traceline to avoid viewing through walls
[X] check if we can use the entity as a camera without it having a model(doesn't work properly without)
[X] fix camera model not being rendered as set on entity creation
v0.1.5
[T] improve origin calculation code
v0.1.6
[T] fix entities out of the real camera origin's pvs not drawing(fake the setview somehow?)
v0.1.7
[T] use an already existing and precached smallest possible file(sprite/model) for the camera model
[X] try to create the camera entity earlier and only set the rendering in plugin_cfg
[T] local variables instead of global since we don't need them anymore
[T] check if user is alive by native in plugin_unpause since while the plugin was paused caching of information was disabled
v0.2.1
[ ] Cvars for custom rendering
[ ] Cvar for custom required access
[ ] fix camera clipping through solids when nearly touching them
[ ] upright camera instead of 3rd person
[ ] (un/re)register the forwards on plugin (un)pause if needed
[ ] 
*/

// Modules
#include <amxmodx>
//#include <engine>
#include <fakemeta>
#include <hamsandwich>

// Plug-in APIs
//#include <cs_ham_bots_api>

// Stocks
#include <bitsums>
//#include <D7Debug>

new g_iIDFwFmPrecacheModelg_iMaxPlayersg_iBsAliveg_iBsThirdPerson,// g_iIDFwAddToFullPack,
//g_iRenderMode[33], g_iRenderFx[33], Float:g_fRenderAmount[33], Float:g_fRenderColor[33][3], Float:g_fTaskRenderCacheInterval = 0.1,
g_iIDEntityCamera, Array:g_iIDArrayModel;//, Float:g_fVecCameraOrigin[33][3], Float:g_fVecCameraAngles[33][3]

enum
{
    
CAMERA_NONE,
    
CAMERA_3RDPERSON,
    
CAMERA_UPLEFT,
    
CAMERA_TOPDOWN
}

set_view(const iID, const iType)
{
    if (!
iType)
        
engfunc(EngFunc_SetViewiIDiID)
    else
        
engfunc(EngFunc_SetViewiIDg_iIDEntityCamera)
}

public 
plugin_precache()
{
    
g_iIDArrayModel ArrayCreate(1281);
    
    
g_iIDFwFmPrecacheModel register_forward(FM_PrecacheModel"fwFmPrecacheModel"1);
}

public 
fwFmPrecacheModel(const szFile[])
{
    static 
iSizeFileMin;
    
    if (!
iSizeFileMin)
        
iSizeFileMin 999999999;
    
    static 
szNameMod[32], szTemp[128];
    
    if (!
szNameMod[0])
        
get_modname(szNameModcharsmax(szNameMod))
    
    
formatex(szTempcharsmax(szTemp), szFile)
    
    if (!
file_exists(szTemp))
    {
        
formatex(szTempcharsmax(szTemp), "%s/%s"szNameModszFile)
        
        if (!
file_exists(szTemp))
        {
            
formatex(szTempcharsmax(szTemp), "../valve/%s"szFile)
        }
    }
    
    new 
iSizeFile;
    
    if (!
file_exists(szTemp))
    {
        if (
iSizeFileMin == 999999999)
        {
            
//iSizeFileMin++;
            
            
iSizeFile iSizeFileMin 1;
        }
    }
    else
        
iSizeFile file_size(szTemp);
        
    if (
iSizeFileMin iSizeFile)
    {
        
iSizeFileMin iSizeFile;
        
        if (!
ArraySize(g_iIDArrayModel))
            
ArrayPushString(g_iIDArrayModelszFile)
        else
            
ArraySetString(g_iIDArrayModel0szFile)
        
        
//ftD7Log(_, _, "[fwFmPrecacheModel] szFile: ^"%s^". iSizeFileMin: %d. iSizeFile: %d.", szTemp, iSizeFileMin, iSizeFile)
    
}
}

public 
plugin_init()
{
    
register_plugin("D7 Camera""0.2.1""XunTric, D i 5 7 i n c T, schmurgel1983, Klippy")
    
    
RegisterHam(Ham_Spawn"player""fwHamSpawnPlayer"1)
    
RegisterHam(Ham_Killed"player""fwHamKilledPlayerPre")
    
//RegisterHamBots(Ham_Spawn, "fwHamSpawnPlayer", 1)
    //RegisterHamBots(Ham_Killed, "fwHamKilledPlayerPre")
    
    
register_forward(FM_SetView"fwFmSetView"true)
    
register_forward(FM_UpdateClientData"fwFmUpdateClientDataPre")
    
    
//g_iIDFwAddToFullPack = register_forward(FM_AddToFullPack, "fwFmAddToFullPack", 1);
    
    
g_iMaxPlayers get_maxplayers();
    
    
unregister_forward(FM_PrecacheModelg_iIDFwFmPrecacheModel1)
    
    
g_iIDEntityCamera engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"trigger_camera"));
    
engfunc(EngFunc_SetOriging_iIDEntityCameraFloat:{ 0.00.00.0 })
    
engfunc(EngFunc_SetSizeg_iIDEntityCameraFloat:{ -12.5, -12.5, -12.5 }, Float:{ 12.512.512.5 })
    
    new 
szModel[128];
    
ArrayGetString(g_iIDArrayModel0szModelcharsmax(szModel))
    
ArrayDestroy(g_iIDArrayModel)
    
    
engfunc(EngFunc_SetModelg_iIDEntityCameraszModel)
    
    
//dllfunc(DLLFunc_Spawn, g_iIDEntityCamera)
    
    
set_pev(g_iIDEntityCamerapev_classname"D7Camera")
    
set_pev(g_iIDEntityCamerapev_solidSOLID_TRIGGER)
    
    new const 
g_szCommands[][] =
    {
        
"say /camera",
        
"say_team /camera",
        
"say /cam",
        
"say_team /cam",
        
"say camera",
        
"say_team camera",
        
"say cam",
        
"say_team cam",/*
        "say 1st",
        "say_team 1st",
        "say 3rd",
        "say_team 3rd",*/
        
"camera",
        
"cam"
    
}
    
    for (new 
iIDiID sizeof g_szCommandsiID++)
        
register_clcmd(g_szCommands[iID], "fwClCmdCamera")
}

public 
plugin_cfg()
{
    
set_pev(g_iIDEntityCamerapev_rendermodekRenderTransTexture)
    
//set_pev(g_iIDEntityCamera, pev_renderfx, kRenderFxNone)
    
set_pev(g_iIDEntityCamerapev_renderamt0.0)
}

ftFmVelocityByAim(const iID, const Float:fAmountFloat:fVecTemp[3], const iDirection ANGLEVECTOR_FORWARD)
{
    
pev(iIDpev_v_anglefVecTemp)
    
angle_vector(fVecTempiDirectionfVecTemp)
    
    
fVecTemp[0] *= fAmount;
    
fVecTemp[1] *= fAmount;
    
fVecTemp[2] *= fAmount;
}

public 
fwFmUpdateClientDataPre(const iID)
{
    if (!
bitsum_get(g_iBsThirdPersoniID) || !bitsum_get(g_iBsAliveiID))
        return;
    
    static 
Float:fVecTemp[3], Float:fVecTemp2[3], Float:fVecTemp3[3];
    
    
pev(iIDpev_originfVecTemp)
    
pev(iIDpev_view_ofsfVecTemp2)
    
    
fVecTemp[0] += fVecTemp2[0];
    
fVecTemp[1] += fVecTemp2[1];
    
fVecTemp[2] += fVecTemp2[2];
    
    
fVecTemp2 fVecTemp;
    
    
ftFmVelocityByAim(iID, -100.0fVecTemp3)
    
    
fVecTemp2[0] += fVecTemp3[0];
    
fVecTemp2[1] += fVecTemp3[1];
    
fVecTemp2[2] += fVecTemp3[2];
    
    
fVecTemp3 fVecTemp2;
    
    new 
iIDTraceHandle create_tr2();
    
    
engfunc(EngFunc_TraceLinefVecTempfVecTemp2DONT_IGNORE_MONSTERSiIDiIDTraceHandle)
    
get_tr2(iIDTraceHandleTR_vecEndPosfVecTemp2)
    
    
free_tr2(iIDTraceHandle)
    
    if (
fVecTemp2[0] != fVecTemp3[0]
    || 
fVecTemp2[1] != fVecTemp3[1]
    || 
fVecTemp2[2] != fVecTemp3[2])
    {
        
fVecTemp3[0] = get_distance_f(fVecTempfVecTemp2) - 25.0;
        
        
ftFmVelocityByAim(iID, -fVecTemp3[0], fVecTemp3)//, floatround_ceil
        
        
fVecTemp[0] += fVecTemp3[0];
        
fVecTemp[1] += fVecTemp3[1];
        
fVecTemp[2] += fVecTemp3[2];
    }
    else
    {
        
fVecTemp fVecTemp2;
    }
    
    
pev(iIDpev_v_anglefVecTemp2)
    
    
engfunc(EngFunc_SetOriging_iIDEntityCamerafVecTemp)
    
    
//fVecTemp2[0] *= -1;
    
    
set_pev(g_iIDEntityCamerapev_anglesfVecTemp2)
}

public 
fwFmSetView(const iID, const iIDEnt)
{
    if (
iID != iIDEnt || !bitsum_get(g_iBsThirdPersoniID) || !bitsum_get(g_iBsAliveiID))
        return;
    
    
set_view(iIDCAMERA_3RDPERSON)
    
    
//ftD7Log(_, _, "[fwFmSetView] iID: %d. iIDEnt: %d.", iID, iIDEnt)
}

public 
plugin_pause()
{
    
//unregister_forward(FM_AddToFullPack, g_iIDFwAddToFullPack, 1)
    
    
for (new iID 1iID <= g_iMaxPlayersiID++)
        if (
bitsum_get(g_iBsThirdPersoniID) && bitsum_get(g_iBsAliveiID))
        {
            
//remove_task(iID)
            
            
set_view(iIDCAMERA_NONE)
            
            
//ftD7Log(_, _, "[plugin_pause] iID: %d. Camera: CAMERA_NONE.", iID)
        
}
}

public 
plugin_unpause()
{
    
//g_iIDFwAddToFullPack = register_forward(FM_AddToFullPack, "fwFmAddToFullPack", 1);
    
    
for (new iID 1iID <= g_iMaxPlayersiID++)
        if (
bitsum_get(g_iBsThirdPersoniID))
        {
            if (!
is_user_alive(iID))
            {
                
bitsum_del(g_iBsAliveiID)
                
                continue;
            }
            
            
bitsum_add(g_iBsAliveiID)
            
            
//ftTaskRenderCache(iID)
            
            //set_task(g_fTaskRenderCacheInterval, "ftTaskRenderCache", iID, _, _, "b")
            
            
set_view(iIDCAMERA_3RDPERSON)
            
            
//ftD7Log(_, _, "[plugin_unpause] iID: %d. Camera: CAMERA_3RDPERSON.", iID)
        
}
}
/*
public client_infochanged(iID)
{
    if (!bitsum_get(g_iBsThirdPerson, iID) || get_user_flags(iID) & ADMIN_LEVEL_B)
        return;
    
    remove_task(iID)
    
    bitsum_del(g_iBsThirdPerson, iID)
    
    set_view(iID, CAMERA_NONE)
    
    colored_chat(iID, _, "^3The 3rd person camera is for^4 full VIPs^3 only^1!")
}

public client_authorized(iID)
{
    if (is_user_bot(iID))
        bitsum_add(g_iBsThirdPerson, iID)
}*/

public client_disconnect(iID)
{
    
//remove_task(iID)
    
    
bitsum_del(g_iBsAliveiID)
    
bitsum_del(g_iBsThirdPersoniID)
}

public 
fwHamSpawnPlayer(const iID)
{
    if (!
is_user_alive(iID))
        return;
    
    
bitsum_add(g_iBsAliveiID)
    
    if (
bitsum_get(g_iBsThirdPersoniID))
    {
        
//ftTaskRenderCache(iID)
        
        //set_task(g_fTaskRenderCacheInterval, "ftTaskRenderCache", iID, _, _, "b")
        
        
set_view(iIDCAMERA_3RDPERSON)
        
        
//ftD7Log(_, _, "[fwHamSpawnPlayer] iID: %d. Camera: CAMERA_3RDPERSON.", iID)
    
}
}

public 
fwHamKilledPlayerPre(const iID)
{
    
bitsum_del(g_iBsAliveiID)
    
    if (
bitsum_get(g_iBsThirdPersoniID))
    {
        
//remove_task(iID)
        
        
set_view(iIDCAMERA_NONE)
        
        
//ftD7Log(_, _, "[fwHamKilledPlayerPre] iID: %d. Camera: CAMERA_NONE.", iID)
    
}
}

public 
fwClCmdCamera(const iID)
{
/*    if (!(get_user_flags(iID) & ADMIN_LEVEL_B))
    {
        colored_chat(iID, _, "^3The 3rd person camera is for^4 full VIPs^3 only^1!")
        
        return PLUGIN_CONTINUE;//PLUGIN_HANDLED_MAIN
    }
    */
    
if (!bitsum_get(g_iBsThirdPersoniID))
    {
/*        if (!bitsum_get(g_iBsAlive, iID))
        {
            colored_chat(iID, _, "^3You must be alive to use the 3rd person camera^1!")
            
            return PLUGIN_CONTINUE;
        }
        */
        
bitsum_add(g_iBsThirdPersoniID)
        
        if (
bitsum_get(g_iBsAliveiID))
        {
            
//ftTaskRenderCache(iID)
            
            //set_task(g_fTaskRenderCacheInterval, "ftTaskRenderCache", iID, _, _, "b")
            
            
set_view(iIDCAMERA_3RDPERSON)
            
            
//ftD7Log(_, _, "[fwClCmdCamera] iID: %d. Camera: CAMERA_3RDPERSON.", iID)
        
}
        
        
colored_chat(iID_"^4Camera switched successfully to 3rd person^1!")
    }
    else
    {
        
bitsum_del(g_iBsThirdPersoniID)
        
        if (
bitsum_get(g_iBsAliveiID))
        {
            
//remove_task(iID)
            
            
set_view(iIDCAMERA_NONE)
            
            
//ftD7Log(_, _, "[fwClCmdCamera] iID: %d. Camera: CAMERA_NONE.", iID)
        
}
        
        
colored_chat(iID_"^4Camera switched successfully to 1st person^1!")
    }
    
    return 
PLUGIN_HANDLED_MAIN;
}
/*
public ftTaskRenderCache(const iID)
{
    g_iRenderMode[iID] = pev(iID, pev_rendermode);
    g_iRenderFx[iID] = pev(iID, pev_renderfx);
    
    pev(iID, pev_renderamt, g_fRenderAmount[iID])
    pev(iID, pev_rendercolor, g_fRenderColor[iID])
    
    //ftD7Log(_, iID, "")
    //ftD7Log(_, iID, "[ftTaskRenderCache] iID: %d. g_iRenderMode: %d. g_iRenderFx: %d. g_fRenderAmount: %.1f. g_fRenderColor: %.1f %.1f %.1f.",
    //iID, g_iRenderMode[iID], g_iRenderFx[iID], g_fRenderAmount[iID], g_fRenderColor[iID][0], g_fRenderColor[iID][1], g_fRenderColor[iID][2])
}*/
/*
public fwFmAddToFullPack(const iIDESHandle, const e, const iIDEnt, const iIDHost, const iBsFlags, const player, const pSet)
{
    if (iIDEnt != g_iIDEntityCamera)
        return;
    
    //set_es(iIDESHandle, ES_RenderMode, kRenderTransTexture)
    //set_es(iIDESHandle, ES_RenderAmt, 0.0)
    
    if (!bitsum_get(g_iBsThirdPerson, iIDHost)
    || !bitsum_get(g_iBsAlive, iIDHost))
        return;
    
    //set_es(iIDESHandle, ES_Origin, g_fVecCameraOrigin[iIDHost])
    //set_es(iIDESHandle, ES_Angles, g_fVecCameraAngles[iIDHost])
}

public fwFmAddToFullPack(es_handle, e, ent, host, flags, player, pSet)
{
    if (!player || host != ent || !bitsum_get(g_iBsThirdPerson, host) || !bitsum_get(g_iBsAlive, host))
        return;
    
    //ftD7Log(_, host, "[fwFmAddToFullPack] hst: %d. g_iRenderMode: %d. g_iRenderFx: %d. g_fRenderAmount: %.1f. g_fRenderColor: %.1f %.1f %.1f.",
    //host, g_iRenderMode[host], g_iRenderFx[host], g_fRenderAmount[host], g_fRenderColor[host][0], g_fRenderColor[host][1], g_fRenderColor[host][2])
    
    set_es(es_handle, ES_RenderMode, g_iRenderMode[host]) //kRenderTransAdd so that the player can see his model in the dark
    set_es(es_handle, ES_RenderFx, g_iRenderFx[host])
    set_es(es_handle, ES_RenderAmt, g_fRenderAmount[host]) //157.0 brightness amount for TransAlpha and opacity amount for kRenderTransTexture
    set_es(es_handle, ES_RenderColor, g_fRenderColor[host])
}*/

stock colored_chat(const iTarget, const iSender 0, const szMessage[], any:...)
{
    if (
iTarget && !is_user_connected(iTarget))
        return;
    
    static 
szBuffer[192];
    
vformat(szBuffercharsmax(szBuffer), szMessage4)
    
    static const 
D7_CHAT_TAG[] = "^1[^4D7^1] ";
    
format(szBuffercharsmax(szBuffer), "%s%s"D7_CHAT_TAGszBuffer)
    
    static 
msgSayText;
    if (!
msgSayText)
        
msgSayText get_user_msgid("SayText");
    
    if (
iTarget)
        
message_begin(MSG_ONEmsgSayText_iTarget)
    else
        
message_begin(MSG_ALLmsgSayText)
    
    
write_byte(!iSender iTarget iSender)
    
write_string(szBuffer)
    
message_end()
}
/*
// Use post to get "after" u zoomed?
public fwHamWeaponSecondaryAttackPost( i_IDEnt )
{
    if ( !is_valid_pev( i_IDEnt ) )
    {
        return HAM_IGNORED;
    }

    new i_ID = get_pdata_cbase( i_IDEnt, m_pPlayer, m_Item );
    
    if ( !is_user_alive( i_ID ) || !bitsum_get( g_iBsThirdPerson, i_ID ) )
    {
        return HAM_IGNORED;
    }
    
    new i_Zoom = cs_get_user_zoom( i_ID );

    // Attach cam to player
    if ( i_Zoom >= CS_SET_FIRST_ZOOM )
    {
        engfunc( EngFunc_SetView, i_ID, i_ID )
    }
    // Attach camera back to entity
    else
    {
        engfunc( EngFunc_SetView, i_ID, g_iIDEntityCamera )
    }
    
    return HAM_IGNORED;
}

public fwHamWeaponHolsterPre( i_IDEnt )
{
    if ( !is_valid_pev( i_IDEnt ) )
    {
        return HAM_IGNORED;
    }

    new i_ID = get_pdata_cbase( i_IDEnt, m_pPlayer, m_Item );
    
    if ( !is_user_alive( i_ID ) || !bitsum_get( g_iBsThirdPerson, i_ID ) )
    {
        return HAM_IGNORED;
    }

    new i_Zoom = cs_get_user_zoom( i_ID );
    
    // Attach cam to player
    if ( i_Zoom >= CS_SET_FIRST_ZOOM )
    {
        engfunc( EngFunc_SetView, i_ID, g_iIDEntityCamera )
    }
    // Attach camera back to entity
    //else
    //{
    //    engfunc( EngFunc_SetView, i_ID, i_ID )
    //}
    
    return HAM_IGNORED;
}
*/ 
Attached Files
File Type: sma Get Plugin or Get Source (D7Camera.sma - 130 views - 13.8 KB)
__________________
georgik57 is offline
Send a message via MSN to georgik57 Send a message via Yahoo to georgik57 Send a message via Skype™ to georgik57
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-28-2022 , 18:31   Re: Third Person View (actually)
Reply With Quote #25

Your camera do not support custom positons of the camera like mine, thats the main difference I've found, explains why I had to mess with the traces and damage.
Hard to understand the code, but I'll definetely consider your suggestions, the camera model is already radio.spr from now on. The only thing I should work right now is the single entity for all players, will do that later. Also, the pause/unpause support is a good idea to consider as well.

I'm still pretty confused how would this code behave for all players, wouldn't change the origin of the entity to a LOT of places a LOT of times? Poor entity...


For now, I've added some details, currently as v1.3 version:

- Fixed crash when disconnecting or dying while using the camera.
- Fixed both points from player's view perspective and the camera's perspective. So no blind shots are taken.
- Fixed the bot support.
- Fixed an issue that randomly happens with the Kill feed being displayed twice.

- Now the plugin uses the Ham_TakeDamage to take the damage from the user instead of
pev_takedamage, so third-party plugins doesn't gets affected by the plugin.
- Now the bullets takes damage from breakable entities too.
- Now both pause/unpause commands are supported by the plugin.
- Now the trigger_camera monitor from cs_assault is also supported too.

- Changed the camera model.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-28-2022 at 23:34.
EFFx is offline
georgik57
Veteran Member
Join Date: Oct 2008
Location: 🎧Music World
Old 03-28-2022 , 20:58   Re: Third Person View (actually)
Reply With Quote #26

Also, don't forget about the code where the player actually uses a camera(like on cs_assault) and the view is set back to 3rd person when he stops using it.

Will try to take my own go at it with custom positioning. The code i gave you is at least 5 years old.
__________________
georgik57 is offline
Send a message via MSN to georgik57 Send a message via Yahoo to georgik57 Send a message via Skype™ to georgik57
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-28-2022 , 22:21   Re: Third Person View (actually)
Reply With Quote #27

Quote:
Originally Posted by georgik57 View Post
Also, don't forget about the code where the player actually uses a camera(like on cs_assault) and the view is set back to 3rd person when he stops using it.
Nice observation.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-28-2022 at 22:36.
EFFx is offline
MayroN
Senior Member
Join Date: Aug 2017
Location: Kyiv
Old 03-29-2022 , 11:14   Re: Third Person View (actually)
Reply With Quote #28

func_breakable
Here is an important point

If we can destroy destructible objects on the map in camera mode, then we need to close the bug of destroying objects on the bombplace A / B in camera mode

After all, we can't unarm them in first-person mode.

If you don't understand here's a video

https://www.youtube.com/watch?v=9m6OfqGXrEs
__________________
МультиМод CS 83.222.97.124:27015

MayroN is offline
Send a message via ICQ to MayroN Send a message via Skype™ to MayroN
EFFx
Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
Old 03-29-2022 , 19:19   Re: Third Person View (actually)
Reply With Quote #29

Oooh, thank you noticing that. Download the plugin again from the main post and keep me updated if it still happens ^^.
__________________
• Ranking System • AutoMix 5vs5 System
• Web Ban System • Plugins for free

____________________________________________
For private works:
• Discord: EFFEXo#8850 • Steam: EFFEXo

Last edited by EFFx; 03-29-2022 at 19:37.
EFFx is offline
MayroN
Senior Member
Join Date: Aug 2017
Location: Kyiv
Old 04-05-2022 , 21:54   Re: Third Person View (actually)
Reply With Quote #30

I found another bug in the Camera Trigger mode - on the same assault.
When you look at the monitor and at that moment you are killed or a new round has begun, you get porridge)))

You need to reset this
PHP Code:
g_iUserCamera[id] = 
in the same kill and spawn preferably

And it seems that the hostages are still in trouble - it seems like there is damage when shooting at them, but for some reason TE_SPARKS rained down and there was no blood

Look there...

P.S. Why didn't you PM me?)))
I was waiting
__________________
МультиМод CS 83.222.97.124:27015

MayroN is offline
Send a message via ICQ to MayroN Send a message via Skype™ to MayroN
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:37.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode