Code:
/* AMXX Mod script. Pinkfairie's Multi_Vehicle_Mod v1.12 */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vaultx>
#include <fun>
#include <tsx>
#define MVM_Helicopter "models/rc_apache.mdl"
#define MVM_Tank "models/tank.mdl"
#define MVM_Car_One "models/player/car_corvette/car_corvette.mdl"
#define MVM_Rocket "models/rpgrocket.mdl"
#define MVM_Smoke_Model "sprites/smoke.spr"
new MVM_Vehicle_Ent[33][3]
new MVM_Floor_Ent[33]
new MVM_Tank_Origin[33][3]
new MVM_Car_Origin[33][3]
new MVM_Copter_Origin[33][3]
new bool:MVM_Tank_Is[33]
new bool:MVM_Car_Is[33]
new bool:MVM_Copter_Is[33]
new bool:MVM_Copter_Block
new Float:MVM_Player_Angles[33][3]
new Float:MVM_Vehicle_Angles[33][3]
new Float:MVM_Rocket_Wait
new MVM_Smoke_Trail
public plugin_init ( )
{
register_plugin ( "Multi_Vehicle_Mod","1.12","Pinkfairie" )
console_print ( 0,"[VEHICLE] Loaded Multi_Vehicle_Mod v1.12 by Pinkfairie." )
register_srvcmd ( "item_tank","MVM_Tank_Start" )
register_srvcmd ( "item_car","MVM_Car_Start" )
register_srvcmd ( "item_copter","MVM_Copter_Start" )
}
public plugin_precache ( )
{
precache_model ( MVM_Helicopter )
precache_model ( MVM_Tank )
precache_model ( MVM_Car_One )
precache_model ( MVM_Rocket )
MVM_Smoke_Trail = precache_model ( MVM_Smoke_Model )
}
public client_putinserver ( id )
{
server_cmd ( "sv_maxspeed 1000" )
remove_task ( id,0 )
MVM_Tank_Is[id] = false
MVM_Car_Is[id] = false
MVM_Copter_Is[id] = false
MVM_Tank_Origin[id][0] = 0
MVM_Car_Origin[id][0] = 0
MVM_Copter_Origin[id][0] = 0
MVM_Load ( id )
MVM_Create_Simple_Ents ( id )
}
public MVM_Tank_Start ( )
{
new MVM_Argument[3]
read_argv ( 1,MVM_Argument,2 )
new id = str_to_num(MVM_Argument)
if ( !id ) return PLUGIN_HANDLED
new MVM_Origin[3]
get_user_origin ( id,MVM_Origin )
if ( MVM_Tank_Is[id] )
{
MVM_Tank_Is[id] = false
set_user_footsteps ( id,0 )
set_entity_visibility ( id,1 )
set_user_maxspeed ( id, 320.0 )
MVM_Tank_Origin[id][0] = MVM_Origin[0]
MVM_Tank_Origin[id][1] = MVM_Origin[1]
MVM_Tank_Origin[id][2] = MVM_Origin[2]
MVM_Save ( id )
return PLUGIN_HANDLED
}
if ( !MVM_Tank_Is[id] )
{
if ( ( get_distance ( MVM_Origin,MVM_Tank_Origin[id] ) >= 150 ) && ( ( MVM_Tank_Origin[id][0] > 0 ) || ( MVM_Tank_Origin[id][0] < 0 ) ) )
{
client_print(id,print_chat,"[VEHICLE]Sorry, But you need to be closer to your vehicle to get in it.^n")
return PLUGIN_HANDLED
}
MVM_Copter_Is[id] = false
MVM_Car_Is[id] = false
MVM_Copter_Block = false
remove_entity ( MVM_Floor_Ent[id] )
MVM_Tank_Is[id] = true
set_user_footsteps ( id,1 )
set_entity_visibility ( id,0 )
set_user_maxspeed ( id,150.0 )
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public MVM_Car_Start ( )
{
new MVM_Argument[3]
read_argv ( 1,MVM_Argument,2 )
new id = str_to_num(MVM_Argument)
if ( !id ) return PLUGIN_HANDLED
new MVM_Origin[3]
get_user_origin ( id,MVM_Origin )
if ( MVM_Car_Is[id] )
{
MVM_Car_Is[id] = false
set_user_footsteps ( id,0 )
set_entity_visibility ( id,1 )
set_user_maxspeed ( id,320.0 )
MVM_Car_Origin[id][0] = MVM_Origin[0]
MVM_Car_Origin[id][1] = MVM_Origin[1]
MVM_Car_Origin[id][2] = MVM_Origin[2]
MVM_Save ( id )
return PLUGIN_HANDLED
}
if ( !MVM_Car_Is[id] )
{
if ( ( get_distance ( MVM_Origin,MVM_Car_Origin[id] ) >= 150 ) && ( ( MVM_Car_Origin[id][0] > 0 ) || ( MVM_Car_Origin[id][0] < 0 ) ) )
{
client_print(id,print_chat,"[VEHICLE]Sorry, But you need to be closer to your vehicle to get in it.^n")
return PLUGIN_HANDLED
}
MVM_Copter_Is[id] = false
MVM_Tank_Is[id] = false
MVM_Copter_Block = false
remove_entity ( MVM_Floor_Ent[id] )
MVM_Car_Is[id] = true
set_user_footsteps ( id,1 )
set_entity_visibility ( id,0 )
set_user_maxspeed ( id,500.0 )
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public MVM_Copter_Start ( )
{
new MVM_Argument[3]
read_argv ( 1,MVM_Argument,2 )
new id = str_to_num(MVM_Argument)
if ( !id ) return PLUGIN_HANDLED
new MVM_Origin[3]
get_user_origin ( id,MVM_Origin )
if ( MVM_Copter_Is[id] )
{
MVM_Copter_Is[id] = false
MVM_Copter_Block = false
set_user_footsteps ( id,0 )
set_entity_visibility ( id,1 )
remove_entity ( MVM_Floor_Ent[id] )
MVM_Copter_Origin[id][0] = MVM_Origin[0]
MVM_Copter_Origin[id][1] = MVM_Origin[1]
MVM_Copter_Origin[id][2] = MVM_Origin[2]
MVM_Save ( id )
return PLUGIN_HANDLED
}
if ( !MVM_Copter_Is[id] )
{
if ( MVM_Copter_Block )
{
client_print(id,print_chat,"[VEHICLE]Sorry, But only one helicopter can be up at a time.^n")
return PLUGIN_HANDLED
}
if ( ( get_distance ( MVM_Origin,MVM_Copter_Origin[id] ) >= 150 ) && ( ( MVM_Copter_Origin[id][0] > 0 ) || ( MVM_Copter_Origin[id][0] < 0 ) ) )
{
client_print(id,print_chat,"[VEHICLE]Sorry, But you need to be closer to your vehicle to get in it.^n")
return PLUGIN_HANDLED
}
MVM_Tank_Is[id] = false
MVM_Car_Is[id] = false
MVM_Copter_Is[id] = true
MVM_Copter_Block = true
set_user_footsteps ( id,1 )
set_entity_visibility ( id,0 )
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public client_PreThink ( id )
{
new MVM_Vehicle_ID
if ( MVM_Tank_Is[id] ) MVM_Vehicle_ID = 0
if ( MVM_Car_Is[id] ) MVM_Vehicle_ID = 1
if ( MVM_Copter_Is[id] ) MVM_Vehicle_ID = 2
if ( MVM_Car_Is[id] || MVM_Copter_Is[id] || MVM_Tank_Is[id] ) entity_set_int ( id,EV_INT_button,entity_get_int ( id,EV_INT_button ) & ~IN_ALT1 & ~IN_JUMP )
if ( MVM_Tank_Is[id] || MVM_Car_Is[id] )
{
if ( !is_user_alive ( id ) )
{
if ( MVM_Tank_Is[id] ) set_task ( 0.1,"MVM_Tank_Start" )
if ( MVM_Car_Is[id] ) set_task ( 0.1,"MVM_Car_Start" )
return PLUGIN_HANDLED
}
remove_entity ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID] )
entity_get_vector ( id,EV_VEC_angles,MVM_Vehicle_Angles[id] )
if ( MVM_Tank_Is[id] ) MVM_Player_Angles[id][1] = MVM_Vehicle_Angles[id][1] + 90
if ( MVM_Car_Is[id] ) MVM_Player_Angles[id][1] = MVM_Vehicle_Angles[id][1]
MVM_Player_Angles[id][0] = 0.0
MVM_Player_Angles[id][2] = 0.0
new MVM_Origin[3]
get_user_origin ( id,MVM_Origin )
MVM_Vehicle_Ent[id][MVM_Vehicle_ID] = create_entity ( "info_target" )
if ( MVM_Tank_Is[id] ) entity_set_model ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],MVM_Tank )
if ( MVM_Car_Is[id] ) entity_set_model ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],MVM_Car_One )
entity_set_vector ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],EV_VEC_angles,MVM_Player_Angles[id] )
entity_set_string ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],EV_SZ_classname,"vehicle_ent" )
new Float:MVM_Vehicle_Position[3]
MVM_Vehicle_Position[0] = float ( MVM_Origin[0] )
MVM_Vehicle_Position[1] = float ( MVM_Origin[1] )
if ( MVM_Tank_Is[id] ) MVM_Vehicle_Position[2] = float ( MVM_Origin[2] - 30 )
if ( MVM_Car_Is[id] ) MVM_Vehicle_Position[2] = float ( MVM_Origin[2] )
entity_set_origin ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],MVM_Vehicle_Position )
}
if ( MVM_Copter_Is[id] )
{
if ( !is_user_alive ( id ) ) set_task ( 0.1,"MVM_Copter_Start" )
new MVM_Origin[3]
get_user_origin ( id,MVM_Origin )
new MVM_Trigger = entity_get_int ( id,EV_INT_button )
if ( MVM_Trigger & IN_USE )
{
MVM_Origin[2] += 10
set_user_origin ( id,MVM_Origin )
}
if ( MVM_Trigger & IN_FORWARD ) MVM_Player_Angles[id][0] = 330.0
if ( MVM_Trigger & IN_BACK ) MVM_Player_Angles[id][0] = 30.0
if ( MVM_Trigger & IN_MOVERIGHT ) MVM_Player_Angles[id][2] = 330.0
if ( MVM_Trigger & IN_MOVELEFT ) MVM_Player_Angles[id][2] = 30.0
if ( ( ! ( MVM_Trigger & IN_FORWARD ) ) && ( ! ( MVM_Trigger & IN_BACK ) ) ) MVM_Player_Angles[id][0] = 0.0
if ( ( ! ( MVM_Trigger & IN_MOVERIGHT ) ) && ( ! ( MVM_Trigger & IN_MOVELEFT ) ) ) MVM_Player_Angles[id][2] = 0.0
remove_entity ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID] )
remove_entity ( MVM_Floor_Ent[id] )
MVM_Floor_Ent[id] = create_entity ( "info_target" )
set_entity_visibility ( MVM_Floor_Ent[id],0)
entity_set_model ( MVM_Floor_Ent[id],MVM_Helicopter )
entity_set_vector ( MVM_Floor_Ent[id],EV_VEC_angles,Float:
{
0.0,0.0,0.0
}
)
new Float:MVM_Ent_Position[3]
MVM_Ent_Position[0] = float ( MVM_Origin[0] )
MVM_Ent_Position[1] = float ( MVM_Origin[1] )
MVM_Ent_Position[2] = float ( MVM_Origin[2] - 60 )
entity_set_origin ( MVM_Floor_Ent[id],MVM_Ent_Position )
entity_set_int ( MVM_Floor_Ent[id],EV_INT_solid,2 )
new Float:MVM_Max[3] =
{
16.0,16.0,16.0
}
new Float:MVM_Min[3] =
{
-16.0,-16.0,-16.0
}
entity_set_size ( MVM_Floor_Ent[id],MVM_Min,MVM_Max )
entity_get_vector ( id,EV_VEC_angles,MVM_Vehicle_Angles[id] )
MVM_Player_Angles[id][1] = MVM_Vehicle_Angles[id][1]
MVM_Vehicle_Ent[id][MVM_Vehicle_ID] = create_entity ( "info_target" )
entity_set_model ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],MVM_Helicopter )
entity_set_vector ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],EV_VEC_angles,MVM_Player_Angles[id] )
MVM_Ent_Position[2] = float ( MVM_Origin[2] + 40 )
entity_set_origin ( MVM_Vehicle_Ent[id][MVM_Vehicle_ID],MVM_Ent_Position )
}
if ( MVM_Copter_Is[id] || MVM_Tank_Is[id] )
{
new MVM_Trigger = entity_get_int ( id,EV_INT_button )
if ( ( MVM_Tank_Is[id] && ( MVM_Trigger & IN_USE ) ) || ( MVM_Copter_Is[id] && ( MVM_Trigger & IN_RELOAD ) ) )
{
if ( get_gametime() < MVM_Rocket_Wait + 1.0 ) return PLUGIN_HANDLED
MVM_Rocket_Wait = get_gametime()
new Float:MVM_Start[3],Float:MVM_Angle[3],MVM_Origin[3],Float:MVM_Velocity[3]
new MVM_Rocket_Ent = create_entity ( "info_target" )
get_user_origin(id,MVM_Origin)
MVM_Start[0] = float ( MVM_Origin[0] )
MVM_Start[1] = float ( MVM_Origin[1] )
MVM_Start[2] = float ( MVM_Origin[2] + 40 )
entity_set_origin ( MVM_Rocket_Ent,MVM_Start )
entity_get_vector ( id,EV_VEC_v_angle,MVM_Angle)
entity_set_vector ( MVM_Rocket_Ent,EV_VEC_angles,MVM_Angle )
entity_set_string ( MVM_Rocket_Ent,EV_SZ_classname,"rocket_ent" )
entity_set_model ( MVM_Rocket_Ent,MVM_Rocket )
new Float:MVM_Max[3] =
{
1.0,1.0,1.0
}
new Float:MVM_Min[3] =
{
-1.0,-1.0,-1.0
}
entity_set_size ( MVM_Rocket_Ent,MVM_Min,MVM_Max )
entity_set_int ( MVM_Rocket_Ent,EV_INT_solid,2 )
entity_set_int ( MVM_Rocket_Ent,EV_INT_movetype,5 )
entity_set_edict ( MVM_Rocket_Ent,EV_ENT_owner,id )
VelocityByAim ( id,1000,MVM_Velocity )
entity_set_vector ( MVM_Rocket_Ent,EV_VEC_velocity,MVM_Velocity )
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte ( 22 )
write_short ( MVM_Rocket_Ent )
write_short ( MVM_Smoke_Trail )
write_byte ( 30 )
write_byte ( 3 )
write_byte ( 255 )
write_byte ( 255 )
write_byte ( 255 )
write_byte ( 255 )
message_end ( )
}
}
return PLUGIN_HANDLED
}
public pfn_touch ( ptr,ptd )
{
new MVM_ClassName[32]
if ( ( ptr > 0 ) && is_valid_ent ( ptr ) )
{
entity_get_string ( ptr,EV_SZ_classname,MVM_ClassName,31 )
}
if ( equal ( MVM_ClassName, "rocket_ent" ) )
{
remove_task ( ptr )
new Float:MVM_End[3]
entity_get_vector ( ptr,EV_VEC_origin,MVM_End )
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte ( 12 )
write_coord ( floatround ( MVM_End[0] ) )
write_coord ( floatround ( MVM_End[1] ) )
write_coord ( floatround ( MVM_End[2] ) )
write_byte ( 188 )
write_byte ( 10 )
message_end()
new Float:MVM_Origin[3]
entity_get_vector ( ptr,EV_VEC_origin,MVM_Origin )
radius_damage(MVM_Origin,50,25)
remove_entity(ptr)
}
}
public MVM_Save ( id )
{
new MVM_Steam_Id[32],MVM_Vault[256],MVM_Number[256]
get_user_authid ( id,MVM_Steam_Id,31 )
for ( new i=0 ;
i<3 ;
i++ )
{
if ( ( MVM_Tank_Origin[id][i] > 0 ) || ( MVM_Tank_Origin[id][i] < 0 ) )
{
num_to_str ( MVM_Tank_Origin[id][i],MVM_Number,255 )
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Tank_Origin",MVM_Steam_Id,i )
set_vaultxdata ( MVM_Vault,MVM_Number )
}
}
for ( new i=0 ;
i<3 ;
i++ )
{
if ( ( MVM_Car_Origin[id][i] > 0 ) || ( MVM_Car_Origin[id][i] < 0 ) )
{
num_to_str ( MVM_Car_Origin[id][i],MVM_Number,255 )
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Car_Origin",MVM_Steam_Id,i )
set_vaultxdata ( MVM_Vault,MVM_Number )
}
}
for ( new i=0 ;
i<3 ;
i++ )
{
if ( ( MVM_Copter_Origin[id][i] > 0 ) || ( MVM_Copter_Origin[id][i] < 0 ) )
{
num_to_str ( MVM_Copter_Origin[id][i],MVM_Number,255 )
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Copter_Origin",MVM_Steam_Id,i )
set_vaultxdata ( MVM_Vault,MVM_Number )
}
}
return PLUGIN_HANDLED
}
public MVM_Load ( id )
{
new MVM_Steam_Id[32],MVM_Vault[256],MVM_Number[256]
get_user_authid ( id,MVM_Steam_Id,31 )
for ( new i=0 ;
i<3 ;
i++ )
{
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Tank_Origin",MVM_Steam_Id,i )
get_vaultxdata ( MVM_Vault,MVM_Number,255 )
if ( vaultxdata_exists ( MVM_Vault ) )
{
MVM_Tank_Origin[id][i] = str_to_num(MVM_Number)
}
}
for ( new i=0 ;
i<3 ;
i++ )
{
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Car_Origin",MVM_Steam_Id,i )
get_vaultxdata ( MVM_Vault,MVM_Number,255 )
if ( vaultxdata_exists ( MVM_Vault ) )
{
MVM_Car_Origin[id][i] = str_to_num(MVM_Number)
}
}
for ( new i=0 ;
i<3 ;
i++ )
{
format ( MVM_Vault,255,"MVM=%s=%d=MVM_Copter_Origin",MVM_Steam_Id,i )
get_vaultxdata ( MVM_Vault,MVM_Number,255 )
if ( vaultxdata_exists ( MVM_Vault ) )
{
MVM_Copter_Origin[id][i] = str_to_num(MVM_Number)
}
}
return PLUGIN_HANDLED
}
public MVM_Create_Simple_Ents ( id )
{
new Float:MVM_Tank_Position[3],Float:MVM_Car_Position[3],Float:MVM_Copter_Position[3]
MVM_Tank_Position[0] = float ( MVM_Tank_Origin[id][0] )
MVM_Tank_Position[1] = float ( MVM_Tank_Origin[id][1] )
MVM_Tank_Position[2] = float ( MVM_Tank_Origin[id][2] - 35 )
MVM_Car_Position[0] = float ( MVM_Car_Origin[id][0] )
MVM_Car_Position[1] = float ( MVM_Car_Origin[id][1] )
MVM_Car_Position[2] = float ( MVM_Car_Origin[id][2] )
MVM_Copter_Position[0] = float ( MVM_Copter_Origin[id][0] )
MVM_Copter_Position[1] = float ( MVM_Copter_Origin[id][1] )
MVM_Copter_Position[2] = float ( MVM_Copter_Origin[id][2] + 40 )
for ( new i=0 ;
i<3 ;
i++ )
{
if ( ( MVM_Tank_Origin[id][0]>0 || MVM_Tank_Origin[id][0]<0 ) && i==0 )
{
MVM_Player_Angles[id][1] = ( MVM_Player_Angles[id][1] + 90 )
MVM_Vehicle_Ent[id][i] = create_entity ( "info_target" )
entity_set_model ( MVM_Vehicle_Ent[id][i],MVM_Tank )
entity_set_vector ( MVM_Vehicle_Ent[id][i],EV_VEC_angles,MVM_Player_Angles[id] )
entity_set_string ( MVM_Vehicle_Ent[id][i],EV_SZ_classname,"vehicle_ent" )
entity_set_origin ( MVM_Vehicle_Ent[id][i],MVM_Tank_Position )
}
if ( ( MVM_Car_Origin[id][0]>0 || MVM_Car_Origin[id][0]<0 ) && i==1 )
{
MVM_Vehicle_Ent[id][i] = create_entity ( "info_target" )
entity_set_model ( MVM_Vehicle_Ent[id][i],MVM_Car_One )
entity_set_vector ( MVM_Vehicle_Ent[id][i],EV_VEC_angles,MVM_Player_Angles[id] )
entity_set_string ( MVM_Vehicle_Ent[id][i],EV_SZ_classname,"vehicle_ent" )
entity_set_origin ( MVM_Vehicle_Ent[id][i],MVM_Car_Position )
}
if ( ( MVM_Copter_Origin[id][0]>0 || MVM_Copter_Origin[id][0]<0 ) && i==2 )
{
MVM_Vehicle_Ent[id][i] = create_entity ( "info_target" )
entity_set_model ( MVM_Vehicle_Ent[id][i],MVM_Helicopter )
entity_set_vector ( MVM_Vehicle_Ent[id][i],EV_VEC_angles,MVM_Player_Angles[id] )
entity_set_string ( MVM_Vehicle_Ent[id][i],EV_SZ_classname,"vehicle_ent" )
entity_set_origin ( MVM_Vehicle_Ent[id][i],MVM_Copter_Position )
}
}
return PLUGIN_HANDLED
}
Is a little btter, theres still odd indents though... Thanks dotnetjunkie for showing me how to fix up code quick lol.