View Single Post
platzpatrone
Veteran Member
Join Date: Apr 2007
Location: Germany
Old 12-10-2010 , 16:35   Re: Plugin Leicht umschreiben.
#3

da haste ohne smoke und ohne sound:

Code:
//Hi. #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> //General new bool:Disabled=true//For checking to keep players from flying during the buy period. new bool:JetpackBools[33][3]//Jetpack On/Jetpack in use? [2 is for +jetpack now] new Float:JetpackSound[33][2]//When was the last sound played? new JetpackFuel[33]//How much fuel a player has. //Sprites new explosion new smoke //Death new MSG_DEATH //pcvars new CS_Jetpack new CS_Jetpack_ExplodeDamage new CS_Jetpack_ExplodeRadius new CS_Jetpack_ExplodeFrequency new CS_Jetpack_FuelMode new CS_Jetpack_FuelMatch new CS_Jetpack_Death new CS_Jetpack_UpSpeed new CS_Jetpack_ForwardSpeed new CS_Jetpack_Accelerate new CS_Jetpack_UAccelerate new CS_Jetpack_MaxFuel new CS_Jetpack_StartingFuel new CS_Jetpack_DepletionRate new CS_Jetpack_RegenRate new CS_Jetpack_IdleDeplete new CS_Jetpack_RoundReset new CS_Jetpack_JumpToFly new CS_Jetpack_HudChannel new MP_FriendlyFire public plugin_init() {     register_plugin("CS_Jetpack","1.6983421","Bad_Bud")         register_clcmd("say /jetpack","Jetpack")     register_clcmd("+jetpack","plusjetpack")     register_clcmd("-jetpack","minusjetpack")     register_concmd("cs_jetpack_setfuel","SetFuel",ADMIN_RCON)     register_concmd("cs_jetpack_givefuel","GiveFuel",ADMIN_RCON)     register_concmd("cs_jetpack_save","SaveConfig",ADMIN_RCON)     register_concmd("cs_jetpack_reset","JetpackReset",ADMIN_RCON)//Resets jetpack fuels.         RegisterHam(Ham_TakeDamage,"player","ClientDamage")         register_logevent("Round_Start",2,"1=Round_Start")     register_logevent("Round_End",2,"1=Round_End")         MSG_DEATH=get_user_msgid("DeathMsg")         CS_Jetpack=register_cvar("cs_jetpack","1")//1 = On     CS_Jetpack_ExplodeDamage=register_cvar("cs_jetpack_explodedamage","1.0")//Set to the ratio of damage dealt by exploding jetpacks.     CS_Jetpack_ExplodeRadius=register_cvar("cs_jetpack_exploderadius","650.0")//Set to the radius of jetpack explosion.     CS_Jetpack_ExplodeFrequency=register_cvar("cs_jetpack_explodefrequency","1.0")//Set the frequency of jetpack explosions.     CS_Jetpack_FuelMode=register_cvar("cs_jetpack_fuelmode","0")//1 = On, 2 = Burst regeneration jetpacks.     CS_Jetpack_FuelMatch=register_cvar("cs_jetpack_fuelmatch","10")//If greater than 0, you gain said fuel amount for each kill you get.     CS_Jetpack_Death=register_cvar("cs_jetpack_death","0")//If 1, jetpacks in use turn off when their owner dies.     CS_Jetpack_UpSpeed=register_cvar("cs_jetpack_upspeed","200.0")//Upward thrust the jetpack gives.     CS_Jetpack_ForwardSpeed=register_cvar("cs_jetpack_forwardspeed","575.0")//Max forward speed.     CS_Jetpack_Accelerate=register_cvar("cs_jetpack_accelerate","50.0")//Rate of acceleration (forward, back, left, right).     CS_Jetpack_UAccelerate=register_cvar("cs_jetpack_uaccelerate","100.0")//Rate of upward acceleration.     CS_Jetpack_MaxFuel=register_cvar("cs_jetpack_maxfuel","1000")//Max fuel.     CS_Jetpack_StartingFuel=register_cvar("cs_jetpack_startingfuel","50")//Starting fuel.     CS_Jetpack_DepletionRate=register_cvar("cs_jetpack_depletionrate","1.0")//Rate at which fuel depletes.  1.0 is the standard rate.     CS_Jetpack_RegenRate=register_cvar("cs_jetpack_regenrate","1.0")//Rate at which fuel regenerates.  1.0 is the standard rate.  This is only used if cs_jetpack_fuel is set to 2.     CS_Jetpack_IdleDeplete=register_cvar("cs_jetpack_idledeplete","1")//If 0, idle jetpacks don't slowly lose fuel.     CS_Jetpack_RoundReset=register_cvar("cs_jetpack_roundreset","1")//Modifies whether jetpacks are on or off and whether fuel is reset at the beginning of every round.     CS_Jetpack_JumpToFly=register_cvar("cs_jetpack_jumptofly","0")//If 1, IN_JUMP will be used to cause flight, instead of +jetpack.     CS_Jetpack_HudChannel=register_cvar("cs_jetpack_hudchannel","4")//The fuel HUD channel.  Change this to remove HUD conflicts.     MP_FriendlyFire=get_cvar_pointer("mp_friendlyfire")         register_event("DeathMsg","Death","a")         register_forward(FM_PlayerPreThink,"PreThink")         set_task(0.1,"JetpackFly",0,"",0,"b") } public plugin_precache() {     precache_sound("Jetpack/Jetpack.wav")     precache_sound("Jetpack/JetpackIdle.wav")         explosion=precache_model("sprites/explode1.spr")     smoke=precache_model("sprites/lightsmoke.spr") } public client_putinserver(id) {     switch(get_pcvar_num(CS_Jetpack_FuelMode))     {         case 1:         {             JetpackFuel[id]=((get_pcvar_num(CS_Jetpack_StartingFuel)*1000)-1)         }         case 2:         {             JetpackFuel[id]=99999         }     } } public client_disconnect(id) {         JetpackBools[id][0]=false     JetpackBools[id][1]=false         JetpackSound[id][0]=0.0     JetpackSound[id][1]=0.0 } public Round_Start() {     Disabled=false } public Round_End() {     Disabled=true         switch(get_pcvar_num(CS_Jetpack_FuelMode))     {         case 0:         {             switch(get_pcvar_num(CS_Jetpack_RoundReset))             {                 case 2,3:                     {                         Mode2Reset(true)//Not really Mode2, so sue me.                     }             }         }         case 1:         {             switch(get_pcvar_num(CS_Jetpack_RoundReset))             {                 case 1:                     {                         Mode1Reset(true,false)                     }                 case 2:                     {                         Mode1Reset(true,true)                     }                 case 3:                     {                         Mode1Reset(false,true)                     }             }         }         case 2:         {             switch(get_pcvar_num(CS_Jetpack_RoundReset))             {                 case 2,3:                     {                         Mode2Reset(true)                     }                 default:                     {                         Mode2Reset(false)                     }             }         }     } } public JetpackReset()//This is for the console command.  It looks redundant, but that's just the way it is. :P {     switch(get_pcvar_num(CS_Jetpack_FuelMode))     {         case 1:         {             arrayset(JetpackFuel,(get_pcvar_num(CS_Jetpack_StartingFuel)*1000)-1,33)         }         case 2:         {             arrayset(JetpackFuel,99999,33)         }     }         return PLUGIN_HANDLED } Mode1Reset(bool:fuelreset,bool:turnoff) {     static i,TotalPlayers,id     static Players[32]     get_players(Players,TotalPlayers)         for (i=0;i<TotalPlayers;i++)     {         id=Players[i]                 if(fuelreset)             JetpackFuel[id]=((get_pcvar_num(CS_Jetpack_StartingFuel)*1000)-1)                 if(turnoff)             JetpackBools[id][0]=false     } } Mode2Reset(bool:turnoff) {     static i,TotalPlayers,id     static Players[32]     get_players(Players,TotalPlayers)         for (i=0;i<TotalPlayers;i++)     {         id=Players[i]                 JetpackFuel[id]=99999                 if(turnoff)             JetpackBools[id][0]=false     } } public plusjetpack(id) {     if(JetpackBools[id][0]&&!Disabled)         JetpackBools[id][2]=true     else         JetpackBools[id][2]=false         return PLUGIN_HANDLED } public minusjetpack(id) {     JetpackBools[id][2]=false         return PLUGIN_HANDLED } public PreThink(id) {     if(get_pcvar_num(CS_Jetpack)==1)     {         if(JetpackBools[id][0])         {             if(!(pev(id,pev_flags)&FL_ONGROUND))             {                 if(!get_pcvar_num(CS_Jetpack_JumpToFly))                 {                                         if(JetpackBools[id][2])                     {                         if(get_pcvar_num(CS_Jetpack_FuelMode)==2&&JetpackFuel[id]<5000)                             JetpackBools[id][1]=false                         else                             JetpackBools[id][1]=true                     }                 }                 else                 {                     static Button                     Button=pev(id,pev_button)                                         if(Button&IN_JUMP)                     {                         if(get_pcvar_num(CS_Jetpack_FuelMode)==2&&JetpackFuel[id]<5000)                             JetpackBools[id][1]=false                         else                             JetpackBools[id][1]=true                     }                 }             }                         if(JetpackBools[id][1])             {                 if(get_gametime()-JetpackSound[id][0]>1.0&&is_user_alive(id))                 {                     //emit_sound(id,CHAN_ITEM,"Jetpack/jetpack.wav",1.0,ATTN_NORM,0,PITCH_NORM)                     JetpackSound[id][0]=get_gametime()                 }                 JetpackSound[id][1]=0.0             }             else             {                 if(get_gametime()-JetpackSound[id][1]>1.0&&is_user_alive(id))                 {                     //emit_sound(id,CHAN_ITEM,"Jetpack/jetpackidle.wav",1.0,ATTN_NORM,0,PITCH_NORM)                     JetpackSound[id][1]=get_gametime()                 }                 JetpackSound[id][0]=0.0             }         }     }         return FMRES_IGNORED } public ClientDamage(this,inflictor,attacker,Float:damage,dmgbits)//this = victim {         if(get_pcvar_float(CS_Jetpack_ExplodeFrequency)>0.0)//If jetpack explosions are enabled.     {         if(JetpackBools[this][1]&&attacker!=0&&attacker<get_maxplayers())//Fall damage is server inflicted.  Server does not have weapons.         {                 if(get_pcvar_num(MP_FriendlyFire))//If friendly fire is on...             {                 CheckDamage(this,inflictor,attacker,damage)             }             else if(!SameTeam(this,attacker))//if it's off, check their teams.             {                 CheckDamage(this,inflictor,attacker,damage)             }         }     }         return HAM_HANDLED } CheckDamage(this,inflictor,attacker,Float:damage) {     damage*=get_pcvar_float(CS_Jetpack_ExplodeFrequency)//Multiply the damage by whatever.         if(IsGrenade(inflictor)&&damage>15.0)//Grenade     {         JetpackExplode(this,attacker)     }             else     {         if(get_user_weapon(attacker)!=CSW_KNIFE)//If not: Knife         {             damage*=damage//Exponentiate so higher damage weapons have a much higher chance of causing explosions.             damage/=110.0//Turns damage into a percentage.  It's divided by 110 so that 100 damage isn't a 100% chance, but instead a 91% chance.             //NEW: CS_Jetpack 1.3: Explodefrequency may make anything a 100% chance.  But as a default, this will stay so 1.0 will give a 91% chance.                         if(random_num(0,99)<damage)//Chance!                 JetpackExplode(this,attacker)         }     } } JetpackExplode(victim,attacker) {             static Float:TempOrigin[3]     pev(victim,pev_origin,TempOrigin)         if(get_pcvar_num(CS_Jetpack_FuelMode)==1)     {         if(JetpackFuel[victim]>25000)             JetpackFuel[victim]=floatround(JetpackFuel[victim]*0.8)         else             JetpackFuel[victim]=0     }         effect_explosion(victim)         AddDeaths(victim,1)     CreateDeathMessage(victim,attacker)         if(!SameTeam(victim,attacker))         AddPoints(attacker,1)//Give your killer one point, unless he was on your team, that asshole.     else         AddPoints(attacker,-1)//Teamkill.         DealJetpackDamage(victim,attacker,1000.0)//1000 is overkill.  They best be dead and stay that way.         if(victim!=attacker)         RadiusDamage(attacker,TempOrigin,(170.0*get_pcvar_float(CS_Jetpack_ExplodeDamage)),get_pcvar_float(CS_Jetpack_ExplodeRadius)) } RadiusDamage(attacker,Float:Origin[3],Float:MaxDamage,Float:Radius) {     static victim,AlivePlayers,Float:Damage//,Float:Health     static Players[32],Float:VictimOrigin[3]     get_players(Players,AlivePlayers,"a")     for (new i=0;i<AlivePlayers;i++)     {         victim=Players[i]         static Health                 if(get_pcvar_num(MP_FriendlyFire))         {             pev(victim,pev_origin,VictimOrigin)                         if(get_distance_f(Origin,VictimOrigin)<=Radius)             {                 Damage=(MaxDamage*(1-(get_distance_f(Origin,VictimOrigin)/Radius)))                                 Health=pev(victim,pev_health)                                 if(Damage>=Health)                 {                     if(!SameTeam(victim,attacker))                         AddPoints(attacker,1)//If the explosion kills any enemies, add one point.                     else                         AddPoints(attacker,-1)//If the explosion kills anyone on the attacker's team (including the attacker himself), subract one point.                                         CreateDeathMessage(victim,attacker)                     AddDeaths(victim,1)                 }                                 DealJetpackDamage(victim,attacker,Damage)             }         }         else if(!SameTeam(victim,attacker)||victim==attacker)         {             pev(victim,pev_origin,VictimOrigin)                         if(get_distance_f(Origin,VictimOrigin)<=Radius)             {                 Damage=(MaxDamage*(1-(get_distance_f(Origin,VictimOrigin)/Radius)))                                 Health=pev(victim,pev_health)                                 if(Damage>=Health)                 {                     if(victim!=attacker)                         AddPoints(attacker,1)//If the explosion kills any enemies, add one point.                     else                         AddPoints(attacker,-1)//If the explosion kills the attacker, subtract one point.                                         CreateDeathMessage(victim,attacker)                     AddDeaths(victim,1)                 }                                 DealJetpackDamage(victim,attacker,Damage)             }         }     } } public Death() {     static id,killerid     killerid=read_data(1)     id=read_data(2)         if(get_pcvar_num(CS_Jetpack_FuelMatch)>0&&get_pcvar_num(CS_Jetpack_FuelMode)==1&&killerid!=id&&killerid!=0)//Fuelmatch is on, fuelmode is 1, killer is not self, and killer is not server (falldamage?).     {         if(!SameTeam(id,killerid))         {             client_print(killerid,print_chat,"[Jetpack] You have gained %d fuel.",get_pcvar_num(CS_Jetpack_FuelMatch))             JetpackFuel[killerid]+=((get_pcvar_num(CS_Jetpack_FuelMatch)*1000)-1)                         if(JetpackFuel[killerid]>(get_pcvar_num(CS_Jetpack_MaxFuel)*1000))                 JetpackFuel[killerid]=((get_pcvar_num(CS_Jetpack_MaxFuel)*1000)-1)         }         else         {             client_print(killerid,print_chat,"[Jetpack] You have lost %d fuel.",get_pcvar_num(CS_Jetpack_FuelMatch))             JetpackFuel[killerid]-=((get_pcvar_num(CS_Jetpack_FuelMatch)*1000)-1)                         if(JetpackFuel[killerid]<0)                 JetpackFuel[killerid]=0         }     }     else if(get_pcvar_num(CS_Jetpack_FuelMode)==2)     {         JetpackFuel[id]=99999     }         if(get_pcvar_num(CS_Jetpack_Death)==1)         JetpackBools[id][0]=false     JetpackBools[id][1]=false } public Jetpack(id) {     if(get_pcvar_num(CS_Jetpack)==1)     {         if(!JetpackBools[id][0])         {             if(get_pcvar_num(CS_Jetpack_FuelMode)==1)             {                 if(JetpackFuel[id]>0)                 {                     JetpackBools[id][0]=true                                     client_print(id,print_chat,"[Jetpack] You have turned your jetpack on.")                 }                 else                     client_print(id,print_chat,"[Jetpack] Your jetpack has no fuel!")             }             else             {                 JetpackBools[id][0]=true                                 client_print(id,print_chat,"[Jetpack] You have turned your jetpack on.")             }         }         else         {                 JetpackBools[id][0]=false                             client_print(id,print_chat,"[Jetpack] You have turned your jetpack off.")         }     }         return PLUGIN_HANDLED } public SetFuel(ID) {     if(get_pcvar_num(CS_Jetpack_FuelMode)==1)     {         if(read_argc()==3)         {             static Fuel             static arg2[33]             read_argv(2,arg2,32)             Fuel=str_to_num(arg2)                         if(Fuel<0)             {                 client_print(ID,print_console,"ERROR: <You may only set fuel in non-negative amounts>")             }             else             {                         static arg[33]                 read_argv(1,arg,32)                 ChangeFuel(ID,arg,Fuel,true)             }         }         else         {             client_print(ID,print_console,"USAGE: <Part of Playername or ^"ALL^"> <Amount of fuel to set (0 to %d)>",get_pcvar_num(CS_Jetpack_MaxFuel))         }     }     else     {         client_print(ID,print_console,"USAGE: cs_jetpack_fuel must be set to 1 in order to give or set fuel.")     }         return PLUGIN_HANDLED } public GiveFuel(ID) {     if(get_pcvar_num(CS_Jetpack_FuelMode)==1)     {         if(read_argc()==3)         {             static Fuel             static arg2[33]             read_argv(2,arg2,32)             Fuel=str_to_num(arg2)                         if(Fuel<1)             {                 client_print(ID,print_console,"ERROR: <You may only give positive amounts of fuel>")             }             else             {                         static arg[33]                 read_argv(1,arg,32)                 ChangeFuel(ID,arg,Fuel,false)             }         }         else         {             client_print(ID,print_console,"USAGE: <Part of Playername or ^"ALL^"> <Amount of fuel to give (Fuel will cap at %d)>",get_pcvar_num(CS_Jetpack_MaxFuel))         }     }     else     {         client_print(ID,print_console,"USAGE: cs_jetpack_fuel must be set to 1 in order to give or set fuel.")     }         return PLUGIN_HANDLED } ChangeFuel(ID,arg[33],Fuel,Set) {     static id,MaxFuel     MaxFuel=get_pcvar_num(CS_Jetpack_MaxFuel)         if(!equali(arg,"ALL"))     {         id=cmd_target(id,arg)                 if(Set)         {             if(Fuel>MaxFuel)                 Fuel=MaxFuel                         JetpackFuel[id]=((Fuel*1000)-1)             client_print(id,print_chat,"[Jetpack] Your fuel has been set to %d.",Fuel)                         static Name[44]             get_user_name(id,Name,43)                         client_print(ID,print_console,"You have set %s's fuel to %d.",Name,Fuel)         }         else//Give         {             JetpackFuel[id]+=((Fuel*1000)-1)                         if(JetpackFuel[id]>(MaxFuel*1000))             {                 JetpackFuel[id]=((MaxFuel*1000)-1)             }                         client_print(id,print_chat,"[Jetpack] You have been given %d fuel.",Fuel)                         static Name[44]             get_user_name(id,Name,43)                         client_print(ID,print_console,"You have given %d fuel to %s.",Fuel,Name)         }     }     else     {                 static i,TotalPlayers         static Players[32]         get_players(Players,TotalPlayers)         for (i=0;i<TotalPlayers;i++)         {             id=Players[i]                         if(Set)             {                 if(Fuel>MaxFuel)                     Fuel=MaxFuel                                 JetpackFuel[id]=((Fuel*1000)-1)                     client_print(id,print_chat,"[Jetpack] Your fuel has been set to %d.",Fuel)             }             else//Give             {                 JetpackFuel[id]+=((Fuel*1000)-1)                                 if(JetpackFuel[id]>(MaxFuel*1000))                 {                     JetpackFuel[id]=((MaxFuel*1000)-1)                 }                                 client_print(id,print_chat,"[Jetpack] You have been given %d fuel.",Fuel)             }         }                 if(Set)             client_print(ID,print_console,"You have set everyone's fuel to %d",Fuel)         else             client_print(ID,print_console,"You have given %d fuel to everyone.",Fuel)     } } public SaveConfig(ID) {     if(read_argc()==2)     {         static arg[65]         read_argv(1,arg,64)                 if(containi(arg,".cfg")==-1)             format(arg,64,"%s.cfg",arg)                 client_print(ID,print_console,"Attempting save: %s...",arg)                 if(!equali(arg,"config.cfg")&&!equali(arg,"game.cfg")&&!equali(arg,"listenserver.cfg")&&!equali(arg,"autoexec.cfg")&&!equali(arg,"server.cfg"))         {             static Write[65]                         format(Write,64,"cs_jetpack %d",get_pcvar_num(CS_Jetpack))                     write_file(arg,Write,0)                         format(Write,64,"cs_jetpack_explodedamage %f",get_pcvar_float(CS_Jetpack_ExplodeDamage))             write_file(arg,Write,1)                         format(Write,64,"cs_jetpack_exploderadius %f",get_pcvar_float(CS_Jetpack_ExplodeRadius))             write_file(arg,Write,2)                         format(Write,64,"cs_jetpack_explodefrequency %f",get_pcvar_float(CS_Jetpack_ExplodeFrequency))             write_file(arg,Write,3)                         format(Write,64,"cs_jetpack_fuelmode %d",get_pcvar_num(CS_Jetpack_FuelMode))             write_file(arg,Write,4)                         format(Write,64,"cs_jetpack_fuelmatch %d",get_pcvar_num(CS_Jetpack_FuelMatch))             write_file(arg,Write,5)                         format(Write,64,"cs_jetpack_death %d",get_pcvar_num(CS_Jetpack_Death))             write_file(arg,Write,6)                         format(Write,64,"cs_jetpack_upspeed %f",get_pcvar_float(CS_Jetpack_UpSpeed))             write_file(arg,Write,7)                         format(Write,64,"cs_jetpack_forwardspeed %f",get_pcvar_float(CS_Jetpack_ForwardSpeed))             write_file(arg,Write,8)                         format(Write,64,"cs_jetpack_accelerate %f",get_pcvar_float(CS_Jetpack_Accelerate))             write_file(arg,Write,9)                         format(Write,64,"cs_jetpack_uaccelerate %f",get_pcvar_float(CS_Jetpack_UAccelerate))             write_file(arg,Write,10)                         format(Write,64,"cs_jetpack_maxfuel %d",get_pcvar_num(CS_Jetpack_MaxFuel))             write_file(arg,Write,11)                         format(Write,64,"cs_jetpack_startingfuel %d",get_pcvar_num(CS_Jetpack_StartingFuel))             write_file(arg,Write,12)                         format(Write,64,"cs_jetpack_depletionrate %f",get_pcvar_float(CS_Jetpack_DepletionRate))             write_file(arg,Write,13)                         format(Write,64,"cs_jetpack_regenrate %f",get_pcvar_float(CS_Jetpack_RegenRate))             write_file(arg,Write,14)                         format(Write,64,"cs_jetpack_idledeplete %d",get_pcvar_num(CS_Jetpack_IdleDeplete))             write_file(arg,Write,15)                         format(Write,64,"cs_jetpack_roundreset %d",get_pcvar_num(CS_Jetpack_RoundReset))             write_file(arg,Write,16)                         format(Write,64,"cs_jetpack_jumptofly %d",get_pcvar_num(CS_Jetpack_JumpToFly))             write_file(arg,Write,17)                         format(Write,64,"cs_jetpack_hudchannel %d",get_pcvar_num(CS_Jetpack_HudChannel))             write_file(arg,Write,18)                         format(Write,64,"cs_jetpack_reset")             write_file(arg,Write,19)                         client_print(ID,print_console,"Save complete.",arg)         }         else         {             client_print(ID,print_console,"Error: That filename is unavailable, please choose another.")         }     }     else     {         client_print(ID,print_console,"USAGE: <Name of file>")     }     return PLUGIN_HANDLED } public JetpackFly() {     static Float:Velocity[3]     new Float:NewVelocity[3]     static Float:Angle[3]     static Float:AngleVector[3]     static Button         static id,AlivePlayers     static Players[32]     get_players(Players,AlivePlayers,"a")     for (new i=0;i<AlivePlayers;i++)     {         id=Players[i]                 if(get_pcvar_num(CS_Jetpack)==0)         {             if(JetpackBools[id][0])             {                 JetpackBools[id][0]=false                 client_print(id,print_chat,"[Jetpack] Jetpacks have been disabled.")             }         }                 if(JetpackBools[id][1])//If jetpack is on and jetpack key is being pressed.         {                 effect_fly(id)                         if(!(pev(id,pev_flags)&FL_ONGROUND))//If the jetpacker is off the ground already             {                     pev(id,pev_velocity,Velocity)                                 pev(id,pev_angles,Angle)                 Angle[2]=0.0//Remove the Z value.                                 Button=pev(id,pev_button)                                 if(Button&IN_FORWARD)                 {                                                             angle_vector(Angle,ANGLEVECTOR_FORWARD,AngleVector)                                         NewVelocity[0]+=(AngleVector[0]*get_pcvar_float(CS_Jetpack_Accelerate))                     NewVelocity[1]+=(AngleVector[1]*get_pcvar_float(CS_Jetpack_Accelerate))                 }                                 if(Button&IN_MOVERIGHT)                 {                         angle_vector(Angle,ANGLEVECTOR_RIGHT,AngleVector)                                         NewVelocity[0]+=(AngleVector[0]*get_pcvar_float(CS_Jetpack_Accelerate))                     NewVelocity[1]+=(AngleVector[1]*get_pcvar_float(CS_Jetpack_Accelerate))                 }                                 if(Button&IN_MOVELEFT)                 {                     angle_vector(Angle,ANGLEVECTOR_RIGHT,AngleVector)                                         NewVelocity[0]-=(AngleVector[0]*get_pcvar_float(CS_Jetpack_Accelerate))                     NewVelocity[1]-=(AngleVector[1]*get_pcvar_float(CS_Jetpack_Accelerate))                 }                                 if(Button&IN_BACK)                 {                     angle_vector(Angle,ANGLEVECTOR_FORWARD,AngleVector)                                         NewVelocity[0]-=(AngleVector[0]*get_pcvar_float(CS_Jetpack_Accelerate))                     NewVelocity[1]-=(AngleVector[1]*get_pcvar_float(CS_Jetpack_Accelerate))                 }                                 CheckAndScale(Velocity,NewVelocity)                                 if(Velocity[2]<0.0)//Jetpacks get more power on the way down -- it helps landing.                 {                     Velocity[2]+=(get_pcvar_float(CS_Jetpack_UAccelerate)*1.15)                 }                 else if(Velocity[2]<get_pcvar_float(CS_Jetpack_UpSpeed))                 {                     Velocity[2]+=get_pcvar_float(CS_Jetpack_UAccelerate)                 }                                 set_pev(id,pev_velocity,Velocity)             }                         switch(get_pcvar_num(CS_Jetpack_FuelMode))             {                 case 1:                 {                     CheckFuel(id)                                         JetpackHUD(id)                                         JetpackFuel[id]-=floatround(150*get_pcvar_float(CS_Jetpack_DepletionRate))                 }                 case 2:                 {                     JetpackFuel[id]-=floatround(5000*get_pcvar_float(CS_Jetpack_DepletionRate))                                         CheckFuelP(id)                                         JetpackHUDP(id)                 }                 default:                 {                     set_hudmessage(0,175,0,-1.5,0.95,2,0.0,0.1,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))                     show_hudmessage(id,"")                 }             }                         JetpackBools[id][1]=false         }         else if(JetpackBools[id][0])//Idle jetpack.         {                 switch(get_pcvar_num(CS_Jetpack_FuelMode))             {                 case 1:                 {                     CheckFuel(id)                                         JetpackHUD(id)                                         if(get_pcvar_num(CS_Jetpack_IdleDeplete)&&!Disabled)                         JetpackFuel[id]-=floatround(20*get_pcvar_float(CS_Jetpack_DepletionRate))                 }                 case 2:                 {                     CheckFuelP(id)                                         JetpackHUDP(id)                                         JetpackFuel[id]+=floatround(1000*get_pcvar_float(CS_Jetpack_RegenRate))                                         if(JetpackFuel[id]>99999)                         JetpackFuel[id]=99999                 }                 default:                 {                     set_hudmessage(0,175,0,-1.5,0.95,2,0.0,0.1,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))                     show_hudmessage(id,"")                 }             }                         effect_idle(id)//Idle Jetpack Effect         }         else         {             set_hudmessage(0,175,0,-1.5,0.95,2,0.0,0.1,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))             show_hudmessage(id,"")         }     }     return PLUGIN_HANDLED } CheckAndScale(Float:Velocity[3],Float:NewVelocity[3]) {     new Float:Ratio         new Float:TempVelocity[3]     TempVelocity[0]=Velocity[0]+NewVelocity[0]     TempVelocity[1]=Velocity[1]+NewVelocity[1]         if(vector_length(TempVelocity)<get_pcvar_float(CS_Jetpack_ForwardSpeed))     {         Velocity[0]=TempVelocity[0]         Velocity[1]=TempVelocity[1]     }     else     {         Ratio=(get_pcvar_float(CS_Jetpack_ForwardSpeed)/vector_length(TempVelocity))         Velocity[0]*=Ratio         Velocity[1]*=Ratio     } } JetpackHUD(id) {     if(JetpackFuel[id]>10000)         set_hudmessage(255,255,255,-1.0,0.92,0,0.0,10.0,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))     else         set_hudmessage(255,0,0,-1.0,0.92,0,0.0,10.0,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))             show_hudmessage(id,"Fuel: %d",(JetpackFuel[id]/1000)+1) } JetpackHUDP(id) {     if(JetpackFuel[id]>10000)         set_hudmessage(255,255,255,-1.0,0.92,0,0.0,10.0,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))     else         set_hudmessage(255,0,0,-1.0,0.92,0,0.0,10.0,0.0,0.0,get_pcvar_num(CS_Jetpack_HudChannel))         if(JetpackFuel[id]>0)         show_hudmessage(id,"Fuel: %d%",(JetpackFuel[id]/1000)+1)     else         show_hudmessage(id,"Fuel: 0%") } CheckFuel(id) {     if(JetpackFuel[id]<1)     {         JetpackBools[id][0]=false         JetpackBools[id][1]=false         JetpackFuel[id]=0//Set to 0 in case it was slightly negative due to a high depletion rate.         client_print(id,print_chat,"[Jetpack] Your jetpack is out of fuel!")     } } CheckFuelP(id) {     if(JetpackFuel[id]<5000)     {         JetpackBools[id][1]=false                 if(JetpackFuel[id]<1)             JetpackFuel[id]=0//Set to 0 in case it was slightly negative due to a high depletion rate.     } } effect_fly(id) {     new Origin[3]     get_user_origin(id,Origin)         //effect_smoke(Origin)     //effect_smoke(Origin)     //effect_smoke(Origin)     effect_spark(Origin) } effect_smoke(Origin[3]) {     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)     write_byte(TE_SPRITE)     write_coord(Origin[0]+random_num(-15,15))     write_coord(Origin[1]+random_num(-15,15))     write_coord(Origin[2]-60+random_num(-10,10))     write_short(smoke)     write_byte(10)     write_byte(115)     message_end() } effect_spark(Origin[3]) {     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)     write_byte(TE_SPARKS)     write_coord(Origin[0])     write_coord(Origin[1])     write_coord(Origin[2]-50)     message_end() } effect_idle(id) {         static Origin[3]     get_user_origin(id,Origin)         message_begin(MSG_BROADCAST,SVC_TEMPENTITY)     write_byte(TE_SPRITE)     write_coord(Origin[0]+random_num(-25,25))     write_coord(Origin[1]+random_num(-25,25))     write_coord(Origin[2]-35+random_num(0,15))     write_short(smoke)     write_byte(10)     write_byte(115)     message_end() } effect_explosion(id) {     static Origin[3]     get_user_origin(id,Origin,0)         message_begin(MSG_BROADCAST,SVC_TEMPENTITY)     write_byte(TE_EXPLOSION2)     write_coord(Origin[0]) //coord, coord, coord (start)     write_coord(Origin[1])     write_coord(Origin[2])     write_byte(200) // byte (scale in 0.1's) 188     write_byte(10) // byte (framerate)     message_end()     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)     write_byte(3)     write_coord(Origin[0]) //coord, coord, coord (start)     write_coord(Origin[1])     write_coord(Origin[2])     write_short(explosion)     write_byte(60)     write_byte(10)     write_byte(0)     message_end() } CreateDeathMessage(victim,attacker) {     message_begin(MSG_ALL,MSG_DEATH)     write_byte(attacker)     write_byte(victim)     write_byte(0)     write_string("Jetpack Explosion")     message_end() } bool:IsGrenade(inflictor) {     new bool:Grenade     static class[8]     pev(inflictor,pev_classname,class,7)         if(equal(class,"grenade"))         Grenade=true         return Grenade } bool:SameTeam(id,otherid) {     if(get_pdata_int(id,114)==get_pdata_int(otherid,114))         return true         return false } AddPoints(id,Amount) {     ExecuteHam(Ham_AddPoints,id,Amount,true) } AddDeaths(id,Amount) {     set_pdata_int(id,444,get_pdata_int(id,444)+Amount) } DealJetpackDamage(victim,attacker,Float:damage) {     ExecuteHam(Ham_TakeDamage,victim,attacker,attacker,damage,(1<<6)+(1<<13)) }
platzpatrone is offline