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: Spacecraf3 et DLL [résolu]  (Read 3092 times)

0 Members and 1 Guest are viewing this topic.

Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
09 May 2007, 15:09:51
ben allé je continu...

je crée une dll (pour mon prj) pour chaque module sol de la base lunaire... j'ai réalisé avec mal plus de 90% de 2 modules

mon prb est avec le spacecraft3... pour des raisons évidente je suis obligé de passé par lui pour géré mes playloads dans les
cargos (comme sa c'est plus simple pour un orbinaute de changé la cargaison pour ces missions en 2 lignes)

le problème est simple... et déjà remonté a Vinka:
quand on libère une DLL d'un spc3, la DLL n'as pas de coco...

je me demandé si on pouvait pallié a ce bug via sa propre DLL...? pour forcé la DLL a avoir son fuel a 100% hormis sa ligne
PROPELLANT_HANDLE hpr = CreatePropellantResource (M1_FUELMASS);

voila...
Merci!



Message modifié ( 16-05-2007 15:55 )


Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #1 - 09 May 2007, 16:43:34
oui par
OBJHANDLE HV =oapigetvesselbyname ("name")
VESSEL *V = oapiGetVesselInterface (HV);
PROPELLANT_HANDLE hpr =V->CreatePropellantResource (M1_FUELMASS);
V->setfuelmass(xx)

par le méme biais tu peu créer des thruster aussi:)




Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #2 - 09 May 2007, 16:54:41
Heu sorry!:wall:
 ça c'est pour une spc3 détachée d'une dll
dans ton cas fait un test sur l'attachement par " GetAttachmentStatus "
et "if null" un setfuelmass(xx) si l'attachement est libéré du vaisseaux sous spc3
je te conseille de faire le test par le handle du vaisseaux sous spc3 , de maniére à ne pas réinitialiser ton fuelmass
si tu l'attache à un autre vaisseau




Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #3 - 09 May 2007, 18:40:11
Merci!

Quote
korben62 a écrit:
dans ton cas fait un test sur l'attachement par " GetAttachmentStatus "
et "if null" un setfuelmass(xx) si l'attachement est libéré du vaisseaux sous spc3

bon la je vois pas trop... faut que je regarde sa... doit bien avoir un exp...



Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #4 - 10 May 2007, 01:06:48

      if (GetAttachmentStatus (payload_attachment))
         setfuelmass(xx)
      else
         setfuelmass(xx)
:)




Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #5 - 10 May 2007, 09:53:48
:)

j'étais parti plus loin moi...
Merci!

:)



Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #6 - 15 May 2007, 11:54:51
Arf.... j'ai un CTD a la séparation du module DLL...

(dsl pour le temps mort, je reviens juste de 4J a l'hosto...)



Offline MerciMartin

  • Sr. Member
  • ****
  • Posts: 399
  • Karma: 4
Reply #7 - 15 May 2007, 20:01:28
T'a mis des vis toi aussi ?
:)


Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #8 - 15 May 2007, 20:06:18
Quote
MerciMartin a écrit:
T'a mis des vis toi aussi ?
:)

:lol:
vi pour que sa tienne... j'en es pas fini...

sinon j'ai testé plein de truc sur ma DLL et rien marche... je comprend pas tous je crois... :bug:



Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #9 - 15 May 2007, 23:17:58
Tu peux faire çà par le biais d'une touche dans le pire des cas si tu n'arrives pas à appliquer la méthode de
Korben:

if(key==OAPI_KEY_P):
{
   SetFuelMass (masse de fuel max en kg);
   return1;
}

Bien sûr çà ne sera pas automatique, il te faudra appuyer sur la touche P et chaque fois que tu l'utiliseras ton reservoir sera rerempli. Une solution temporaire qui n'est pas vraiment mieux que l'emploi du scenario editor.



Message modifié ( 15-05-2007 23:41 )

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

no matter.

Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #10 - 16 May 2007, 10:22:10
vi, vi, faut que je trouve la solus tous de même...
M'enfin merci pour l'idée!



Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #11 - 16 May 2007, 10:31:02
Dans
GetAttachmentStatus (payload_attachment)
payload_attachment c'est le handle de l'attachement  qu'il faut utiliser, pas l' Id




Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #12 - 16 May 2007, 10:36:24
tu utilise peut étre plusieurs réservoir ?




Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #13 - 16 May 2007, 11:06:08
heum... c'est donc la causse du ctd...
j'ai fais sa comme sa:


le .h
Quote
protected:
ATTACHMENTHANDLE payload_attachment ;

le .cpp
Quote
void module1::clbkPostStep (double simt, double simdt, double mjd)
{
   if (GetAttachmentStatus (payload_attachment))
   {
   SetFuelMass(7500.0);
   }
        else
        {
        SetFuelMass(7500.0);
        }
}

... :bug:



Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #14 - 16 May 2007, 14:58:58
ah oui comme ça , ça risque pas de marcher
il te faut le createattachment
cpp

ATTACHMENTHANDLE CreateAttachment (
bool toparent,
const VECTOR3 &pos,
const VECTOR3 &dir,
const VECTOR3 &rot,
const char *id,
bool loose = false)  voir dans le SDK api reférence

regarde les exemples, shuttleA.cpp


« Last Edit: 16 May 2007, 15:54:59 by korben62 »


Offline Momo

  • Legend
  • ******
  • Posts: 2682
  • Karma: 1
Reply #15 - 16 May 2007, 15:54:59
oh yes!!!!!! mais bien sur!!!!!! voila sa marche maintenant!!!!!! (je dois etre bete....)
MERCI!!! j'ai pigé le truc!!!


« Last Edit: 16 May 2007, 15:54:59 by Momo »