|
Senior Member
Join Date: Oct 2009
Location: Budapest, Hungary
|

02-07-2011
, 12:40
Re: "Drawing" on the HUD
|
#7
|
Allright, implemented the code, it's working so far, time to edit it.
PHP Code:
//-> https://forums.alliedmods.net/showthread.php?t=65427
#pragma semicolon 1
#include <amxmodx> #include <bit> #include <fakemeta>
new const CLASSNAME_CAMERA[] = "player_camera"; #define MODEL_CAM "models/can.mdl"
new in_magic; new Float:premagic_angles[32][3];
public plugin_init() { register_plugin("Fix camera angle test", "0.0", "Lulu the hero"); register_concmd("+magic", "cmd_magic_on"); register_concmd("-magic", "cmd_magic_off"); register_event("DeathMsg", "event_death", "a"); register_forward(FM_Think, "forward_think"); }
public plugin_precache() { precache_model(MODEL_CAM); }
public cmd_magic_on(id) { if(!is_player_flag_set(in_magic, id) && is_user_alive(id)) { pev(id, pev_v_angle, premagic_angles[id-1]); create_camera(id); set_player_flag(in_magic, id); } }
public cmd_magic_off(id) { if(is_player_flag_set(in_magic, id)) { clear_player_flag(in_magic, id); } }
public event_death() { new victim = read_data(2); if(is_player_flag_set(in_magic, victim)) { clear_player_flag(in_magic, victim); } }
public forward_think(ent) { static classname[32]; pev(ent, pev_classname, classname, sizeof classname - 1); if(!equal(classname, CLASSNAME_CAMERA)) return FMRES_IGNORED;
static owner; owner = pev(ent, pev_owner); if(!is_player_flag_set(in_magic, owner)) { engfunc(EngFunc_SetView, owner, owner); engfunc(EngFunc_RemoveEntity, ent); return FMRES_IGNORED; } static Float:origin[3], Float:angle[3]; pev(owner, pev_origin, origin); //pev(owner, pev_v_angle, angle); angle[0] = premagic_angles[owner-1][0]; angle[1] = premagic_angles[owner-1][1]; angle[2] = premagic_angles[owner-1][2]; static Float:back[3]; angle_vector(angle, ANGLEVECTOR_FORWARD, back); origin[2] += 20.0; origin[0] += ( -back[0] * 150.0 ); origin[1] += ( -back[1] * 150.0 ); origin[2] += ( -back[2] * 150.0 ); engfunc(EngFunc_SetOrigin, ent, origin); set_pev(ent, pev_angles, angle); set_pev(ent, pev_nextthink, get_gametime()); return FMRES_HANDLED; }
stock create_camera(id) { static const classname[] = "classname"; new ent; while((ent = engfunc( EngFunc_FindEntityByString, ent, classname, CLASSNAME_CAMERA)) != 0) { if(pev(ent, pev_owner) == id) { engfunc(EngFunc_SetView, id, ent); return; } } static const info_target[] = "info_target"; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, info_target)); if(!ent) return; static const cam_model[] = MODEL_CAM; set_pev(ent, pev_classname, CLASSNAME_CAMERA); engfunc(EngFunc_SetModel, ent, cam_model); set_pev(ent, pev_solid, SOLID_TRIGGER); set_pev(ent, pev_movetype, MOVETYPE_FLY); set_pev(ent, pev_owner, id); set_pev(ent, pev_rendermode, kRenderTransTexture); set_pev(ent, pev_renderamt, 0.0); engfunc(EngFunc_SetView, id, ent); set_pev(ent, pev_nextthink, get_gametime()); }
Edit: I've changed the camera model to a halflife model, so that it can be applied to mods other, than cs too.
Last edited by Lulu the hero; 02-10-2011 at 20:26.
|
|