Aller au contenu


Questions De Script (encore)


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

#1 twister

twister

Posté 17 septembre 2005 - 17:36

Alors peut-etre quelque chose de simple ou peut-etre que non, mais n'y connaissans rien en script je m'en remet à vous.

j'en aurais deux en fait , voila dabord le premier :

1° il faudrait qu'il se passe 3 chose : _un fondu noir
                                                 _1 heures s'ecoule (et on le voit si possible comme quand on dors)
                                                 _la vie, la fatique et le mana remonte.
je sais pas si cela a son importance pour vous mais le script sera lancé a partir d'un dialogue.


2° le deuxieme est différent : je veux que quand la créature meurt, elle revit au bout de 10 seconde par exemple.

si jamais ce n'est pas clair faite savoir.

#2 Angora

Angora

    Danse avec les bugs


Posté 17 septembre 2005 - 18:57

twister, le 17.09.2005 à 18:36, dit :

Alors peut-etre quelque chose de simple ou peut-etre que non, mais n'y connaissans rien en script je m'en remet à vous.

j'en aurais deux en fait , voila dabord le premier :

1° il faudrait qu'il se passe 3 chose : _un fondu noir
                                                 _1 heures s'ecoule (et on le voit si possible comme quand on dors)
                                                 _la vie, la fatique et le mana remonte.
je sais pas si cela a son importance pour vous mais le script sera lancé a partir d'un dialogue.


2° le deuxieme est différent : je veux que quand la créature meurt, elle revit au bout de 10 seconde par exemple.

si jamais ce n'est pas clair faite savoir.

<{POST_SNAPBACK}>



Pour le premier script, je peux te donner un script que j'ai fait moi et qui marche :

Begin GZ-FL_FadeScript

float timer
short etat

if ( menuMode == 1 )
	return
endif

set timer to ( timer + GetSecondsPassed )

if ( etat == 0 )
	disablePlayerControls
	fadeout 1
	set etat to 1
endif

if ( etat == 1 )
	if ( timer >= 1 )
  set etat to 2
  set timer to 0
	endif
endif

if ( etat == 2 )
	fadein 3
	set etat to 3
endif

if ( etat == 3 )
	if ( timer >= 3 )
  set etat to 4
  set timer to 0
	endif
endif

if ( etat == 4 )
	set GameHour to ( GameHour + 0.5 )
	set etat to 0
	set timer to 0
	enablePlayerControls
	stopScript GZ-FL_FadeScript
endif

End GZ-FL_FadeScript

Explications : ce script fait un fondu au noir, puis un retour à la lumière, et fait avancer le temps d'une demi-heure. Les stats ne remontent pas.

Modification à faire pour obtenir ce que tu veux, remplace la dernière boucle if/endif par ceci

if ( etat == 4 )
	set GameHour to ( GameHour + 1 )
	set etat to 0
	set timer to 0
	enablePlayerControls
	player->modCurrentHealth 60
	player->modCurrentFatigue 60
	player->modCurrentMagicka 60
	stopScript GZ-FL_FadeScript
endif

Remplace les valeurs par ce que tu préfère (y compris pour les timers, qui déterminent en combien de temps le fondu s'opère, à noter qu'ils doivent être égaux aux valeur passées pour fadein et fadeout). Et n'oublie pas de renommer le script !

Ce script est aussi lancé depuis un dialogue (startscript dans result), c'est pourquoi il est important de garder le "if menumode" si le dialogue qui lance le script se termine par un goodbye.

Pour la résurrection de créature, c'est assez simple.

Begin Autoresurrection
float timer

if ( OnDeath == 1 )
	set timer to ( timer + GetSecondsPassed )
endif

if ( timer >= 10 )
	set timer to 0
	cast "hearth heal" player
	resurrect
endif

End Autoresurrection

Il vaut mieux mettre un tel script sur une créature qui n'a pas d'inventaire, en effet l'inventaire est recréé avec la résurrection. Dix secondes laissent assez de temps à un joueur pour piller le cadavre. (Il me semble que ça remet aussi toutes les variables à 0, ce qui fait que le "set timer to 0" n'est pas nécessaire, mais je préfère le mettre à titre de précaution.) Il est donc assez génant de tuer un seigneur drémora, de récupérer un katana daedrique, de le voir ressusciter, de le retuer, et de retrouver un autre katana daedrique récupérable.

Afin de faire plus joli, on peut chercher un sort qui ai un effet sympathique et le mettre. Un sort de soin, par exemple. C'est pourquoi j'ai mis « cast "hearth heal" player ». A noter que ça ne jettera pas le sort sur le joueur, puisque ce sort affecte celui qui le lance, mais les créatures, PNJs, et simples objets refusent de jeter un sort si leur cible n'est pas Player...
Le saviez-vous ?

En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.

#3 twister

twister

Posté 17 septembre 2005 - 19:03

c'est parfait, exactement ce que je voulais !

merci beaucoup Angora.

vraiment merci merci merci merci

#4 muta

muta

Posté 17 septembre 2005 - 19:15

Pour ta deuxième question, il faut utiliser la fonction "résurect" et un timer. Je te conseil de lire le tutorial scripting for dumnies sur le site.

Par exemple:
Spoiler

Etant un noob en scripting, ce script ne marchera sûrement pas. Mais si quelqu'un pouvai le corriger svp....

EDIT: Ultra grillé:dehor:

Modifié par muta, 17 septembre 2005 - 19:19.


#5 Nerwal

Nerwal

    SAMU Kalendaarien


Posté 18 septembre 2005 - 01:53

Etant donné que OnDeath ne semble prendre la valeur 1 que pour une seule frame lorsque le porteur du script est tué, il faudra peut-être modifier très légèrement le deuxième script pour que ça marche bien :

Citation

Begin Autoresurrection

short mort
float timer

if ( OnDeath == 1 )
set mort to 1
endif

if ( mort == 1 )
set timer to ( timer + GetSecondsPassed )
if ( timer >= 10 )
set timer to 0
cast "hearth heal" player
resurrect
set mort to 0
endif
endif

End Autoresurrection

Citation

mais les créatures, PNJs, et simples objets refusent de jeter un sort si leur cible n'est pas Player...
Ce n'est pas si restrictif, mais les conditions pour pouvoir jeter des sorts sont assez obscures; il faut entre autres que la cible désigne un objet dans le jeu de façon non ambigue - ce qui n'est pas le cas si l'id de la cible apparaît dans le jeu sous plusieurs références, par exemple.

Modifié par Nerwal, 18 septembre 2005 - 01:58.


#6 MysticalShadow

MysticalShadow

Posté 05 octobre 2005 - 21:42

Voici une solution qui me paraît optimisée:

Spoiler


#7 twister

twister

Posté 29 octobre 2005 - 16:24

bon je remercie encore les personnes qui m'ont répondu mais j'aurais encore une question et plutot que de recré un sujet, je le post ici (c'est juste une petite question )

Comment fait-on pour mettre deux condition à la fois ?

par exemple je voulais que quand j'active mon misc item,  il faut que j'ai un certain objet sur moi pour qu'il s'active.

moi j'ai mis :
if ( OnActivate == 1 )
     if ( GetItemcout "L'IDdemonobjet" 1 ) ; je ne suis plus très sur de cette commande


mais voila il ne se passe rien.

#8 Squallynou

Squallynou

Posté 30 octobre 2005 - 12:42

Bonjour,

Le problème c'est que là tu demandes à ton misc item s'il a  un certain nombre d'objet :green: C'est au playr qu'il faut le demander :

if ( OnActivate == 1 )
  if ( player->GetItemCount, "ID_objet" >= nbminiAavoir )
	activate
  else
	messagebox "il faut nbminiAavoir ID_objet pour se servir de cet item !
  endif
endif

Voici une page qui te sera très utile :

http://www.uesp.net/...scommands.shtml


Bonne continuation

Modifié par Squallynou, 30 octobre 2005 - 12:46.

*la mort est un réel manque de savoir vivre*

#9 Ken Yuhi

Ken Yuhi

Posté 31 octobre 2005 - 14:28

Salut
Je travaille sur mon plugin et j'ai un pb de script enfin je pense, en faite je voudrait vendre des objets dans le musée à Lonsanglot et donc le script que j'ai fait c'est le suivant pour l'objet en question:

Begin MuseumNarsil

if ("Torasa Aram".Narsil < 1)
     Disable
endif

if ("Torasa Aram".Narsil == 1)
     Enable
endif

End MuseumNarsil

Et quand je lance le plugin pour le tester il m'affiche un message d'error d'expression, voilà jcommence à être perdue là je n'arrive pas à résoudre le pb... une petite aide ??
Un autre pb qui peut être lié j'ai prit exemple avec un objet du musée et dans les dialogues il utilise une fonction Local / iceblade / ... et je n'arrive pas à avoir la même chose avec mon objet ...
Enfin voilà si quelqu'un pouvait m'apprendre mes ignorances....
merci




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

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