Červené pozičky - Ako na to?

Otázky, problémy a nejasnosti při tvorbě modelů a skinů
Odpovědět
Majk369
Příspěvky: 22
Registrován: stř 03. led 2018 10:12:33

Červené pozičky - Ako na to?

Příspěvek od Majk369 »

Zdravím všetkých,

robím môj prvý model osobného vozňa (ČSD WRab) a vpodstate všetko, čo som nevedel a potreboval sa naučiť, som na internete našiel (prevažne v oficiálnych dev docs), ale jedinú vec, ktorú som nikde nenašiel ako na to, je funkčnosť koncových svetiel. Pri rozoberaní ostatných modelov som len zistil, že je v tom použitý skript (dáva zmysel). Viem že na githube je súbor so vzorkami skriptov od JachyHm-a, ale bohužiaľ tam nemá konkrétne ten skript, čo používajú všetky cz/sk vozne. Ak by ma niekto vedel nasmerovať, kde o tomto viem nájsť viac informácii, prípadne mi to rovno vysvetliť, ako ten skript vytvoriť/použiť, bol by som veľmi vďačný.
Jack.Grave
Příspěvky: 116
Registrován: úte 02. bře 2010 4:51:40
Bydliště: Praha

Re: Červené pozičky - Ako na to?

Příspěvek od Jack.Grave »

Tohle by mohlo fungovat:

Kód: Vybrat vše

function OnConsistMessage ( msg, argument, direction )

	-- send the message further down the consist
	Call ( "SendConsistMessage", msg, argument, direction );
	
end
"Grau, teurer Freund, ist alle Theorie" J.W Goethe
Majk369
Příspěvky: 22
Registrován: stř 03. led 2018 10:12:33

Re: Červené pozičky - Ako na to?

Příspěvek od Majk369 »

Ďakujem, skúsim to.
Majk369
Příspěvky: 22
Registrován: stř 03. led 2018 10:12:33

Re: Červené pozičky - Ako na to?

Příspěvek od Majk369 »

Môj skript:

Kód: Vybrat vše

gLastInConsist = false;
gFirstInConsist = false;

function Initialise()
	Call( "BeginUpdate" )
	Call( "ActivateNode", "PozickaP1", 0 ); --PozickaXX su nodey v modeli vagona so svietiacou texturou
	Call( "ActivateNode", "PozickaP2", 0 );
	Call( "ActivateNode", "PozickaZ1", 0 );
	Call( "ActivateNode", "PozickaZ2", 0 );

	Call( "PozickaPredna1:Activate", 0);  --tento vagon ma aj svetla pridane v blueprinte, ktore treba tiez ovladat
	Call( "PozickaPredna2:Activate", 0);
	Call( "PozickaZadna1:Activate", 0);
	Call( "PozickaZadna2:Activate", 0);

end

function Update(time)

  IsOnEdge();  --funkcia, ktora zistuje, ktory koniec vagonu nie je pripojeny na iny dalsi vagon

  if Call("GetControlValue", "Headlights", 0) == 1 then    --v blueprinte je pridana ControlValue s nazvom Headlights, ktora kopiruje
                                                           --hodnotu nastavenia lokomotivy, ktora ma tento ControlValue nastaveny v
                                                           --blueprinte ako "ApplyToConsist"
    if gFirstInConsist then
		  Call( "ActivateNode", "PozickaP1", 1 );
      Call( "ActivateNode", "PozickaP2", 1 );

    	Call( "PozickaPredna1:Activate", 1);
    	Call( "PozickaPredna2:Activate", 1);
    else
  		Call( "ActivateNode", "PozickaP1", 0 );
  		Call( "ActivateNode", "PozickaP2", 0 );

  		Call( "PozickaPredna1:Activate", 0);
  		Call( "PozickaPredna2:Activate", 0);
  	end

  	if gLastInConsist then
  	  Call( "ActivateNode", "PozickaZ1", 1 );
  		Call( "ActivateNode", "PozickaZ2", 1 );

  		Call( "PozickaZadna1:Activate", 1);
  		Call( "PozickaZadna2:Activate", 1);
  	else
  	  Call( "ActivateNode", "PozickaZ1", 0 );
  		Call( "ActivateNode", "PozickaZ2", 0 );

  		Call( "PozickaZadna1:Activate", 0);
  		Call( "PozickaZadna2:Activate", 0);
  	end

  elseif Call("GetControlValue", "Headlights", 0) == 0 or Call("GetControlValue", "Headlights", 0) == 2 then
                                                                                          --je potrebne zohladnit moznost, kedy nie su pozicky
    Call( "ActivateNode", "PozickaP1", 0 );                                               --lokomotivy nastavene na predok (2 biele), teda
	  Call( "ActivateNode", "PozickaP2", 0 );                                               --vypnut koncove svetla vagonu v tomto pripade
	  Call( "ActivateNode", "PozickaZ1", 0 );
	  Call( "ActivateNode", "PozickaZ2", 0 );

	  Call( "PozickaPredna1:Activate", 0);
	  Call( "PozickaPredna2:Activate", 0);
	  Call( "PozickaZadna1:Activate", 0);
	  Call( "PozickaZadna2:Activate", 0);
	  end
end

function IsOnEdge()

	if Call( "SendConsistMessage", 545366, 0, 0 ) == 1 then
		gFirstInConsist = false;
	else
		gFirstInConsist = true;
	end

	if Call( "SendConsistMessage", 545366, 0, 1 ) == 1 then
		gLastInConsist = false;
	else
		gLastInConsist = true;
	end
end
Tento skript funguje len s rušňami, ktoré majú ControlValue s názvom "Headlights" s hodnotami 0, 1 a 2, pričom musí byť pri nej vybratá možnosť "ApplyToConsist". Blueprint vozňa potom obsahuje rovnomennú ControlValue, s min. hodnotou 0 a max. hodnotou 2, ApplyToConsist je false. Táto ControlValue potom kopíruje nastavenie rušňa. Takto to majú všetky cz-sk rušne, preto by tento skript mal fungovať so všetkými cz-sk rušňami.
kiski
Příspěvky: 912
Registrován: pon 12. srp 2013 22:30:35

Re: Červené pozičky - Ako na to?

Příspěvek od kiski »

Na samotnú obsluhu koncových svetiel u vozňov nie je skript vôbec potrebný, pokiaľ sa dodrží správne pomenovanie nodov v samotnom 3D modeli vozňa. Dá sa dohľadať na nete. Neviem, či všetci autori vozňov na CZ/SK scéne to majú tak, ale minimálne vozy od Jirku to tak majú. Funguje to bezchybne, a dokonca takým spôsobom, že stačí, ak sa v rušni ovládač Headlights nastaví na 1. Vyššia hodnota nie je potrebná, a u rušňov z CZ/SK produkcie sa ani nevyskytuje, pretože drvivá väčšina rušňov nastaví tento ovládač na 1 pri oboch rozsvietených pozičných svetlách. U mojich rušňov to tak mám od začiatku...
Braňo
Odpovědět