| caffeine |
01-12-2009 13:23 |
View Test, some questions.
1 Attachment(s)
this is just an idea. i dont like to test it with heavy code. :D
useage:
"say /1" - Start record
"say /2" - Stop record
"say /view" - View record
PHP Code:
// VIEW TEST // thx many ppl help me to achieve this effect @ alliedmods & xtreme-jumps & kzcn(ccser,simen,97club,xlm,kzfun...) #include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #pragma semicolon 1 new bool: timer_started[33]; // this is just a test value. in kz plugin, it means if have pressed Start button new bool: isView[33]; new Num[33]; // current frames new AllNum; // record frames new Float:g_StartTime[33]; new Array: curPos[33]; new Array: curAngle[33]; public plugin_init() { register_forward( FM_PlayerPreThink, "PreThink" ); for( new i=1; i<33; i++ ) { curPos[i] = ArrayCreate(3,32); curAngle[i] = ArrayCreate(3,32); } register_clcmd( "say /1", "one" ); // Start record register_clcmd( "say /2", "two" ); // End record register_clcmd( "say /view", "view" ); // View record } public client_disconnect(id) { timer_started[id] = false; isView[id] = false; } public one(id) { Num[id] = 0; ArrayClear( curPos[id] ); ArrayClear( curAngle[id] ); g_StartTime[id] = get_gametime(); timer_started[id] = true; client_print( id, print_chat, "Start!" ); return PLUGIN_HANDLED; } public two(id) { timer_started[id] = false; AllNum = Num[id]; client_print( id, print_chat, "gTime: %.3f | arrSize: %d | AllNum: %d", get_gametime() - g_StartTime[id], ArraySize( curPos[id] ), AllNum ); client_print( id, print_chat, "Stop!" ); return PLUGIN_HANDLED; } public PreThink(id) { if( timer_started[id] ) { static vOrigin[3], vAngle[3]; pev( id,pev_origin, vOrigin ); pev( id,pev_v_angle, vAngle ); ArrayPushArray( curPos[id], vOrigin ); ArrayPushArray( curAngle[id], vAngle ); Num[id]++; } else if( isView[id] ) { if( Num[id] < AllNum ) { static vOriginView[3], vAngleView[3]; ArrayGetArray( curPos[id], Num[id], vOriginView ); ArrayGetArray( curAngle[id], Num[id], vAngleView ); set_pev( id, pev_origin, vOriginView ); set_pev( id, pev_angles, vAngleView ); // HERE if using "set_pev(..,pev_v_angle,..)" cant work, dont know why? i've spent lots of time on this fucked angle shit.. set_pev( id, pev_fixangle, 1 ); Num[id]++; } else { view(id); } } } public view(id) { if( !is_user_alive(id) ) ExecuteHam( Ham_CS_RoundRespawn, id ); if( isView[id] ) { isView[id] = false; ExecuteHam( Ham_CS_RoundRespawn, id ); client_print( id, print_chat, "Exit !!" ); } else if( AllNum > 0 ) { isView[id] = true; timer_started[id] = false; Num[id] = 0; // copy someone's kz plugin code set_pev( id, pev_movetype, MOVETYPE_NOCLIP ); set_pev( id, pev_solid, SOLID_NOT ); set_pev( id, pev_effects, EF_NODRAW ); set_pev( id, pev_deadflag, DEAD_RESPAWNABLE ); // DEAD -> DEAD_RESPAWNABLE (just modify this :D) set_pev( id, pev_takedamage, DAMAGE_NO ); fm_set_entity_flags( id, FL_FROZEN, 0 ); client_print( id, print_chat, "Viewing ...." ); } else client_print( id, print_chat, "There's no record!" ); return PLUGIN_HANDLED; } public Event_GameWillRestartIn() { for( new id=1; id<33; id++ ) { timer_started[id] = false; isView[id] = false; } }
question:
1. if i use this on a cs server, it will take much cpu/memory or lag ?
2. if ArraySize = 360000 (1 hour) / or even more arrays, how about question 1 ? or even crash ?
|