Divers questions à propos de la programmation

Pour populariser ou demander de l'aide pour vos propres add-ons!
Avatar de l’utilisateur
gagarinekerman
Messages : 32
Inscription : 17 septembre 2014, 14:41
Localisation : perdu dans le systeme joolien
Contact :

Divers questions à propos de la programmation

Message par gagarinekerman » 17 janvier 2016, 14:43

Bonjour à tous,
Je débute dans la programmation et dans le modding sur KSP et j'aurais besoins d'un peu d'aide sur quelques points qui me bloquent :
- J'ai besoins de faire apparaitre les vaisseaux directement en orbite de kerbin lorsqu'ils sont lancés, existe t-il une commande pour modifier la position de vaisseau ?
- Comment des module dont certaines variable dépendent de la "part" comme par exemple le module "ModuleReactionWheel" qui dépend du PitchTorque, du YawTorque et du RollTorque ?
- Pour ceux qui s'y connaissent Visual Studio, j'ai un problème qui m’empêche de créer un nouveau projet car je n'ai plus les différentes class ( bibliothèque des class par exemple). Si quelqu'un sait d'où cela vient...
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
Image
Merci d'avance pour vos réponses ! ;)
Paix.

Avatar de l’utilisateur
Malah
Messages : 1488
Inscription : 02 novembre 2014, 02:18
Localisation : Rennes
Contact :

Re: Divers questions à propos de la programmation

Message par Malah » 17 janvier 2016, 16:05

Salut,
gagarinekerman a écrit :- J'ai besoins de faire apparaitre les vaisseaux directement en orbite de kerbin lorsqu'ils sont lancés, existe t-il une commande pour modifier la position de vaisseau ?
Je te conseil de feuilleter les codes des autres mods (une chance la grande partie des mods sont soit opensource soit avec les sources accessible), pour ton cas regarde HyperEdit ;) possible que OrbitSnap ai aussi les fonctions que tu recherches (possible aussi que le mod Re3 - Repair. Reinforce. Redefine utilise ces fonctions).
gagarinekerman a écrit :- Comment des module dont certaines variable dépendent de la "part" comme par exemple le module "ModuleReactionWheel" qui dépend du PitchTorque, du YawTorque et du RollTorque ?
Je ne comprends pas vraiment ce que tu recherches (quelles sont les variables d'un part module comme "ModuleReactionWheel" ? ou comment créer un PartModule ?). Pour créer un PartModule : regarde le tutoriel de kriyss : http://forum.kerbalspaceprogram.fr/view ... =30&t=3393
Pour les variables d'un modules, je te dirais de regarder les parts de Squad et de voir les variables qu'ils utilisent ou au pire de regarder dans les librairies de Squad et de justement lire le code de ModuleReactionWheel ;)
Pour les plugins j'avais fais une petite ébauche d'astuces et de liens intéressants : http://forum.kerbalspaceprogram.fr/view ... 734#p44005
gagarinekerman a écrit :- Pour ceux qui s'y connaissent Visual Studio, j'ai un problème qui m’empêche de créer un nouveau projet car je n'ai plus les différentes class ( bibliothèque des class par exemple). Si quelqu'un sait d'où cela vient...
Là, je ne pourrais pas t'aider car j'utilise monodevelop et si j'utilise monodevelop, c'est surtout parce qu'il est le seul à être disponible sous linux et à avoir une interface prévue pour le C#.

Avatar de l’utilisateur
gagarinekerman
Messages : 32
Inscription : 17 septembre 2014, 14:41
Localisation : perdu dans le systeme joolien
Contact :

Re: Divers questions à propos de la programmation

Message par gagarinekerman » 17 janvier 2016, 16:50

Salut, merci pour ta réponse.
Malah a écrit : Je ne comprends pas vraiment ce que tu recherches (quelles sont les variables d'un part module comme "ModuleReactionWheel" ? ou comment créer un PartModule ?). Pour créer un PartModule : regarde le tutoriel de kriyss : http://forum.kerbalspaceprogram.fr/view ... =30&t=3393
Pour les variables d'un modules, je te dirais de regarder les parts de Squad et de voir les variables qu'ils utilisent ou au pire de regarder dans les librairies de Squad et de justement lire le code de ModuleReactionWheel ;)
Pour les plugins j'avais fais une petite ébauche d'astuces et de liens intéressants : http://forum.kerbalspaceprogram.fr/view ... 734#p44005
Ce que je cherche, c'est le moyen de de faire un module que je peux applique à plusieurs parts et que certaines variable dépende de la part sur laquelle le module est appliqué. Par exemple, visiblement sur le module: "ModuleReactionWheel", le module (oui ça fait beaucoup de fois module :D ) prend en compte la capacité de la part à tourner à travers un variable et suivant la part, cette capacité est différente.
Donc pour mon module il faudrait quelque chose comme:

Code : Tout sélectionner

MODULE
{
name = nom du module
variableQuiDependDeLaPart = 42
}
C'est plus claire ? ;)
Paix.

Avatar de l’utilisateur
Malah
Messages : 1488
Inscription : 02 novembre 2014, 02:18
Localisation : Rennes
Contact :

Re: Divers questions à propos de la programmation

Message par Malah » 17 janvier 2016, 17:00

Oui, bien plus clair ;) donc le tutoriel de kriyss que j'ai cité plus haut correspond à ce que tu recherches ;)

Avatar de l’utilisateur
gagarinekerman
Messages : 32
Inscription : 17 septembre 2014, 14:41
Localisation : perdu dans le systeme joolien
Contact :

Re: Divers questions à propos de la programmation

Message par gagarinekerman » 17 janvier 2016, 17:09

Malah a écrit :Oui, bien plus clair ;) donc le tutoriel de kryss que j'ai cité plus haut correspond à ce que tu recherches ;)
J'ai déjà utilisé ce tutoriel qui m'a bien aidé mais il ne m'aide pas à résoudre mon problème... Je vais essayer de trouver un mod qui qui fait ce que je cherche pour trouver la fonction, merci pour le tuyau d’ailleurs. ;)
Paix.

Avatar de l’utilisateur
gagarinekerman
Messages : 32
Inscription : 17 septembre 2014, 14:41
Localisation : perdu dans le systeme joolien
Contact :

Re: Divers questions à propos de la programmation

Message par gagarinekerman » 17 janvier 2016, 17:37

Ça y est, j'ai trouvé comment définir une variable en fonction de la part en allant voir sur le code des autres mods. Pour ceux que ça intéresse :
Dans le fichier .cfg de votre parte, vous écrivez:

Code : Tout sélectionner

MODULE
{
name = nom du module
nomDeLaVariable = valeur
}
et dans le code du module, vous écrivez:

Code : Tout sélectionner

[KSPField]
public type de la variable nomDeLaVariable;

par exemple:

[KSPField]
public float variableNumeriqueExample;
;)
Paix.

Avatar de l’utilisateur
Malah
Messages : 1488
Inscription : 02 novembre 2014, 02:18
Localisation : Rennes
Contact :

Re: Divers questions à propos de la programmation

Message par Malah » 17 janvier 2016, 17:53

Oui, et il faut aussi savoir que l'on peut mettre des variables à KSPField pour aller plus loin (par exemple pour figer la valeur, afficher un nom, la modifier dans l'interface de KSP ...), exemple sur le module de kOS, on peut lire :

Code : Tout sélectionner

[KSPField(isPersistant = true, guiName = "kOS Disk Space", guiActive = true)]
public int diskSpace = 1024;
Source : https://github.com/KSP-KOS/KOS/blob/084 ... cs#L54-L55

Et à titre d'exemple pour ajouter un module kOS :

Code : Tout sélectionner

MODULE
	{
	    name = kOSProcessor
		diskSpace = 5000
	}
Source : https://github.com/malahx/StockPlugins/ ... cfg#L8-L12

Sinon une autre mine d'or est le forum officiel, il y a toujours une personne qui s'est posé la même question que toi (après, le plus dure est de retrouver la question en anglais :p) : http://forum.kerbalspaceprogram.com/ind ... d-support/

Avatar de l’utilisateur
gagarinekerman
Messages : 32
Inscription : 17 septembre 2014, 14:41
Localisation : perdu dans le systeme joolien
Contact :

Re: Divers questions à propos de la programmation

Message par gagarinekerman » 05 avril 2016, 19:49

Après moult recherche, j'ai finalement réussi à faire téléporter un vaisseau en orbite en m'inspirant de Hyper Edit. Pour ceux que ça intéresse, voici le code ;) :

Code : Tout sélectionner

//Cela permet de téléporter le vaisseau en orbite circulaire autour de kerbin à 100 000 mètres.

void Orbit()
        {
            var vessel = FlightGlobals.ActiveVessel;
            var orbit = vessel.orbitDriver.orbit;

            double mEp = 0;
            while (mEp < 0)
                mEp += Math.PI * 2;
            while (mEp > Math.PI * 2)
                mEp -= Math.PI * 2;
            vessel.Landed = false;
            vessel.landedAt = string.Empty;
            try
            {
                OrbitPhysicsManager.HoldVesselUnpack(60);
            }
            catch (NullReferenceException)
            {
            }

            var allVessels = FlightGlobals.fetch == null ? (IEnumerable<Vessel>)new[] { vessel } : FlightGlobals.Vessels;
            foreach (var v in allVessels.Where(v => v.packed == false))
                v.GoOnRails();

            orbit.inclination = 0;
            orbit.eccentricity = 0;
            orbit.semiMajorAxis = 100000 + FlightGlobals.ActiveVessel.mainBody.Radius;
            orbit.LAN = 0;
            orbit.argumentOfPeriapsis = 0;
            orbit.meanAnomalyAtEpoch = mEp;
            orbit.epoch = 0;
            orbit.referenceBody = FlightGlobals.ActiveVessel.mainBody;
            orbit.Init();
            orbit.UpdateFromUT(Planetarium.GetUniversalTime());

            vessel.orbitDriver.pos = vessel.orbit.pos.xzy;
            vessel.orbitDriver.vel = vessel.orbit.vel;
        }
Paix.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit