Interactive Control - Buttons

Přes IC už umíme zprovoznit animace a víme jak ho dostat do stroje. Nyný se seznámíme s další základní funkcí IC a to jsou funkční tačítka. Tyto tlačítka spouští nějaký LUA kód a jsou proto důležitou funkcí - zkušení skriptaři si tento kód můžou upravit dle svého a přes IC tak lze provádět spoustu věcí.

Kam zapisovat tlačítka

Stejně jako u animací budeme potřebovat místo, kam budeme tlačítka zapisovat. Zapisujeme do xml podle následujícího vzoru:

1<interactiveComponents minDist="13">
2 <buttons>
3 <button ... />
4 </buttons>
5</interactiveComponents>

Tlačítka se tedy zapisují do oddílu buttons (BUTTON = TLAČÍKO). Nyní si vysvětlíme atributy které můžeme/musíme použít u tlačítek.

Atributy onMessage a offMessage

Tyto atributy se používají k definování hlášky, která se má zobrazit po najetí myši a to buď při spuštěné akci (na tlačítko už se kliklo - hláška v offMessage) nebo ukončené akci (ještě se na tlačítko nekliklo - hláška v onMessage). Oba tyto atributy musí obsahovat název definovaného textu v l10n v modDesc.xml.

Atribut name

Tento atribut slouží k zobecnění hlášek - pokud máme například 2 tlačítka, tak pro obě můžeme vypisovat stejnou hlášku s tím, že místo name které se tam má doplnit, napíšeme do hlášky on/offMessage nějaký text a jako zástupný znak name použijeme %s. Ve výsledku tak máme třeba jednu onMessage, jednu offMessage a 2 tlačítka používající stejné hlášky akorát s jiným name. Atribut name obsahuje název definovaného textu v l10n v modDesc.xml.

Atribut size

Tento atribut obsahuje index tlačítka v i3d stroje. Objekt na tomto indexu musí mít nejaký vnořený objekt pro případné přidání efektů. Doporučuji použít tlačítko z archivu který si stáhnete s IC. Kolem tohoto indexu se tvoří klikatelná oblast definovaná v size.

Atribut mark

Tento atribut obsahuje index tlačítka v i3d stroje. Objekt na tomto indexu musí mít nejaký vnořrný objekt pro případné přidání efektů. Doporučuji použít tlačítko z archivu který si stáhnete s IC. Kolem tohoto indexu se tvoří klikatelná oblast definovaná v size. Pokud není mark obsažen v tagu, vytvoří se pouze událost. Takto vytvořenou událost můžete používat v multiButtons.

Atribut event

Tento atribut, jak již název napovídá, bude obsahovat název události kterou bude tlačítko spouštět. Základní události pro traktor/kombajn jsou nadefinovány v IC které si stáhnete (soubor ICSources/actionFunction.lua). Ještě musím poznamenat, že u některých eventů není výpočet zda je něco zapnuto/vypnuto. Proto se používá jenom onMessage (offMessage doporučuji taky použít - stejné jako onMessage). Do onMessage v takovém případě vložte nějakou neutrální hlášku (například Zapnout/vypnout %s). Seznam těchto dostupných eventů je následující:

Event Význam
toggleBeaconLights Zapne/vypne majáky
toggleHandBreak Zapne/vypne ruční brzdu - potřebuje dodatečný mod - event z LS13
togglePipe Vysune/schová výložník od kombajnu
toggleFrontLights Přední světla (místo klávesy F)
toggleFrontWorkLights Přední pracovní světla
toggleBackWorkLights Zadní pracovní světla
toggleBeamLights Mlhovky
toggleTurnsignalLeft Levé blinkry
toggleTurnsignalRight Pravé blinkry
toggleTurnsignalHazard Výstražné světla (oba binkry najednou)
toggleFoldImplement Složit/rozložit zařízení připojená k aktuálnímu traktoru/kombajnu
toggleFoldFrontImplement Složit/rozložit zařízení připojená dopředu k aktuálnímu traktoru/kombajnu
toggleFoldBackImplement Složit/rozložit zařízení připojená dozadu k aktuálnímu traktoru/kombajnu
toggleImplementUpDown Zvednout/položit všechna zařízení
toggleFrontImplementUpDown Zvednout/položit zařízení připojená vpředu
toggleBackImplementUpDown Zvednout/položit zařízení připojená vzadu
toggleImplementTurnState Zapnout/vypnout přední i zadní kardanku
toggleFrontImplementTurnState Zapnout/vypnout přední kardanku
toggleBackImplementTurnState Zapnout/vypnout zadní kardanku
dumpEquipment Vyprázdnit všechna zařízení (pokud je tato možnost k dispozici)
dumpFrontEquipment Vyprázdnit zařízení připojené vepředu (pokud je tato možnost k dispozici)
dumpBackEquipment Vyprázdnit zařízení připojené vzadu (pokud je tato možnost k dispozici)
fillImplement Naplnit všechna zařízení (pokud je tato možnost k dispozici)
fillFrontImplement Naplnit zařízení připojené vepředu (pokud je tato možnost k dispozici)
fillBackImplement Naplnit zařízení připojené vzadu (pokud je tato možnost k dispozici)
tempomatUp Zvýší hodnotu tempomatu o 1
tempomatDown Sníží hodnotu tempomatu o 1

Atribut synch

Atribut synch se používá pro multiplayer a může obsahovat hodnotu true a nebo false. Tento atribut není povinný a jeho základní hodnota je true. Pokud je hodnota false, pak není synchronizováno chování na MP - tzn.: jeden hráč může vidět něco spuštěné a druhý ne. Vhodné pro nějaké drobné funkce aby se nezatěžovala komunikace při MP.

Atribut isOutside

Tento atribut definuje, zda je tlačíko určeno pro použití mimo stroj a nebo pro použití v kabině. Pokud je false, tlačítko se zobrazí pouze tehdy, když jsme ve stroji. Pokud je true tak to zanmená, že aby se talčítko dalo spustit, tak musíme být v dosahu definovaném minDist. Tento atribut je nepovinný a jeho základní hodnota je false.

Ukázka zápisu tlačítek

Nakonec vám zde přikládám ukázku zápisu tlačítek do IC:

1
2<interactiveComponents minDist="7">
3 <buttons>
4 <button name="toggleFrontLights" mark="0>37|0|15" size="0.03" event="toggleFrontLights" onMessage="Front_Lights_Off" offMessage="Front_Lights_On" isOutside="false" synch="false" />
5 <button name="toggleBackImplementUpDown" mark="0>37|0|16" size="0.03" event="toggleBackImplementUpDown" onMessage="toggleBackImplementUp" offMessage="toggleBackImplementDown" isOutside="true" />
6 <button name="toggleBackImplementUpDown" mark="0>37|0|8|0|4" size="0.03" event="toggleBackImplementUpDown" onMessage="toggleBackImplementUp" offMessage="toggleBackImplementDown" isOutside="false" />
7 <button name="toggleFrontImplementUpDown" mark="0>37|0|8|0|6" size="0.03" event="toggleFrontImplementUpDown" onMessage="toggleFrontImplementUp" offMessage="toggleFrontImplementDown" isOutside="false" />
8 <button name="toggleFrontImplementUpDown" mark="0>37|7" size="0.03" event="toggleFrontImplementUpDown" onMessage="toggleFrontImplementUp" offMessage="toggleFrontImplementDown" isOutside="true" />
9 <button name="toggleBeaconLights" mark="0>37|0|17" size="0.03" event="toggleBeaconLights" onMessage="toggleBeaconLights_off" offMessage="toggleBeaconLights_On" isOutside="false" synch="false" />
10 <button name="toggleTurnsignalLeft" mark="0>37|0|9|0|3" size="0.03" event="toggleTurnsignalLeft" onMessage="toggleTurnsignalLeft_off" offMessage="toggleTurnsignalLeft_on" isOutside="false" synch="false" />
11 <button name="toggleTurnsignalRight" mark="0>37|0|9|0|4" size="0.03" event="toggleTurnsignalRight" onMessage="toggleTurnsignalRight_off" offMessage="toggleTurnsignalRight_on" isOutside="false" synch="false" />
12 <button name="toggleBackImplementTurnState" mark="0>37|0|8|0|7" size="0.03" event="toggleBackImplementTurnState" onMessage="tBackImplementTurnState_off" offMessage="BackImplementTurnState_on" isOutside="false" />
13 <button name="toggleFrontImplementTurnState" mark="0>37|0|8|0|8" size="0.03" event="toggleFrontImplementTurnState" onMessage="tBackImplementTurnState_off" offMessage="BackImplementTurnState_on" isOutside="false" />
14 <button name="toggleFoldFrontImplement" mark="0>37|0|8|0|9" size="0.03" event="toggleFoldFrontImplement" onMessage="FoldFrontImplement_off" offMessage="FoldFrontImplement_on" isOutside="false" />
15 <button name="toggleFoldBackImplement" mark="0>37|0|8|0|10" size="0.03" event="toggleFoldBackImplement" onMessage="FoldBackImplement_off" offMessage="FoldBackImplement_on" isOutside="false" />
16 </buttons>
17</interactiveComponents>
18

Související video

Skript ke stažení

  1. InteractiveControl (Farm-Share)