SKSE GetArmorRating() - valeurs erronées pour les morceaux d'armure de fer

Le langage des scripts.
Répondre
Marcoousik
Moddeur aspirant
Moddeur aspirant
Messages : 189

SKSE GetArmorRating() - valeurs erronées pour les morceaux d'armure de fer

Message par Marcoousik »

Voilà en debuggant des valeurs bizarres sur mon mod de dégradation des items que je tombe sur cet étrange résultat:
- Dans une fonction, Je récupère un objet d'une formlist contenant tout un tas d'armures.
- Ensuite je place sur l'armure récupérée un getArmorRating(), bon, encore tout va bien pour toutes les armures..

Et là survient le méchant bug: Lorsqu'il s'agit d'une armure de fer, ou bottes de fer ou bouclier à bandes, le getArmorRating() retourne "0", ce qui ne correspond bien sûr pas à la valeur attendue.

Le truc c'est que pour toutes les autres armures testées avec cette même fonction, ça marche !!

Donc tout est comme si le bug semblait lié aux items spécifiquement "armure/bottes/gants de fer" .. :pensif:
J'ai testé l'influence éventuelle d'un autre mod, rien n'y fait..
J'ai encore testé depuis un autre mod qui ne touche pas aux armures, en désactivant le mod de dégradation, et en passant même les élements problématiques de fer en property d'un script. Résultat: "0"..
Bon, peut-être y a-t-il une incompatibilité entre ces items de fer et le "getArmorRating()" parce que là c'est plus que bizarre..

Pour pousser les tests, j'ai repris de long en large tous les items de toutes mes formlists avec un while en y ajoutant le getarmorRating(), tout fonctionne (heureusement) à part ces trois aberrations:
- Bottes de fer
- Armure de fer
- Bouclier à bandes
Totale absurdité, mais corrigible aux cas par cas, vu que celles-ci semblent être les seules aberrations..
À remarquer le GetarmorRating() fonctionne très bien si les armures sujettes sont équipées ! Le problème émerge si ces armures sont appelées (formlist par ex!)

Si quelqu'un voulait s'amuser à tester cela, ce serait intéressant de pouvoir confirmer/infirmer ces résultats étranges mais pourtant chez moi perdurant !
Modifié en dernier par Marcoousik le 06 déc. 2013, 02:57, modifié 2 fois.
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: Phénomène bizarre, bug: Armure de fer et getArmorRating(

Message par Gerauld »

Tiens, si ça, ça n'est pas un bon bug bizarre, je ne m'y connais pas.
Et qui dit bug bizzare, dit plein de tests à faire...

As-tu tenté de désactiver tous les mods pour voir?

As-tu tenté un

Code : Tout sélectionner

    Event oninit()
        messagebox("Armure : " + (Game.GetForm(0x00012E49) as Armor).GetArmorRating())
    Endevent
pour voir si la valeur qui sort est la bonne?

As-tu tenté de faire un

Code : Tout sélectionner

     Event oninit()
          (Game.GetForm(0x00012E49) as Armor).SetArmorRating(10)
      Endevent
ou un
► Afficher le texte
pour vérifier si le getarmorrating() te retourne 10 avec l'armure déséquipée?

La dernière modification des instructions SKSE touchant aux armures date du 09 novembre. Essaie peut-être de re-télécharger SKSE, il me semble qu'il y a eu deux MAJ depuis la dernière MAJ de Skyrim (je n'en suis plus sûr mais ça ne coûte rien de toute façon).
Hors-sujet
Etant donné qu'il s'agit d'un sujet de scripting abordant une instruction papyrus ajoutée par SKE, je déplace le sujet dans Scripts.
Marcoousik
Moddeur aspirant
Moddeur aspirant
Messages : 189

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Marcoousik »

Merci pour la réponse. Je testerai bientôt le SetArmorRating() sur les items problématiques. Je transmettrai les résultats..
Quant à la désactivation des autres mods: Oui, j'ai testé sans changement du bug.
Je n'ai pas testé getform() pour récupérer l'armure mais j'utilise:
Armor cuirass = Game.GetPlayer().GetWornForm(0x00000004) as Armor
et passe ensuite dessus le getArmorRating().
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Gerauld »

Hors-sujet
Évite d'utiliser game.getplayer() dans tes scripts. Cette instruction est plus de 20 fois plus lente que l'appel à une property de type actor. Les scripts de Bethesda sont l'exemple même de ce qu'il ne faut pas faire. Pour bien faire, ils auraient dû les optimiser un minimum...

Déclare une property comme suit : actor property playerref auto
Remplis-la avec l'auto-fill et remplace les game.getplayer() par playerref afin de gagner en vitesse d'exécution de tes scripts.
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Lucead »

Hors-sujet
Gerauld a écrit :Évite d'utiliser game.getplayer() dans tes scripts. Cette instruction est plus de 20 fois plus lente que l'appel à une property de type actor.
Je te conseille d'utiliser CKPE d'un auteur très modeste ( *cache sa signature* :siffle: ) qui te propose quelques optimisations de scripts.
Pour revenir sur le sujet, c'est en partie la raison pour laquelle je ne suis pas fan de SKSE (dans le principe). Pensez à envoyer un mail à l'équipe de SKSE aussi, cela pourrait vous permettre d'avoir "rapidement" une réponse et de savoir comment corriger la chose (vu que ce sont les seuls à comprendre leur usine à gaz...).
Marcoousik
Moddeur aspirant
Moddeur aspirant
Messages : 189

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Marcoousik »

Oui mais en attendant Skse permet de faire des merveilles.

En tous cas merci pour les tips je ne savais pas.
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Gerauld »

Hors-sujet
Pour CKPE, il ne rigolait pas, c'est vraiment un très bon éditeur. Je l'utilises aussi.
Avatar du membre
Lucead
Moddeur aspirant
Moddeur aspirant
Messages : 286

Re: [Demande-Bug] SKSE GetArmorRating() - valeurs erronées

Message par Lucead »

Marcoousik a écrit :Oui mais en attendant Skse permet de faire des merveilles..
Hors-sujet
Je ne dis pas le contraire ^^ Au contraire, j'attends ton mod avec impatience (qui me rends nostalgique de Morrowind), et je sais qu'en pratique, ce n'est pas possible sans le SKSE.
Répondre

Retourner vers « Entraide sur les scripts »