Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Treno.Notte

Feux de fin de convoi scriptés

Recommended Posts

Treno.Notte    5,533

Bonjour,

 

Dans le cadre de la création de voitures voyageurs pour TS, je cherche à modéliser les feux rouges de fin de convoi.

A ce jour pour ma part je n'ai vu qu'une seule méthode qui consiste à créer deux modèles, un sans et un autre avec les feux.

 

Cependant, PierreG m'a soufflé une idée à laquelle je n'osais pas trop penser mais qui serait au final bien plus élégante que celle utilisée jusqu'ici: écrire un script capable de détecter si la voiture concernée est oui ou non en fin de convoi et dans l'affirmative, afficher les lanternes de queue (si besoin) et les allumer.

 

A ce jour, malgré quelques recherches (à approfondir), je ne connais pas la fonction .lua capable de lire la position d'un élément dans une rame. Existe-t'elle seulement ? Si oui, je suis partant pour écrire ce script avec plaisir.

 

Merci pour votre aide.

 

 

Share this post


Link to post
Share on other sites
belette65    63

Courage ! ce jeu est capable de t'arracher tous les cheveux de la tête, mais de temps en temps on lui sort les tripes à cette sale bête. :whistling:

Share this post


Link to post
Share on other sites
pierreg    3,464

Bonsoir à tous,

 

En fait, si personne n'a de réponse, ce qui serait bien c'est de faire un bilan de la solution du problème sur le matériel existant. Peut-être que l'on en trouvera qui utilisent des script ? Personnellement je n'en ai pas.

Pour dégrossir, il suffit de faire une recherche sur le dossier Asset avec comme critère le suffixe ".lua" ou ".out". Les scripts que j'ai trouvés sur les voitures activent le clignotement des feux latéraux de départ. C'est tout.

Merci à tous d'avance !

PierreG

Share this post


Link to post
Share on other sites
cerbere22    4,382

Sur les wagons d'AP en tout cas c'est un script LUA je crois ;)

 

(btw 2000è message, là c'est un club très très restreint que je rejoins ^^)

Share this post


Link to post
Share on other sites
henrion    100

Il y a chez JustTrain le VGA/VKA wagon Plus pack qui possède cette fonctionnalité. Il est assez ancien et le script devrait être en lua.

Share this post


Link to post
Share on other sites
jibeh    4,503

Sur les wagons d'AP en tout cas c'est un script LUA je crois ;)

 

(btw 2000è message, là c'est un club très très restreint que je rejoins ^^)

cerbinator_2000.jpg

 

 

2000 messages !! Yeaaaa!.gif

Edited by jibeh
  • Like 1

Share this post


Link to post
Share on other sites
wagener    1,000

Toujours chez JustTrains, il y a aussi les transports nucléaires FNA Qui fonctionnent bien, avec feux de fin de convoi sur le dernier véhicule.

Share this post


Link to post
Share on other sites
cerbere22    4,382

Ahah jibeh excellent comme toujours XD

 

En fait je crois que tous les wagons JT vendus comme "Advanced" possède ce script ;)

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Génial ! Merci pour vos infos.

Je vais m'y coller de ce pas en espérant que les scripts ne soient pas compilés en .out.

 

Au fait, respect Cerbère22. 2000 messages, c'est quelque chose !

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Bon, en fait c'est pas super compliqué à priori.

Il faut utiliser la fonction Call("SendConsistMessage",0,0,0 ou 1) 0 ou 1 pour le sens de la marche. S'il y a présence d'un autre élément attelé, la fonction retourne 1, 0 sinon.

Une fois la fin de convoi détectée on utilise Call("ActiveNode","lanterne",1 ou 0) qui affiche (1) ou non (0) l'objet 3D lanterne.

 

Pour le script c'est donc réglé mais si quelqu'un qui aurait déjà utilisé la fonction ActiveNode pouvait me dire comment et à qui lier (parent/enfant) dans le modèle 3D l'objet lanterne pour que la fonction ActiveNode fonctionne ce serait vraiment génial.

 

Merci d'avance.

Share this post


Link to post
Share on other sites
pierreg    3,464

Je crois que tu tiens la solution.

"ActivateNode" en principe adresse le nom d'un "node" existant dans la géométrie du wagon (IGS node) ou peut-être un "child" extérieur ?.

 

Call (“*:ActivateNode”, “<Node Name>”, active)
Method call to activate a node in the source geometry, where < Node Name > is the name of the
node in the geometry and active is 1 for “on” or 0 for “off”.

 

C'est une situation que doivent peut-être connaître les concepteurs de signaux.

Bon courage!

PierreG

Edited by pierreg

Share this post


Link to post
Share on other sites
cerbere22    4,382

Au fait, respect Cerbère22. 2000 messages, c'est quelque chose !

 

Merci, mais surtout respect à toi et ton sublime talent de créateur ! :)

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Oula, cerbere tu me flattes là. Je mérite pas. Ma contribution pour la communauté reste pour l'instant plutôt minime mais j'apprécie beaucoup ta gentillesse ;)

Share this post


Link to post
Share on other sites
TerLor    109

Bonjour à tous,

 

@Treno.Notte

 

Pour utiliser la fonction Call (“*:ActivateNode”, “<Node Name>”, active) avec un objet enfant nommé dans cet exemple "Fin_de_convois"

 

Call ( "Fin_de_convois:ActivateNode", "Feux_rouge", 1 )
Pour ton cas, "Fin_de_convois" sera ton objet "lanterne" défini dans le programme de modélisation, et "Feux_rouge" sera le nom de ton objet feux qui s'allume ou s'éteint, définis également dans le programme de modélisation.
Donc pour répondre à ta question, tu aura un blueprint "Wagon" dont tu définira dans celui-ci le blueprint "Fin_de_convois" en tant que child. Le script de ton blueprint wagon contiendra donc la ligne de commande Call("SendConsistMessage",0,0,0 ou 1 ainsi que la ligne Call (“<Child>:ActivateNode”, “<Node Name>”, 0 ou 1) qui fait référence à ton enfant.
Si cela te parait flou, je te posterais quelques images plus explicites en fin de semaine concernant cette relation parent-enfant. ;)
Bon courage pour la suite de ta création, c'est très prometteur :) .
Edited by TerLor

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Bonsoir TerLor,

 

Tout d'abord un grand merci pour ton message très instructif et surtout bravo pour les somptueux signaux que tu nous as livrés !

 

Je t'avoue que tout n'est pas encore très clair pour moi et que des images explicites ne seraient pas de trop je crois :whistling:

 

J'ai tout de même quelques questions à te poser par rapport à ce que tu as écrit dans ton message.

 

1- L'appel de la fonction Call ( "Fin_de_convoi:ActivateNode", "Feux_rouge", 1 ) suppose t'il que l'objet 3D "Fin_de_convoi" soit déjà visible et que la fonction active simplement l'allumage (l'affichage) des feux rouges ?

2- Dans l'affirmative, si une voiture est en milieu de rame, il faudra alors également désactiver la visibilité de l'objet 3D "Fin_de_convoi" afin que les lanternes ne s'affichent pas. Me trompe-je ? Il faudra alors créer un autre enfant d'enfant ??!!...

3- Une dernière chose, je ne sais pas à qui lier l'objet "Fin_de_convoi" dans l'éditeur 3D (j'utilise Blender). Est-ce au corps principal de la voiture ?

 

J'imagine la hiérarchie suivante:

 

--- caisse_voiture

|

|

--- Fin_de_convoi (enfant de "caisse_voiture")

|

|

--- Feux_rouges (enfant de "Fin_de_convoi")

 

Est-ce que c'est juste ?

 

Voilà, j'ai terminé pour ce soir ;)

 

Merci infiniment d'avance pour le temps que tu passeras à répondre à ce message.

 

Hervé.

Share this post


Link to post
Share on other sites
Roro45    668

Bonsoir,

 

Hervé, si j'ai bien suivi :whistling: tu veux créer des lanternes fin de convoi pour tous les wagons. Mais avec la méthode décrite plus haut, tu réalises des lanternes pour les futurs wagons et ceux qu'ils veulent associer tes lanternes.

 

Pour moi, peut être que je me trompe mais il faut réaliser un wagon lanterne, juste des lanternes que l'on accroche comme un wagon.

 

Roger.

Share this post


Link to post
Share on other sites
Spud    144

Bonsoir,

 

Hervé, si j'ai bien suivi :whistling: tu veux créer des lanternes fin de convoi pour tous les wagons. Mais avec la méthode décrite plus haut, tu réalises des lanternes pour les futurs wagons et ceux qu'ils veulent associer tes lanternes.

 

Pour moi, peut être que je me trompe mais il faut réaliser un wagon lanterne, juste des lanternes que l'on accroche comme un wagon.

 

Roger.

 

Salut,

 

Pour moi la meilleur solution est celle du script qui permet toutes les possibilités...

 

1 arriver et atteler la rame, et lorsqu'on allume les feux de la loc les feux de fin de convois s'allument sur la dernière voiture.

 

2 si on veut faire un retournement de sens de la loc sa fonctionne aussi.

 

3 si on dételle une partie de la rame le dernier wagon de la rame qui reste accroché à la loc aura les feux allumés

 

4 on peut adapter le script avec des lanternes de fin de convoi pour les wagons marchandise.

 

Que la solution du wagon fin de convoi ne permets de faire que des rames indivisible et impossible de changer le sens de marche de la loc.

 

C'est sûr cette solution va demander pas mal de boulot au début mais après sera d'un réalisme et d'une "praticitée" incontestable car les feux de fin de convois s'adapteront aux modifications apportées aux rames au cours d'un scénario. surtout pour les trains de marchandise.

 

Voila ma position sur la question, et je ne peux que souhaiter que nos scripteurs et modeleurs 3d hors pair arrive à la mettre en oeuvre.

 

A+

Share this post


Link to post
Share on other sites
Roro45    668

 

Salut,

Pour moi la meilleur solution est celle du script qui permet toutes les possibilités...

1 arriver et atteler la rame, et lorsqu'on allume les feux de la loc les feux de fin de convois s'allument sur la dernière voiture.

2 si on veut faire un retournement de sens de la loc sa fonctionne aussi.

3 si on dételle une partie de la rame le dernier wagon de la rame qui reste accroché à la loc aura les feux allumés

4 on peut adapter le script avec des lanternes de fin de convoi pour les wagons marchandise.

Que la solution du wagon fin de convoi ne permets de faire que des rames indivisible et impossible de changer le sens de marche de la loc.

C'est sûr cette solution va demander pas mal de boulot au début mais après sera d'un réalisme et d'une "praticitée" incontestable car les feux de fin de convois s'adapteront aux modifications apportées aux rames au cours d'un scénario. surtout pour les trains de marchandise.

Voila ma position sur la question, et je ne peux que souhaiter que nos scripteurs et modeleurs 3d hors pair arrive à la mettre en oeuvre.

A+

 

Bonsoir Spud,

 

En effet, cette version est plus complète mais il faudra reprendre les anciennes créations. Je ne pense pas que ce soit le plus dur.

 

Une idée : Si le wagon est attelé et des deux cotés, pas de lampe sinon une lampe du coté non accroché.

 

Roger.

Edited by Roro45

Share this post


Link to post
Share on other sites
Spud    144

Tu as raison Roger,

 

J'avais oublié cette possibilité mais je pense que le jeu en vaut la chandelle ;)

 

A+

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Bonjour à tous,

 

Oui le script prendra en compte tous les cas de figure. Le but étant que l'utilisateur n'ai à s'occuper de rien, juste de former sa rame avec les voitures dans l'ordre et le sens qu'il désire. Les lanternes n'apparaîtront que sur la voiture de queue.

Le problème c'est que tout ça doit être implémenté dès la construction 3D et on ne pourra adapter les modèles déjà fait que si l'auteur veut bien ré ouvrir son éditeur 3D. Peu probable donc.

 

Une fois que tout ça marchera bien, si ça intéresse du monde, je mettrai un tutoriel en ligne pour les nouvelles créations.

 

En attendant j'ai encore besoin d'un conseil ou deux de Terlor... ;)

 

A plus.

Share this post


Link to post
Share on other sites
deimos65    7

je pense avoir trouver se que vous chercher etant donner que j ai des wagons en advanced c est trouver ca , voici le script en pure copier coller

 

-----------------------------------------------------------
-- VGA Script
-----------------------------------------------------------

-- How long to stay off/on in each flash cycle
LIGHT_FLASH_OFF_SECS = 0.45
LIGHT_FLASH_ON_SECS = 0.05

-- State of flashing light
gTimeSinceLastFlash = 0
gLightFlashOn = false
gFirstLightFlash = true

DEBUG = false -- set to true to turn debugging on

-- debugging stuff
function DebugPrint( message )
if (DEBUG) then
Print( message )
end
end

function Initialise ()

Call("BeginUpdate");

end

function Update( time )

-- If this is the first flash, reset time since last flash and light flash on
if gFirstLightFlash then

Call( "DebugPrint", "Flashing activated")
-- Reset flash state
gTimeSinceLastFlash = 0
gFirstLightFlash = false
gLightFlashOn = false

-- Otherwise...
else

-- Increment the timer by however much time has passed since the last update
gTimeSinceLastFlash = gTimeSinceLastFlash + time

-- If it's off and has been off long enough, switch on
if (not gLightFlashOn) and gTimeSinceLastFlash >= LIGHT_FLASH_OFF_SECS then
Call( "*:AddTime", "LampFlash", 1)
gLightFlashOn = true
gTimeSinceLastFlash = 0

-- If it's on and has been on long enough, switch off
elseif gLightFlashOn and gTimeSinceLastFlash >= LIGHT_FLASH_ON_SECS then
Call( "*:Reset", "LampFlash" )
gLightFlashOn = false
gTimeSinceLastFlash = 0
end
end;

end

-----------------------------------------------------------
-- OnConsistMessage
-----------------------------------------------------------
-- Called when a Consist Message is recieved
-----------------------------------------------------------
-- Parameters:
-- msg = msg id
-- argument = Name of the action
-- direction = Direction from the locomotive
-----------------------------------------------------------
function OnConsistMessage ( msg, argument, direction )

-- send the message further down the consist
Call ( "SendConsistMessage", msg, argument, direction );

end

 

 

en esperant que cela vous aide

as savoir aussi que j ai deux fichiers qui s appelle ,: lampflash.ban ,et lampflash2.ban

Edited by deimos65

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

Bonsoir,

 

Merci pour ton aide. Ton script est très intéressant afin de comprendre la gestion du temps en lua couplé avec TS. Toutefois, pour ce qui est de la France, le clignotement des feux de fin de convoi n'est pas de mise. Moi je pense plutôt à quelque chose comme ça pour l'affichage des lanternes de queue:

 

init = true // variable d'initialisation de l'état des lanternes
attelage = 0 // variable de l'état d'attelage de la voiture: 0=rien n'est attelé à la voiture, 1=voiture en fin de convoi, 2= voiture en milieu de rame

function Update( Interval ) // fonction appelée tous les Interval = temps de refresh simu

if init then //initialisation des variables si init = true
Call("ActivateNode", "lanterneAvant", 0 ) //on initialise la voiture sans lanterne à l'avant (lanterneAvant=objet 3D lanternes situées à l'avant de la voiture)
Call("ActivateNode", "lanterneArriere", 0 )//on initialise la voiture sans lanterne à l'arrière
init = false // on s'assure que l'initialisation ne se fait qu'une seul fois
end

 

//On passe ensuite à la partie détection de l'état d'atellage de la voiture

arriere = Call("SendConsistMessage", 0, 0, 1 ) //arriere vaut 1 si la voiture est attelée à une autre par l'arrière, 0 sinon
avant = Call("SendConsistMessage", 0, 0, 0 )//avant vaut 1 si la voiture est attelée à une autre par l'avant, 0 sinon
attelage = avant+arriere // la somme des deux peut valoir 0,1 ou 2 -> trois cas de figure: 0=rien n'est attelé, 1=voiture en fin de convoi, 2= voiture en milieu de rame

if attelage ~= memoire_attelage then // on détecte si il y'a eu un changement dans l'état d'attelage de la voiture
if attelage ~= 1 then // si on est dans un autre cas que 1 (=voiture en fin de convoi), on empêche l'affichage des lanternes avant et arrière.
avant = 0; arriere = 0 // on empêche l'affichage en forçant les 2 variables à 0
end
Call("ActivateNode", "lanterneAvant", avant ) // affiche les lanternes à l'avant si avant=1
Call("ActivateNode", "lanterneArriere", arriere )// affiche les lanternes à l'arrière si arriere=1
end

memoire_attelage = attelage // on stocke le nouvel état d'attelage de la voiture
end

 

 

J'ai toutefois encore un doute sur Call("ActivateNode", "lanterneAvant", avant ) et Call("ActivateNode", "lanterneArriere", arriere ) . En effet, TerLor semblait avoir une autre approche pour l'affichage des "enfants".

 

A vous de me dire ce que vous en pensez.

 

Hervé.

Share this post


Link to post
Share on other sites
Treno.Notte    5,533

J'avoue ne pas avoir encore pensé à la rédaction des blueprint... Là aussi, toute aide sera la bienvenue je crois bien.

 

Bonne nuit, là il est tard, je vais au dodo :47:

Edited by Treno.Notte

Share this post


Link to post
Share on other sites
pierreg    3,464

Bonjour à tous,

 

Il ne vous a pas échappé que Nicola Mangialardo vient de publier un wagon dont les feux fonctionnent comme spécifié dans ce post.... :unsure:

Peut-être que l'on pourrait lui demander :wub: ?

A+

PierreG

 

Share this post


Link to post
Share on other sites

×