Script pour faire disparaitre infamie et réputation en équipant un objet

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Oblivion.
Répondre
Ecchi-Sama
Confrère
Messages : 16

Script pour faire disparaitre infamie et réputation en équipant un objet

Message par Ecchi-Sama »

Salut,
sans rapport avec la question mais très en rapport avec le titre :

j'essaye depuis quelques heures de créer un petit item d'anonymisation

le principe étant :
1 - quand je m'équipe de l'item ma prime, mon infamie et ma réputation passent à zéro et les valeurs d'origine sont enregistrées.
2 - à chaque fois que l'une des stats augmente l'incrémentation se fait sur le valeur enregistrée et la stat reste à zéro
3 - quand je déséquipe l'item je récupère les valeurs éventuellement incrémentées de ces 3 stats

mon problème c'est que je crée le script mais quand j'équipe l'item rien ne se passe.

j'ai essayé plein de petites variation mais rien n'y fait il doit y avoir un truc qui m'échappe...
est ce que quelqu'un pourrait m'aider ?

Voici le dernier script déféctueux auquel j'ai abouti :

Scriptname AnonymousAura

long hidebounty
long hideinfamy
long hidefame
short doitonce

begin onequip

if player.getcrimegold > 0
set hidebounty to hidebounty + player.getcrimegold
player.setcrimegold 0

if getpcinfamy > 0
set hideinfamy to hideinfamy + getpcinfamy
setpcinfamy 0

if getpcfame > 0
set hidefame to hidefame + getpcfame
setpcfame 0

end

begin onunequip

if doitonce == 0
player.setcrimegold hidebounty
set hidebounty to 0
setpcinfamy hideinfamy
set hideinfamy to 0
setpcfame hidefame
set hidefame to 0
set doitonce to 1
endif

end



Il y a forcément un truc qui coince mais je crois que là ça dépasse mes compétences de scripteur.
Donc merci d'avance pour toute aide.
Modifié en dernier par Ecchi-Sama le 06 déc. 2013, 02:29, modifié 2 fois.
Raison : Des majuscules...
Avatar du membre
A .
Légende de la Confrérie
Légende de la Confrérie
Messages : 5582

Re: Problème de script !!

Message par A . »

Ecchi-Sama a écrit : sans rapport avec la question mais très en rapport avec le titre
Certes... mais la Forge/Mods Maison est remplie de problème de scripts, alors si on commence à tout bourrer dans le même sujet...
Il vaudrait mieux que tu demandes le statut de Moddeur en Herbe à un administrateur, pour pouvoir accéder à la Forge et y faire ton propre topic.


Il manque des Endif dans ton script, mais si tu l'as testé c'est qu'ils y sont, sans quoi le Tesc t'aurais empêché de sauvegarder (encore que...). As-tu bien lié ton objet au script ? (le bon objet au bon script (d'objet) :mrgreen: ) Pour débugger un script, le mieux est encore d'y coller des messages à chaque étape. Déjà un premier « truc équipé » qui te permettra de t'assurer que le script tourne. Ensuite, à la fin de chaque If, rajoutes-en un avec la variable concernée, ça te permettra de connaitre sa valeur.

Pour

Code : Tout sélectionner

set hidebounty to hidebounty + player.getcrimegold
et ses clones avec les autres variables, j'aurais utilisé :

Code : Tout sélectionner

set hidebounty to player.getcrimegold
qui fait normalement la même chose, mais en allégeant le code. Mais à moins que ces variables puissent prendre des valeurs négatives, je doute que tes conditions If servent à quelque chose.

Code : Tout sélectionner

if doitonce == 0
[...]
set doitonce to 1
endif
Sauf erreur de ma part, si tu ne remets jamais à 0 doitonce dans le script, cette partie ne va être exécutée qu'une seule fois, que tu équipes/déséquipes ton objets 40 fois de suite, et ce jusqu'au prochain rechargement de ta sauvegarde.
D'ailleurs, est-ce que le DoItOnce est réellement utile, puisque cette partie ne s’exécute que lorsque l'on déséquipe l'objet (donc une seule fois) ?
Pas dit que tous ces détails feront tourner ton script, mais ça limitera déjà la casse - surtout que le CS se braque pour pas grand chose. :)

Pour réajuster tes valeurs de renommée/infamie/prime en cas d'augmentation, il faut que tu recalcules au moment de déséquiper l'objet. C'est à dire réutiliser des player.Getxxxxxxxx à stocker dans d'autres variables, et à ajouter aux valeurs précédemment stockées. Typiquement en exemple :
- j'équipe l'objet, j'ai alors une prime de 100 septims. Je passe à 0 septims.
- je bastonne un gars, je passe à 40 septims.
- j'enlève l'objet, je me retrouve à 100 + 40 septims.

Sauf que je viens de me rendre compte que ce n'était pas ce que tu voulais. Si tu veux que tes stats soient remises à 0 quand ton objet est équipé, il faut passer par un script de quête qui tournera en boucle, et stockera la valeur de telle ou telle variable avant de la remettre à 0, disons toutes les 0,5 secondes (donc là tu peux ressortir les If Truc > 0 :) ). Le bloc OnEquip ( et son petit frère OnUnequip) exécute le script... qu'au moment où on équipe, ou déséquipe, l'objet concerné - donc une seule fois.

Pour apprendre pleins de trucs chouettes sur les fonctions de script, notamment OnEquip : http://cs.elderscrolls.com/index.php/OnEquip
Ou si vraiment tu es anglophobe : http://wiwiki.wiwiland.net/index.php/TESCS2_:_OnEquip
This block will be run once when the scripted object is equipped by the specified Actor. If no parameter is used, the block will be run whenever the object is equipped by any actor.
Avatar du membre
jervi
Moddeur aspirant
Moddeur aspirant
Messages : 20

Re: Problème de script !!

Message par jervi »

Salut

Essaie-ça pour voir ! (Attention : applique bien le script sur l'objet en question !)

Scriptname AnonymousAura

long hidebounty
long hideinfamy
long hidefame
short doitonce

begin onequip player

set doitonce to 1

End

begin onunequip player

set doitonce to 0
set player.setcrimegold to hidebounty
set setpcinfamy to hideinfamy
set setpcfame to hidefame
set hidebounty to 0
set hideinfamy to 0
set hidefame to 0

End

begin GameMode

If doitonce == 1
If player.getcrimegold > 0
set hidebounty to hidebounty + player.getcrimegold
set player.setcrimegold to 0
Elsif getpcinfamy > 0
set hideinfamy to hideinfamy + getpcinfamy
set setpcinfamy to 0
Elsif getpcfame > 0
set hidefame to hidefame + getpcfame
set setpcfame to 0
Endif
Endif

End

Dis-moi si cela marche !!

Cordialement
Avatar du membre
deadlears
Testeur
Testeur
Messages : 384

Re: Problème de script !!

Message par deadlears »

au fait où en est tu de ton mod jervi?
J'ai beau être un dragon mon plus grand trésor ce sont mes amis cependant je les défendrais plus encore qu'une montagne d'or
Avatar du membre
jervi
Moddeur aspirant
Moddeur aspirant
Messages : 20

Re: Problème de script !!

Message par jervi »

Salut

Cela n'avance pas aussi vite que je voudrais !

Concrêtement :
Concernant les 5 modules de vie (gérant la faim, la soif, la maladie, la toilette et le sommeil), j'ai tout scripté. Bon c'est pas aussi subtile, que je l'aurais voulu, mais cela impose au joueur de consacrer plus d'attention à son compagnon (ce qui était la priorité).

Concernant les interactions avec son environnement, j'ai scripté tout ce qui concerne la nature, les PNJ, les actions du PJ, les animaux, les réactions en situations de combat. Je crois que pour la première version, je vais me cantonner à cela (mais j'aimerais bien scripter ses réactions dans les villes, donjons, ruines, et grottes et aussi vis-à-vis des grands personnages du jeu, comme Martin par exemple). Le problème, c'est que je n'ai trouvé aucune demoiselle pour me prêter sa voix, sniff !!

J'ai prévu une variable "sentiment", qui gère la proximité sentimentale entre le compagnon et le joueur. Mais, pour l'instant, j'avoue n'avoir rien scripté.

J'ai prévu qu'elle est aussi des Humeurs. Bon au début je ne savais pas trop comment faire. En fait, j'ai définis (enfin pas encore tout à fait) quatre états (Joie, rigueur, colère et tristesse). Ces quatre états sont eux-même défini par 3 variables (joie, tristesse et colère). Chaque fois, que Julie a une interaction les trois variables sont recalculés. L'idée, c'est que lorsque les 3 variables sont au même niveau (à peu près), Julie est dans un état neutre, que j'ai appelé "rigueur", et quand une des variables est supérieur ou égal à la somme des deux autres, Julie accède automatiquement à l'humeur correspondant.

Je voulais créer des animations spécifiques avec 3ds max, mais pour l'instant j'ai abandonné (j'arrive pas à exporter correctement mes fichiers .kf).

J'aimerais bien refaire le système de combat, mais on verra plus tard.

Le modélisation des armures de Julie : on verra plus tard.

Concernant la quête, je pense la composer de 6 ou 7 chapitres, allant de la rencontre au mariage. Pour l'instant, j'ai développé les deux premiers : La Rencontre et Faire connaissance.

Mais, je n'ai pas encore fait de phases de test. Donc, si jamais mon chronomètre ne marche pas, tout ce que j'ai fait jusqu'à présent, tombe à l'eau.
Avatar du membre
deadlears
Testeur
Testeur
Messages : 384

Re: Problème de script !!

Message par deadlears »

a ok ben bonne chance et fait une signature avec le niveau d'avancement ( ex : 35%) ce serait plus facile de savoir quand les testeur pourront te contacter pour le tester (sauf si tu veux pas je ne t'oblige pas sinon :pompom: )
J'ai beau être un dragon mon plus grand trésor ce sont mes amis cependant je les défendrais plus encore qu'une montagne d'or
Répondre

Retourner vers « Modder Oblivion »