Stránka 1 z 1

Červené pozičky - Ako na to?

Napsal: pon 01. kvě 2023 21:50:51
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ý.

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

Napsal: úte 02. kvě 2023 22:16:18
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

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

Napsal: pát 05. kvě 2023 14:30:55
od Majk369
Ďakujem, skúsim to.

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

Napsal: úte 09. kvě 2023 9:10:32
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.

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

Napsal: stř 07. čer 2023 16:46:35
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...