Member
|
12-24-2016
, 15:11
set_task speed 250.0
|
#1
|
Hello, I am editing a Freezemine, but when the fm is put on the ground/wall, my speed is set to 0, so i have to switch to a another weapon to be able to move, so i think i have to do a set_task setting speed to 250.0, but i dont know how and where to put it,
code attached
PHP Code:
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <xs>
/* ===========================================================================??==================================== * [ Enums & Macros ] * ===========================================================================??====================================*/
#define MarkPlayerBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) ) #define ClearPlayerBit(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) ) #define IsPlayerBit(%1,%2) ( %1 & ( 1 << ( %2 & 31 ) ) )
#define IsPlayerValid(%1) ( 1 <= %1 <= 32 )
#define TASK_LASER 1111 #define ID_TASK ( iTask - TASK_LASER )
enum _:LASER_VECTOR { Float:LV_PLAYER, Float:LV_ANGLES, Float:LV_END, Float:LV_NORMAL, }
enum _:LASER_PROPS { LASER_OWNER = pev_iuser1, LASER_BEAM = pev_iuser2, LASER_TEAM = pev_iuser3, LASER_STEP = pev_iuser4, LASER_END = pev_vuser1, LASER_ANGLES = pev_angles, LASER_ORIGIN = pev_origin, LASER_POWERUP = 0, LASER_ACTIVATED = 1, LASER_EXPLODE = 2, LASER_BUY = 3, LASER_CREATE = 4, LASER_REMOVE = 5 }
enum _:SERVER_DATA { LASER_ABLE, PLAYER_FROZEN, PLAYER_ALIVE, LASER_ENTITY, BEAM_ENTITY, BEAM_MODELINDEX, SPRITE_EXPLOSION, BAR_MSG, SAY_TEXT }
enum _:USER_DATA { LASER_MAXIMUM, LASER_AMOUNT, LASER_DEPLOYED }
enum _:SERVER_RES { LASER_CLASSNAME, RES_MODEL, RES_BUY, RES_DIED, RES_POWERUP, RES_DEPLOY, RES_ACTIVATED, RES_GLASS1, RES_GLASS2, RES_GLASSGIBS, RES_EXPLODE, RES_BEAM }
new g_ServerData[ SERVER_DATA ],g_UserData[ 33 ][ USER_DATA ];
new const g_szCommunity[ ] = "AmxModX-ES"; new const g_ServerResources[ SERVER_RES ][ ] = { "Freezemine", "models/freezelaser.mdl", "freezemine/buy.wav", "freezemine/died.wav", "freezemine/powerup.wav", "freezemine/deploy.wav", "freezemine/activated.wav", "debris/bustglass1.wav", "debris/bustglass2.wav", "models/glassgibs.mdl", "sprites/freezemine/explode.spr", "sprites/freezemine/beam.spr" }
/* ===========================================================================??==================================== * [ Plugin Stuff ] * ===========================================================================??====================================*/
public plugin_precache( ) { precache_model( g_ServerResources[ RES_MODEL ] ) precache_model( g_ServerResources[ RES_GLASSGIBS ] ) g_ServerData[ BEAM_MODELINDEX ] = precache_model( g_ServerResources[ RES_BEAM ] ) g_ServerData[ SPRITE_EXPLOSION ] = precache_model( g_ServerResources[ RES_EXPLODE ] ) precache_sound( g_ServerResources[ RES_BUY ] ) precache_sound( g_ServerResources[ RES_DIED ] ) precache_sound( g_ServerResources[ RES_POWERUP ] ) precache_sound( g_ServerResources[ RES_DEPLOY ] ) precache_sound( g_ServerResources[ RES_ACTIVATED ] ) precache_sound( g_ServerResources[ RES_GLASS1 ] ) precache_sound( g_ServerResources[ RES_GLASS2 ] ) }
public plugin_init( ) { register_plugin( "Minas Laser","1.0b","Manu" ) register_clcmd( "say /fm","CommandLaser" ) register_clcmd( "+setfm","CommandLaser" ) register_clcmd( "-setfm","CommandLaser" ) register_clcmd( "+delfm","CommandLaser" ) register_clcmd( "-delfm","CommandLaser" ) register_logevent( "ev_RoundStart",2,"1=Round_Start" ) register_logevent( "ev_RoundEnd",2,"1=Round_End" ) g_ServerData[ LASER_ENTITY ] = engfunc( EngFunc_AllocString,"func_breakable" ) g_ServerData[ BEAM_ENTITY ] = engfunc( EngFunc_AllocString,"beam" ) g_ServerData[ BAR_MSG ] = get_user_msgid( "BarTime" ) g_ServerData[ SAY_TEXT ] = get_user_msgid( "SayText" ) RegisterHam( Ham_Item_PreFrame,"player","fw_PlayerSpeed" ) RegisterHam( Ham_Spawn,"player","fw_PlayerSpawn",1 ) RegisterHam( Ham_Killed,"player","fw_PlayerKilled",1 ) RegisterHam( Ham_TakeDamage,"func_breakable","fw_LaserTakeDamage" ); }
/* ===========================================================================??==================================== * [ Events ] * ===========================================================================??====================================*/
public ev_RoundStart( ) { g_ServerData[ LASER_ABLE ] = true; PrintColor( 0,"^x04[%s]^x01 Freezemines^x04 activadas^x01.",g_szCommunity ) }
public ev_RoundEnd( ) { static iEnt; while( (iEnt = engfunc( EngFunc_FindEntityByString,iEnt,"classname",g_ServerResources[ LASER_CLASSNAME ] )) ) RemoveLaser( iEnt ) g_ServerData[ LASER_ABLE ] = false; PrintColor( 0,"^x04[%s]^x01 Freezemines^x04 desactivadas^x01.",g_szCommunity ) }
/* ===========================================================================??==================================== * [ Client Forwards ] * ===========================================================================??====================================*/
public CommandLaser( id ) { static sBuffer[ 4 ];read_argv( 0,sBuffer,3 ) switch( sBuffer[ 0 ] ) { case 's': { if( !CanUser( id,LASER_BUY ) ) { PrintColor( id,"^x04[%s]^x01 No puedes^x04 comprar^x01 freezemines.",g_szCommunity ) return PLUGIN_HANDLED; } g_UserData[ id ][ LASER_AMOUNT ]++ PrintColor( id,"^x04[%s]^x01 Compraste una freezemine.",g_szCommunity,g_UserData[ id ][ LASER_AMOUNT ],g_UserData[ id ][ LASER_MAXIMUM ] ) emit_sound( id,CHAN_ITEM,g_ServerResources[ RES_BUY ],VOL_NORM,ATTN_NORM,0,PITCH_NORM ); } case '+': { switch( sBuffer[ 1 ] ) { case 's': { if( !CanUser( id,LASER_CREATE ) ) { PrintColor( id,"^x04[%s]^x01 No puedes^x04 crear^x01 freezemines.",g_szCommunity ) return PLUGIN_HANDLED; } set_task( 1.2,"CreateUserLaser",id+TASK_LASER ) } case 'd': { if( !CanUser( id,LASER_REMOVE ) ) { PrintColor( id,"^x04[%s]^x0 1No puedes^x04 remover^x01 freezemines.",g_szCommunity ) return PLUGIN_HANDLED; } set_task( 1.2,"RemoveUserLaser",id+TASK_LASER ) } } MarkPlayerBit( g_ServerData[ PLAYER_FROZEN ],id ) set_pev( id,pev_maxspeed,1.0 ) ShowUserBar( id,1 ) } case '-': { remove_task( id+TASK_LASER ) ClearPlayerBit( g_ServerData[ PLAYER_FROZEN ],id ) set_pev( id,pev_maxspeed,1.0 ) ShowUserBar( id,0 ) } } return PLUGIN_HANDLED; }
public client_putinserver( id ) { ClearPlayerBit( g_ServerData[ PLAYER_ALIVE ],id ) g_UserData[ id ][ LASER_AMOUNT ] = 1; g_UserData[ id ][ LASER_MAXIMUM ] = 3; g_UserData[ id ][ LASER_DEPLOYED ] = 0; ClearPlayerBit( g_ServerData[ PLAYER_FROZEN ],id ) }
public client_disconnect( id ) { ClearPlayerBit( g_ServerData[ PLAYER_ALIVE ],id ) RemoveLasersByOwner( id ) remove_task( id+TASK_LASER ) ClearPlayerBit( g_ServerData[ PLAYER_FROZEN ],id ) } /* ===========================================================================??==================================== * [ HamSandwich Forwards ] * ===========================================================================??====================================*/
public fw_LaserThink( iEnt ) { if( !pev_valid( iEnt ) ) return HAM_IGNORED; switch( pev( iEnt,LASER_STEP ) ) { case LASER_POWERUP: { set_pev( iEnt,pev_solid,SOLID_BBOX ) set_pev( iEnt,pev_takedamage,1.0 ) set_pev( iEnt,LASER_STEP,LASER_ACTIVATED ) DrawLaserBeam( iEnt ) emit_sound( iEnt,CHAN_VOICE,g_ServerResources[ RES_ACTIVATED ],0.5,ATTN_NORM,1,75 ); set_pev( iEnt,pev_nextthink,get_gametime( ) + 0.2 ); return HAM_IGNORED; } case LASER_ACTIVATED: { static Float:fVector[ LASER_VECTOR ][ 3 ],iTrace,Float:fHealth,iVictim;iTrace = create_tr2( ) pev( iEnt,LASER_ORIGIN,fVector[ LV_PLAYER ] ); pev( iEnt,LASER_END,fVector[ LV_END ] ); pev( iEnt,pev_health,fHealth ); engfunc( EngFunc_TraceLine,fVector[ LV_PLAYER ],fVector[ LV_END ],DONT_IGNORE_MONSTERS,iEnt,iTrace ); if( IsPlayerValid( (iVictim = get_tr2( iTrace,TR_pHit )) ) && ( get_user_team( iVictim ) != pev( iEnt,LASER_TEAM ) ) ) { set_pev( iVictim,pev_maxspeed,80.0 ); } else if( fHealth < 0.0 || ( pev( iEnt,pev_flags ) & FL_KILLME ) ) set_pev( iEnt,LASER_STEP,LASER_EXPLODE ); free_tr2( iTrace ) set_pev( iEnt,pev_nextthink,get_gametime( ) + 0.1 ); } case LASER_EXPLODE: { CreateExplosion( iEnt ); return HAM_IGNORED; } } return HAM_IGNORED; }
public fw_PlayerSpeed( id ) { if( !IsPlayerBit( g_ServerData[ PLAYER_FROZEN ],id ) ) return HAM_IGNORED; set_pev( id,pev_maxspeed,1.0 ) return HAM_SUPERCEDE; }
public fw_PlayerSpawn( id ) { if( !is_user_alive( id ) ) return HAM_IGNORED; MarkPlayerBit( g_ServerData[ PLAYER_ALIVE ],id ) return HAM_IGNORED; }
public fw_PlayerKilled( iVictim,iAttacker,bShoudlgib ) { ClearPlayerBit( g_ServerData[ PLAYER_ALIVE ],iVictim ) g_UserData[ iVictim ][ LASER_AMOUNT ] = 1; ClearPlayerBit( g_ServerData[ PLAYER_FROZEN ],iVictim ) }
public fw_LaserTakeDamage( iEnt,iInflictor,iAttacker,Float:fDamage,iDamageBits ) { if( IsPlayerBit( g_ServerData[ PLAYER_ALIVE ],iAttacker ) && ( get_user_team( iAttacker ) == pev( iEnt,LASER_TEAM ) ) ) return HAM_SUPERCEDE; return HAM_IGNORED; } /* ===========================================================================??==================================== * [ Custom Client Forwards ] * ===========================================================================??====================================*/
public CreateUserLaser( iTask ) { static id,iEnt; ClearPlayerBit( g_ServerData[ PLAYER_FROZEN ],(id = ID_TASK) ) ExecuteHamB( Ham_Item_PreFrame,id ) if( !IsPlayerBit( g_ServerData[ PLAYER_ALIVE ],id ) || !g_ServerData[ LASER_ABLE ] || !pev_valid((iEnt = engfunc(EngFunc_CreateNamedEntity,g_ServerData[ LASER_ENTITY ]))) ) return; g_UserData[ id ][ LASER_AMOUNT ]-- g_UserData[ id ][ LASER_DEPLOYED ]++ engfunc( EngFunc_SetModel,iEnt,g_ServerResources[ RES_MODEL ] ) engfunc( EngFunc_SetSize,iEnt,{ -4.0,-4.0,-4.0 },{ 4.0,4.0,4.0 } ) set_pev( iEnt,pev_classname,g_ServerResources[ LASER_CLASSNAME ] ) set_pev( iEnt,pev_solid,SOLID_NOT ) set_pev( iEnt,pev_movetype,MOVETYPE_FLY ) set_pev( iEnt,pev_health,450.0 ) set_pev( iEnt,pev_takedamage,0.0 ) set_pev( iEnt,LASER_OWNER,id ) set_pev( iEnt,LASER_TEAM,get_user_team( id ) ) set_pev( iEnt,LASER_STEP,LASER_POWERUP ) SetLaserPosition( id,iEnt ) set_pev( iEnt,pev_frame,0 ) set_pev( iEnt,pev_framerate,0 ) set_pev( iEnt,pev_body,3 ) set_pev( iEnt,pev_sequence,7 ) set_pev( iEnt,pev_nextthink,get_gametime( ) + 3.0 ) RegisterHamFromEntity( Ham_Think,iEnt,"fw_LaserThink" ) emit_sound( iEnt,CHAN_VOICE,g_ServerResources[ RES_DEPLOY ],VOL_NORM,ATTN_NORM,0,PITCH_NORM ); emit_sound( iEnt,CHAN_BODY,g_ServerResources[ RES_POWERUP ],0.2,ATTN_NORM,0,PITCH_NORM ); }
public RemoveUserLaser( iTask ) { static id,iEnt;id = ID_TASK if( !pev_valid( (iEnt = CanUser( id,LASER_REMOVE )) ) ) return; g_UserData[ id ][ LASER_AMOUNT ]++ RemoveLaser( iEnt ) emit_sound( id,CHAN_ITEM,g_ServerResources[ RES_BUY ],VOL_NORM,ATTN_NORM,0,PITCH_NORM ); } /* ===========================================================================??==================================== * [ Stocks ] * ===========================================================================??====================================*/
CanUser( const id,iNum ) { if( !IsPlayerBit( g_ServerData[ PLAYER_ALIVE ],id ) || !g_ServerData[ LASER_ABLE ] ) return false; switch( iNum ) { case LASER_BUY: { if( g_UserData[ id ][ LASER_AMOUNT ] >= g_UserData[ id ][ LASER_MAXIMUM ] ) return false; } case LASER_CREATE: { if( (g_UserData[ id ][ LASER_AMOUNT ] <= 0) || (g_UserData[ id ][ LASER_DEPLOYED ] >= g_UserData[ id ][ LASER_MAXIMUM ]) ) return false; static Float:fVector[ LASER_VECTOR ][ 3 ],iTrace,Float:fDistance;iTrace = create_tr2( ) pev( id,pev_origin,fVector[ LV_PLAYER ] ) pev( id,pev_v_angle,fVector[ LV_ANGLES ] ) angle_vector( fVector[ LV_ANGLES ],ANGLEVECTOR_FORWARD,fVector[ LV_ANGLES ] ) xs_vec_mul_scalar( fVector[ LV_ANGLES ],128.0,fVector[ LV_ANGLES ] ) xs_vec_add( fVector[ LV_PLAYER ],fVector[ LV_ANGLES ],fVector[ LV_END ] ) engfunc( EngFunc_TraceLine,fVector[ LV_PLAYER ],fVector[ LV_END ],DONT_IGNORE_MONSTERS,id,iTrace ) get_tr2( iTrace,TR_flFraction,fDistance ) free_tr2( iTrace ) if( fDistance >= 1.0 ) return false; } case LASER_REMOVE: { static
Last edited by xeloxded; 12-24-2016 at 15:12.
|
|