flachdrache Posted January 19, 2010 Posted January 19, 2010 I noticed that the tires of the leadwerks_monstertruck are called in a wrong order - assuming its left-left, right-right : vehicle_monstertruck.lua require("scripts/class") require("scripts/loop") require("scripts/math/math") local class=CreateClass(...) function class:CreateObject(model) local object=self.super:CreateObject(model) function object:UpdateMatrix() self:UpdateTires() end function object:UpdateTires() local speed for n=0,3 do if self.tire[n]~=nil then self.tire[n]:SetMatrix( self.vehicle:GetTireMatrix(n) ) if self.emitter[n]~=nil then self.emitter[n]:SetMatrix(self.vehicle:GetTireMatrix(n)) self.emitter[n]:Pause() if self.vehicle:TireIsAirborne(n)==0 then speed = math.abs(self.model:GetVelocity(0).z) speed = (speed - 4) * 20.0 speed = Clamp( speed, 0, 1 ) * 0.5 if speed>0 then self.emitter[n]:Resume() self.emitter[n]:SetColorf(1,1,1,speed) end end end end end end local pivot local suspensionlength=0.1 local springconstant=25.0 local springdamper=115.0 object.vehicle=CreateVehicle(object.model) object.tire={} object.emitter={} pivot=object.model:FindChild("tireL1") if pivot~=nil then tireradius=pivot.aabb.h/2.0 object.vehicle:AddTire(TFormPoint(pivot.position,pivot.parent,model),tireradius,suspensionlength,springconstant,springdamper) object.tire[0]=LoadMesh("abstract::vehicle_monstertruck_tire_left.gmf",object.model) pivot:Hide() end pivot=object.model:FindChild("tireR1") if pivot~=nil then tireradius=pivot.aabb.h/2.0 object.vehicle:AddTire(TFormPoint(pivot.position,pivot.parent,model),tireradius,suspensionlength,springconstant,springdamper) object.tire[2]=LoadMesh("abstract::vehicle_monstertruck_tire_left.gmf",object.model) pivot:Hide() end pivot=object.model:FindChild("tireL2") if pivot~=nil then tireradius=pivot.aabb.h/2.0 object.vehicle:AddTire(TFormPoint(pivot.position,pivot.parent,model),tireradius,suspensionlength,springconstant,springdamper) object.tire[1]=LoadMesh("abstract::vehicle_monstertruck_tire_right.gmf",object.model) pivot:Hide() end pivot=object.model:FindChild("tireR2") if pivot~=nil then tireradius=pivot.aabb.h/2.0 object.vehicle:AddTire(TFormPoint(pivot.position,pivot.parent,model),tireradius,suspensionlength,springconstant,springdamper) object.tire[3]=LoadMesh("abstract::vehicle_monstertruck_tire_right.gmf",object.model) pivot:Hide() end object.emitter={} object:UpdateTires() if world_transparency~=nil then if world_main~=nil then SetWorld(world_transparency) for n=0,3 do if object.tire[n]~=nil then object.emitter[n]=CreateEmitter(50,2000,Vec3(0,1,0),0,object.tire[n]) object.emitter[n]:SetPosition(Vec3(0,-object.tire[n].aabb.h/2.0,0)) object.emitter[n]:SetParent(model,1) object.emitter[n]:SetRadius(1,6) object.emitter[n]:SetWaver(1.0) object.emitter[n]:Paint(LoadMaterial("abstract::roaddust.mat")) object.emitter[n]:SetRotationSpeed(0.1) object.emitter[n]:Pause() end end SetWorld(world_main) end end object.model.buoyant=0 object.model:SetKey("collisiontype",COLLISION_PROP) object.model:SetKey("mass",1.2) object:UpdateTires() end which makes the driver_Truck.lua : require("Scripts/constants/keycodes") require("Scripts/constants/collision_const") require("Scripts/linkedlist") require("Scripts/filesystem") require("scripts/math/math") require("scripts/constants/engine_const") FlushKeys() HideMouse() local camera = fw.main.camera chassis=LoadModel("abstract::vehicle_monstertruck.gmf") carobject=objecttable[chassis] truck=carobject.vehicle if truck==nil then Notify("Vehicle object not found.",1) chassis:Free() return end chassis:SetPosition(TFormPoint(Vec3(0,-1,15),fw.main.camera,nil)) chassis:SetRotationf(0,camera.rotation.y+180.0,0) --Variables local dx=0.0 local dy=0.0 local camerapitch=camera.rotation.x local camerayaw=camera.rotation.y local move=0.0 local strafe=0.0 local steering = 0.0 local torque = 0.0 local steerlimit = 30.0 local steerrate = 2.0 local steerangle=0.0 MoveMouse(Round(GraphicsWidth()/2),Round(GraphicsHeight()/2)) while KeyHit(KEY_ESCAPE)==0 do --Camera look gx=Round(GraphicsWidth()/2) gy=Round(GraphicsHeight()/2) dx=Curve((MouseX()-gx)/4.0,dx,3.0/AppSpeed()) dy=Curve((MouseY()-gy)/4.0,dy,3.0/AppSpeed()) MoveMouse(gx,gy) camerapitch=camerapitch+dy camerayaw=camerayaw-dx camerapitch=math.min(camerapitch,60) camerapitch=math.max(camerapitch,-10) fw.main.camera:SetRotationf(camerapitch,camerayaw,0,1) local tirespeed=-(KeyDown(KEY_W)-KeyDown(KEY_S))*2.0 truck:AddTireTorque(tirespeed,0) truck:AddTireTorque(tirespeed,1) truck:AddTireTorque(tirespeed,2) truck:AddTireTorque(tirespeed,3) steermode=0 if KeyDown(KEY_D)==1 then steermode=steermode-1 end if KeyDown(KEY_A)==1 then steermode=steermode+1 end if KeyDown(KEY_SPACE)==1 then chassis:SetPosition(chassis:GetPosition()) chassis:SetVelocity(Vec3(0)) end if steermode==1 then steerangle=steerangle+4.0*AppSpeed() elseif steermode==-1 then steerangle=steerangle-4.0*AppSpeed() else if steerangle>0 then steerangle=steerangle-4.0*AppSpeed() if steerangle<0.0 then steerangle=0.0 end else steerangle=steerangle+4.0*AppSpeed() if steerangle>0.0 then steerangle=0.0 end end end steerangle=Clamp(steerangle,-23,23) truck:SetSteerAngle(steerangle,0) truck:SetSteerAngle(steerangle,1) fw:Update() local campos=TFormPoint(Vec3(0,1,0),chassis,nil) fw.main.camera:SetPosition(campos) fw.main.camera:Move(Vec3(0,0,-10)) local t=TFormVector(Vec3(0,0,1),camera,chassis) a=-math.deg(math.atan2(t.x,t.z))+180.0 chassis:Hide() local pick = LinePick(campos,camera.position,0.5,COLLISION_PROP) chassis:Show() if pick~=nil then camera:SetPosition(pick.position) end fw:Render() Flip(0) end chassis:Free() chassis=nil camera=nil ShowMouse() PS: changed KEY_UP etc. to KEY_W etc. in this script. Quote AMD 64 X2 Dual 5k - 4GB - XFX GForce9800GT - nv196.21 - WinXP Sp3 zBrush4R2 - Silo2Pro - Unwrap3DPro - Gile - MaPZone2.5 Xxploration FPS in progress ...
ZeroByte Posted January 20, 2010 Posted January 20, 2010 Thank's for the info TLD, i knew something was mesed up in that script. I just suck with lua scripting, so i never fixed it. Quote Win 7 64, LE 2.31, Liquid Cooled I7-960 @ 4.00GHz, 6GB DDR3 Ram @ 1600mhz, BFG GTX295, Sound Blaster X-FI.
Marleys Ghost Posted January 20, 2010 Posted January 20, 2010 Yep, thanks for the share TLD I am sure that is going to come in handy Quote AMD Bulldozer FX-4 Quad Core 4100 Black Edition 2 x 4GB DDR3 1333Mhz Memory Gigabyte GeForce GTX 550 Ti OC 1024MB GDDR5 Windows 7 Home 64 bit BlitzMax 1.50 • Lua 5.1 • MaxGUI 1.41 • UU3D Pro • MessiahStudio Pro • Silo Pro 3D Coat • ShaderMap Pro • Hexagon 2 • Photoshop, Gimp & Paint.NET LE 2.5/3.4 • Skyline • UE4 • CE3 SDK • Unity 5 • Esenthel Engine 2.0 Marleys Ghost's YouTube Channel • Marleys Ghost's Blog "I used to be alive like you .... then I took an arrow to the head"
ZeroByte Posted January 22, 2010 Posted January 22, 2010 Since there is no LoadScript in c++ anymore, How could i get this to run in my c++ project? I'm using LEO with support for Lua, from example Lummoja posted. Just plain project with character controller. If i drag the monstertruck into my map, i see it's in there rolling around, but how do i load the "driver_truck.lua" script? Thank's for any tips.. Quote Win 7 64, LE 2.31, Liquid Cooled I7-960 @ 4.00GHz, 6GB DDR3 Ram @ 1600mhz, BFG GTX295, Sound Blaster X-FI.
VicToMeyeZR Posted January 22, 2010 Posted January 22, 2010 http://www.leadwerks.com/files/Tutorials/Lua/Getting_Started_With_Lua.pdf Page 21 talks about that Quote AMD Phenom II x6 1100T - 16GB RAM - ATI 5870 HD - OCZ Vertex 2 60GB SSD
ZeroByte Posted January 22, 2010 Posted January 22, 2010 Thank's for the link VicToMeyeZR, i have my project setup like that. I think i was confusing the "driver_truck.lua" script with the "vehicle_monstertruck.lua" script. Quote Win 7 64, LE 2.31, Liquid Cooled I7-960 @ 4.00GHz, 6GB DDR3 Ram @ 1600mhz, BFG GTX295, Sound Blaster X-FI.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.