I cannot figure this out, I need some help.
Code:
//-Unstable Gravity- Version ONE-X by OVERLOAD
//
//This program will generate a random point between two configureable numbers.
//The program will then gradually change the server gravity until it reaches this point.
//Once the program reaches the point, it will then wait a configureable ammount of seconds
//and generate a new point.
//
//Note: Gravity_Refresh_Time is the ammount of time (Seconds in 0.0) that it will delay in updating
//the server gravity. The lower the seconds in Gravity_Refresh_Time the more CPU it will take.
//
#include <amxmodx>
new Float:Gravity_Current = 800.0
new Float:Gravity_Refresh_Time
new Float:Gravity_Leveled_Time
new Float:Gravity_Change_Modifier
new Float:Gravity_Generate_Point
public plugin_init()
{
register_plugin("Unstable Gravity","ONE-X","OVERLOAD")
register_logevent("Gravity_Round_Start",2,"1=Round_Start")
register_srvcmd("Flux", "Pre_Generate") //Initiate One Run of Unstable Gravity
register_cvar("amx_gravon","1") //Unstable Gravity ON/OFF (1 = ON)
register_cvar("amx_gravmax","1000.0") //Maximum Gravity
register_cvar("amx_gravdef","800.0") //Default Gravity (800 is the Half-Life Default)
register_cvar("amx_gravmin","0.0") //Minimum Gravity
register_cvar("amx_gravrate","0.3") //The Speed At Which The Gravity Changes. (May Cause Server Instability if Too Low)
register_cvar("amx_gravstab","10.0") //Seconds Before Next Gravity Change
register_cvar("amx_gravloop","0") //Loop Gravity ON/OFF (1 = ON)
register_cvar("amx_gravround","0") //Run on Round Start ON/OFF (1 = ON)
register_cvar("amx_gravmess","1") //In Game Gravity Messages ON/OFF (1 = ON)
register_cvar("amx_gravsrvmsg","1") //Server Gravity Messages ON/OFF (1 = ON)
register_srvcmd("amx_gravhelp", "event_CvarHelp") //Server Help
return PLUGIN_CONTINUE
}
public event_CvarHelp()
{
server_print(" ")
server_print("[UsntGrav]__________________________ ____ ___ __ _ _")
server_print(" Unstable Gravity - Version One-X Written by OVERLOAD")
server_print(" ")
server_print("amx_gravon - Unstable Gravity ON/OFF (1 = ON)")
server_print("amx_gravmax - Maximum Ammount of Gravity")
server_print("amx_gravdef - You're Default Gravity ")
server_print("amx_gravmin - Minimum Ammount of Gravity")
server_print("amx_gravrate - The Speed At Which The Gravity Changes")
server_print("amx_gravstab - Seconds Before Next Gravity Change (Loop Mode)")
server_print("amx_gravloop - Gravity Loop Mode ON/OFF (1 = ON)")
server_print("amx_gravround - Round Start Mode ON/OFF (1 = ON)")
server_print("amx_gravmess - In Game Gravity Messages ON/OFF (1 = ON)")
server_print("amx_gravsrvmsg - Server Gravity Messages ON/OFF (1 = ON)")
server_print("Flux - Initiate One Run of Unstable Gravity")
server_print(" ")
server_print("Note: Setting gravrate too low will cause instability")
server_print("_______________________________________ ____ __ _")
return PLUGIN_CONTINUE
}
public Gravity_Round_Start()
{
Gravity_Current = get_cvar_float("amx_gravdef")
server_print("[UsntGrav]Round Start, Reset to Default Gravity, Generating Gravity...")
Pre_Generate()
return PLUGIN_CONTINUE
}
public Pre_Generate()
{
if(get_cvar_num("amx_gravon") == 0)
return PLUGIN_CONTINUE
remove_task(1)
remove_task(2)
Gravity_Refresh_Time = get_cvar_float("amx_gravrate")
Gravity_Leveled_Time = get_cvar_float("amx_gravstab")
Generate_Gravity()
return PLUGIN_CONTINUE
}
public Generate_Gravity()
{
Gravity_Generate_Point = random_float(get_cvar_float("amx_gravmin"),get_cvar_float("amx_gravmax"))
if(get_cvar_num("amx_gravsrvmsg") == 1)
server_print("[UsntGrav]Changing Gravity from %f to %f", Gravity_Current, Gravity_Generate_Point)
if(get_cvar_num("amx_gravmess") == 1)
{
set_hudmessage(255, 255, 255, 0.05, 0.65, 0, 0.0, 5.0, 0.0, 0.0, 180)
show_hudmessage(0,"Warning: Gravity Has Become Unstable!")
}
Gravity_AtoB()
return PLUGIN_CONTINUE
}
public Gravity_AtoB()
{
remove_task(2)
if(Gravity_Current == Gravity_Generate_Point)
{
if(get_cvar_num("amx_gravsrvmsg") == 1)
server_print("[UsntGrav]Gravity Changed to %f", Gravity_Current)
if(get_cvar_num("amx_gravmess") == 1)
{
set_hudmessage(255, 255, 255, 0.05, 0.65, 0, 0.0, 5.0, 0.0, 0.0, 180)
show_hudmessage(0,"Attention: Gravity Has Stabalized at %f", Gravity_Current)
}
set_task(Gravity_Leveled_Time,"Pre_Generate",1,"",0,"a", 0)
if(get_cvar_num("amx_gravloop") == 0)
remove_task(1)
return PLUGIN_CONTINUE
}
if(Gravity_Generate_Point < Gravity_Current) //Gravity Fall Check
Gravity_Fall()
if(Gravity_Generate_Point > Gravity_Current) //Gravity Rise Check
Gravity_Raise()
return PLUGIN_CONTINUE
}
public Gravity_Fall()
{
Gravity_Change_Modifier = Gravity_Current / Gravity_Generate_Point
Gravity_Change_Modifier = Gravity_Change_Modifier * 5
Gravity_Current = Gravity_Current - Gravity_Change_Modifier
set_task(Gravity_Refresh_Time,"Gravity_AtoB",2,"",0,"a", 1)
server_cmd("sv_gravity %f",Gravity_Current)
if(Gravity_Current < Gravity_Generate_Point)
Gravity_Current = Gravity_Generate_Point
return PLUGIN_CONTINUE
}
public Gravity_Raise()
{
Gravity_Change_Modifier = Gravity_Generate_Point / Gravity_Current
Gravity_Change_Modifier = Gravity_Change_Modifier * 5
Gravity_Current = Gravity_Current + Gravity_Change_Modifier
set_task(Gravity_Refresh_Time,"Gravity_AtoB",2,"",0,"a", 1)
server_cmd("sv_gravity %f",Gravity_Current)
if(Gravity_Current > Gravity_Generate_Point)
Gravity_Current = Gravity_Generate_Point
return PLUGIN_CONTINUE
}