PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <engine>
#include <csx>
#define PLUGIN "3RD Person Bomb Planting"
#define VERSION "1.2"
#define AUTHOR "sLiCk"
#define _Is(%1,%2) (%1&1<<%2)
#define _Set(%1,%2) %1|=1<<%2
#define _UnSet(%1,%2) %1&=~(1<<%2)
new _planting, _human
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "Event_DeathMsg", "a")
register_event("BarTime", "Event_BarTime", "be", "1=0")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
}
public plugin_precache()
{
precache_model("models/rpgrocket.mdl")
}
public Event_BarTime(id)
{
if(!_Is(_planting, id))
return
set_view(id, CAMERA_NONE)
_UnSet(_planting, id)
}
public Event_DeathMsg()
{
new iVictim = read_data(2)
if(!_Is(_planting, iVictim))
return
set_view(iVictim, CAMERA_NONE)
_UnSet(_planting, iVictim)
}
public Event_CurWeapon(id)
{
if(!_Is(_planting, id))
return
if(read_data(2) == CSW_C4)
return
set_view(id, CAMERA_NONE)
_UnSet(_planting, id)
}
public bomb_planting(id)
{
if(!_Is(_human, id))
return
set_view(id, CAMERA_3RDPERSON)
_Set(_planting, id)
}
public bomb_planted(id)
{
if(!_Is(_planting, id))
return
set_view(id, CAMERA_NONE)
_UnSet(_planting, id)
}
public client_putinserver(id)
{
if(is_user_bot(id))
return
_Set(_human, id)
}
public client_disconnect(id)
{
_UnSet(_human, id)
_UnSet(_planting, id)
}
Thats my code. I wan't it to be so when your defusing the bomb it will go into 3rd person but if you stop defusing it will go back to normal. Thanks
Either post the php for detecting or explain to me because im just learning scripting D:
EDIT: New request for it Doesn't need to be added but would like it but its fine
I've never used this method. The method is to make the player solid. Can anybody help me out and put it in the code for me and then post it in php?
PHP Code:
//Call this wherever you want.
Create_PlayerCamera( id )
{
new entid;
while( (entid = find_ent_by_class(entid, "PlayerCamera")) != 0)
if( entity_get_edict( entid, EV_ENT_owner ) == id )
{
attach_view( id, entid );
return;
}
entid = create_entity("info_target");
if(entid)
{
entity_set_string(entid,EV_SZ_classname,"PlayerCamera");
entity_set_model(entid,"models/w_usp.mdl");
entity_set_int( entid, EV_INT_solid, SOLID_TRIGGER);
entity_set_int( entid, EV_INT_movetype, MOVETYPE_FLY );
//Set owner
entity_set_edict( entid, EV_ENT_owner, id );
//Don't draw
entity_set_int( entid, EV_INT_rendermode, kRenderTransTexture);
entity_set_float( entid, EV_FL_renderamt, 0.0);
//Attach our view to this entity.
attach_view( id, entid );
//Think!
entity_set_float( entid, EV_FL_nextthink, get_gametime() );
}
}
//Requires registering a Think method for "PlayerCamera" entity.
// OR you could save the camera's entity ID in the function above
// and call this in client_PostThink or wherever that gets called alot.
public Think_PlayerCamera( entid )
{
new id = entity_get_edict( entid, EV_ENT_owner );
//Kill our entity if we hit USE key
new buttons = entity_get_int( id, EV_INT_button );
if(buttons & IN_USE)
{
attach_view( id, id );
remove_entity(entid);
return;
}
new Float:origin[3], Float:angle[3], Float:vBack[3];
entity_get_vector( id, EV_VEC_origin, origin );
entity_get_vector( id, EV_VEC_v_angle, angle );
angle_vector( angle, ANGLEVECTOR_FORWARD, vBack );
origin[2] += 20.0; //So we're closer to the eyes.
//Move back to see ourself (150 units)
origin[0] += (-vBack[0] * 150.0);
origin[1] += (-vBack[1] * 150.0);
origin[2] += (-vBack[2] * 150.0);
entity_set_origin( entid, origin );
entity_set_vector( entid, EV_VEC_angles, angle );
//For thinking only
entity_set_float( entid, EV_FL_nextthink, get_gametime() );
}
code above. any help either detect +use for defusing or solid. whatever is easier for you.
__________________