TOPlist

[NÁVOD] Automatická výstraha pred zatvorením dverí

[NÁVOD] Automatická výstraha pred zatvorením dverí

Příspěvekod stefco » 05 srp 2013 14:47

Ahojte! Dnes som pripravil návod, ako naskriptovať automatickú výstrahu pred zatvorením dverí, ktorá bude fungovať podobne ako u MB O405N2.

Upravovať sa budú 3 súbory

..\OMSI\Vehicles\...\Script\door.osc resp. inak nazvaný skript dverí
..\OMSI\Vehicles\...\Script\door_varlist.txt resp. inak nazvaný súbor s premennými dverí
..\OMSI\Vehicles\...\Sound\____.cfg


Nezabudnite si ich zálohovať, ak by niečo nevyšlo.
---------------------------------------------------------------------
1. dopíšeme do súboru door_varlist.txt dve premenné pre každé dvere, ktorým chceme priradiť výstrahu pred zatvorením. Jednu pre odpočítanie času výstarhy a druhú pomocnú.

napr.

door_Warncounter
door_Warn


ak chceme výstrahu priradiť viacerým nezávislým dverám

door_Warncounter0
door_Warn0
door_Warncounter1
door_Warn1


atď.

---------------------------------------------------------------------
2. otvoríme súbor door.osc

nájdeme makro pre otvorenie daných dverí tak, že vyhľadáme nasledujúci odstavec alebo jemu podobné:

Kód: Vybrat vše
{trigger:bus_doorfront0}
   (L.L.elec_busbar_avail)
   {if}
      (M.L.trg_bus_doorfront0)
   {endif}
   1 (S.L.cockpit_tuertaster1)
{end}


{trigger:bus_doorfront0} - názov funkcie, ktorej je možné priradiť klávesu (bus_doorfront0 je štandartne priradené "Num/")
Podľa toho je možné zistiť, ktoré dvere sa otvoria.

zaujímať nás bude riadok (M.L.trg_bus_doorfront0)

vyhľadáme trg_bus_doorfront0 a mali by sme mať pred sebou tento odstavec:

Kód: Vybrat vše
{macro:trg_bus_doorfront0}

   (L.L.doorTarget_0) ! (S.L.doorTarget_0)
   {if}
      (T.L.ev_doortriggeropen_0)
   {else}
      (T.L.ev_doortriggerclose_0)
   {endif}
      (C.L.door_druckluft)
      {if}
      (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
      {endif}
{end}


a upravíme ho nasledovne

Kód: Vybrat vše
{macro:trg_bus_doorfront0}

   (L.L.doorTarget_0) ! (S.L.doorTarget_0)
   {if}
      (T.L.ev_doortriggeropen_0)
      0 (S.L.door_Warncounter)
   {else}
      (T.L.ev_door_Warnsound)
      1.5 (S.L.door_Warncounter)
      1 (S.L.door_Warn)
   {endif}
      (C.L.door_druckluft)
      {if}
      (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
      {endif}
{end}


kde:
0 (S.L.door_Warncounter) - pri otvorení dverí sa nebude čakať na výstrahu a ani sa neprehrá
(T.L.ev_door_Warnsound) - príkaz na prehranie zvuku (pre viacero dverí je potrebné rozlíšiť napr. (T.L.ev_door_Warnsound0), (T.L.ev_door_Warnsound1) atď.)
1.5 (S.L.door_Warncounter) - 1.5 - dľžka oneskorenia zatvorenia dverí od stlačenia tlačidla resp. dĺžka nahrávky výstrahy.
1 (S.L.door_Warn) - pomocná premenná a jej hodnota

teraz nájdeme odstavec macro:Door _Calc, kde sa bude nachádzať riadok s prísušným (L.L.doorTarget_ )
teda v tomto prípade s (L.L.doorTarget_0):

Kód: Vybrat vše
{macro:Door0_Calc}
   (C.L.electric_doors)
   {if}
      (L.L.doorTarget_0)
      {if}
         (L.L.door_0) (F.L.door_0_opn_speed) (S.L.doorMaxSpeed_0)
      {else}
         (L.L.door_0) (F.L.door_0_cls_speed) (S.L.doorMaxSpeed_0)
      {endif}


a na konci tohto odstavca

Kód: Vybrat vše
   (L.L.door_0) 1 >
   {if}
      (T.L.ev_doorhitopen_0)
      1 (S.L.door_0)
      (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
   {else}
      (L.L.door_0) 0 <
      {if}
         (T.L.ev_doorhitclose_0)
         0 (S.L.door_0)
         (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
      {endif}
   {endif}
{end}


a zmeníme ho na:

Kód: Vybrat vše
{macro:Door0_Calc}
(L.L.door_Warncounter) 0 <
{if}
   (L.L.door_Warn) 1 =
   {if}
      (T.L.ev_doortriggerclose_1)
      0 (S.L.door_Warn)
   {endif}
   (C.L.electric_doors)
   {if}
      (L.L.doorTarget_0)
      {if}
         (L.L.door_0) (F.L.door_0_opn_speed) (S.L.doorMaxSpeed_0)
      {else}
         (L.L.door_0) (F.L.door_0_cls_speed) (S.L.doorMaxSpeed_0)
      {endif}


a na konci tohto odstavca:

Kód: Vybrat vše
   (L.L.door_0) 1 >
   {if}
      (T.L.ev_doorhitopen_0)
      1 (S.L.door_0)
      (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
   {else}
      (L.L.door_0) 0 <
      {if}
         (T.L.ev_doorhitclose_0)
         0 (S.L.door_0)
         (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
      {endif}
   {endif}
{else}
   (L.L.door_Warncounter) (L.S.Timegap) - (S.L.door_Warncounter)
{endif}
{end}


kde pridané časti:
(L.L.door_Warncounter) 0 <
{if}

- pohyb dverí nastane až po skončení odpočítavania

(L.L.door_Warn) 1 =
{if}
(T.L.ev_doortriggerclose_1)
0 (S.L.door_Warn)
{endif}

- spustí zvuk zatvorenia dverí až po výstrahe

{else}
(L.L.door_Warncounter) (L.S.Timegap) - (S.L.door_Warncounter)
{endif}

- spustí odpočítavanie času pre výstrahu
---------------------------------------------------------------------

3. Otvoríme súbor: ..\OMSI\Vehicles\...\Sound\____.cfg

a na koniec pripíšeme

Kód: Vybrat vše
[sound]
(názov zvukového súbor s výstrahou).wav
1

[3d]
-1.25
0.0
1.6
0.5

[trigger]
ev_door_Warnsound


kde:
[3d]
-1.25 - pozícia x
0.0 - pozícia y
1.6 - pozícia z
0.5 - okruh, v ktorom bude 100% hlastiosť zvuku

Tento odstavec je potrebné zapísať pre každé dvere zvlášť so súradnicami jednotlivých dverí (súradnice je možné nájsť u zvukov dverí)

A to je všetko, čo je potrebné spraviť. Príjemnú zábavu :)

Ak by sa vyskytol nejaký problém, kľudne píšte, u seba som to skúšal na SU 15 a funguje to. 8-)
Naposledy upravil stefco dne 02 srp 2014 15:47, celkově upraveno 3
Uživatelský avatar
stefco
Zasloužilý scripter
Zasloužilý scripter
 
Příspěvky: 909
Registrován: 12 srp 2011 22:17

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod stefco » 06 srp 2013 11:54

Prišiel som na ešte trochu iný postup, pri ktorom bude výstraha dverí znieť až do zatvorenia dverí. Pozor, je to možné použiť len u autobusov, ktoré už majú nskriptovanú manuálnu výstrahu.
V tomto prípade ani nebude nutné meniť súbor ..\OMSI\Vehicles\...\Sound\____.cfg.

1. bod
Pridanie premenných zostáva rovnaké.

2. bod
Budeme postupovať v podstate rovnako, ale namesto (T.L.ev_door_Warnsound) použijeme spínač manuálnej výstrahy, ktorý nájdeme v cockpit.osc
Ako príklad uvediem úpravu pre Citybus. Spínač manuálnej výstrahy v cockpit.osc vyzerá takto:
Kód: Vybrat vše
{trigger:door_alarm}
   
      (L.L.cockpit_alarm) ! (L.L.elec_busbar_main) &&
   
      1 (S.L.cockpit_alarm)
   
{end}

zaujímať nás bude riadok 1 (S.L.cockpit_alarm).

rovnakým spôsobom ako v predošlom prípade nájdeme spínač zadných dverí:
Kód: Vybrat vše
{macro:trg_bus_doorfront1}

   (L.L.doorTarget_1) ! (S.L.doorTarget_1)
   {if}
      (T.L.ev_doortriggeropen_1)
   {else}
      (T.L.ev_doortriggerclose_1)
   {endif}   
      (C.L.door_druckluft)
      {if}
      (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
      {endif}
{end}


a upravíme ho nasledovne:
Kód: Vybrat vše
{macro:trg_bus_doorfront1}

   (L.L.doorTarget_1) ! (S.L.doorTarget_1)
   {if}
      (T.L.ev_doortriggeropen_1)
      0 (S.L.door_Warncounter)
   {else}
      1 (S.L.cockpit_alarm)
           1.5 (S.L.door_Warncounter)
           1 (S.L.door_Warn)
   {endif}   
      (C.L.door_druckluft)
      {if}
      (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
      {endif}
{end}


kde
1 (S.L.cockpit_alarm) - zapnutie výstrahy
1.5 (S.L.door_Warncounter) - 1.5 - interval oneskorenia zatvorenia dverí.
1 (S.L.door_Warn) - pomocná premenná

teraz nájdeme odstavec macro:Door _Calc, kde sa bude nachádzať riadok s prísušným (L.L.doorTarget_ )
teda v tomto prípade s (L.L.doorTarget_1):

Kód: Vybrat vše
{macro:Door1_Calc}
   (C.L.electric_doors)
   {if}
      (L.L.doorTarget_1)
      {if}
         (L.L.door_1) (F.L.door_1_opn_speed) (S.L.doorMaxSpeed_1)
      {else}
         (L.L.door_1) (F.L.door_1_cls_speed) (S.L.doorMaxSpeed_1)
      {endif}


Zaujímať nás bude aj koniec tohto odstavca:

Kód: Vybrat vše
   (L.L.door_1) 1 >
   {if}
      (T.L.ev_doorhitopen_1)
      1 (S.L.door_1)
      (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
   {else}
      (L.L.door_1) 0 <
      {if}
         (T.L.ev_doorhitclose_1)
         (T.L.ev_pip_1)
         0 (S.L.door_1)
         (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
      {endif}
   {endif}
{end}


Odstavec {macro:Door1_Calc}: upravím nasledovne:

Kód: Vybrat vše
{macro:Door1_Calc}
(L.L.door_Warncounter) 0 <
{if}
   (L.L.door_Warn) 1 =
   {if}
      (T.L.ev_doortriggerclose_1)
      0 (S.L.door_Warn)
   {endif}
   (C.L.electric_doors)
   {if}
      (L.L.doorTarget_1)
      {if}
         (L.L.door_1) (F.L.door_1_opn_speed) (S.L.doorMaxSpeed_1)
      {else}
         (L.L.door_1) (F.L.door_1_cls_speed) (S.L.doorMaxSpeed_1)
      {endif}


a koniec odstavca {macro:Door1_Calc} takto:

Kód: Vybrat vše
   (L.L.door_1) 1 >
   {if}
      (T.L.ev_doorhitopen_1)
      1 (S.L.door_1)
      (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
   {else}
      (L.L.door_1) 0 <
      {if}
         (T.L.ev_doorhitclose_1)
         0 (S.L.cockpit_alarm)
         (T.L.ev_pip_1)
         0 (S.L.door_1)
         (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
      {endif}
   {endif}
{else}
   (L.L.door_Warncounter) (L.S.Timegap) - (S.L.door_Warncounter)
{endif}
{end}


kde pridané časti:
(L.L.door_Warncounter) 0 <
{if}

- pohyb dverí nastane až po skončení odpočítavania

(L.L.door_Warn) 1 =
{if}
(T.L.ev_doortriggerclose_1)
0 (S.L.door_Warn)
{endif}

- spustí zvuk zatvorenia dverí až po skončení odpočítavania

0 (S.L.cockpit_alarm) - vypnutie výstrahy

{else}
(L.L.door_Warncounter) (L.S.Timegap) - (S.L.door_Warncounter)
{endif}

- spustí odpočítavanie času pre oneskorenie zatvorenie dverí

3.bod v tomto prípade nie je potrebný.

V prípade nejasností sa kľudne ozvite. ;)
Naposledy upravil stefco dne 08 srp 2013 12:05, celkově upraveno 1
Uživatelský avatar
stefco
Zasloužilý scripter
Zasloužilý scripter
 
Příspěvky: 909
Registrován: 12 srp 2011 22:17

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod Gryzly65 » 06 srp 2013 12:00

Bomba. Vďaka, že si sa do toho dal, akonáhle to budem mať kde vyskúšať, určite sa tak stane. ;)
Obrázek
Uživatelský avatar
Gryzly65
Vytrvalý člen
Vytrvalý člen
 
Příspěvky: 6162
Registrován: 12 dub 2011 21:36
Bydliště: Boratislava

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod Etrusan » 06 srp 2013 12:13

Díky moc, hned po obědě na to kouknu. Todle mi tam moc chybí. BTW. všem co jí přeji dobrou chuť.

Edit: na su 15 sem to rozchodil jen na přední dveře a ještě jaksi divně. Vyřešil sem to držením zvonečku před při i po zavírání dveří.
Naposledy upravil Etrusan dne 08 srp 2013 14:04, celkově upraveno 1
Seasonic SSR-650TD; Intel Core i5-6600K 3,5GHz; Gainward GTX 1060 6GB Phoenix GS; 2x Kingston HyperX Fury 8GB; 2x Seagate Barracuda 2TB; 2x 24" AOC I2481FXH; Windows 8.1
Uživatelský avatar
Etrusan
Stálý člen
Stálý člen
 
Příspěvky: 1733
Registrován: 09 pro 2012 14:48
Bydliště: Brno

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod martin8211 » 08 srp 2013 00:15

Tak jsem zkusil tu úpravu na citybus přesně podle návodu, a při výběru busu to hodí chybu v modulu :( všechno jsem zkopíroval podle příspěvku 2.
Nemůže to třeba být tím, že se ten mod mlátí s jiným modem na citybus? (udělal jsem si podle tvého návodu nástup všemi dveřmi, a ještě mám verzi ZF)
Čím víc dveří to má, tím je to lepší...
martin8211
Aktivní člen
Aktivní člen
 
Příspěvky: 483
Registrován: 11 dub 2011 21:50

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod stefco » 08 srp 2013 11:03

loparyis: Hmm.... u mňa to funguje bezchybne. S nástupom všetkými dverami to nemá problém, skúšal som to aj u seba. Verziu ZF nemám, ale nemyslím, že by to mohlo mať na to vplyv. Prípadne mi môžeš poslať cez SZ tvoj upravený skript dverí a ja sa na to pozriem. ;)


EDIT: loparyisov problém vyriešený. Išlo iba o menšiu chybu pri kopírovaní a aby sa predošlo podobným omylom, boli trochu upravené návody. Na podstate posupu sa ale nič nemení, ide iba o prehľadnejšie formátovanie textu príspevku s návodom.
Uživatelský avatar
stefco
Zasloužilý scripter
Zasloužilý scripter
 
Příspěvky: 909
Registrován: 12 srp 2011 22:17

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod Dominno » 16 srp 2013 23:34

Jak se to dělá s Karosou B731 ?
Dominno
Zabydlený člen
Zabydlený člen
 
Příspěvky: 126
Registrován: 29 pro 2012 02:12

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod stefco » 17 srp 2013 14:31

Podobne ako na Citybuse, keďže pôvodná verzia B731 už má manuálnu výstrahu. Teda postupuj podľa návodu z 2. príspevku. Akurát bude treba v skripte dverí potrebné upraviť iné odstavce, konkrétne {macro:trg_bus_doorfront2} a {macro:Door2_Calc}. (tam je to vysvetlené na odstavcoch trg_bus_doorfront1 a Door1_Calc).
Uživatelský avatar
stefco
Zasloužilý scripter
Zasloužilý scripter
 
Příspěvky: 909
Registrován: 12 srp 2011 22:17

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod Tomko00 » 17 srp 2013 14:40

No, zatiaľ mám rovnaký problém ako ostatný, hodí to error s modulom. A to som išiel presne podľa návodu. Robil som to pre MB O305.
Tomko00
Veterán
Veterán
 
Příspěvky: 8865
Registrován: 22 dub 2011 19:08
Bydliště: Košice

Re: Automatická výstraha pred zatvorením dverí

Příspěvekod stefco » 17 srp 2013 15:08

Hmm, O305 síce nemám, ale aj tak mi môžeš skúsiť poslať, ako vyzerá ten skript dverí po úprave. Možno tam nájdem niečo, čo by mohlo spôsobovať chybu.
Uživatelský avatar
stefco
Zasloužilý scripter
Zasloužilý scripter
 
Příspěvky: 909
Registrován: 12 srp 2011 22:17

Další

Zpět na Scripty a zvuky

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník