#include <amxmodx>
#include <fakemeta>
new const g_sCamclass[] = "PlayerCamera";
new iEnt;
public plugin_init()
{
register_clcmd( "say /cam", "cmdCam" );
register_clcmd( "say /camera", "cmdCam" );
register_forward( FM_Think, "Think_PlayerCamera" );
}
public cmdCam(id){
new Menu = menu_create("\yVyber si kameru", "Cam_Menu_Handler")
menu_additem(Menu, "\w3rd Person", "1", 0)
menu_additem(Menu, "\wNormall", "2", 0)
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, Menu, 0)
}
public Cam_Menu_Handler(id, Menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(Menu)
return PLUGIN_HANDLED
}
new Data[6];
new Access;
new Callback;
new Name[64];
menu_item_getinfo(Menu, item, Access, Data, 5, Name, 63, Callback)
new Key = str_to_num(Data);
switch (Key)
{
case 1:
{
Create_Cam(id)
}
case 2:
{
Disable_Cam(id)
}
}
return PLUGIN_HANDLED
}
Create_Cam(id){
static const sClassname[] = "classname";
while( ( iEnt = engfunc( EngFunc_FindEntityByString, iEnt, sClassname, g_sCamclass ) ) != 0 )
{
if( pev( iEnt, pev_owner) == id )
{
engfunc( EngFunc_SetView, id, iEnt );
return;
}
}
static const sInfo_target[] = "info_target";
iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, sInfo_target ) )
if( !iEnt )
return;
static const sCam_model[] = "models/w_usp.mdl";
set_pev( iEnt, pev_classname, g_sCamclass );
engfunc( EngFunc_SetModel, iEnt, sCam_model );
set_pev( iEnt, pev_solid, SOLID_TRIGGER );
set_pev( iEnt, pev_movetype, MOVETYPE_FLY );
set_pev( iEnt, pev_owner, id );
set_pev( iEnt, pev_rendermode, kRenderTransTexture );
set_pev( iEnt, pev_renderamt, 0.0 );
engfunc( EngFunc_SetView, id, iEnt );
set_pev( iEnt, pev_nextthink, get_gametime() );
}
public Think_PlayerCamera( iEnt )
{
static sClassname[32];
pev( iEnt, pev_classname, sClassname, sizeof sClassname - 1 );
if( !equal( sClassname, g_sCamclass ) )
return FMRES_IGNORED;
static iOwner;
iOwner = pev( iEnt, pev_owner );
if( !is_user_alive( iOwner ) )
return FMRES_IGNORED;
static Float:fOrigin[3], Float:fAngle[3];
pev( iOwner, pev_origin, fOrigin );
pev( iOwner, pev_v_angle, fAngle );
static Float:fVBack[3];
angle_vector( fAngle, ANGLEVECTOR_FORWARD, fVBack );
fOrigin[2] += 20.0;
fOrigin[0] += ( -fVBack[0] * 150.0 );
fOrigin[1] += ( -fVBack[1] * 150.0 );
fOrigin[2] += ( -fVBack[2] * 150.0 );
engfunc( EngFunc_SetOrigin, iEnt, fOrigin );
set_pev( iEnt, pev_angles, fAngle );
set_pev( iEnt, pev_nextthink, get_gametime() );
return FMRES_HANDLED;
}
Disable_Cam(id)
{
engfunc( EngFunc_SetView, id, id);
engfunc( EngFunc_RemoveEntity, iEnt );
return FMRES_IGNORED;
}