Begin OnStartCombat / Begin On ?...

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Oblivion.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Salut, mon problème est tout simple : pour un script, j'ai utilisé la commande/fonction Begin OnStartCombat, sauf que, pour un autre script j'aimerai commencer le script lorsque le joueur finit son combat ou n'est plus en combat donc là ça bloque, je ne trouve pas de fonctions faites pour avec Begin.

J'ai trouvé begin on death ou begin on murder mais sauf que si le joueur veut tuer plusieurs ennemis ça ne suffira pas...

Donc si quelqu'un peut m'aider... Que ce soit avec ou sans OBSE, peu importe parce que là je bloque.

Merci !
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Begin OnStartCombat / Begin On ?...

Message par beeratwork »

Essaye :

Code : Tout sélectionner

Begin OnStartCombat
    set CombatStarted to 1
End

Begin GameMode
    if (player.IsInCombat == 0 && CombatStarted == 1)
        set CombatStarted to 0
        ; action
    endif
end
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Begin OnStartCombat / Begin On ?...

Message par Prechan »

Tiens c'est marrant, c'est justement un script tel que celui-ci qu'il me faut pour une quête qui me bloquait...intéressant
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Salut merci, beeratwork, en fait j'ai tout mis en GameMode et ça me donne ça :

Code : Tout sélectionner

Scn	     Orcrum02

ref container
ref self
short incombat



Begin GameMode						; Ici on va donc retirer Orcrum02 et ajouter Orcrum01 


If player.GetEquipped Orcrum02 == 1			; Il faut que je le joueur soit équipé d'Orcrum02
	
	If player.IsInCombat == 0			; Il faut que le joueur NE soit PAS en combat
		
player.removeitem Orcrum02 1				; On retire donc Orcrum02
	
	player.additem Orcrum01 1			; On ajoute Orcrum01
	
                player.GetEquipped Orcrum01                                     ; On équipe le joueur d'Orcrum01

	Endif

Endif

End
Alors je vais tester ça dans 5 sec, du moins je vais essayer parce que mon ordi bug bien avec oblivion ou fallout ou autres jeux...


Et donc voici mon autre problème, je veux faire parler mon épée, donc le script (pour Orcrum01 est ci-dessous).

Code : Tout sélectionner

Scn  	Orcrum01Script

ref container
ref self
short incombat

Begin GameMode									; Ici on va donc retirer Orcrum01 et ajouter Orcrum02 


If player.GetEquipped Orcrum01 == 1						; Il faut que je le joueur soit équipé d'Orcrum01
	
	If player.IsInCombat == 1						; Il faut que le joueur soit en combat
		
player.removeitem Orcrum01 1							; On retire donc Orcrum01
	
	player.additem Orcrum02 1						; On ajoute Orcrum02

	Player.GetEquipped Orcrum02                                                            ; On équipe le joueur d'Orcrum02

	Endif

Endif

End



Begin GameMode						 			; C'est ici que l'on va introduire les phrases de notre chère épée 


If player.GetEquipped Orcrum01 == 1			 			; Il faut bien sûr qu'Orcrum01 soit équipée
	
	If player.IsInCombat == 1			 			; Parle si en combat
	
	Message "Allez ! Je me transforme !", 4
	
	Endif
	
	If player.IsInInterior							; Parle si en intérieur
	
	Message "Bon essaie de ne pas trop te faire remarquer cette fois ci...", 4
	
	Endif
	
	If player.GetDead == 1							; Parle si le joueur meurt
	
	Message "T'inquiète pas, on va se relever et le tuer ! De toutes façons, il a triché !", 4 
	
	Endif
	
	If player.payfine == 1							; Parle si le joueur paie son amende 
	
	Message "On essaiera de ne plus faire de bétîses...", 4
	
	Endif
	
	If player.GoToJail == 1							; Parle si le joueur va en prison
	
	Message "Ouais, de toutes façons on finira par sortir et je trouve que les gardes réagissent un peu au quart de tour...", 4
	
	Endif
	
	If player.IsSwimming == 1						; parle si on nage
	
	Message "J'espère que tu ne vas pas couler, je t'avais bien dit de ne pas trop manger la dernière fois !", 4
	
	Endif
	
	If IsRaining == 1							; Parle si il pleut
	
	Message "Quel mauvais temps, c'est désarçonnant...", 4
	
	Endif
	
	;If player.IsRunning == 1						Parle si le joueur court
	
	;Message "Han, je suis étonné que tu puisses courrir aussi longtemps.", 4 
	
	;Endif
	
	If player.IsActorUsingATorch == 1					; Parle si une torche est utilisée
	
	Message "S'il te plaît, ne me brûle pas...", 4				
	
	Endif
	
	If player.GetDetected player == 1						          ; Parle si le joueur est détécté et attaqué
	
	Message "Je crois que nos ennemis nous ont repéré, chef !", 4
	
	Endif
	
	If player.GetVampire == 1						; parle si je le joueur devient un vampire
	
	Message "Un vampire ? Oh ben tu fais comme tu veux, du moment que tu t'occupes de moi et qu'on combat ensemble !", 4
	
	Endif
	
	If player.GetCrime player, 0 == 1					; parle si le joueur vole
	
	Message "Euh c'est peut-être pas bien méchant de voler mais on ne te le pardonnera pas si facilement...", 4
	
	Endif
	
	If player.GetCrime player, 2 == 1					; parle si le joueur s'introduit chez quelqu'un 
	
	Message "Je t'en supplie, ne te fais pas avoir lors de ton intrusion ! J'ai pas envie de me faire mal voir !", 4
	
	Endif
	
	If player.GetSleeping == 4							; parle si le joueur à fini de dormir
	
	Message "Bien dormi, et toi ?", 4
	
	Endif
	
	If player.GetPlayerInSEWorld == 1
	
	Message "Whoua ! Le pays des fous, j'avais entendu parler de cet endroit, mais je n'étais encore jamais venu !", 4
	
	Endif
	
	If player.IsSneaking == 1						; Parle si le joueur est en mode furtif
	
	Message "Bon, on va essayer, je dis bien essayer, de se la jouer discrète !", 4
	
	Endif
	
	If player.IsRidingHorse == 1						; parle si le joueur est à cheval
	
	Message "J'espère que tu sais faire du cheval ! Je n'ai aucune envie de tomber !", 4
	
	Endif
	
Endif

End
Donc voilà et j'ai testé ça vite fait sur oblivion. Cependant je voulais savoir, si il existait un moyen de "modérer" les phrases. Parce que en fait, par exemple, prenez les dernières lignes du script :

Code : Tout sélectionner

If player.IsRidingHorse == 1						; parle si le joueur est à cheval
	
	Message "J'espère que tu sais faire du cheval ! Je n'ai aucune envie de tomber !", 4
	
	Endif
Et ben il faudrait que l'épée dise la phrase une seule fois lorsque le joueur monte à cheval, donc le 4 indique que le joueur le dit 4 secondes. Sauf que quand on monte à cheval, logiquement, la phrase va se répéter, 4 secondes à chaque fois, tant que l'on est à cheval. Y'a une commande ou je sais pas pour dire que l'on ne veut un message qu'une et unique fois à chaque fois que l'action se déclenche ?
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Begin OnStartCombat / Begin On ?...

Message par Prechan »

Oui c'est justement ce que j'allais dire comme pour IsRaining ou beaucoup d'autre, ca se répète. Je crois connaitre la solution, je cherche ca et je te le dit.

Édit: je ne vois rien car si tu met des "short compteur" le message ne pourra être dit qu'une fois. Il faudrait trouver un compteur temporel pour que le message ne soit pas dit plus d'une fois toutes les X minutes mais ma sagesse n'est pas assez poussée.
Modifié en dernier par Prechan le 24 janv. 2010, 16:55, modifié 2 fois.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Ok, merci Prechan ! Moi je viens juste de tester, et... tête en l'air comme je suis (en restant poli), ben l'ordi plante, logique puisque générer des phrases de 4 secondes indéfiniment en une seconde... c'est très dur à faire... Donc là je viens de laisser seulement le premier bloc et je vais voir si le script fonctionne.
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Begin OnStartCombat / Begin On ?...

Message par beeratwork »

Tu fais 2 step, la première avec tout tes message avec un set DoOnce to 1 et tu termine par
set step to 1 apères l'affichage des messages

A l'étape 1 tu vérifie les IsCeci et les IsCela == 0 et tu fait un DoOnce to 0 et tu termine avec un set step to 0
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Begin OnStartCombat / Begin On ?...

Message par Prechan »

Bon finalement j'ai peut être trouvé :calin:
il faudrait comme je l'ai dit, utiliser des "short ••••" pour limiter le nombre de message a 1
Puis utiliser la fonction "IsTimePassing" pour remettre le/les compteurs a zéro quand le player dort ou se repose. C'est assez compliqué et long mais je ne vois rien d'autre.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Begin OnStartCombat / Begin On ?...

Message par Karaiq »

Et bien merci à vous deux pour vos solutions je les essaierai une fois que j'aurais réglé le premier problème, parce qu'en fait, dans le premier bloc, on doit, normalement, quand le joueur entre en combat, retirer Orcrum01 (player.remove Orcrum01 1) et ajouter et équiper Orcrum02 (player.additem Orcrum02 1 & player.GetEquiped Orcrum02), sauf que, dans le jeu, quand on rentre en combat, on nous retire bien Orcrum01 et on ajoute bien Orcrum02, sauf que celle-ci n'est pas équipée, donc je vais essayer de régler ce problème, si vous avez des suggestions... n'hésitez pas ! :D

Edit :

Euuuuh, beeratwork, je comprends pas tout à fait ta solution... :s
Avatar du membre
beeratwork
Légende de la Confrérie
Légende de la Confrérie
Messages : 1881

Re: Begin OnStartCombat / Begin On ?...

Message par beeratwork »

Ce n'est pas GetEquiped que tu dois faire, mais EquipItem
Répondre

Retourner vers « Modder Oblivion »