Aller au contenu


Cabine ( Elevation D'un Rideau à L'aide D'un Activateur)


  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1 darkarya

darkarya

Posté 07 août 2009 - 02:04

Bonsoir,

J'ai comme projet de faire une cabine avec une vitre et un mur avec un interrupteur.

Je voudrais un script qui me permettrais quand j'active l'interrupteur (Onactivate) de retirer une somme d'argent au joueur (commande inconnu) et de faire monter le mur pour que l'on voit le vitre et par conséquent ce qu'il y a derriere la vitre.

Pour le mur qui monterai j'aimerai qu'on le voye monter progressivement et non pas d'un seul coup.

J'ai tout sauf le script je me tourne vers vous car j'ai vraiment du mal!!

Si vous avez les page du MsfD8 qui corresponde au commandes qui me manque dites les moi svp comme sa la prochaine fois je le ferais moi même escepter le problème du déplacement progressif du mur ou la meme avec une premiere explication je comprend pas.

Merci d'avance.

Amicalement

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool


#2 elendell

elendell

    Mécano Dell'Arte


Posté 07 août 2009 - 03:12

Bonsoir darkarya,

Il y a un script tout fait qui me semble correspondre à ton besoin. C'est celui des grilles de la porte des âmes (un pour chaque grille). Ils sont en local sur l'interrupteur qui actionne l'ouverture de la grille correspondante. Va déjà voir en jeu si c'est bien ce que tu recherches et ce qu'il faudrait éventuellement faire autrement. (Pour y aller avec la console : coc "porte des ames").
Les scripts des 2 interrupteurs sont "GG_OpenGate1" et "GG_OpenGate2".

Il n'y a pas de fonction spéciale pour retirer de l'or car c'est un "item" comme les autres (Gold_001). Il faut donc utiliser "RemoveItem". Tu trouveras facilement cette fonction dans le MSfD avec le bouton "recherche" du PDF ou avec la table des matières.

Ce serait bien que tu essayes de faire le script et s'il faut y faire des corrections, je les ferai avec plaisir mais essayer de comprendre les scripts existants et essayer d'en faire soi-même est le meilleur moyen pour apprendre.

Si tu n'y arrives pas du tout et que tu voudrais que quelqu'un te fasse entièrement le script, il faudrait que tu donnes au préalable toutes les contraintes et conditions :
- De combien d'unités le mur doit-il monter ?
- Une fois levé, reste-t-il toujours ouvert et si non, faut-il appuyer à nouveau sur l'interrupteur pour le refermer ou doit-il redescendre après un temps défini ?
- Que se passe-t-il si le PJ n'a pas suffisamment d'or ?
- Est-ce que le PJ est déjà informé et prêt à payer quand il actionne l'interrupteur ou faut-il une "MessageBox" qui l'informe que c'est payant, avec choix "oui" et "non" ?
- etc.

#3 darkarya

darkarya

Posté 07 août 2009 - 08:04

c'est parfais je vais m"y mettre et je mettrai ce que j'ai fait ensuite pour une eventuelle correction.

Merci beaucoup!!

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool


#4 darkarya

darkarya

Posté 29 août 2009 - 12:08

Bonjour,

Alors voila je souhaite créer un systeme de rideau (static) qui s'éleve à l'aide d'un activateur apres avoir.
Je souhaite aussi que cet activateur retire de l'argent au PJ (commant remove je crois) avec au préalable la question si oui ou non il souhaite payer (avec NON qui stop tout et oui qui retire l'argent et leve le rideau).

Le probleme c'est que je sais pas comment faire j'ai deja un premier script mais qui enleve pas d'or et qui fonctionne que si l'on active le rideau lui meme.

Voici le script qui me servira de base (enfin je pense)

begin _D_Rideau1

	DontSaveObject

   short state
   float timer

   if ( MenuMode ==1 )
	   return
   endif

   if ( state == 0 )
	   if ( OnActivate == 1 )
			PlayLoopSound3D "Item Clothes Down"
			set state to 5
	   endif
   endif


   if ( state == 5 )
		 set timer to ( timer + GetSecondsPassed )
			if ( timer < 2 )
				 MoveWorld, Z, 171
			elseif ( timer >= 2 )
				   StopSound "Item Clothes Down"
				   set state to 10
				   set timer to 0
				   return
			endif
   endif

if ( state == 10 )
		 set timer to ( timer + GetSecondsPassed )
		  if ( timer >= 5 )
			 set state to 12
			set timer to 0
		  endif
endif


   if ( state == 12 )
			PlayLoopSound3D "Item Clothes Down"
			set state to 15
   endif


   if ( state == 15 )
	   set timer to ( timer + GetSecondsPassed )
			if ( timer < 2 )
				 MoveWorld, Z, -171
							  elseif ( timer >= 2 )
				   StopSound "Item Clothes Down"
				   set state to 0
				   set timer to 0
				   return
			endif
   endif


end

PS: ce script permet d'ouvrir le rideau pendant un temps avant que celui ci se referme. Je souhaite aussi augmenter son temps où il reste ouvert à 30s mais je n'y arrive pas non plus :'S
Je m'embrouille un peu je doit dire

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool


#5 vor

vor

    Bugovore


Posté 29 août 2009 - 16:09

Bonjour darkarya,
C'est pas la première fois que tu demandes à ce qu'on te fasse un script, ou autre chose, simple à la portée de n'importe quel apprenti moddeur désireux de progresser. Autant la démarche lorsqu'elle relève d'une difficulté précise est louable et bénéfique à tous, autant son abus est considéré comme du clientélisme et ne profite vraiment à personne.

Je t'invite donc fortement à étudier sérieusement tous les fichiers dont on parle dans cette page, et à poser tes pbs en montrant que tu as fais de véritables efforts pour apprendre avant.

Personne n'est là pour faire tes mods à ta place, et c'est valable pour tout le monde et tous les moddeurs. Hormis dans une équipe sur un projet où chacun a sa tâche, l'aide donnée sur le forum est à vocation ponctuelle. Si tu veux continuer à en bénéficer et à ce que chacun puisse continuer à en bénéficier, je t'invite à modérer toi-même ton appétit de tout faire faire.

Apprendre à modder, c'est comme tout apprentissage, cela demande du temps et de l'investissement personnel. Si tu manques d'un des deux, passes à autre chose.

A bon entendeur...

#6 darkarya

darkarya

Posté 29 août 2009 - 17:13

Je veut pas qu'on me le fasse je veut juste une page du msdf ou une commande qui peut m'aider a mon probleme.
Pourquoi à chaque fois que je demande quelque chose vous dite que c'est pas à vous de me le faire!!

Je veut pas que vous me le fassiez je veut juste etre éclairez sur les commandes qui me manque.

D'autre personne demande de l'aide pour des commande comme moi et ils ne reçoivent pas autant de remarque que moi. Je pourrais savoir pourquoi vous etes comme sa avec moi?

Edit:  C'est bon quelqu'un m'a éclairé.
Je m'étrais à disposition le script si je suis bloqué ou quand il sera finit

Spoiler

Alors voila mon script je n'arrive pas à trouver pourquoi cela ne marche pas de plus rien ne s'affiche pas de message box quand j'active l'activateur.
Vous pouvez m'aider?

Modifié par darkarya, 29 août 2009 - 22:16.

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool


#7 elendell

elendell

    Mécano Dell'Arte


Posté 30 août 2009 - 00:22

Bonjour,

Tu avais déjà fait un sujet pour ce script au début du mois. Je fusionne donc les deux sujets qui traitent exactement du même script.

Citation

Je veut pas qu'on me le fasse je veut juste une page du msdf ou une commande qui peut m'aider a mon probleme.
Pourquoi à chaque fois que je demande quelque chose vous dite que c'est pas à vous de me le faire!!

Je veut pas que vous me le fassiez je veut juste etre éclairez sur les commandes qui me manque.
Tu remarqueras que c'est exactement ce que j'ai fait pour  pratiquement chacune de tes demandes d'aide, quand tu as manifesté une volonté de recherche personnelle.

Je passe beaucoup de temps (des heures) à répondre aux demandes. Pour avoir envie de continuer à répondre à titre personnel, j'ai besoin de percevoir que le demandeur se donne tous les moyens d'avancer (recherches, études de scripts existants, etc.). Mais aussi qu'il ait suffisamment conscience du travail que ça représente de s'investir pour aider les autres pour ne pas oublier un échange vieux de moins d'un mois, quand moi qui ne suis pas concerné, je m'en souviens encore parce que j'y ait accordé toute mon attention.

Nul n'étant parfait, tu peux très bien avoir peu de mémoire et oublier un précédent sujet sur la question. Deux fois de suite, ça devient un gros trou de mémoire. Mais même si ce n'est que ça, il te suffit avant de poster un nouveau sujet de vérifier systématiquement si tu n'en avais pas déjà fait un sur la question. Parce que sinon ça donne l'impression désagréable d'un net déséquilibre dans l'attention que t'a accordée le répondeur et celle que tu accordes à celui qui a pris la peine d'y réfléchir pour te répondre.

Ça, c'était un avis personnel mais en tant que testeur/modérateur de cette rubrique, je t'informe que si le cas se reproduit, ton sujet en doublon ne sera pas fusionné mais placé directement en cave.


A part ça, il faut que tu lises ou relises ce qui est dit dans le MSfD de "OnActivate" Regarde aussi tous les exemples de "timers" et de "messageBox". Par ailleurs, tu y verras plus clair si tu sépares tes blocs d'instructions. Traite la MessageBox, sans y inclure directement les instructions qui suivent la sélection des boutons.

Tu fais une variable qui prendra une valeur différente suivant le bouton et plus loin dans le script (à part) tu donnes les instructions en fonction de la valeur qu'aura reçue cette variable. En général, séparer le plus possible possible les étapes permet de bien voir où sont les erreurs, surtout au début.

#8 darkarya

darkarya

Posté 30 août 2009 - 09:41

Ok je vais essayé sa merci beaucoup et ce n'était pas pour toi la remarque par ce que je sais que tu m'a bien aidé pour les scripts mais je parle des autres qui font des reflexions alors que j'essaye de comprendre le fonctionnement des scripts qui je doit dire est loin d'être facil.

Merci à toi.

Bon je me suis concentrer sur la premiere partie du script qui consiste à faire monter et dessendre le rideau.

Spoiler

J'ai aussi travailler sur le messagebox comme tu l'a dit d'essayé de le faire séparément au début, le problème c'est que je ne sais pas comment fusionner les 2 scripts ni où je doit placer la commande RemoveItem "gold_001" 20

Spoiler

Modifié par darkarya, 30 août 2009 - 10:28.

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool


#9 elendell

elendell

    Mécano Dell'Arte


Posté 30 août 2009 - 15:21

Bonjour,

Ci dessous, un exemple de séparation des différentes étapes. Une fois que tout fonctionnera, tu pourras éventuellement en fusionner certaines mais travailler ainsi permet de mieux comprendre chaque étape :

Spoiler

Notes :

- Inutile de remettre "button" à 0 car il sera remis à -1 automatiquement par "set button to GetButtonPressed"
- Les "IDs" de scripts ou d'objets ne doivent pas avoir d'underscore comme premier caractère (_D_Rideau1). On trouve encore des scripts ou des tutos qui le conseillent mais on a découvert depuis que c'était une source de bugs.

#10 darkarya

darkarya

Posté 30 août 2009 - 18:47

Oua merci beaucoup je comprend meiux ce que tu voulais me dire en disant de séparer les commandes j'avais pas bien saisie et j'avoue que c'est vraiment plus clair je vais travailler dessus et te dire si cela fonctionne ou pas je mettrais aussi le script à disposition pour les interressés ou pour un probleme.

Encore merci

Edit:

Bon voila j'ai travaillé sur le monceau de script que tu m'a passé en essayant de compléter les trou comme il était indiqué, j'ai tout garder je le personnaliserais quand il sera correct ^^.

Voici le script:

Spoiler

Je vais voir si il fonctionne parfaitement et je revient vous le dire.

Edit: J'ai un problème le script fonctionne correctement sauf qu'il ne reconnais pas l'objet D_Rideau1 serais-ce par ce que c'est un static faudrait-il que je le créé en activateur??

Modifié par darkarya, 06 septembre 2009 - 13:28.

Si l'on devait étudier toutes les lois, on aurait pas le temps de les transgresser!

Moyen

Cool





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)