// Race—p val{ steerl(default=180,min=150,max=210,step=5,disp=0) steerr(default=180,min=150,max=210,step=5,disp=0) brkfl(default=0,min=0,max=1000,step=10,disp=0) brkfr(default=0,min=0,max=1000,step=10,disp=0) brkrl(default=0,min=0,max=1000,step=10,disp=0) brkrr(default=0,min=0,max=1000,step=10,disp=0) pow (default=0,min=-10000,max=300000,step=1000000,disp=1) powfl(default=0,min=-40000,max=2000000,step=0,disp=1) powfr(default=0,min=-40000,max=2000000,step=0,disp=1) powrl(default=0,min=-20000,max=1000000,step=0,disp=1) powrr(default=0,min=-20000,max=1000000,step=0,disp=1) trqfl(default=1,min=0,max=1,step=0,disp=1) trqfr(default=1,min=0,max=1,step=0,disp=1) trqrl(default=1,min=0,max=1,step=0,disp=1) trqrr(default=1,min=0,max=1,step=0,disp=1) dmpf(default=0.5,disp=0) sprf(default=0.5,disp=0) dmpr(default=0.5,disp=0) sprr(default=0.5,disp=0) dmp(default=0.5,disp=0) spr(default=0.5,disp=0) col(default=#99ccff,disp=0) } key{ 0:pow(step= 1100) 1:pow(step=-1000) 4:brkfl(step=50),brkfr(step=50),brkrl(step=50),brkrr(step=50) 5:pow(step= 1100) 6:pow(step=-1000) } body{ core(color=col){ n:frame(name=c_0,angle=0,spring=spr,damper=dmp,color=col){ w:trimf(spring=spr,damper=dmp,color=col){ w:frame(angle=-90,spring=spr,damper=dmp,color=col){ n:rudderf(angle=15,spring=sprf,damper=dmpf,color=col){ n:chip(angle=steerl,spring=spr,damper=dmp,color=col){ s:wheel(power=-powfl,brake=brkfl,effect=2.5,name=nwfl,spring=spr,damper=dmp,color=col){ } } n:trim(angle=80,spring=spr,damper=dmp,color=col){ } } s:rudderf(angle=-15,spring=sprr,damper=dmpr,color=col){ s:wheel(power=powrl,brake=brkrl,effect=3,name=nwrl,spring=spr,damper=dmp,color=col){ } s:rudder(angle=28,spring=spr,damper=dmp,color=col){ e:chip(angle=-100,spring=spr,damper=dmp,color=col){ } } } s:chip(angle=15,color=col){} } } e:trimf(spring=spr,damper=dmp,color=col){ e:frame(angle=-90,spring=spr,damper=dmp,color=col){ n:rudderf(angle=-15,spring=sprf,damper=dmpf,color=col){ n:chip(angle=steerr,spring=spr,damper=dmp,color=col){ s:wheel(power=powfr,brake=brkfr,effect=2.5,name=nwfr,spring=spr,damper=dmp,color=col){ } } n:trim(angle=-80,spring=spr,damper=dmp,color=col){ } } s:rudderf(angle=15,spring=sprr,damper=dmpr,color=col){ s:wheel(power=-powrr,brake=brkrr,effect=3,name=nwrr,spring=spr,damper=dmp,color=col){ } s:rudder(angle=-28,spring=spr,damper=dmp,color=col){ w:chip(angle=-100,spring=spr,damper=dmp,color=col){ } } } s:chip(angle=15,color=col){} } } } } } Lua{ tgn=0 tgx={} tgy={} tgz={} tgx[tgn]= 115.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 tgx[tgn]= 200.0; tgy[tgn]=67.0; tgz[tgn]=-147.2; tgn=tgn+1 tgx[tgn]= 262.2; tgy[tgn]=67.0; tgz[tgn]= -85.0; tgn=tgn+1 tgx[tgn]= 285.0; tgy[tgn]=67.0; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]= 262.2; tgy[tgn]=67.0; tgz[tgn]= 85.0; tgn=tgn+1 tgx[tgn]= 200.0; tgy[tgn]=67.0; tgz[tgn]= 147.2; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=67.0; tgz[tgn]= 170.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=67.0; tgz[tgn]= 170.0; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=67.0; tgz[tgn]= 170.0; tgn=tgn+1 tgx[tgn]=-200.0; tgy[tgn]=67.0; tgz[tgn]= 147.2; tgn=tgn+1 tgx[tgn]=-262.2; tgy[tgn]=67.0; tgz[tgn]= 85.0; tgn=tgn+1 tgx[tgn]=-285.0; tgy[tgn]=67.0; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]=-262.2; tgy[tgn]=67.0; tgz[tgn]= -85.0; tgn=tgn+1 tgx[tgn]=-200.0; tgy[tgn]=67.0; tgz[tgn]=-147.2; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 tgx[tgn]= 200.0; tgy[tgn]=67.0; tgz[tgn]=-147.2; tgn=tgn+1 tgx[tgn]= 262.2; tgy[tgn]=67.0; tgz[tgn]= -85.0; tgn=tgn+1 tgx[tgn]= 285.0; tgy[tgn]=67.0; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]= 262.2; tgy[tgn]=67.0; tgz[tgn]= 85.0; tgn=tgn+1 tgx[tgn]= 200.0; tgy[tgn]=67.0; tgz[tgn]= 147.2; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=67.0; tgz[tgn]= 170.0; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=44.4; tgz[tgn]= 123.0; tgn=tgn+1 tgx[tgn]=-176.5; tgy[tgn]=44.4; tgz[tgn]= 106.5; tgn=tgn+1 tgx[tgn]=-221.5; tgy[tgn]=44.4; tgz[tgn]= 61.5; tgn=tgn+1 tgx[tgn]=-238.0; tgy[tgn]=44.4; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]=-221.5; tgy[tgn]=44.4; tgz[tgn]= -61.5; tgn=tgn+1 tgx[tgn]=-176.5; tgy[tgn]=44.4; tgz[tgn]=-106.5; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 176.5; tgy[tgn]=44.4; tgz[tgn]=-106.5; tgn=tgn+1 tgx[tgn]= 221.5; tgy[tgn]=44.4; tgz[tgn]= -61.5; tgn=tgn+1 tgx[tgn]= 238.0; tgy[tgn]=44.4; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]= 221.5; tgy[tgn]=44.4; tgz[tgn]= 61.5; tgn=tgn+1 tgx[tgn]= 176.5; tgy[tgn]=44.4; tgz[tgn]= 106.5; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=44.4; tgz[tgn]= 123.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=44.4; tgz[tgn]= 123.0; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=44.4; tgz[tgn]= 123.0; tgn=tgn+1 tgx[tgn]=-176.5; tgy[tgn]=44.4; tgz[tgn]= 106.5; tgn=tgn+1 tgx[tgn]=-221.5; tgy[tgn]=44.4; tgz[tgn]= 61.5; tgn=tgn+1 tgx[tgn]=-238.0; tgy[tgn]=44.4; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]=-221.5; tgy[tgn]=44.4; tgz[tgn]= -61.5; tgn=tgn+1 tgx[tgn]=-176.5; tgy[tgn]=44.4; tgz[tgn]=-106.5; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=44.4; tgz[tgn]=-123.0; tgn=tgn+1 tgx[tgn]= 176.5; tgy[tgn]=44.4; tgz[tgn]=-106.5; tgn=tgn+1 tgx[tgn]= 221.5; tgy[tgn]=44.4; tgz[tgn]= -61.5; tgn=tgn+1 tgx[tgn]= 238.0; tgy[tgn]=44.4; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]= 221.5; tgy[tgn]=44.4; tgz[tgn]= 61.5; tgn=tgn+1 tgx[tgn]= 176.5; tgy[tgn]=44.4; tgz[tgn]= 106.5; tgn=tgn+1 tgx[tgn]= 115.0; tgy[tgn]=44.4; tgz[tgn]= 123.0; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=67.0; tgz[tgn]= 170.0; tgn=tgn+1 tgx[tgn]=-200.0; tgy[tgn]=67.0; tgz[tgn]= 147.2; tgn=tgn+1 tgx[tgn]=-262.2; tgy[tgn]=67.0; tgz[tgn]= 85.0; tgn=tgn+1 tgx[tgn]=-285.0; tgy[tgn]=67.0; tgz[tgn]= 0.0; tgn=tgn+1 tgx[tgn]=-262.2; tgy[tgn]=67.0; tgz[tgn]= -85.0; tgn=tgn+1 tgx[tgn]=-200.0; tgy[tgn]=67.0; tgz[tgn]=-147.2; tgn=tgn+1 tgx[tgn]=-115.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 tgx[tgn]= 0.0; tgy[tgn]=67.0; tgz[tgn]=-170.0; tgn=tgn+1 dst0=99999999 check=9999 CL_R,CL_G,CL_B=0,0,0 CC_R,CC_G,CC_B=1,2,3 -- COLOR CHANGE --------------------------------------------------------------- function col_change(r,g,b,rc,gc,bc) if(r==0) then rc=math.floor(math.random()*15)+1 elseif(r==255) then rc=-math.floor(math.random()*15)-1 end if(g==0) then gc=math.floor(math.random()*15)+1 elseif(g==255) then gc=-math.floor(math.random()*15)-1 end if(b==0) then bc=math.floor(math.random()*15)+1 elseif(b==255) then bc=-math.floor(math.random()*15)-1 end r=math.min(255,math.max(0,r+rc)) g=math.min(255,math.max(0,g+gc)) b=math.min(255,math.max(0,b+bc)) return r*65536+g*256+b,r,g,b,rc,gc,bc end -- GETWVEC -------------------------------------------------------------------- function getwvec(lx,ly,lz,cn) local wx=_XX(cn)*lx+_YX(cn)*ly+_ZX(cn)*lz local wy=_XY(cn)*lx+_YY(cn)*ly+_ZY(cn)*lz local wz=_XZ(cn)*lx+_YZ(cn)*ly+_ZZ(cn)*lz return wx,wy,wz end -- GETLVEC -------------------------------------------------------------------- function getlvec(wx,wy,wz,cn) local lx=_XX(cn)*wx+_XY(cn)*wy+_XZ(cn)*wz local ly=_YX(cn)*wx+_YY(cn)*wy+_YZ(cn)*wz local lz=_ZX(cn)*wx+_ZY(cn)*wy+_ZZ(cn)*wz return lx,ly,lz end ------------------------------------------------------------------------------- function main() local t if(_KEY(14)>0) then t=_SPLIT(C_0) end local vel=-_VZ(C_0) local sp=math.sqrt(_VX(C_0)^2+_VY(C_0)^2+_VZ(C_0)^2)*3.6 local wfl=-_WY(NWFL) local wfr= _WY(NWFR) local wrl= _WY(NWRL) local wrr=-_WY(NWRR) if(_KEYDOWN(7)>0) then if(check==9999) then check=0 else check=9999 end end if(check~=9999) then local lx,ly,lz,dst while true do lx=tgx[check]-_X(C_0) ly=tgy[check]-_Y(C_0) lz=tgz[check]-_Z(C_0) dst=math.sqrt(lx^2+ly^2+lz^2) if(dst-1)and(vel<1) then if(vel>=0) then vel=1 else vel=-1 end end local rfl=wfl/vel local rfr=wfr/vel local rrl=wrl/vel local rrr=wrr/vel -- STEERING t=math.min(5,32/math.sqrt(math.abs(vel))) if(_KEY(2)>0) then STEERL=STEERL+t STEERR=STEERR-t end if(_KEY(3)>0) then STEERL=STEERL-t STEERR=STEERR+t end if(_KEY(5)>0) then STEERL=math.min(192,math.max(168,STEERL)) STEERR=math.min(192,math.max(168,STEERR)) end -- ABS if(_KEY(4)~=0) then local v=math.abs(vel)*0.3 if(rfl<2) then BRKFL=BRKFL*0.1 else BRKFL=BRKFL+v end if(rfr<2) then BRKFR=BRKFR*0.1 else BRKFR=BRKFR+v end if(rrl<2) then BRKRL=BRKRL*0.1 else BRKRL=BRKRL+v end if(rrr<2) then BRKRR=BRKRR*0.1 else BRKRR=BRKRR+v end BRKFL=BRKFL*0.5 BRKFR=BRKFR*0.5 end -- TRC t=5 if(sp>20)and((rfl>t)or(rfr>t)or(rrl>t)or(rrr>t)) then TRQFL=TRQFL*0.9 TRQFR=TRQFR*0.9 TRQRL=TRQRL*0.9 TRQRR=TRQRR*0.9 elseif(sp>20)and((rfl<-1)or(rfr<-1)or(rrl<-1)or(rrr<-1)) then TRQFL,TRQFR,TRQRL,TRQRR=0,0,0,0 elseif(_H(NWFL)>1.8)or(_H(NWFR)>1.8)or(_H(NWRL)>1.8)or(_H(NWRR)>1.8) then TRQFL,TRQFR,TRQRL,TRQRR=0,0,0,0 elseif(_H(NWFL)<0)or(_H(NWFR)<0)or(_H(NWRL)<0)or(_H(NWRR)<0) then TRQFL,TRQFR,TRQRL,TRQRR=0,0,0,0 else TRQFL=TRQFL+0.05 TRQFR=TRQFR+0.05 TRQRL=TRQRL+0.05 TRQRR=TRQRR+0.05 end -- POWCAL if(_KEY(0)>0)or(_KEY(1)>0) then POW=math.min(20000,math.max(-20000,POW)) end if(_KEY(5)>0)and(_H(NWFL)<0.35)and(_H(NWFR)<0.35) then POW=POW*(1+sp/400) end POWFL=POW*TRQFL*1.2 POWFR=POW*TRQFR*1.2 POWRL=POW*TRQRL POWRR=POW*TRQRR -- COLOR COL,CL_R,CL_G,CL_B,CC_R,CC_G,CC_B=col_change(CL_R,CL_G,CL_B,CC_R,CC_G,CC_B) out(0,string.format("FPS=%.2f, Chips=%d, Weight=%.2f[kg]",_FPS(),_CHIPS(),_WEIGHT())) out(1,string.format("Speed=%.2f[km/h], Vz=%.2f[m/s]",sp,vel)) out(2,string.format("F-Speed=%.2f[km/h], Vz=%.2f[m/s]",sp*_FPS()/30,vel*_FPS()/30)) out(3,"X=",_X(C_0),", Y=",_Y(C_0),", Z=",_Z(C_0)) -- out(4,"WFL=",wfl,", WFR=",wfr,", WRL=",wrl,", WRR=",wrr) -- out(5,"RFL=",rfl,", RFR=",rfr,", RRL=",rrl,", RRR=",rrr) end }