繁體
|
簡體
Sclub交友聊天~加入聊天室當版主
(檢舉)
分享
新浪微博
QQ空间
人人网
腾讯微博
Facebook
Google+
Plurk
Twitter
Line
標題:
[OMSI] AI中門教學
[打印本頁]
作者:
HU8370
時間:
2015-6-15 20:00
標題:
[OMSI] AI中門教學
以下為FF3170的教學:
自駕車嘅門script喺AI模式下,中門會關得好慢(準確地說,係不斷開關,所以門掣會不停扭動),表示"doorTarget_23"呢個variable不停被0、1、0、1、0...咁set法--"doorTarget_23"嘅用處,就係話畀{macrdoor2_Calc}同{macrdoor3_Calc}呢兩個macro知,到底中門係要開定係要關。所以當"doorTarget_23"不斷遊走於0同1之間,中門就會不斷開關。
即係話,{macrdooo2_Calc}同{macrdoor3_Calc}入面嘅嘢,唔係中門不斷開關嘅基本原因,問題嘅根源在於設定"doorTarget_23"嘅數值嘅script。而由於問題只會喺AI模式下出現,出問題嘅script入面一定有同AI有關嘅variable,所以範圍就收窄到同"AI"&"doorTarget_23"有關嘅script。
閞door_modern_kacha.osc,搵"L.L.AI"就會搵到:
'----------------------
' AI-Ablauf:
(L.L.AI_Scheduled_AtStation) s0
1 =
{if}
'Wenn Türen geöffnet werden sollen:
(L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) <
{if}
'Nur, wenn v < maxkmh, sonst warten
'Taster jeweils nur betätigen, falls noch nicht an
(L.L.bremse_halte_sw) !
{if}
(M.L.trg_bus_dooraft)
{endif}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{else}
0 (S.L.door_AI_timer)
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{else}
l0 -1 =
{if}
'Wenn Türen geschlossen werden sollen:
'Taster jeweils nur betätigen, falls noch nicht aus:
(L.L.doorTarget_1)
{if}
(M.L.trg_bus_doorfront1)
0 (S.L.door_AI_timer)
{endif}
(L.L.doorTarget_0) (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
'Haltestellenbremse erst wegnehmen, wenn alle Türen zu. Dann auch erst den Bus AI-mäßig freigeben:
(L.L.door_0) 0.1 <
(L.L.door_1) 0.1 < &&
(L.L.door_2) 0.1 < &&
{if}
(L.L.bremse_halte_sw) (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_dooraft)
{endif}
(L.L.bremse_halte_sw) !
{if}
0 (S.L.AI_Scheduled_AtStation)
{endif}
{else}
'Sollte eine der Türen auf sein und die Haltestellenbremse aus, dann sofort diese einlegen
(L.L.bremse_halte_sw) !
{if}
(M.L.trg_bus_dooraft)
{endif}
(L.L.doorTarget_0) !
(L.L.doorTarget_1) ! &&
{if}
0 (S.L.door_AI_timer)
{endif}
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{endif}
{endif}
而問題就係出喺度。
先解釋一吓:當AI埋緊站,AI_Scheduled_AtStation就係1,準備出站就係-1,行緊就係0。所以要解決中門關門嘅問題,就係睇"l0 -1 ="之後嗰段。
可以見到當中門位置(L.L.door_2)唔係<0.1,就會run:
(L.L.bremse_halte_sw) !
{if}
(M.L.trg_bus_dooraft)
{endif}
(M.L.trg_bus_dooraft)即係run{macro:trg_bus_dooraft},{macro:trg_bus_dooraft}入面有:
(L.L.doorTarget_23) ! (S.L.doorTarget_23)
即係如果"doorTarget_23"係0就set佢做1,如果佢係1就set佢做0。由於"bremse_halte_sw"(即係原裝車嘅door lock)永遠係0(自駕車版VA已廢除door lock),所以就會不斷run{macro:trg_bus_dooraft},即係不斷將"doorTarget_23"0、1、0、1、0...咁set。
所以好明顯,要解決呢個中門不斷開關嘅問題,就要改run{macro:trg_bus_dooraft}嘅condition。
改咗之後:
'----------------------
' AI-Ablauf:
(L.L.AI_Scheduled_AtStation) s0
1 =
{if}
'Wenn Türen geöffnet werden sollen:
(L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) <
{if}
'Nur, wenn v < maxkmh, sonst warten
'Taster jeweils nur betätigen, falls noch nicht an
(L.L.doorTarget_23) ! (L.L.haltewunsch) &&
{if}
(M.L.trg_bus_dooraft)
{endif}
(L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
(L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > &&
{if}
(M.L.trg_bus_doorfront1)
{endif}
{else}
0 (S.L.door_AI_timer)
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{else}
l0 -1 =
{if}
'Wenn Türen geschlossen werden sollen:
'Taster jeweils nur betätigen, falls noch nicht aus:
(L.L.doorTarget_1)
{if}
(M.L.trg_bus_doorfront1)
0 (S.L.door_AI_timer)
{endif}
(L.L.doorTarget_0) (L.L.door_AI_timer) 0.3 > &&
{if}
(M.L.trg_bus_doorfront0)
{endif}
'Haltestellenbremse erst wegnehmen, wenn alle Türen zu. Dann auch erst den Bus AI-mäßig freigeben:
(L.L.door_0) 0.1 <
(L.L.door_1) 0.1 < &&
(L.L.door_2) 0.1 < &&
{if}
0 (S.L.AI_Scheduled_AtStation)
{else}
'Sollte eine der Türen auf sein und die Haltestellenbremse aus, dann sofort diese einlegen
(L.L.doorTarget_23)
{if}
(M.L.trg_bus_dooraft)
{endif}
(L.L.doorTarget_0) !
(L.L.doorTarget_1) ! &&
{if}
0 (S.L.door_AI_timer)
{endif}
{endif}
(L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
{endif}
{endif}
只係改咗三樣嘢:
1.將埋站時run{macro:trg_bus_dooraft}嘅condition由「door lock未開」改為「中門未開」&「有人打鐘」
2.將準備出站時run{macro:trg_bus_dooraft}嘅condition改成doorTarget_23嘅數值(即係如果中門仲係喺「開」模式就run{macro:trg_bus_dooraft},轉做「關」模式,之後就唔再重複)
3.將原本要關好門同埋door lock off先可以出站,改為關好門就可以出站
即係將車門開關同door lock完全獨立。
改完之後,無論係自駕車、自駕車轉AI定係AI巴,都可以用同一段script正常運作
希望大家睇得明
作者:
5180
時間:
2015-6-16 14:23
THX
作者:
5180
時間:
2015-6-23 12:29
呀SY8985又話出教學帖
作者:
HU8370
時間:
2015-6-23 23:53
==?
回復
3#
5180
作者:
PJ4660
時間:
2015-8-18 16:19
回復
3#
5180
幾時話出?
作者:
Rainyuen831
時間:
2015-8-20 01:23
THX THX THX THX
歡迎光臨 GY6588 x HU8370 Studio OMSI, 星之卡比討論區 (http://gx7824.youpost.info/)
Powered by Discuz! 7.2