// [RCD] FIAT500 ルパン三世風味 Val { ACCEL(default=0, min=100, max=100, step=10) BALOON(default=0, max=8000, step=10, disp=0) BRAKE(default=0, max=100, step=100) CHAIRANGLE(default=180, min=-180, max=180, disp=0) CHAIRANGLE2(default=180, min=-180, max=180, disp=0) CHAIRANGLE3(default=180, min=-180, max=180, disp=0) DAMPERSPRING(default=1, max=1, disp=0) ENGINE(default=0, min=-5000000, max=5000000, step=5000000) FBRAKE(default=0, max=1000, step=100, disp=0) HANDLE(default=0, min=-20, max=20, step=2) HBRAKE(default=0, max=100, step=100) JETENGINE(default=0, min=-10000000, max=10000000, step=10000000, disp=0) POWERFW(default=0, min=-30000, max=2500, step=500, disp=0) POWERRW(default=0, min=-30000, max=2500, step=500, disp=0) RBRAKE(default=0, max=1000, step=100, disp=0) TCSFW(default=0, max=90, disp=0) TCSRW(default=0, max=90, disp=0) } Key { 2:HANDLE(step=-1) 3:HANDLE(step=1) 4:BRAKE(step=10) 5:ACCEL(step=10) 6:HBRAKE(step=10) 8:ACCEL(step=-10) } Body { Core() { N:Frame(dumper=1, name=CHAF) { // カウル(FIAT500) N:Frame(dumper=1) { N:Cowl(color=#57645b, angle=-40) { N:Cowl(color=#faeec8, angle=-80, effect=#00FB) { N:Cowl(color=#faeec8, angle=-50) { N:Cowl(option=1, angle=40) { N:Cowl(color=#faeec8, angle=-45) { N:Cowl(color=#faeec8, angle=0) { E:Cowl(color=#faeec8, angle=-5) { E:Cowl(option=1, angle=-70) { E:Cowl(color=#faeec8, angle=-10) { E:Cowl(color=#faeec8, angle=-60) { S:Cowl(color=#faeec8) { E:Cowl(angle=-35) { N:Cowl() { E:Cowl() { } } S:Cowl(angle=-5) { E:Cowl() { S:Cowl(angle=-20) { } } S:Cowl(angle=-20) { } } } S:Cowl(angle=-70) { } } } W:Cowl(angle=-10) { } S:Cowl() { } N:Cowl(angle=60) { W:Cowl(angle=-90) { W:Cowl() { S:Cowl(angle=-30) { } } S:Cowl(angle=-30) { } } N:Cowl(angle=-60) { N:Cowl(angle=-60) { N:Cowl(angle=-30) { } W:Cowl(angle=-90) { } } W:Cowl(angle=-90) { } } } } } N:Cowl() { N:Cowl(angle=-45, effect=#00FB) { N:Cowl(angle=-30) { N:Cowl() { E:Cowl(angle=-15) { } } } } E:Cowl(angle=-70) { N:Cowl(angle=0) { W:Cowl(angle=-70) { N:Cowl(angle=-90) { N:Cowl() { } } } N:Cowl(angle=-90) { } } } } } W:Cowl(color=#faeec8, angle=-5) { W:Cowl(option=1, angle=-70) { W:Cowl(color=#faeec8, angle=-10) { W:Cowl(color=#faeec8, angle=-60) { S:Cowl(color=#faeec8) { W:Cowl(angle=-35) { } S:Cowl(angle=-70) { } } } S:Cowl(color=#faeec8) { } E:Cowl(angle=-10) { } N:Cowl(angle=60) { E:Cowl(angle=-90) { E:Cowl() { S:Cowl(angle=-30) { } } S:Cowl(angle=-30) { } } N:Cowl(angle=-60) { N:Cowl(angle=-60) { N:Cowl(angle=-30) { } E:Cowl(angle=-90) { } } E:Cowl(angle=-90) { } } } } } N:Cowl() { N:Cowl(angle=-45, effect=#00FB) { N:Cowl(angle=-30) { N:Cowl() { W:Cowl(angle=-15) { } } } } W:Cowl(angle=-70) { N:Cowl() { E:Cowl(angle=-70) { N:Cowl(angle=-90) { N:Cowl() { } } } N:Cowl(angle=-90) { } } } } } N:Cowl() { N:Cowl(angle=-45, effect=#00FB) { N:Cowl(angle=-30) { N:Cowl() { N:Cowl(angle=-100) { } } } } N:Cowl() { N:Cowl(angle=-90) { N:Cowl() { } } } } } E:Cowl(color=#faeec8, angle=-5) { E:Cowl(option=1, angle=-70) { } } W:Cowl(color=#faeec8, angle=-5) { W:Cowl(option=1, angle=-70) { } } } E:Cowl(angle=-5, option=1) { E:Cowl(angle=-90, option=3) { } } W:Cowl(option=1, angle=-5) { W:Cowl(angle=-90, option=4) { } } } E:Cowl(color=#faeec8, angle=-5) { E:Cowl(angle=-70) { N:Cowl() { W:Cowl(angle=-120) { W:Cowl(angle=-45) { N:Cowl(angle=-90) { } } } } } N:Cowl(angle=-90) { N:Cowl(angle=30) { } } } W:Cowl(color=#faeec8, angle=-5) { W:Cowl(angle=-70) { N:Cowl() { E:Cowl(angle=-120) { E:Cowl(angle=-45) { N:Cowl(angle=-90) { } } } } } N:Cowl(angle=-90) { N:Cowl(angle=30) { } } } N:Cowl(angle=-90) { N:Cowl(angle=30) { } } } E:Cowl(color=#faeec8, angle=-5) { E:Cowl(angle=-70) { } } W:Cowl(color=#faeec8, angle=-5) { W:Cowl(angle=-70) { } } } E:Cowl(color=#57645b, angle=-5) { } W:Cowl(color=#57645b, angle=-5) { } } E:Frame(dumper=0.4, spring=0.5) { E:RudderF(angle=HANDLE, dumper=0.5, spring=0.5, option=1) { W:Wheel(angle=-90, brake=BRAKE, option=1, effect=1, name=WFR) { } } } W:Frame(dumper=0.4, spring=0.5) { W:RudderF(angle=HANDLE, dumper=0.5, spring=0.5, option=1) { E:Wheel(angle=-90, brake=BRAKE, option=1, effect=1, name=WFL) { } } } N:Cowl(angle=-165) { E:Cowl() { } W:Cowl() { } } E:Cowl() { W:Cowl() { W:Cowl() { } } } } } S:Frame(dumper=1, name=CHAR) { S:Frame(dumper=1) { E:Frame(dumper=0.5, spring=0.7) { E:Wheel(power=POWERRW, brake=RBRAKE, angle=-90, option=1, effect=10, name=WRR) { } } W:Frame(dumper=0.5, spring=0.7) { W:Wheel(power=-POWERRW, brake=RBRAKE, angle=-90, option=1, effect=10, name=WRL) { } } S:Cowl(angle=180, dumper=1, color=#535353) { N:Cowl(angle=60) { N:Cowl(angle=45) { } } } N:Cowl(angle=-160) { E:Cowl() { } W:Cowl() { } } } E:Cowl(angle=-75, dumper=1) { E:Cowl(angle=45) { N:Cowl(angle=45) { } } N:Cowl(angle=45) { } S:Cowl() { S:Cowl(angle=-90) { } } } W:Cowl(angle=-75, dumper=1) { W:Cowl(angle=45) { N:Cowl(angle=45) { } } N:Cowl(angle=45) { } S:Cowl() { S:Cowl(angle=-90) { } } } } N:Jet(angle=180, power=JETENGINE) { N:Cowl() { N:Cowl() { } } } S:Frame(angle=CHAIRANGLE2) { S:Frame(angle=CHAIRANGLE3, damper=DAMPERSPRING, spring=DAMPERSPRING) { S:Frame(angle=CHAIRANGLE3, damper=DAMPERSPRING, spring=DAMPERSPRING) { } } } E:Cowl(angle=CHAIRANGLE, option=1) { S:Cowl() { } } W:Cowl(angle=CHAIRANGLE, option=1) { } S:Cowl() { } E:Cowl() { } W:Cowl(option=1) { } W:Cowl() { } } } Lua { -- デバッグ用フラグ debug = false -- トグル制御用 tcsToggleStat = 0 absToggleStat = 0 turboToggleStat = 0 -- TCS -- 有効/無効 tcsFlag = true -- TCS動作スリップ係数 tcsBoundary = 2.20 -- ABS -- 有効/無効 absFlag = true -- ABS動作スリップ係数 absBoundary = 1.46 -- ルパンターボ -- 有効/無効 turboFlag = false -- ターボ係数 turbo = 3 -- 脱出装置 -- 使用済み判定フラグ escapedFlag = false balloonedFlag = false -- 情報取得用変数 -- スリップ係数 sliprw = 0 -- (デバッグ用)制動時間 stopTime = 0 -- 表示用変数 outLine = 0 -- 点滅用変数 blink = 0 -- 一時格納 display = "" debugdisplay = "" function main() -- ******** トグル制御 -- TCS if (_KEY(14) == 1 and _KEY(14) ~= tcsToggleStat) then tcsFlag = not tcsFlag end tcsToggleStat = _KEY(14) -- ABS if (_KEY(15) == 1 and _KEY(15) ~= absToggleStat) then absFlag = not absFlag end absToggleStat = _KEY(15) -- ルパンターボ if (_KEY(7) == 1 and _KEY(7) ~= turboToggleStat) then turboFlag = not turboFlag end turboToggleStat = _KEY(7) -- ******** 情報取得 slipfw = (math.abs(_WY(WFR)) / (math.abs(_VZ(0)) + 1) + math.abs(_WY(WFL)) / (math.abs(_VZ(0)) + 1)) / 2 sliprw = (math.abs(_WY(WRR)) / (math.abs(_VZ(0)) + 1) + math.abs(_WY(WRL)) / (math.abs(_VZ(0)) + 1)) / 2 -- ******** 動作系 -- アクセル制御 if (_KEY(5) == 1 or _KEY(8) == 1) then ENGINE = ENGINE - (500 * (ACCEL / 100)) end -- ブレーキ制御 if (_KEY(4) == 1) then FBRAKE = FBRAKE + (100 * (BRAKE / 100)) RBRAKE = RBRAKE + (100 * (BRAKE / 100)) end -- サイドブレーキ制御 if (_KEY(6) == 1) then RBRAKE = RBRAKE + (100 * (HBRAKE / 100)) end -- TCS if (tcsFlag) then if slipfw > tcsBoundary then TCSFW = TCSFW + 3 end if (slipfw < tcsBoundary and TCSFW > 9) then TCSFW = TCSFW - 9 end if (sliprw < tcsBoundary and TCSFW <= 9) or (ENGINE == 0) then TCSFW = 0 end if sliprw > tcsBoundary then TCSRW = TCSRW + 3 end if (sliprw < tcsBoundary and TCSRW > 9) then TCSRW = TCSRW - 9 end if (sliprw < tcsBoundary and TCSRW <= 9) or (ENGINE == 0) then TCSRW = 0 end -- ルパンターボ if (turboFlag) then POWERFW = ENGINE * turbo * ((100 - TCSFW) / 100) POWERRW = ENGINE * turbo * ((100 - TCSRW) / 100) else POWERFW = ENGINE * ((100 - TCSFW) / 100) POWERRW = ENGINE * ((100 - TCSRW) / 100) end else -- ルパンターボ if (turboFlag) then POWERFW = ENGINE * turbo POWERRW = ENGINE * turbo else POWERFW = ENGINE POWERRW = ENGINE end end -- ABS if (absFlag) then if (_KEY(4) == 1) then if(slipfw > 0.2 and slipfw < absBoundary) then FBRAKE = FBRAKE * 0.1 elseif(slipfw >= absBoundary) then FBRAKE = FBRAKE + math.abs(_VZ(0)) end if(sliprw > 0.2 and sliprw < absBoundary) then RBRAKE = RBRAKE * 0.1 elseif(sliprw >= absBoundary) then RBRAKE = RBRAKE + math.abs(_VZ(0)) end end end -- 脱出装置 if(_KEY(9) == 1 and escapedFlag == false) then CHAIRANGLE = 90 CHAIRANGLE2 = -90 CHAIRANGLE3 = 0 DAMPERSPRING = 0 JETENGINE = -100000000 _BYE(CHAF) _BYE(CHAR) escapedFlag = true end if(balloonedFlag == false and escapedFlag == true and JETENGINE == 0) then BALOON = 8000 balloonedFlag = true end -- ******** 表示系 -- 点滅処理 if(blink > 30) then blink = 0 else blink = blink + 1 end blink = blink + 1 -- 表示 outLine = 0 -- TCS if (tcsFlag) then if (TCSFW == 0 and TCSRW == 0) then display = "TCS [ O ]" elseif (blink < 15) then display = "TCS [ ! ]" else display = "TCS [ ]" end else display = "TCS [ ]" end display = display .. " | " -- ABS if (absFlag) then if(BRAKE == 0 or math.abs(_VZ(0)) < 0.2) then display = display .. "ABS [ O ]" elseif (blink < 15) then display = display .. "ABS [ ! ]" else display = display .. "ABS [ ]" end else display = display .. "ABS [ ]" end display = display .. " | " -- ルパンターボ if (turboFlag) then if(_KEY(5) == 0) then display = display .. "Lupin Turbo[ O ]" elseif (blink < 15) then display = display .. "Lupin Turbo[ ! ]" else display = display .. "Lupin Turbo[ ]" end else display = display .. "Lupin Turbo[ ]" end display = display .. " | " -- ルパン脱出装置 if(escapedFlag == false) then display = display .. "Lupin Escape[ O ]" else display = display .. "Lupin Escape[ ]" end out(outLine, display) -- デバッグ情報 if(debug) then outLine = outLine + 1 outLine = outLine + 1 out(outLine, "******** [ D E B U G ] ********") outLine = outLine + 1 out(outLine, "[DEBUG][TCS] Slip(REAR WHEEL) = ", sliprw) outLine = outLine + 1 out(outLine, "[DEBUG][TCS] Slip(FRONT WHEEL) = ", sliprw) outLine = outLine + 1 out(outLine, "[DEBUG][ABS] Core Speed = ", math.abs(_VZ(0))) outLine = outLine + 1 if (BRAKE > 0) then if (math.abs(_VZ(0)) > 0.1) then stopTime = stopTime + 1 end else stopTime = 0 end out(outLine, "[DEBUG][ABS] Time to Stop = ", stopTime) outLine = outLine + 1 out(outLine, "[DEBUG][ABS] _KEY(9) = ", _KEY(9)) end end }