Aller au contenu


Effacer Une Arme Et Invoquer


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

#1 twilight

twilight

Posté 06 mai 2009 - 14:40

Bonjour bonjour! je travaile actuelement sur un petit mode personnel,et je voudrais ajouter un script à une arme qui fait que, en la ramassant au sol, un npc soit invoquer(pas de probleme de ce coté,j'ai bidouillé le script invoquant un drémora) mais qu'ensuite, cette meme arme disparraisse totalement du jeu: qu'elle ne soit plus dans l'inventaire,ni sur le sol. (et si l'arme pouvait disparaitre avec un petit effet visuel...)

merci beaucoup :huhu:

ps: d'ailleurs,si vous aviez un script sous la main pour un anneau qui me téléporterait à un seul endroit uniquement...

Modifié par twilight, 06 mai 2009 - 14:46.


#2 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 15:08

tu veux que l'arme n'aille pas du tout dans l'inventaire du PJ ? ou qu'au bout d'un moment ( ex: fin de quête ) l'arme disparaisse ?

si tu veux que l'arme disparaisse a l'activation, ce script devrait convenir :

Begin mon_script
 
 Short State
 Float Timer
 Float TempsEffet
 
 If ( MenuMode == 1 )
 
	  return
 
 endif
 
 If ( OnActivate == 1 )
 
	 If ( State == 0 )
 
		 Set State to 1
		 Set TempsEffet to X
 
	 endif
 
	 return
 
 endif
 
 If ( State == 1 )
 
	 PlaceAtPC, ID_du_Dremora, 1, Distance, position
	 PlaceAtMe, ID_de_L_Effet_Special, 1, 0, 0
	 Disable
	 Set State to 2
 
  ElseIf ( State == 2 )
 
	 Set Timer to ( Timer + GetSecondsPassed )
 
	 If ( Timer >= TempsEffet )
 
		 ID_de_L_Effet_Special->Disable
		 Set State to 3
		 return
 
	 endif
 
 ElseIf ( State == 3 )
 
	 ID_de_L_Effet_Special->SetDelete 1
	 Set State to -1
	 return
 
 ElseIf ( State == -1 )
 
	 SetDelete 1
 
 endif
 
 end

notes :

Citation

PlaceAtPC, ID_du_Dremora, 1, Distance, direction

Distance est a remplacer par la distance en unité de jeu entre le joueur et le lieu d'apparition
direction correspond a la position de l'objet appellé. remplacer par 0 pour Devant, 1 pour Derrière, 2 pour à gauche, 3 pour à droite.

Citation

ID_de_L_Effet_Special

L'ID de l'effet special doit être unique.

Modifié par Snaïpe, 06 mai 2009 - 15:10.


#3 twilight

twilight

Posté 06 mai 2009 - 15:21

d'accord,merci,j'essai ça dans quelques minutes, mais j'ai une quetsion à propos du script.
Le "PlaceAtMe, ID_de_L_Effet_Special, 1, 0, 0 " dans le 3eme if fera que l'effet sera sur moi,non? je comptais le placer sur l'arme, donc..?  peut etre en remplaçant par "PlaceAtMe, ID_de_L_Effet_Special, 1, DUSTANCE DE L'ARME, 0"  ?? mais bof si c'est ça..un autre moyen?

edit: eurk, ils sont où les effets visuels dans le tescs?

Modifié par twilight, 06 mai 2009 - 15:23.


#4 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 15:26

Citation

Le "PlaceAtMe, ID_de_L_Effet_Special, 1, 0, 0 " dans le 3eme if fera que l'effet sera sur moi,non? je comptais le placer sur l'arme, donc..?

l'effet est placé sur l'arme. ( PlaceAtPc place sur le joueur et PlaceAtMe place sur l'objet en question )

Citation

edit: eurk, ils sont où les effets visuels dans le tescs?

essaye de voir dans les activateurs, et les statics ( met la "preview window" pour savoir quoi choisir ( Menu -> View -> Preview Window ) )

Edit : les effets speciaux de la magie sont situés dans l'onglet "static" et commenctent par "VFX_"


Citation

si vous aviez un script sous la main pour un anneau qui me téléporterait à un seul endroit uniquement...

voici :

Begin mon_script2

Short OnPCEquip
Short Button
Short State

If ( OnPCEquip == 1 )

	If ( State == 0 )

		Set State to 1
				Set OnPCEquip to 0


	endif

else

	 If ( State == -1 )

		Set State to 0

	endif

endif

If ( State == 1 )

	MessageBox "Utiliser l'anneau ?" "Non" "Oui"
	Set Button to GetButtonPressed
	Set State to 2

ElseIf ( State == 2 )

	If ( Button == 1 )

	   Player->PositionCell, X, Y, Z, Rot, "Cell"
	   Set State to -1

	endif

endif

notes :

Citation

Player->PositionCell, X, Y, Z, Rot, "Cell"

mettre toutes les coordonnées de position X Y Z, la rotation, et la cellule d'arrivée

Modifié par Snaïpe, 23 mai 2009 - 16:40.


#5 twilight

twilight

Posté 06 mai 2009 - 16:07

petit bug dans le script d'invo :

Begin Bill_MarksNightmareSummon

Short State
Float Timer
Float TempsEffet

If ( MenuMode == 1 )

return

endif

If ( OnActivate == 1 )

If ( State == 0 )

Set State to 1
Set TempsEffet to 5

endif

return

endif

If ( State == 1 )

PlaceAtPC, nightmare_npc, 1, 128, 1
PlaceAtMe, VFX_souledge, 1, 0, 0
Disable
Set State to 2

ElseIf ( State == 2 )

Set Timer to ( Timer + GetSecondsPassed )

If ( Timer >= TempsEffet )

VFX_souledge->Disable
Set State to 3
return

endif

ElseIf ( State == 3 )

VFX_souledge->SetDelete 1
Set State to -1
return

ElseIf ( State == -1 )

SetDelete 1

endif

end

"VFX_souledge" not found :/

#6 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 16:11

ce script vient d'un mod.

les composants ne se trouvent pas dans le morrowind de base... ça marche que si dans ton mod, il y a le même effet "VFX_souledge" dans les statics, mais ce n'est pas le cas.

#7 twilight

twilight

Posté 06 mai 2009 - 16:13

pourtant j'ai crée moi-meme le VFX_souledge.Il ets là,dans les statics,à attendre comme un clampin au milieu des autres VFX :/


aucune erreur signalée pour le premier vfx du script, alors que pour les 2 autres,oui. j'ai essayé avce un autre vfx, de meme..

Modifié par twilight, 06 mai 2009 - 16:24.


#8 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 16:30

1 - Utilise des préfixes qui permettent de distiguer ton mod des autres mods, c'est beaucoup plus facile de s'y retrouver après... ( pas de préfixes commençant par "_" sinon, ça génére des bugs  ... )

2 - tu n'as pas fait de fautes de frappes ?

3 - il se peut que ce soit un bug qui arrive de temps à autre dans le TESCS.

pour le résoudre, copie le contenu de ton script ( Laisse "Begin Bill_MarksNightmareSummon" et "End" ) dans le bloc notes windows, puis supprime ça de façon a ce qu'il reste :

Citation

Begin Bill_MarksNightmareSummon

Short State

End

N.B. Le "Short State" est là pour qu'un autre bug n'apparaisse pas. ( Bug du script trop court )

Sauve le plugin, sort complètement du TESCS, re-ouvre le TESCS, charge ton plugin, re-copie le contenu dans le script Bill_MarksNightmareSummon pour revenir a ce que tu avais en 1er ( tu dois avoir ça :
Spoiler
)

sauve ton script.

#9 twilight

twilight

Posté 06 mai 2009 - 16:41

nan,ben nan,toujours pas,et pas de fautes de frappes apparement :/

#10 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 17:00

j'ai testé le script avec MWEdit, il marche parfaitement.

le problème vient donc de ton objet.

as-tu coché la case "reference persists" de "VFX_souledge" ( pour pouvoir l'appeler dans un script ) ?

Modifié par Snaïpe, 06 mai 2009 - 17:00.


#11 twilight

twilight

Posté 06 mai 2009 - 17:02

euh nan,c'est grave?

..

toujours pas de différence, 3 messages pour le 2eme vtx, et 2 pour le 3eme...

Modifié par twilight, 06 mai 2009 - 17:06.


#12 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 17:05

ça permet d'appeler l'objet correctement dans un script, qu'il soit présent dans le jeu ou non, ou présent dans une autre cell que l'actuelle. ( les acteurs sont toujours en "reference persists" pour cette raison. )

réessaye en cochant la case, cette fois.

Modifié par Snaïpe, 06 mai 2009 - 17:06.


#13 twilight

twilight

Posté 06 mai 2009 - 17:10

c'est fait. j'ai refait la manipulation que tu avais décrite,mais pas de résultat plus probant..

#14 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 17:15

essaye de diminuer la taille du nom de ton script ( enlève "Bill_Marks" ( c'est le nom du gars qui a fait le script suivi du début de "précision" en anglais... )). ça peut provoquer des bugs.

#15 twilight

twilight

Posté 06 mai 2009 - 17:29

ben... fonctionne toujours pas :/
j'essaye de faire un script normal sans effet alors...doute qu'il fonctionnerai,mais bon,je lance morrowind,verrai bien ^^


Bon..épée qui disparait normalement (c'ets moche), nightmare qui apaprait et attaque immédiatement comme à son habitude,normal(moyen de faire un truc pour qu'il dise quelquechose avant d'atatquer?) mais l'armure qui ets désormais invisible quand on la porte,hum,faut que je cherche

désolé pour ton script,je 'lai charcuté pour arriver à mes fins :banderilles:

Begin NightmareSummon

Short State
Float Timer
Float TempsEffet

If ( MenuMode == 1 )

return

endif

If ( OnActivate == 1 )

If ( State == 0 )

Set State to 1
Set TempsEffet to 5

endif

return

endif

If ( State == 1 )

PlaceAtPC, nightmare_npc, 1, 128, 1
Disable
Set State to 2

ElseIf ( State == 2 )

ElseIf ( State == 3 )

SetDelete 1

endif

end

Modifié par twilight, 06 mai 2009 - 17:42.


#16 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 06 mai 2009 - 18:38

attention a la condition orpheline ici :

Citation

ElseIf ( State == 2 )

ElseIf ( State == 3 )

SetDelete 1

endif

la bon code est :


Citation

ElseIf ( State == 2 )

SetDelete 1

endif

et je pense toujours qu'il y a eu un problème avec l'effet. essaye d'en re-créer un avec un autre ID, et en activateur cette fois ( ça change rien de le mettre en activateur, mais tu peux après éventuellement ajouter un script a l'effet. )

Modifié par Snaïpe, 06 mai 2009 - 18:40.


#17 twilight

twilight

Posté 06 mai 2009 - 19:03

nan ben nan,marche pas plus en activator :/ bizarre tout ça

#18 elendell

elendell

    Mécano Dell'Arte


Posté 06 mai 2009 - 23:45

Bonjour twilight,

Essaye ça :

Begin Arme_Script

short etape
float timer

If ( MenuMode == 1 )
	return
endif

if ( GetDisabled )
	set etape to ( etape + 1 )
	if ( etape > 4 )
		SetDelete 1
	endif
	return
endif

If ( OnActivate == 1 )
	Cast, "summon dremora", player
	set etape to 1
endif

if ( etape == 1 )
	set timer to ( timer + GetSecondsPassed )
	if ( timer >= 1 ); ...timer à régler selon la durée visuelle de l'effet du sort choisi
		PlaceAtMe, dremora, 1, 0, 0; ... à remplacer par ce que tu veux faire apparaitre
		disable
	endif
endif

end

Si tu veux être un peu plus sadique et mieux surprendre le joueur, tu peux aussi faire ça (je préfère) :


Begin Arme_Script

short etape
float timer

If ( MenuMode == 1 )
	return
endif

if ( GetDisabled )
	set etape to ( etape + 1 )
	if ( etape > 4 )
		SetDelete 1
	endif
	return
endif

if ( etape == 0 )
	If ( OnActivate == 1 )
		Cast, "summon dremora", player
		set etape to 1
	endif
elseif ( etape == 1 )
	set timer to ( timer + GetSecondsPassed )
	if ( timer >= 4 ); ...Laisser quelques secondes où plus rien ne se passe
		PlaceAtMe, dremora, 1, 0, 0
		PlaySound "Thunder0"
		disable
	endif
endif


end

Dans ce deuxième script, le PJ actionne l'arme, ce qui produit un petit effet visuel. Puis, plus rien ne se passe et le joueur se dit que le "mod" est "bogué". Il actionne quand même à nouveau l'arme pour s'en assurer tout en relâchant son attention.
Et quand il ne s'y attend plus, coup de tonnerre et Dremora (ou PNJ) qui lui tombe dessus !  :laughing1:

Note : Si tu veux que le PNJ ou la créature lui parle avant d'attaquer, utilise les dialogues avec un "ForceGreeting".

PS : De quelle armure invisible parles-tu ?


@ Snaïpe :

Il y a deux points qui ne vont pas dans ton script :
- Faire apparaitre un effet avec son ID, en Static ou en activateur ne lui donne pas son animation.
- Un SetDelete 1 doit être fait dans le script de l'objet à supprimer, pour éviter des bugs.

#19 twilight

twilight

Posté 07 mai 2009 - 07:56

ahah,violent le PlaceAtMe! l'armé était planté dans le sol,et j'avais demandé l'invo en 128 , 1 ... il était à plat ventre et rampait pour me taper! :laughing1: bon,vais le remplacer par un PlaceAtPC ^^  "summon dremora" est l'effet visuel?

Pour "l'armure invisible" , il s'agit de l'armure de nightmare,disponible ici http://morromods.wiw....php?article845  Il semblerait que les bidules dans la colonne "male armor" se soit retiré, de toutes les pieces, et du coup ben..quiconque portait une piece de l'armure avait un membre invisible..^^ Je sais pas pourquoi tout a disparu comme ça,seul ma version enchantée subit ça,l'armure d'origine,non.


ah le coup de tonnerre!!! pensait pas qu'il était aussi fort!!xd par contre,à la premiere activation,rien ne se passe,je dosi cliquer 3-4 fois en plus pour que 'larme diparraisse,l'invo se réalise,le tonerre tonne,tout ça en meme temps et pis c'est tout,pas d'effet visuel

forcegreeting?

Modifié par twilight, 07 mai 2009 - 08:05.


#20 Kira

Kira

    Top-modeleuse...


Posté 07 mai 2009 - 08:10

Bonjour Twilight...
Pour que ton armure ne disparaisse pas, tu ne dois pas travailler sur ton mod sans avoir les référents de l'armure présents dans le Tescs...
Pour faire simple, si tu lances le Tescs avec l'esp de l'armure et ton mod cochés, tu peux donc prendre l'armure et la placer sur ton personnage, voire même lui redonner le nom que tu souhaites, mais si, ensuite, tu retravailles ton mod sans cocher l'esp de l'armure, il n'y aura que ce que tu as sauvegardé dans le mod qui apparaitra...
Or, une armure est composée d'un certain nombre de pièces, mais le Tescs a besoin de savoir quels bodyparts sont attachés à ces pièces...

Donc, si tu veux inclure une armure à un mod, il faut sauvegarder dans ce mod les pièces de l'armure et les bodyparts qui la composent...
Sinon, ne trouvant pas ces bodyparts mais ayant tout de même un nom, elle en conclura que son but dans la vie est d'être un espace vide...
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#21 elendell

elendell

    Mécano Dell'Arte


Posté 07 mai 2009 - 12:14

 twilight, le 07.05.2009 à 08:55, dit :

ah le coup de tonnerre!!! pensait pas qu'il était aussi fort!!xd par contre,à la premiere activation,rien ne se passe,je dosi cliquer 3-4 fois en plus pour que 'larme diparraisse,l'invo se réalise,le tonerre tonne,tout ça en meme temps et pis c'est tout,pas d'effet visuel
Je te l'ai écrit : J'ai mis 4 secondes de délai dans le deuxième script...

Le script, c'est à toi de le régler pour les moments d'apparition de chaque élément selon tes souhaits, quitte à faire plusieurs étapes du timer. Tu dois juste veiller à ce que le "Disable" ne se fasse pas avant la fin de l'effet magique (que tu dois choisir) et que le "SetDelete" ne se fasse pas avant que tout soit apparu. L'effet magique que j'ai mis est un original du jeu. J'ai testé le script (lié à une épée) en jeu et il fonctionne, y compris le petit visuel de l'effet.

Pour l'effet sonore que tu choisiras (si tu en mets un), tu peux régler le volume de deux manières :
- en créant ta propre ID de son (quitte à lui donner un wav existant). Dans ce cas, tu lui indiques un niveau par défaut dans sa fiche.
- en utilisant une ID existante mais avec "PlayLoopSound3DVP" au lieu de "PlaySound" car cette fonction permet de régler le volume (de 0 à 1.0). Dans ce cas, tu dois stopper le son ensuite.

 twilight, le 07.05.2009 à 08:55, dit :

forcegreeting?
<MSfD> !  sleeping.gif

#22 twilight

twilight

Posté 07 mai 2009 - 22:26

hum,en effet :mosc:

mais si je veux que l'arme disparaise immédiatement apres l'activation,tout en laissant la bestiole apparaitre apres quelques secondes? et qu'il y ait quand meme un effet visuel? et pour mettre l'invocation à un endroit précis de la cellule? jouer avec le "placeatme" ou il existe un autre moyen?



 Kira, le 07.05.2009 à 09:09, dit :

Bonjour Twilight...
Pour que ton armure ne disparaisse pas, tu ne dois pas travailler sur ton mod sans avoir les référents de l'armure présents dans le Tescs...
Pour faire simple, si tu lances le Tescs avec l'esp de l'armure et ton mod cochés, tu peux donc prendre l'armure et la placer sur ton personnage, voire même lui redonner le nom que tu souhaites, mais si, ensuite, tu retravailles ton mod sans cocher l'esp de l'armure, il n'y aura que ce que tu as sauvegardé dans le mod qui apparaitra...
Or, une armure est composée d'un certain nombre de pièces, mais le Tescs a besoin de savoir quels bodyparts sont attachés à ces pièces...

Donc, si tu veux inclure une armure à un mod, il faut sauvegarder dans ce mod les pièces de l'armure et les bodyparts qui la composent...
Sinon, ne trouvant pas ces bodyparts mais ayant tout de même un nom, elle en conclura que son but dans la vie est d'être un espace vide...


donc j'ai juste à ouvrir le tescs,ouvrir els 2 mods,placé MON mod à moi en active fill,aller dans "body parts", trouver les fichiers,les ouvrir,et cliquer sur "save" ? c'est tout?

#23 Kira

Kira

    Top-modeleuse...


Posté 07 mai 2009 - 22:50

Oui, ça suffit...
Si tu veux faire plus propre, tu peux renommer les Body paers, er mettre les nouveaux à la place des anciens dans les fiches d'objets de ton armure, dans les champs des biped objects...
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#24 twilight

twilight

Posté 08 mai 2009 - 08:33

d'accord.

Arg, Snaïpe, le cript pour l'anne n'a pas l'air de fonctionner... je place l'anneau sur moi,la message box apparait, je clique sur oui,puis rien... et apres la premiere "activation", impossible de relancer le script dans le jeu..

#25 elendell

elendell

    Mécano Dell'Arte


Posté 08 mai 2009 - 13:38

Bonjour twilight,

Il y a presque toujours plusieurs moyens possibles pour faire une situation. Si ce que tu veux faire est clairement déterminé, tu dois commencer par faire un cahier des charges précis. C'est à dire un plan de situation qui donne l'ordre de chaque évènement et le moment où ils se produisent. Ensuite, tu cherches (en t'aidant du MSfD) les fonctions utilisables.

Citation

mais si je veux que l'arme disparaise immédiatement apres l'activation,tout en laissant la bestiole apparaitre apres quelques secondes?
Pour ça, il suffit de faire le "Disable" dès l'activation et d'utiliser un timer pour l'apparition de la créature. Le script de l'arme continue de fonctionner même si elle est "disabled". Mais je t'ai proposé "Cast" lancé par l'arme pour créer l'effet visuel. Hors, contrairement à d'autres fonctions, "Cast" ne peux pas être lancé par un objet "disabled".

Pour tenir compte de toutes les contraintes que tu indiques, le plus simple serait sans doute de placer un activateur invisible à l'endroit de la cellule où doit se faire l'invocation. Dans ce cas, ce serait le script de l'activateur qui gèrerait tout, dans la chronologie que tu souhaites.
Le script de l'arme ne servirait plus qu'à dire à l'activateur quand commencer la séquence d'évènements et aussi à la supprimer dès qu'elle est activée :

Begin Arme_Script

short frame

If ( MenuMode == 1 )
	return
endif

if ( GetDisabled )
	set frame to ( frame + 1 )
	if ( frame > 4 )
		SetDelete 1
	endif
	return
endif

If ( OnActivate == 1 )
	set VARIABLEGLOBALE to 1
	Disable
endif

end

A partir du moment où VARIABLEGLOBALE est à 1 (condition à placer dans le script de l'activateur), ce dernier fait la suite (lancement de sort, son, placement de créature, etc. Un fois qu'il a tout fini, il se "disable" et se "SetDelete".

Pour placer ou déplacer la créature, il y a plusieurs possibilités. Lis les pages 43 à 47 du MSfD et fais des essais. Si un essai ne fonctionne pas et que tu ne comprends pas pourquoi, reporte le script ici. Et en attendant la réponse de Snaïpe pour l'anneau, profites-en pour regarder le petit script de téléportation qui est page 45.




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

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