Begin OnStartCombat / Begin On ?...
Begin OnStartCombat / Begin On ?...
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 !
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 !
- beeratwork
- Légende de la Confrérie
- Messages : 1881
Re: Begin OnStartCombat / Begin On ?...
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
Re: Begin OnStartCombat / Begin On ?...
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
Re: Begin OnStartCombat / Begin On ?...
Salut merci, beeratwork, en fait j'ai tout mis en GameMode et ça me donne ça :
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).
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 :
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 ?
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
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
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
Re: Begin OnStartCombat / Begin On ?...
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.
É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.
Re: Begin OnStartCombat / Begin On ?...
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.
- beeratwork
- Légende de la Confrérie
- Messages : 1881
Re: Begin OnStartCombat / Begin On ?...
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
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
Re: Begin OnStartCombat / Begin On ?...
Bon finalement j'ai peut être trouvé
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.

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.
Re: Begin OnStartCombat / Begin On ?...
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 ! 
Edit :
Euuuuh, beeratwork, je comprends pas tout à fait ta solution...

Edit :
Euuuuh, beeratwork, je comprends pas tout à fait ta solution...

- beeratwork
- Légende de la Confrérie
- Messages : 1881
Re: Begin OnStartCombat / Begin On ?...
Ce n'est pas GetEquiped que tu dois faire, mais EquipItem