From 4cffafbe6f79daae156ded788acf30c1a6e591a4 Mon Sep 17 00:00:00 2001 From: Niko <124378025+happy1063@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:41:24 +0300 Subject: [PATCH] Create ball.txt --- ball.txt | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 ball.txt diff --git a/ball.txt b/ball.txt new file mode 100644 index 0000000..a26c6b8 --- /dev/null +++ b/ball.txt @@ -0,0 +1,123 @@ +--@name baallssssssssssssssssssss +--@author +--@shared + +if SERVER then +local main = prop.create(chip():getPos() + Vector(0,0,20),Angle() , "models/hunter/misc/sphere075x075.mdl",true) +main:setMass(20000) +main:setMaterial("models/props_pipes/pipesystem01a_skin2") +main:getPhysicsObject():setMaterial("gmod_silent") +main:enableSphere(true, 37.5/2) +main:getPhysicsObject():addGameFlags(FVPHYSICS.DMG_DISSOLVE) +local chair = prop.createSent(chip():getPos() + chip():getUp() * 10, Angle(), "Chair_Plastic", true) +local podc = prop.createSent(chip():getPos(), Angle(), "gmod_wire_pod", true) +local pod= podc:getWirelink() +local mass = main:getMass() +podc:setNocollideAll(true) +podc:setNoDraw(true) +main:enableDrag(false) + +pod["Vehicle"]=chair +pod["Hide Player"]=1 + +chair:setNoDraw(true) +chair:setNocollideAll(true) +local first = chair:getPos() +local hud = prop.createComponent(chip():getPos(), Angle(0) , "starfall_hud", "models/bull/dynamicbuttonsf.mdl", true) +hud:linkComponent(chip()) +hud:linkComponent(chair) +hud:setNoDraw(true) +hud:setNocollideAll(true) +chip():setPos(Vector(0)) +chip():setNoDraw(true) +local driver + +local function set_driver(ply, vehicle, role) + if vehicle ~= chair then return end + driver = role and ply + main:setFrozen(not isValid(driver)) +end + +local function onground(ent) + return trace.line(ent:getPos(),ent:getPos()-Vector(0,0,40),function() return false end).Hit +end + +hook.add("PlayerEnteredVehicle", "SetDriver", set_driver) +hook.add("PlayerLeaveVehicle", "SetDriver", set_driver) + +hook.add("ClientInitialized","load",function(ply) + net.start("load") + net.writeEntity(main) + net.send(ply) +end) + +hook.add("tick","",function() + chair:setPos(main:getPos()+Vector(0,0,10)) + chair:setAngles(Angle(0)) + chair:setFrozen(true) + main:setNocollideAll(false) + if driver and onground(main) then + if driver:keyDown(IN_KEY.FORWARD) then + main:applyAngForce(Angle(12*mass,0,0)) + main:applyForceCenter(Vector(6*mass,0,0):getRotated(Angle(0,driver:getEyeAngles()[2],0))) + end + if driver:keyDown(IN_KEY.BACK) then + main:applyAngForce(Angle(-12*mass,0,0)) + main:applyForceCenter(Vector(-6*mass,0,0):getRotated(Angle(0,driver:getEyeAngles()[2],0))) + end + if driver:keyDown(IN_KEY.MOVELEFT) then + main:applyAngForce(Angle(12*mass,90,0)) + main:applyForceCenter(Vector(0,6*mass,0):getRotated(Angle(0,driver:getEyeAngles()[2],0))) + end + if driver:keyDown(IN_KEY.MOVERIGHT) then + main:applyAngForce(Angle(12*mass,-90,0)) + main:applyForceCenter(Vector(0,-6*mass,0):getRotated(Angle(0,driver:getEyeAngles()[2],0))) + end + if driver:keyDown(IN_KEY.JUMP) then + main:applyForceCenter(Vector(0,0,106*mass):getRotated(Angle(0,driver:getEyeAngles()[2],0))) + end + if driver:keyDown(IN_KEY.SPEED) then + local force = -main:getVelocity()/3*mass + main:applyForceCenter(Vector(force[1],force[2])) + main:applyAngForce(-main:getAngleVelocityAngle()/2*mass) + end + end +end) + +hook.add("EntityTakeDamage","",function(ent) + if ent == main then + return true + end +end) + +end +if CLIENT then + net.receive("load",function() + net.readEntity(function(ent) + main(ent) + end) + end) + function main(ent) + local font = render.createFont("Arial",72,400,false,true,false,true) + hook.add("drawhud","",function() + local pos1 = ent:getPos():toScreen() + local x1,y1=pos1.x,pos1.y + local vel = ent:getVelocity() + local tr = trace.line(ent:getPos(),ent:getPos()+Vector(vel[1],vel[2],0)*10,function() return false end) + local pos2 = tr.HitPos:toScreen() + local x2,y2=pos2.x,pos2.y + render.setColor(Color(255,0,0)) + render.drawLine(x1,y1,x2,y2) + render.setColor(Color(104,104,104)) + render.drawRoundedBox(10,1600,800,300,100) + render.setColor(Color(255,255,255)) + local speed = ent:getVelocity():getLength() * 0.01905 * 3.6 + render.setFont(font) + render.drawSimpleText(1750,850,tostring(math.ceil(speed)).." KM/H",1,1) + end) + hook.add("calcview","",function() + local tr = trace.line(ent:getPos(),ent:getPos()+Vector(-100,0,0):getRotated(eyeAngles()),function() return false end) + return {origin=tr.HitPos+Vector(9,0,0):getRotated(eyeAngles()),drawviewer=true} + end) + end +end