Débugueur TES4 : aide (v3.02)

 

 

 

 

 

 

 

 

 Sommaire :

 

I)     Comment débuguer un script ?. 1

1)     Débuguer un script 1

2)     Préférences. 14

a)     Rapport d’erreur 27

b)     Traitement 48

c)     Interface. 66

3)     Divers. 93

 

II)    Erreurs du débugueur. 138

1)     Limitations du débugueur. 140

2)     Problèmes connus. 153

3)     Erreurs liées à l'utilisation du débugueur. 165

4)     Plates-formes acceptées. 182

 

III)  Remerciements. 203

 

IV)   Annexes. 261

1)     Liste des fonctions. 263

a)     Type void : 265

b)     Type int/float : 321

c)     Type référence : 375

d)     Type commande : 382

e)     Non documentées : 394

f)      Dépendant d’Oblivion Script Extender : 400

2)     Modifications à la version actuelle du débugueur. 432

 

 

 

 

I)                  Comment débuguer un script ?

 

Note préliminaire : le copier/coller marche avec les raccourcis clavier "Ctrl+C"/"Ctrl+V" dans la fenêtre de création de script du TESC.

 

1)      Débuguer un script

 

   Lancez le débugueur. Un document vide devrait normalement apparaître. Vous pouvez entrer ou copier/coller votre script dans cette fenêtre.

Pour débuguer votre script une fois entré dans la fenêtre, cliquez sur l’icône représentant une épée sur des lignes de texte : un rapport d’erreur devrait alors s’ouvrir. Vous pouvez également passer par le menu "Débuguage®Débuguer" ou utiliser le raccourci clavier Ctrl+D.

 

 

 

Remarques :

-         quand vous débuguez un fichier, votre script est automatiquement sauvegardé dans le fichier "ScriptOblivion.txt" et son rapport d’erreur dans le fichier "Correction de ScriptOblivion.txt" (situés dans le même dossier que l’exécutable du débugueur).

-         attention, à chaque nouveau débuguage, ces fichiers seront écrasés !

-         il n’y a qu’un seul rapport d’erreur ouvert par session du débugueur. Si vous débuguez un nouveau script ou que vous débuguez à nouveau le script en cours, l’ancien rapport d’erreur sera automatiquement fermé pour permettre l’affichage du nouveau rapport d’erreur.

 

   Voilà un exemple de script et de son rapport d’erreur :

 

 

 

2)      Préférences

 

   Vous pouvez, si vous le souhaitez, modifier certains paramètres du débugueur. Ces paramètres sont accessibles via l’icône en forme de cœur, ou le menu "Débuguage®Préférences".

 

 

 

 


   Une boîte de dialogue s’ouvre dans laquelle vous pouvez changer les valeurs prises par défaut.

 

 

Remarque :

-         vos choix seront mémorisés dans le fichier "DebugTES4.dat" (situé dans le même dossier que l’exécutable du débugueur) et seront réutilisés à la prochaine session du débugueur.

 

 

a)     Rapport d’erreur

 

   Ces choix définissent vos préférences vis à vis du contenu et du comportement du rapport d’erreur après un débuguage de votre script.

 

 

"Afficher le rapport d'erreurs après traitement" (option activée par défaut)

 

   Si cette option est activée, le débugueur ouvre le rapport d'erreur de votre script dans un nouveau document une fois que la syntaxe du script a été traitée. Si vous désactivez cette option, le rapport d'erreur sera tout de même créé dans le répertoire de l'exécutable, mais ne sera pas affiché.

 

 

"Afficher les informations sur le script" (option activée par défaut)

 

   Si cette option est activée, le débugueur affiche les variables et objets utilisés par le script. Sinon, seules les erreurs apparaîtront dans le rapport d’erreur.

 

Remarques :

-         les types des objets sont déterminés selon les fonctions utilisées par le script. Ces fonctions ne permettent pas toujours une détermination précise du type (par exemple, la fonction Disable peut s’appliquer à n’importe quel objet physique).

-         les types indiqués par le débugueur visent à être le plus précis possible. Par exemple, si vous utilisez une variable de type référence en tant qu’objet, cette variable sera indiquée comme étant de type objet et non de type référence.

-         si des fonctions indiquent des types incompatibles pour un objet, le débugueur renverra une erreur (par exemple, si vous tentez d’utiliser la fonction Disable sur une quête). ATTENTION, cette erreur n’aura pas forcément lieu d’être si vous utilisez une variable de type référence en lui donnant d’abord la référence d’un acteur, puis celle d’une arme par exemple.

 

 

"Ne pas afficher les alertes" (option désactivée par défaut)

 

   Cette option permet d'afficher ou non les alertes, c’est à dire les problèmes détectés sur le script qui sont susceptibles de poser des problèmes, mais ne le feront pas forcément.

 

 

 

b)     Traitement

 

   Ces choix définissent la manière dont le débugueur traitera votre script, selon les dépendances de votre mod et le type de votre script.

 

 

Type de script

 

   Cette option vous permet de spécifier le type de votre script (quête, objet ou effet magique) - le débugueur affichera alors une erreur si votre script utilise les spécificités d'un des deux autres types existants. Par défaut, votre script est traité comme étant de type indéterminé.

 

   Ne pas modifier cette option peut laisser passer des bugs au débuguage du script.

 

 

"Dépendant d’Oblivion Script Extender v8 ou inférieur" (option désactivée par défaut)

 

   Cette option permet à l’utilisateur de dire si son script dépend d’Oblivion Script Extender ou non. A noter que dans la version actuelle du débugueur (v3.0), seules les fonctions de la version 8 d’Oblivion Script Extender sont traitées (les fonctions des versions antérieures d’Oblivion Script Extender étant incluses dans la version 8, elles seront de facto traitées également. En revanche, les fonctions spécifiques aux versions suivantes d’Oblivion Script Extender ne le seront pas et déclencheront l’affichage d’un message d’erreur "Impossible de détecter la syntaxe.").

 

 

"Corriger automatiquement les erreurs d’espacement" (option activée par défaut)

 

   Si cette option est activée, les erreurs mineures d’espacement seront automatiquement corrigées par le débugueur avant le traitement de la syntaxe du script.

 

 

 

c)     Interface

 

   Ces choix définissent le comportement des zones de texte où vous entrez votre script.

 

 

"Désactiver l’aide de mise en forme automatique" (option désactivée par défaut)

 

   Si vous cochez cette option, le débugueur n’ajoutera pas automatiquement le bon nombre de tabulations devant votre ligne de code. Vous devrez alors gérer l’indentation de votre code par vous même.

 

Remarque :

-         l’aide de mise en forme automatique ne s’applique que quand vous appuyez sur Entrée. Tout texte copié/collé, chargé directement depuis un fichier ou entré sans presser ensuite la touche Entrée ne sera pas mis en forme de cette manière. Pour mettre en forme un script entier, utilisez l’option "Débuguage®Mettre en forme".

 

 

"Désactiver la coloration syntaxique" (option désactivée par défaut)

 

   Si vous cochez cette option, le débugueur ne colorera pas automatiquement votre code. De plus, toutes les fenêtres seront remises en noir (couleur de texte par défaut).

Voilà un exemple des couleurs différentes disponibles sur le débugueur :

 

 

Remarques :

-         si vous décochez cette case alors qu’un grand nombre de lignes de code est ouvert, le débugueur peut mettre plusieurs secondes à colorer le code en entier (une barre de progression vous informera de l’avancée de la coloration du code).

-         les fonctions gérées par la coloration syntaxique se trouvent dans le fichier "fonctions.txt" qui doit se trouver dans le même répertoire que l’exécutable du débugueur. Si ce n’est pas le cas, seuls les commentaires et les textes entre guillemets seront colorés, pas les fonctions.

-         vous pouvez ajouter vos propres fonctions à colorer dans le débugueur. Consultez le fichier "fonctions.txt", les règles de syntaxe sont expliquées dans son début.

 

 

 

3)      Divers

 

   Ces fonctionnalités vous offrent une plus grande facilité d’utilisation du débugueur.

 

 

Aller à la ligne

 

   Le débugueur n’offre pas de numérotation des lignes du script. Pour pallier à ce défaut, vous pouvez cliquer sur l’icône représentant un point d’interrogation à côté de lignes de texte : une toute petite boîte de dialogue va alors apparaître dans laquelle vous pourrez entrer un numéro de ligne. Si cette ligne existe, la sélection se placera automatiquement à sa fin.

Cette fonctionnalité est particulièrement pratique si le débugueur vous annonce une erreur ligne 645639 et que vous n’avez pas le courage de compter jusque là ! ^^

Vous pouvez également utiliser cette fonctionnalité avec le raccourci clavier Ctrl+G.

 

 

 

 


Voilà un exemple de menu qui apparaît :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Remarques :

-         si la ligne demandée n’existe pas, la sélection ne sera pas changée.

-         si vous cliquez dans la fenêtre contenant le script, c’est le clic qui sera pris en compte pour choisir la sélection et non le chiffre de la ligne.

-         si le dialogue dans lequel vous devez entrer le chiffre perd le focus (c’est à dire que vous cliquez sur une autre fenêtre du débugueur), la fenêtre se ferme et si elle contenait un numéro de ligne valide, la sélection est changée.

-         vous avez également accès à la ligne et à la colonne où se trouve actuellement la sélection tout en bas à droite, sur la barre d’état.

 

 

Statistiques du script

 

   Ce petit outil vous permettra de connaître le nombre de lignes dans votre script, ainsi que leur type (ligne de code, ligne de commentaire ou ligne vide). Pour y accéder, utilisez le choix "Débuguage®Statistiques du script" : une boîte de dialogue vous renverra ces informations.

 

 

Remarque :

-         une ligne contenant à la fois du code et un commentaire est considérée comme une ligne de code.

 

 

Mettre en forme

 

   Cette option permet de mettre en forme la totalité du script actif en une seule fois. Elle diffère du choix de préférences "Aide de mise en forme automatique" par son mode d’action : elle ne mettra en forme votre script qu’à l’instant où vous l’avez choisi, mais ne s’occupera ensuite pas de la mise en forme du code au fur et à mesure que vous l’entrez dans la fenêtre.

Pour y accéder, choisissez l’option "Débuguage®Mettre en forme".

 

 

Remettre par défaut

 

   Les variables utilisées par le débugueur peuvent être modifiées via l’option "Préférences". Cependant, si vous voulez toutes les remettre par défaut, vous pouvez également utiliser l'option "Remettre par défaut" dans le menu "Débuguage®Remettre par défaut". Si vous le faites, vos choix seront mémorisés comme étant "par défaut" dans le fichier temporaire "DebugTES4.dat" et seront réutilisés lors de votre prochaine session.

 

 

Nettoyer l’espace

 

   Pour effacer les fichiers temporaires générés par le débugueur, vous pouvez utiliser l'option "Nettoyer l'espace" du menu "Débuguage®Nettoyer l’espace". Attention, cette option remettra à zéro le débugueur lors de votre prochaine session (comme il était immédiatement après votre téléchargement), sauf si vous changez vos préférences entre temps.

 

 

 

 

 

 

II)                Erreurs du débugueur

 

1)      Limitations du débugueur

 

   Le débugueur ne peut pas gérer :

 

   Si votre script est dans un de ces cas, il est "normal" que des erreurs se produisent : le débugueur ne peut pas lire correctement votre script/ligne/objet, qui sera donc tronqué(e) et vous indiquera (probablement) une erreur là où il n'y en a pas.

 

 

   Si le débugueur vous indique des variables globales, assurez vous bien qu'elles existent. Par défaut, le débugueur considère comme globale toute variable non déclarée dans le script : si vous oubliez de déclarer une variable locale, elle se trouvera donc dans la liste des variables globales du débugueur.

 

 

 

2)      Problèmes connus

 

   Il y a des petits problèmes de coloration syntaxique quand on utilise la touche "Supprimer" : cette action ne met pas à jour les couleurs des lignes affectées jusqu’à ce que vous modifiez ces lignes d’une autre manière.

 

   Il est possible d'annuler la coloration syntaxique du mot en cours avec la touche "Annuler", ce qui ne devrait pas être le cas.

 

   Quand vous chargez un fichier ou quand vous activez la coloration syntaxique, il peut s'écouler quelques secondes avant que vous ayez à nouveau la main (le programme met un certain temps à chercher quelles zones de texte doivent être colorées).

 

   Du fait de la coloration syntaxique, quand vous chargez un document, il est automatiquement considéré comme changé même si vous n’y avez pas encore touché.

 

   Il existe un bug à l’accès direct à une ligne si vous avez installé Internet Explorer 7 : au lieu d’aller à la ligne demandée, la sélection se place à la fin de la ligne précédente. Le pourquoi du comment de ce bug m’échappe totalement, et je suspecte Microsoft d’avoir volontairement marabouté mon débugueur, de peur que je finisse par en faire un système d’exploitation à part entière qui concurrence Windows et les oblige à mettre la clef sous la porte. Mais hum… je m’égare ! ^^

 

 

 

3)      Erreurs liées à l'utilisation du débugueur

 

   Evitez d'utiliser des fichiers au format Word (extension en ".doc") : Word a une fâcheuse tendance à rajouter automatiquement des caractères n'appartenant pas au format texte standard (par exemple, des "e dans l'o", des points de suspension mis en forme, des guillemets spéciaux...) qui ne seront pas convertis par le débugueur en leurs équivalents standard (et donc, qui ne seront pas reconnus au mieux, et feront planter le débugueur au pire).

Cette remarque vaut également pour tout autre logiciel de traitement de texte avancé qui crée automatiquement des mises en forme particulières (StarOffice, OpenOffice, etc...).

 

 

   Si vous faites un copier/coller en utilisant le mode "Débuguer un script", ne copiez que du texte standard. Voyez la remarque précédente pour plus de détails. Faites également attention, si vous aviez demandé un retour automatique à la ligne dans des logiciels au traitement limité (NotePad par exemple), que les retours à la ligne artificiellement rajoutés ne soient pas conservés dans la zone de texte du mode "Débuguer un script".

 

 

   Si enfin le débugueur vous indique une erreur qui n'a vraiment pas lieu d'être, ou qu'il plante sans raison, qu'il traite mal les informations, etc..., alors :

-         allez voir sur le site Wiwiland si votre version du débugueur est bien la dernière en date ;

-         allez voir sur le sujet dédié du forum si d’autres n’ont pas déjà eu un problème similaire ;

-         contactez moi : viard-thomas@wanadoo.fr (ou le choix "Me contacter" dans le menu "Aide" du débugueur) en précisant bien quel est le problème (et, le cas échéant, en y joignant le script qui est mal corrigé).

 

 

 

 

4)      Plates-formes acceptées

 

   L'interface est codée en MFC (Microsoft Foundation Classes) : ce langage n'est à priori compatible qu'avec les plates-formes Windows.

 

   Le débugueur a été pleinement testé sur Windows XP édition familiale et fonctionne sans soucis sur cette plate-forme. Il est également compatible avec les autres éditions de Windows XP (versions pro). En revanche, il semble que le débugueur soit incompatible avec Windows 98 SE (manque des dll ? problème lié à la compilation sous une version antérieure de Windows ?). La compatibilité n’a pas été testée sur des versions intermédiaires de Windows.

 

   En résumé :

 

Testé

Compatibilité

Windows XP professionnel

+

+

Windows XP familiale

+

+

Windows NT

-

?

Windows 2000

-

?

Windows 98 SE

+

-

Windows 98

-

-

Windows 95

-

-

Autres plates-formes

-

-

 

 

 

 

 

III)             Remerciements

 

 

Merci à CGI et Laurent Niemann pour leurs tutoriaux sur la programmation Win32, sans lesquels l'interface du débugueur se serait limitée à une pauvre petite fenêtre console ! ^^ Leurs tutoriaux peuvent être trouvés aux adresses suivantes :

            - http://chgi.developpez.com/windows/ (CGI)

            - http://win32.planet-d.net/tut_w/chap1.htm (Laurent Niemann)

 

 

   Merci pour les retours de bug à...

-         Angora (problème sur le traitement de la fonction MessageBox - v1.0),

-         Orann (chaînes de caractères des IDs vides - v1.0),

-         Dradeel (mauvaise gestion des incompatibilités de type d'objet, impossibilité d'utiliser des références avec SetEssential - v1.02),

-         Citamagon (fonction IsSpellTarget mal écrite dans le débugueur - v1.02),

-         Citamagon & tuor_endmaril (absence de gestion des opérateurs logiques "&&" et "||" dans les commandes - v1.03),

-         Kephuro (erreur des numéros de ligne où l’erreur a été commise - v2.02),

-         Nerwal (verrouillage du mode "Débuguer un script" au delà de 5000 caractères, problème des guillemets pour les variables locales externes - v2.03),

-         Naalu Naiglemez (fonction GetEquipped oubliée - v2.04 - et bug de mise en forme - v3.0),

-         Kalas (problèmes de gestion des commandes pour les scripts d’effet magique - v2.04),

-         Alliop (bug de mise en forme, dans la fonction MessageBox, dans la fonction "Set … to …" - v2.05),

-         Damonya (fonction SetPos qui accepte des variables en entrée - v3.02).

 

 

Un grand merci à Nerwal pour ses tests très (!) complets sur la version Morrowind, dont a largement bénéficié la version Oblivion. (v2.03)

 

Merci à Alliop pour ses tests lors du débuguage de Nova Magica sous Morrowind, qui ont permis de corriger bien des bugs au moins dans le débugueur Morrowind et par la suite, dans ce débugueur ! ^^ (v2.05, héritée de la v2.03 de Morrowind)

 

Merci à Dradeel pour m'avoir signalé le problème des tabulations qui passent à la compilation dans le TESC oblivionesque, mais font "sauvagement planter in-game" ^^ - et pour m'avoir conseillé pour mettre en place la correction de façon aisée sur le débugueur ! (v1.01)

 

Merci à Squallynou et à DaesDemon pour la liste complète des fonctions sur Oblivion, incluant des fonctions existantes dans le TESC2 mais non référencées sur le Wiki des ElderScrolls (la plupart de ces fonctions sont pour l'instant non documentées : si quelqu'un sait comment elles s'utilisent, ne pas hésiter à me contacter !). (v1.01)

 

Merci à Squallynou pour l'idée d'une version Shell !

 

Merci à Duncan Imrryran pour les précisions sur les possibilités du multi-plateforme et l’idée d’un code source en "open source" !

 

Merci à Fandorn Delavie pour son idée d’un outil de mise en forme automatique, et à Nerwal pour l’idée du traitement des parenthèses ! (v2.04)

 

Merci à Mordicus pour ses idées d’amélioration de l’interface - fermeture des fenêtres de dialogues seulement quand elles ne sont plus nécessaires ! (v2.04)

 

Merci à Arvan pour son idée de chargement des fonctions gérées par la coloration syntaxique depuis un fichier ressource ! (v3.0)

 

Merci à Naalu Naiglemez pour ses nombreuses idées d’amélioration de l’interface ! (v3.0 et v3.01)

 

Merci à tous ceux qui m'ont encouragé et m'encouragent à développer ce débugueur sur le sujet dédié du forum de Wiwiland !

 

Enfin, merci à toute la communauté de Morrowind en général, et de Wiwiland en particulier, pour les bons moments qu'elle m'a fait passer !

 

 

Nenfëa

 

 

 

 

 

 

 

 

 

 

 

 

 

IV)            Annexes

 

1)      Liste des fonctions

 

a)     Type void :

 

            · Activate                     · AddAchievement       · AddFlames                · AddItem

            · AddScriptPackage     · AddSpell                   · AddTopic                  · AdvancePCLevel (advLevel)

            · AdvancePCSkill (advSkill)                            · AutoSave                  · Cast

            · CloseCurrentOblivionGate                            · CloseOblivionGate     · CompleteQuest

            · Disable                      · DisableLinkedPathPoints                               · DisablePlayerControls

            · Dispell                       · DispellAllSpells          · Drop                         · DropMe

            · DuplicateAllItems       · DuplicateNPCStats    · Enable                       · EnableFastTravel (EnableFast)

            · EnableLinkedPathPoints                                · EnablePlayerControls

            · EquipItem (EquipObject)                              · EssentialDeathReload

            · EvaluatePackage (evp)                                  · ForceActorValue (ForceAV)

            · ForceCloseOblivionGate                               · ForceFlee (Flee)        · ForceTakeCover (TakeCover)

            · ForceWeather (Fw)   · GoToJail                    · KillActor (Kill)           · KillAllActors (KillAll)

            · Lock                         · Look                         · LoopGroup               · Message

            · MessageBox              · ModActorValue (modAV)                            · ModAmountSoldStolen

            · ModBarterGold         · ModCrimeGold         · ModDisposition         · ModFactionRank

            · ModFactionReaction                                     · ModPCAttribute (modPCA)

            · ModPCFame            · ModPCInfamy           · ModPCMiscStat (modPCMS)

            · ModPCSkill (modPCS)                                · ModScale                  · MoveTo

            · MoveToMarker         · PayFine                     · PayFineThief              · PickIdle

            · PlaceAtMe                · PlayBink                    · PlayGroup                 · PlayMagicEffectVisuals (pme)

            · PlayMagicShaderVisuals (pms)                     · PlaySound                 · PlaySound3D

            · PositionCell (posCell)                                    · PositionWorld (posWorld)

            · PreLoadMagicEffect                                     · RefreshTopicList        · ReleaseWeatherOverride

            · RemoveAllItems        · RemoveFlames          · RemoveItem              · RemoveMe

            · RemoveScriptPackage                                  · RemoveSpell             · Reset3Dstate

            · ResetFallDamageTimer                                 · ResetHealth               · ResetInterior

            · ResurrectActor (Resurrect)                           · Rotate                       · SameFaction

            · SameFactionAsPC    · SameRace                 · SameRaceAsPC        · SameSex

            · SameSexAsPC          · Say                            · SayTo                       · ScriptEffectElapsedSeconds

            · SelectPlayerSpell (SPSpell)                           · SendTrespassAlarm   · SetActorAlpha (SAA)

            · SetActorFullName     · SetActorRefraction    · SetActorValue (setAV)

            · SetAlert                     · SetAngle                    · SetAtStart                 · SetBarterGold

            · SetCellFullName        · SetCellOwnership      · SetCellPublicFlag       · SetClass

            · SetCombatStyle (SetCS)                              · SetCrimeGold            · SetDestroyed

            · SetDoorDefaultOpen                                    · SetEssential               · SetFactionRank

            · SetFactionReaction    · SetForceRun             · SetForceSneak          · SetGhost

            · SetIgnoreFriendlyHits (sifh)                           · SetInCharGen            · SetInvestmentGold

            · SetItemValue             · SetLevel                    · SetNoRumors            · SetOpenState

            · SetOwnership            · SetPCExpelled          · SetPCFactionAttack  · SetPCFactionMurder

            · SetPCFactionSteal     · SetPCFactionSubmitAuthority                       · SetPCFame

            · SetPCInfamy             · SetPCSleepHours      · SetPackDuration (SPDur)

            · SetPos                       · SetQuestObject         · SetRestrained            · SetRigidBodyMass

            · SetScale                    · SetSize                      · SetShowQuestItems  · SetStage

            · SetUnconscious         · SetWeather (Sw)       · ShowBirthsignMenu   · ShowClassMenu

            · ShowDialogueSubtitles                                  · ShowEnchantment     · ShowMap

            · ShowRaceMenu        · ShowSpellMaking      · SkipAnim                  · StartCombat

            · StartConversation      · StartQuest                 · StopCombat              · StreamMusic

· StopCombatAlarmOnActor (scaOnActor)    · StopLook                  · StopMagicEffectVisuals (sme)

· StopMagicShaderVisuals (sms)                     · StopQuest                 · StopWaiting

· TrapUpdate               · TriggerHitShader (ths)                                   · UnequipItem (UnequipObject)

· Unlock                      · VampireFeed             · Wait                          · WakeUpPC

· Yield

 

 

b)     Type int/float :

 

            · CanHaveFlames        · CanPayCrimeGold     · GetActorValue (getAV)

            · GetAlarmed               · GetAmountSoldStolen                                   · GetAngle

            · GetArmorRating        · GetArmorRatingUpperBody                          · GetAttacked

            · GetBarterGold           · GetBaseActorValue (getBaseAV)                 · GetButtonPressed

            · GetClassDefaultMatch                                  · GetClothingValue       · GetCrime

            · GetCrimeGold           · GetCrimeKnown       · GetCurrentAIPackage

            · GetCurrentAIProcedure                                · GetCurrentTime         · GetCurrentWeatherPercent (getWeatherPct)

            · GetDayOfWeek        · GetDead                    · GetDeadCount          · GetDestroyed

            · GetDetected              · GetDetectionLevel     · GetDisabled               · GetDiseased

            · GetDisposition           · GetDistance               · GetDoorDefaultOpen · GetEquipped

            · GetFactionRank         · GetFactionRankDifference                            · GetFactionReaction

            · GetFatiguePercentage (getFatigue)                · GetForceRun             · GetForceSneak

            · GetFriendHit              · GetFurnitureMarkerID                                  · GetGameSetting (getGS)

            · GetGlobalValue         · GetGold                    · GetHeadingAngle       · GetIdleDoneOnce

            · GetIgnoreFriendlyHits (gifh)                          · GetInCell                   · GetInCellParam

            · GetInFaction              · GetInSameCell          · GetInWorldspace      · GetInvestmentGold

            · GetIsAlerted              · GetIsClass                 · GetIsClassDefault      · GetIsCreature

            · GetIsCurrentPackage                                    · GetIsCurrentWeather

            · GetWeather               · GetIsGhost                · GetIsID                     · GetIsPlayableRace

            · GetIsPlayerBirthsign (getPBS)                       · GetIsRace                 · GetIsReference

            · GetIsSex                   · GetIsUsedItem          · GetIsUsedItemType   · GetItemCount

            · GetKnockedState      · GetLineOfSight (getLOS)                              · GetLevel

            · GetLockLevel            · GetLocked                · GetNoRumors           · GetOfferServicesNow

            · GetOpenState            · GetPCExpelled          · GetPCFactionAttack

            · GetPCFactionMurder                                   · GetPCFactionSteal    · GetPCFactionSubmitAuthority

            · GetPCFame              · GetPCInFaction         · GetPCInfamy             · GetPCIsClas

            · GetPCIsRace            · GetPCIsSex              · GetPCMiscStat (getPCMS)

            · GetPCSleepHours     · GetPlayerControlsDisabled                           · GetPlayerHasLastHorseRidden

            · GetPOS                    · GetQuestRunning (getQR)                             · GetRandomPercent

            · GetRestrained            · GetScale                    · GetScriptVariable      · GetSecondsPassed

            · GetShouldAttack       · GetSitting                   · GetSleeping               · GetStage

            · GetStageDone           · GetStartAngle            · GetStartingPos           · GetTalkedToPC

            · GetTalkedToPCParam                                  · GetTimeDead            · GetTrespassWarningLevel

            · GetUnconscious         · GetUsedItemLevel     · GetVampire               · GetWalkSpeed (getWalk)

            · GetWeaponAnimType                                  · GetWeaponSkillType

            · GetWindSpeed          · HasFlames                 · HasMagicEffect         · HasVampireFed

            · IsActionRef               · IsActor                      · IsActorAVictim         · IsActorDetected

            · IsActorEvil                · IsActorsAIOff           · IsActorUsingATorch  · IsAnimPlaying

            · IsCellOwner              · IsCloudy                    · IsContinuingPackagePCNear

            · IsCurrentFurnitureObj                                   · IsCurrentFurnitureRef

            · IsEssential                  · IsFacingUp                · IsGuard                     · IsHorseStolen

            · IsIdlePlaying              · IsInCombat               · IsInDangerousWater  · IsInInterior

            · IsInMyOwnedCell     · IsLeftUp                    · IsOwner                    · IsPCAMurderer

            · IsPCSleeping             · IsPlayerInJail             · IsPlayerMovingIntoNewSpace

            · IsPlayersLastRiddenHorse                            · IsPleasant                  · IsRaining

            · IsRidingHorse            · IsRunning                   · IsShieldOut                · IsSneaking

            · IsSnowing                  · IsSpellTarget             · IsSwimming               · IsTalking

            · IsTimePassing            · IsTorchOut                · IsTrespassing             · IsTurnArrest

            · IsWaiting                   · IsWeaponOut            · IsXBox                      · IsYielding

            · MenuMode               · WhichServiceMenu

 

 

c)     Type référence :

 

            · CreateFullActorCopy                                    · DeleteFullActorCopy

            · GetActionRef (getAR)                                   · GetCombatTarget      · GetContainer

            · GetPackageTarget     · GetParentRef             · GetSelf                      · This

 

 

d)     Type commande :

 

            · GameMode               · MenuLMode             · OnActivate                · OnActorEquip

            · OnActorUnequip       · OnAdd                      · OnAlarm                   · OnAlarmVictim

            · OnDeath                    · OnDrop                     · OnEquip                    · OnHit

            · OnHitWith                 · OnKnockOut            · OnLoad                     · OnMagicEffectHit

            · OnMurder                 · OnPackageChange    · OnPackageDone       · OnPackageEnd

            · OnPackageStart        · OnReset                    · OnSell                       · OnStartCombat

            · OnTrigger                  · OnTriggerActor         · OnTriggerMob          · ScriptEffectFinish

            · ScriptEffectStart        · ScriptEffectUpdate

 

 

e)     Non documentées :

 

            · CSize                        · GetQuestVariable      · GetPersuasionNumber

            · GetTotalPersuasionNumber                           · GetUsedItemActivate

 

 

f)       Dépendant d’Oblivion Script Extender :

 

Note : les fonctions dépendant d’Oblivion Script Extender sont traitées jusqu’à la version 8 du logiciel. Au delà, elles renverront un message d’erreur "Impossible de détecter la syntaxe" qui n’a pas lieu d’être, du au fait que la fonction n’est pas mémorisée dans le débugueur.

 

            · AHammerKey           · Abs                           · Acos                         · ASin

            · Atan                          · Ceil                           · Cos                           · Cosh

            · DisableKey                · DisableMouse            · EnableKey                 · EnableMouse

            · Exp                           · Floor                         · GetAltControl            · GetBaseObject

            · GetControl                · GetCurrentValue        · GetEquippedCurrentValue

            · GetEquippedObject   · GetEquippedObjectValue                             · GetInventoryObject

            · GetKeyPress             · GetNumItems            · GetNumKeysPressed

            · GetOBSEVersion      · GetObjectType          · GetObjectValue         · GetParentCell

            · GetPlayerSpell           · con_GetINISetting     · con_HairTint              · HammerKey

            · HoldKey                   · IsActivator                 · IsAlchemyItem           · IsAmmo

            · IsArmor                     · IsBook                      · IsClothing                  · IsContainer

            · IsDoor                       · IsFurniture                 · IsIngredient                · IsKey

            · IsKeyPressed            · IsKeyPressed2          · IsLight                       · IsPotion

· IsSoulGem                 · IsWeapon                  · Log                           · Log10

· ModActorValue2      · con_ModWaterShader                                 · MoveMouseX

· MoveMouseY           · Pow                          · PrintToConsole          · PurgeCellBuffers

· Rand                         · con_RefreshINI         · ReleaseKey               · con_RunMemoryPass

            · SetMouseSpeedX     · SetMouseSpeedY     · con_SetCameraFOV · con_SetClipDist

            · con_SetFog               · con_SetGameSetting  · SetNumericGameSetting

            · con_SetGamma         · con_SetHDRParam   · con_SetImageSpaceGlow

            · con_SetINISetting     · con_SetSkyParam     · con_SetTargetRefraction

            · con_SetTargetRefractionFire                         · con_SexChange         · Sin

            · Sinh                           · SquareRoot               · Tan                            · Tanh

            · TapKey                     · con_ToggleDetection · UnhammerKey          · con_WaterDeepColor

            · con_WaterReflectionColor                            · con_WaterShallowColor

 

 

 

2)      Modifications à la version actuelle du débugueur

 

 

Version 1.0 (version de base) :                                                                                                                                                                 21/04/2006

-         vérification de la syntaxe de l'ensemble des fonctions oblivionesques

-         gestion des erreurs d'enchaînement des tests if/elseif/else/endif (et while/endwhile – n’existe pas sous Oblivion, retiré à la version 2.03)

-         vérification du bon ordre de la déclaration du nom du script, des déclarations des variables locales et des lignes de code

-         vérification que tout le code est bien compris dans les balises Begin/End

-         collecte des informations sur les objets utilisés dans le script

-         gestion des variables locales externes

-         gestion des incompatibilités dans l’utilisation des objets du script

-         gestion des types de script - quête, effet magique, objet ou indéterminé

-         etc...

-         correction du traitement de la fonction MessageBox (Angora)

-         correction du bug des chaînes de caractères vides autorisées (Orann)

-         ajout de tout un lot de fonctions non documentées dans le Wiki ElderScrolls (Squallynou et DaesDemon)

 

Version 1.01 :                                                                                                                                                                                             22/04/2006

-         détection des tabulations entrées après du code, source potentielle de plantages in-game (Dradeel)

-         correction du lien vers Wiwiland

-         correction d'un bug potentiel d'acquisition du texte du script - points-virgules entre guillemets considérés comme des commentaires

 

Version 1.02 :                                                                                                                                                                                            27/04/2006

-         correction de la fonction IsSpellTarget, écrite incorrectement (Citamagon)

-         ajout de l'impossibilité d'utiliser des références avec SetEssential (Dradeel)

-         correction de la mauvaise gestion des compatibilités entre types d'objets (Dradeel)

-         amélioration de la vitesse de traitement du débugueur

 

Version 1.03 :                                                                                                                                                                                            29/04/2006

-         ajout des opérateurs logiques "&&" et "||" dans la gestion des commandes (Citamagon et tuor_endmaril)

 

Version 1.04 :                                                                                                                                                                                            01/05/2006

-         correction d'un bug d'acquisition du script pour les tests - on ne tenait pas compte des commentaires

-         correction de la fonction IsPlayersLastRiddenHorse, écrite incorrectement

-         ajout de la commande OnPackageEnd, oubliée dans les versions précédentes

-         correction de la fonction EvaluatePackage (Evp) qui peut être utilisée seule

-         correction des fonctions Say et SayTo, qui peuvent renvoyer une valeur de type float

-         correction de la fonction ForceActorValue (ForceAV) qui traitait mal les statistiques

-         correction de la gestion des compatibilités avec les objets de type QUETE

-         amélioration de la gestion des variables externes, le log final ajoute désormais l'objet auquel elles sont attachées

 

Version 2.0 :                                                                                                                                                                                              03/05/2006

-         ajout d'une version Shell, qui était censée être compatible avec l'ensemble des plates-formes possibles

(en fait, c’est vrai à condition de la compiler soi même sous sa propre plate-forme, merci à Duncan pour les infos !)

 

Version 2.01 :                                                                                                                                                                                            25/05/2006

-         correction d'un bug d'affichage qui empêchait d'afficher la dernière ligne

-         légère amélioration de l'interface de la version win32 (ajout d'ascenseur au mode "Débuguer un script" et possibilité de réduire les dialogues)

-         ajout des options "Nettoyer l'espace de travail" et "Remettre par défaut"

 

Version 2.02 :                                                                                                                                                                                            01/06/2006

-         correction d'un bug sur les numéros des lignes dans les fonctions renvoyant une valeur (Kephuro)

-         retrait de la version Shell, mais ajout du code source compilable soit même (Duncan Imrryran)

-         passage de l’aide au format htm et adaptation de l’exécutable en conséquence

 

Version 2.03 :                                                                                                                                                                                            17/06/2006

-         verrouillage du mode "Débuguer un script" au delà de 5000 caractères (Nerwal)

-         correction d’un bug de traitement des variables externes si l’ID de l’objet auquel elle sont associées est entre guillemets (Nerwal)

-         correction du traitement redondant des fonctions WakeUpPC, DisablePlayerControls et EnablePlayerControls

-         correction de la fonction GetSleeping, mal orthographiée

-         retrait des blocs de test While/Endwhile, qui n’existent plus sous Oblivion

-         correction de la fonction KillActor (Kill), qui accepte comme paramètre optionnel l’ID du meurtrier

-         correction des fonctions Message et MessageBox, qui ne peuvent accepter que 9 variables à afficher au maximum

-         traitement des fonctions StreamMusic et IsActorsAIOff, désormais documentées sur le Wiki ElderScrolls

-         correction des fonctions non documentées, qui n’étaient pas détectées dans les expressions

-         ajout de la fonction RemoveSpell dans la liste des fonctions renvoyant une valeur

-         ajout de la fonction CreateFullActorCopy dans la liste des fonctions pouvant être utilisées seules

-         correction d’un bug lié à l’utilisation de virgules après les axes x, y ou z

-         petite modification des mentions du débugueur

 

Version 2.04 :                                                                                                                                                                                            09/07/2006

-         les fenêtres de dialogue ne se ferment plus si un problème a été détecté (Mordicus)

-         ajout d’un outil de mise en forme automatique (Fandorn Delavie & Nerwal)

-         ajout de la fonction GetEquipped qui avait été oubliée (Naalu Naiglemez)

-         amélioration des messages d’erreur pour les commandes des scripts d’effet magique (Kalas)

-         possibilité de charger un fichier dans l’option "Débuguer un script"

-         mémorisation du nom du dernier fichier débugué dans les fenêtres de dialogue "Charger un fichier", "Débuguer un fichier" et "Mettre en forme un fichier"

-         possibilité d’ouvrir le fichier extérieurement au débugueur dans les fenêtres de dialogue "Débuguer un fichier" et "Mettre en forme un fichier"

 

Version 2.05 :                                                                                                                                                                                            27/09/2006

-         correction d’un bug en utilisant des variables avec un underscore dans les fonctions Message et MessageBox (Alliop)

-         correction d’un bug lorsqu’on utilise deux espaces après le "Set" dans la fonction "Set … to …" (Alliop)

-         correction d’un bug de mise en forme : les lignes sans code, mais contenant des espaces, décalaient les tabulations (Alliop)

-         petites améliorations du readme (Alliop)

-         traitement des fonctions d’Oblivion Script Extender v8 (ou inférieur) si le mod en dépend

-         améliorations de l’interface - défilement horizontal dans les zones de texte, améliorations des menus, couleur du texte dans la fenêtre principale, mode "Débuguer un script"

-         les boîtes de dialogues sont désormais non modales : les menus de la fenêtre principale restent accessibles même si une boîte de dialogue est ouverte

-         possibilité de n’afficher que les erreurs au sens strict et pas les alertes

-         affichage d’alertes si le script contient des objets commençant par un underscore "_" (risques de bugs in-game)

 

Version 3.0 :                                                                                                                                                                                              23/11/2006

-         correction d’un bug de mise en forme (Naalu Naiglemez)

-         amélioration du rapport d’erreur : les noms gardent désormais la casse (Naalu Naiglemez)

-         modification complète de l’interface du débugueur (et en conséquence, de la présente aide)

-         le débugueur passe en application de type MDI (multiple document interface), permettant de débuguer plusieurs scripts en même temps

-         ajout d’une aide à la mise en forme quand on tape le script

-         ajout d’un outil de coloration syntaxique du script

-         légère accélération de la vitesse de traitement du script

-         ajout d’une option permettant de placer directement le curseur sur la ligne demandée

-         ajout d’un outil de statistiques sur le script

-         quelques points négatifs tout de même : limitation de la compatibilité du débugueur, plus de version shell possible pour l’étendre (de nombreuses fonctions étant spécifiques à Visual Studio)

 

Version 3.01 :                                                                                                                                                                                            09/12/2006

-         ajout des numéros de ligne et de colonne de la sélection en cours dans la barre d’état (Naalu Naiglemez)

-         ajout d’une option de correction automatique des erreurs de tabulations et d’espacement pendant le débuguage (Naalu Naiglemez)

-         ajout de raccourcis clavier pour le débuguage (Ctrl+D) et l’accès direct à une ligne (Ctrl+G) (Naalu Naiglemez)

-         ajout d’une barre de progression pour les processus longs (débuguage et coloration syntaxique d’un grand nombre de lignes en même temps)

-         plus de crashs à plus de 5000 caractères par ligne (mais les lignes sont toujours tronquées après le 5000-ième caractère)

-         correction des bugs de coloration syntaxique dus à un copier/coller

 

Version 3.02 :                                                                                                                                                                                            16/07/2007

-         correction de la fonction SetPos qui peut prendre des variables en entrée (Damonya)

Il est possible que d’autres fonctions soient dans ce cas, mais ne sachant pas lesquelles, je ne vais pas me lancer dans des corrections à l’aveuglette.

Si vous pensez avoir un problème similaire, n’hésitez pas à me le faire savoir !