See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [C++] Possibilités sur le fueling  (Read 5924 times)

0 Members and 1 Guest are viewing this topic.

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
02 October 2007, 16:39:10
Avant de me lancer dans un truc en impasse, j'aimerais savoir si certains ici
ont déjà testé les possibilités de fueling entre vessels.

La valve entourée est prévue pour pouvoir refueler des vaisseaux dockés à Irridium.
Mais est ce simplement possible de pouvoir donner du gasoil à un vessel depuis un autre ?




Pic

Offline MisterC

  • Legend
  • ******
  • Posts: 2508
  • Karma: 0
Reply #1 - 02 October 2007, 16:47:01
Je suis un peu rouillé, mais il n'y avait pas un truc qui s'appelait FuelTransferMFD ?

En outre, quand on est docké à l'ISS, on peut bien ravitailler, crois-je me souvenir, non ? Avec le DGIV par exemple ?

Donc j'ai envie de te répondre oui, mais des gens nettement plus au courant me corrigeront sans doute, si
nécessaire ?




Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #2 - 02 October 2007, 16:52:48
Je crois aussi, mais je me demandais s'il n'y avait pas une histoire de base Orbiter.
ISS n'est pas un Vessel spécial ... comme une base quoi ?
Il n'y a rien dans les samples de la SDK concernant ISS qui pourrait me donner une piste ... :wonder:


Pic

Offline brainstorm

  • Legend
  • ******
  • Posts: 2694
  • Karma: 0
Reply #3 - 02 October 2007, 18:54:01
Oui, c'est théoriquement possible. Y'a une fonction il me semble qui permet d'affecter la quantité de fuel à un
réservoir d'un VESSEL.
Il suffit je suppose de récupérer le vessel correspondant et après t'as plus qu'à faire ta sauce ;)


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #4 - 02 October 2007, 19:02:11


Pour le moment, je n'ai trouvé que ça ... mais c'est en interne non ?

void   SetFuelMass (double m) const;


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #5 - 02 October 2007, 19:31:25
Théoriquement non, les possibilité de transfert d'information entre vessel sont hyper
limitée dans Orbiter. Pratiquement on peut comme d'hab en trichant un peu ;)

Le gag le plus simple toutefois (soluce DGIV) c'est un truc du genre SetfuelMass(GetFuelMass()+0.1*dt);
En itération (postep) avec des if limitant of course (test si plein=arret, test si on veux refueller=demarrage)
et accorder cette possibilité que si on est docké.

Après cette soluce ne vide pas les réservoirs du "tanker". Pour cela ca devient plus compliqué
et il faut avoir la main sur les codes du tanker et de celui qui recoit.

Dans ce cas on peut passer des infos mais ca veut dire qu'on fait un truc spécifique ie:
le truc ne pourra pas refueller ailleurs.

Un autre solution pour tes sondes, tu récupere le handle Vessel et tu rempli+Vide tes reservoires dans post step:

pseudo code de mémoire j'ai rien regardé:

Code: [Select]
if(refuelling==TRUE)
{
     if(GetFuelMass()>1)  // test is on a encore du coco dans la source
     {
           SetfuelMass(GetFuelMass()-0.1*dt);  // on vide notre réservoir
           OBJHANDLE ObjSonde=GetObjHandle("MaSonde")
           VESSEL vs=GetVesselHandle(ObjSonde);
           vs->SetfuelMass(vs->GetFuelMass()+0.1*dt); // on rempli le reservoir de la sonde
           // test si rempli, desactive refuelling et fini le remplissage.
           if(vs->GetFuelMass()>Maximum-1)
           {
                      vs->SetfuelMass(Maximum);
                      refuelling=FALSE;
           }
    }
    else
    {
            refuelling=FALSE;
    }
}

(faut tester "SetfuelMass(GetFuelMass()+0.1*dt);" je garanti pas le 0.1, faire essais avec d'autres facteurs)
Pas oublier non plus de proteger les handles "if(!=NULL)"

Si le truc est attaché on peu avoir le hanbdle OBj par GetAttachement ou un truc du genre...

Dan



Message modifié ( 02-10-2007 19:51 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #6 - 02 October 2007, 19:50:18
Merci pour le how to ...

Pour les sondes, je fais beaucoup plus simple ...
Vu qu'elles n'existent pas encore en tant que Vessel tant qu'elles sont dans Irridium,
sur le panel, je transfère du fuel ( en fait je vide simplement les réservoirs de'Irridium )

Puis au moment du lancement
Test panel ....
Est ce que le plein est fait
OUI ..... GO !!!
NON .... Ttttiiii .... TTToouuuttt ;... You must fuel probe before launching :)
C'est en cours ;)

Mais ça veut dire que je ne pourrais pas refueler le DGIV par Irridium après un
transfert d'équipage par exemple ou est ce que ta combine marchera aussi dessus? :sad:



Message modifié ( 02-10-2007 20:00 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #7 - 02 October 2007, 19:53:30
Quote
picto a écrit:
Mais ça veut dire que je ne pourrais pas refueler le DGIV par Irridium après un
transfert d'équipage par exemple ? :sad:

Non, d'ailleurs aucun appareils "habité"  ne ce refuel depuis le tanker, c'est toujours le
recevant qui à le controle pour d'évidente raison de sécurité.

"-wow, joli boule de feu"
"-n'est ce pas ? :badsmile:


Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #8 - 02 October 2007, 19:59:29
"-wow, joli boule de feu"
"-n'est ce pas ?


C'est mon côté pratique ça ... :badsmile:
M'enfin .... on peut aussi imaginer que le Tanker puisse fermer une vanne ou déclencher une pompe :doubt:
Comment ça fonctionne pour les avions de chasse ... c'est pas eux qui ont le robinet à bord !

Donc même si je ferme la vanne sur le panel d'Irridium, tu peux fueler depuis le DGIV si tu es docké :sad:
Rapace !!!!



Message modifié ( 02-10-2007 20:02 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #9 - 02 October 2007, 20:17:58
Quote
picto a écrit:
Donc même si je ferme la vanne sur le panel d'Irridium, tu peux fueler depuis le DGIV si tu es docké :sad:
Rapace !!!!

Gnerk gnerk gnerk :frottelesmains:

C'était le seul moyen pour faire ca "universel" ;)

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #10 - 02 October 2007, 22:13:19


Faut encore que je modifie le panel donc ... :sad:
J'en ai marre .... ça fait au moins quinze fois que ça repasse sur Tochope ....
100 fois la poutre dans l'oeil de ton voisin tu remettras sur le métier ....  :sick:


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #11 - 02 October 2007, 23:29:25
Pas oublier le principe: on test d'abord le concept avec du code poubelle déclenché
par touche clavier pour faire simple, si ca marche on ce farci toute la chaine...

Commencer par les boutons c'est pas glop... ;)

"tant va la grenouille à l'eau qu'elle amasse de la mousse"

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #12 - 02 October 2007, 23:49:16

Vi ... je sais bien ... sur les probes j'ai fait comme ça, et j'ai eu la chance que
le premier jet sur Tochope corresponde au système du premier coup ...

C'est fou tout ce qu'il y a à régler sur un bidule comme ça ...
Des détails à la c .... Sirius me fait remarquer un truc juste ... pour docker,
Orbiter cale les repères du DockMFD sur le Dock0 .... et évidamment, le dock 0
n'est pas celui que j'ai mis à l'avant ... mais le panel est fini en ce qui concerne cette section ...
Donc pas simple à modifier, alors qu'au tout début ça aurait pris trois secondes ....

sur le ton de Cosette ......
mais j'avais pas le meeeeesssssh ....


Pic

Offline Pagir

  • Legend
  • ******
  • Posts: 4522
  • Karma: 1
Reply #13 - 03 October 2007, 02:00:28
Que veux-tu, C'est en pictant qu'on devient picto, et c'est en sciant que Léonard devient scie!

Par contre, loin de moi l'idée d'ajouter quetant va le cruche au C++ qu'à la fin il le casse!

Pagir



Message modifié ( 03-10-2007 05:32 )

Pagir

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #14 - 03 October 2007, 06:12:31
:sad:
T'es vraiment méchant ....
J'arrête pas de le battre pourtant .... mais là il est froid ... le code ... et de moins en moins malléable.

Enième version ... est ce que ça parait clair juste en voyant ça ?





Message modifié ( 03-10-2007 11:53 )

Pic

Offline siriusfett

  • Legend
  • ******
  • Posts: 968
  • Country: France fr
  • Karma: 5
Reply #15 - 03 October 2007, 11:29:16
Je le trouve très réussi Pic, juste une remarque (pour changé :lol: ) Le switch de gauche nous indique MAIN 1, MAIN 2 et RCS,
je pense que les indicateurs de niveau devraient reprendre cet ordre pour plus de cohérence, il serait bien aussi que le tank
sélectionner soit visible parmi les trois, en désaturant par exemple les deux autres, bien sur je veux ça pour avant hier
:badsmile:



Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #16 - 03 October 2007, 11:55:30
Oui pour l'ordre ....
Par contre, pour l'indication, les diodes ne suffisent elles pas ? :badsmile:



Message modifié ( 03-10-2007 11:56 )

Pic

Offline siriusfett

  • Legend
  • ******
  • Posts: 968
  • Country: France fr
  • Karma: 5
Reply #17 - 03 October 2007, 12:04:50
Quote
picto a écrit:
Oui pour l'ordre ....
Par contre, pour l'indication, les diodes ne suffisent elles pas ? :badsmile:


:lol:

J'ai presque failli me faire avoir Pic :badfinger:



Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #18 - 03 October 2007, 12:55:27
Quote
Sirius me fait remarquer un truc juste ... pour docker,
Orbiter cale les repères du DockMFD sur le Dock0 .... et évidamment, le dock 0
n'est pas celui que j'ai mis à l'avant ... mais le panel est fini en ce qui concerne cette section ...
hein??? Dirais-tu que seul le Dock0 est affiché sur le DockMFD?
Car ce n'est pas le cas:





:doubt: :???:


------------

no matter.

Offline siriusfett

  • Legend
  • ******
  • Posts: 968
  • Country: France fr
  • Karma: 5
Reply #19 - 03 October 2007, 13:01:47
Quote
no matter a écrit:
Quote
Sirius me fait remarquer un truc juste ... pour docker,
Orbiter cale les repères du DockMFD sur le Dock0 .... et évidamment, le dock 0
n'est pas celui que j'ai mis à l'avant ... mais le panel est fini en ce qui concerne cette section ...
hein??? Dirais-tu que seul le Dock0 est affiché sur le DockMFD?
Car ce n'est pas le cas:


:doubt: :???:


La question est réglée no matter ;) comme quoi on en apprend tous les jours avec orbiter...Tellement l'habitude d'utiliser le dock 0 par défaut :pfff:



Message modifié ( 03-10-2007 13:10 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #20 - 03 October 2007, 17:10:17
Merci NoMatter .... tu m'eut épargné quelques heures de boulot avec ton post. :)
C'est qu'il m'a fait peur l'animal  .... je m'voyais déjà en train de
reprendre un bon bout de code pour inverser un 2 et un 0 ....
Mais heureusement j'ai vérifié avant de me lancer.
Et du coup, j'avais fait encore plus didactique  ......  :badsmile:




Pic

Offline siriusfett

  • Legend
  • ******
  • Posts: 968
  • Country: France fr
  • Karma: 5
Reply #21 - 03 October 2007, 17:21:02
Un conseil Pic, change d'alpha testeur :siffle:



Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #22 - 03 October 2007, 17:38:09
Meuh non .... c'est très bien en fait .... :beer:

ça permet aussi de voir sur quoi ça bute  et ça aiguillera la rédaction
de la doc pour se payer le moins de questions dans le genre ....
Pourquoi ça mâââââââaârche pôôôôôôôôô?^

Le seul problème est que quand je suis vraiment fatigué et plus très étanche
je suis capable de me lancer dans la corection de trucs imaginaires ...
je me suis pris la tête sur MMU pendant toute une nuit parce que j'avais
oublié de faire un Killrot sur Irridium avant de faire sortir des gars par exemple...
 j'ai même posté sur le forum sur le sujet :siffle:


Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #23 - 11 October 2007, 16:07:37
Je repensais à ces histoires de fueling.

Pourquoi ne pas mettre au point un petit fichier annexe ...
un peu comme un config. Ou même simplement écrire un mot clé sur scenario.
Du genre ENABLE AUTO REFUEL NO

Pouf .... quand tu crée le DGIV, si tu lis ce mot clé et si 0, impossible de refueler
sans passer dans le mothership pour ouvrir une vanne.

Si le mot n'est pas trouvé, pas grave, c'est le système Orbiter par défaut qui
est utilisé.

Ce pourrait être aussi simple à généraliser qu' UMMU .... il ne resterait plus qu'à
établir une petite liste des addons qui utilisent ce mot :badsmile:



Message modifié ( 11-10-2007 16:08 )

Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #24 - 11 October 2007, 23:16:23
Arrachage de cheveux sur un calcul. :wall:

Je fais ce calcul ou Data.dFuelMass=GetPropellantMass(ph_main);
Soit 100000,00 !
Sur la Doc, c'est en kilos et c'est une double.

   if (Data.dFuelMass>0)
   {
      if(PROBE1 && Probe[FUELPROBE1].dQuantiteFuel<810.00)
      {
      Probe[FUELPROBE1].dQuantiteFuel=Probe[FUELPROBE1].dQuantiteFuel+1.0;
      SetPropellantMass (ph_main,Data.dFuelMass-(Probe[FUELPROBE1].dQuantiteFuel/1000));
      }
   }


Traduit en plus simple, ça donne ça ...


      if(doubleFuel<810.00)
      {
         doubleFuel=doubleFuel+1.0;
         SetPropellantMass (ph_main, Data.dFuelMass-(doubleFuel/1000));
      }


Et j'obtiens ça .... :wall:
La preuve que mes variables sont initialisées sur la ligne du dessus.
J'affiche doubleFuel et GetPropellantMass ... avant .... après !



J'ai ajouté le 1000 après coup pour comprendre ce qui se passait car je vidais mon réservoir en un instant
et je n'avais pas le temps de voir ce qui se passait ... mais même ça n'est pas normal puisqu'il s'agit
normalement de la même unité.

Ces maths ou 100000 - 0,81 = 99671.55 m'échappent complètement ! :badsmile:
Mon problème vient il du fait de vouloir faire un SetFuel sur un GetFuel ?
Je crois que je ne comprend pas comment fonctionne le post step.
Pour moi, en 810 images, le plein était fait normalement non ?



Message modifié ( 11-10-2007 23:58 )

« Last Edit: 12 October 2007, 01:43:30 by picto »
Pic