Aller au contenu


[résolu] Faire Apparaitre Une Créature


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

#1 darkarya

darkarya

Posté 06 août 2009 - 02:13

Bonjour,

Alors voila je souhaite créer un script que je lierais à un objet.
Des que cet objet sera activé il fera apparaitre un monstre.

J'ai juste quelque petit problème comment je sais ou va apparaitre le monstre et aussi je sais pas si mon script est bon.

Pour ce qui est de l'apparition du monstre elle sera signaler par un messagebox et je souhaiterai que le monstre apparaisse devant l'objet activé.

Merci d'avance.

Voici mon script:

Spoiler

PS: j'ai un problème avec les accolades, mon ordi les affiches pas, mais je sais où elles sont.

Modifié par darkarya, 29 août 2009 - 21:00.

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é 06 août 2009 - 02:36

Bonsoir darkarya,

- Si tu veux qu'un monstre apparaisse à chaque fois que l'objet est activé, tu n'as pas besoin de "variable_de_controle". Lis la page 57 du MSfD8 à propos de la fonction "OnActivate". (Elle n'est à 1 que pendant une frame).

- Attention à laisser un espace entre la parenthèse et le caractère qui suit ou qui précède (il en manque 2).

- Les guillemets de "Id_mob" sont bons mais pas ceux de la MessageBox car ceux-là ( ” ) ne sont pas reconnus par le Tescs.

- Pour "PlaceAtPc", tu dois lire ce qu'en dit le MSfD8, page 46. Tout dépend où tu veux qu'il apparaisse par rapport à l'objet mais le MSfD indique à quoi sert chacune des 3 valeurs de la fonction. Note : Les virgules ne sont pas obligatoires mais tu dois laisser un espace entre les valeurs.

Ceci est suffisant si un monstre doit apparaitre à chaque activation :

Begin Tlp_monstre

if ( OnActivate == 1 )
	PlaceAtPc "Id_mob", 1, 50, 0; La distance est à régler
	MessageBox "Un 'nom du monstre' vient d'aparaître"
	PlaySound "IDdeSon"; Pour ajouter un petit effet sonore
endif

end


#3 darkarya

darkarya

Posté 06 août 2009 - 10:48

Merci, voici mon nouveau script plus compliquer mais plus stylé niveau jeux je le met au services de ceux interressé je vais le tester si j'ai un problème je revient vous voir!!

Begin Tlp_SD

short questionAsked ;question posée, oui ou non
short button ;bouton correspondant à la réponse
float myX ;coordonnées de l’objet à placer
float myY
float myZ

if ( MenuMode )
	return
endif

if ( OnActivate == 1 )
	if ( questionAsked == 0 )
		MessageBox, "Faire apparaitre..." "...une Sainte Dorée" "...un Dormeur Elevé" "...une liche"
		set questionAsked to 1
		set myX to GetPos X
		set myY to GetPos Y
		set myZ to GetPos Z
	endif
endif

if ( questionAsked != 0 )
	if ( questionAsked == 1 )
		set button to GetButtonPressed
		if ( button == -1 )
		else
			if ( button == 0 )
				PlaceAtPc "golden saint" myX myY myZ 16200
				PlaySound "gold saint moan"
			elseif ( button == 1 )
				PlaceAtPc "ascended_sleeper" myX myY myZ 16200
				PlaySound "ash zombie scream"
			elseif ( button == 2 )
				PlaceAtPc "lich" myX myY myZ 16200
				PlaySound "ash zombie scream"		
			endif
			set questionAsked to 0
			set button to –1
		endif
	endif
endif

end

Modifié par darkarya, 06 août 2009 - 23:56.

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

Moyen

Cool


#4 darkarya

darkarya

Posté 27 août 2009 - 11:58

Bonjour,

Alors voila mon probleme j'était déjà venu vous poser quelque question sur un script permettant de faire apparaitre un monstre à l'aide d'un activateur, le problème est que tout fonctionne (son, question,....) sauf l'apparition du monstre.

Pouvez vous m'aidez? Voici le script:

Spoiler

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

Moyen

Cool


#5 Cogite Stibon

Cogite Stibon

    Théoriquement moddeur


Posté 27 août 2009 - 12:10

Bonjour,

Tu récupères quoi comme valeur dans tes myX, myY et myZ ?
Je pense que le problème vient de là, car le PlaceAtPc prend comme paramètre des distance relatives au PJ, et pas des coordonnées absolues. Donc si tu as, par exemple, 5000 dans ton myX, le monstre sera placé à 5000 unité du PJ, et ne sera donc pas visible.

Tout droit vers le non-linéaire !
It's not the engine, it's the writing.
HERMA MORA ALTADOON AE


#6 alliop

alliop

    Renaissance de l'art magique.


Posté 27 août 2009 - 12:28

Bonjour :flowers:

C'est ton relevé de positions, qui contredit la fonction. "PlaceAtPC relève certainement lui même, en interne, la position du joueur, tu crèes un conflit.

Les 3 chiffres après le "PlaceAtPC" représentent : nombre d'objets à placer, distance, position par rapport au PC (devant, derrière, à gauche, à droite).

Si tu dois placer 1 truc à 128 unités de PC et devant lui, tu dois écrire :
PlaceAtPC MonTruc 1 128 0

(C'est parfaitement détaillé dans le fichier help des scripts du tesc sous les fonctions).



... et tant qu'on y est, autant prendre les devants sur un problème que tu auras peut être :

Si aucun exemplaire de l'objet (en tout cas PNJ ou créature) que tu veux placer n'est déjà présent dans une cell du jeu, à l'enregistrement du script le tesc va t'afficher une fenêtre d'erreur disant qu'il ne trouve pas l'objet.
==> Il faut placer un exemplaire de l'objet quelque part, par ex dans le wild d'une intérior cell en cochant la case "blocked", ou dans la cell "Au pays des merveilles" ou dans une cell "Todd" ou une créée pour l'usage.

Autre chose : si ta créature doit disparaître par "disable", ou si elle est tuée, n'utilise de startscripts à partir d'elle que dans son propre script local. Si tu écris dans un global ou un autre local " MonTruc->StartScript AutreScript ", la référence prise en compte sera toujours la référence 000000000.
Bref si tu as fait apparaitre plus d'un objet, toutes fonctions externes prenant cet objet pour référence ne s'exécuteront que sur son premier exemplaire, même si ce dernier est disabled ou décédé dans une autre cell.

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio


#7 elendell

elendell

    Mécano Dell'Arte


Posté 27 août 2009 - 21:10

Bonjour,

Ce sujet traite du même script que le précédent et fait inutilement doublon. Je fusionne donc les deux sujets.

Par ailleurs, je te rappelle une partie de mon précédent message :

Voir le messageelendell, le 06.08.2009 à 03:35, dit :

- Pour "PlaceAtPc", tu dois lire ce qu'en dit le MSfD8, page 46. Tout dépend où tu veux qu'il apparaisse par rapport à l'objet mais le MSfD indique à quoi sert chacune des 3 valeurs de la fonction.


#8 darkarya

darkarya

Posté 28 août 2009 - 19:48

désolé du doublon je rentrai de vac j'avais oublié.

Et pour la question du placeatpc j'avais pas saisie le probleme je pensais que c'était les coordonné mais j'ai compris merci et désolé de vous avoir embeté je vais faire un nouveau script et le mettrais a disposition pour d'autre ou pour une eventuelle correction.

Begin Tlp_SD

short questionAsked ;question posée, oui ou non
short button ;bouton correspondant à la réponse

if ( MenuMode )
	return
endif

if ( OnActivate == 1 )
	if ( questionAsked == 0 )
		MessageBox, "Faire apparaitre..." "...une Sainte Dorée" "...un Dormeur Elevé" "...une liche"
		set questionAsked to 1
	endif
endif

if ( questionAsked != 0 )
	if ( questionAsked == 1 )
		set button to GetButtonPressed
		if ( button == -1 )
		else
			if ( button == 0 )
				PlaceAtPc "golden saint", 1, 30, 1
				PlaySound "gold saint moan"
			elseif ( button == 1 )
				PlaceAtPc "ascended_sleeper", 1, 30, 1
				PlaySound "ash zombie scream"
			elseif ( button == 2 )
				PlaceAtPc "lich", 1, 30, 1
				PlaySound "ash zombie scream"		
			endif
			set questionAsked to 0
			set button to –1
		endif
	endif
endif

end

Avec ce script normalement la créature (ou l'objet se retrouve derriere le PJ a une distance de 30 unité. (enfin je crois je confirmerais apres avoir testé)

Modifié par darkarya, 28 août 2009 - 19:57.

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)