--Code by Studentloon & edits by BlackNecro cabinetmodel = "models/props_c17/metalPot001a.mdl" cabcount = 0 balancepower = 950 hoveron = false hoverheight = 100 _EntPrecacheModel(cabinetmodel) cabinettable = _EntitiesFindByName("hoverengine") for cabs in cabinettable do cabcount = (cabcount + 1) end _PrintMessage(userid,HUD_PRINTTALK,cabcount) function getang(userid) cabcount = (cabcount + 1) _TraceLine(_PlayerGetShootPos(userid),_PlayerGetShootAng(userid),100,userid) cabinet = _EntCreate("prop_physics") _EntSetModel(cabinet, cabinetmodel) _EntSetPos(cabinet, _TraceEndPos()) _EntSpawn(cabinet) _EntSetMaterial( cabinet, "models/debug/debugwhite") _EntSetName(cabinet,"hoverengine") cabinettable[cabcount] = cabinet _PrintMessage(userid,HUD_PRINTTALK,cabcount .. " " .. cabinettable[cabcount]) end function bouncethink() if hoveron == true then for i = 1,cabcount do local tippage = _EntGetAngAngle(cabinettable[i]) if tippage.z >= 270 or 90 >= tippage.z then _TraceSetMask(MASK_ALL) local cabpos = _EntGetPos(cabinettable[i]) _TraceLine(cabpos,vector3(0,0,-1),hoverheight,cabinettable[i]) if _TraceHit() == true then _phys.ApplyForceCenter(cabinettable[i],vector3(0,0,(balancepower - (balancepower*_TraceFraction())))) end end end end end function ontrue(userid) hoveron = true _PrintMessage(userid,HUD_PRINTTALK,"Power On") end function onfalse(userid) hoveron = false _PrintMessage(userid,HUD_PRINTTALK,"Power Off") end function sethoverpower(userid, args) balancepower = args _PrintMessage(userid,HUD_PRINTCONSOLE,"Hoverenginepower is currently at: "..balancepower.."\n") end function sethoverheight(userid, args) hoverheight = args _PrintMessage(userid,HUD_PRINTCONSOLE,"Hoverheight is currently at: "..hoverheight.."\n") end function printcabcount(userid) _PrintMessage(userid,HUD_PRINTTALK,"Active Hoverengines: "..cabcount.." ") end function resethovers(userid) cabcount = 0 for cabs in cabinettable do _EntRemove(cabinettable[cabs]) end _PrintMessage(userid,HUD_PRINTTALK,"All hoverengines were disabled permanent") _PrintMessage(userid,HUD_PRINTCONSOLE,"All hoverengines were disabled permanent") end function removehover(userid) _EntRemove(cabinettable[cabcount]) cabcount = (cabcount-1) _PrintMessage(userid,HUD_PRINTTALK,"Last hoverengine was disabled permanently " ..cabcount.. " left") _PrintMessage(userid,HUD_PRINTCONSOLE,"Last hoverengines were disabled permanent "..cabcount.." left ") end function hoverremoved(player,ent) local sog = false for cabs in cabinettable do if cabinettable[cabs] == ent then table.remove(cabinettable,cabs) _PrintMessage(player,HUD_PRINTTALK,"You deleted a hoverengine") cabcount = (cabcount - 1) end end end HookEvent("onPlayerRemove",hoverremoved) AddThinkFunction(bouncethink) CONCOMMAND("spawnhover",getang) CONCOMMAND("ontrue",ontrue) CONCOMMAND("onfalse",onfalse) CONCOMMAND("sethoverpower",sethoverpower) CONCOMMAND("sethoverheight",sethoverheight) CONCOMMAND("resethovers",resethovers) CONCOMMAND("disablehover",removehover) CONCOMMAND("showhovercount",printcabcount)