Le Débugueur De Scripts Sous Oblivion
#51
Posté 30 mai 2006 - 19:16
#52
Posté 30 mai 2006 - 20:23
J'essaierai aussi de commenter un peu mon code avant de le mettre dispo, pour faciliter le travail de ceux qui voudraient le réutiliser.
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#53
Posté 01 juin 2006 - 20:58
J'ai un petit bug avec ton debugger ! Je lui ai demandé de débugger le script suivant :
SCRIPTNAME XXXXXX Begin if (GetStage == 2) MessageBox "Texte" endif end
Et il plante au moment où je lui demande de débugger. Rapport d'erreur et tout le toutim.
Bon, j'ai pas lancé OllyDBG pour voir où ça coinçait, je te fais confiance :-)
D'ailleurs il est faux mon script ?? :-P Ah vi, ça doit être Begin quelque chose...oui mais quoi ? :-) Ya une liste de ce qu'on peut après ce Begin de dispo ou pas ?
Je devrais arrêter de poster si vite : http://cs.elderscrol...index.php/Begin
Ah oui, "XXXXX" ya autre chose, et "Texte" aussi hein, j'suis pas encore trop bête :-P
Modifié par Kephuro, 01 juin 2006 - 21:10.
#54
Posté 01 juin 2006 - 21:03
Profil RP
Membre du clan des Fervents Partisans de l'Immuabilité Avatarienne!
#55
Posté 01 juin 2006 - 21:07
#56
Posté 01 juin 2006 - 21:18
Il manque aussi la quête dont on cherche le GetStage, non ?
J'ai testé le script suivant :
SCRIPTNAME XXXXXX Begin OnActivate if (GetStage MaQuete == 2) MessageBox "Texte" endif end... et il n'affiche aucune erreur (ce qui est juste ! ).
Par contre, il indique une erreur ligne 1 si je ne mets pas le "MaQuete" alors que l'erreur est ligne 5... je vais regarder ça, merci !
Edit : ça y est, trouvé et corrigé ! (l'erreur était généralisée à presque toutes les fonctions renvoyant une valeur)
On passe à la version 2.02, qui :
- retire la version Shell, mais ajoute le code source (dont celui de cette version Shell)
- propose une aide en htm, autrement plus clair que du txt !
- corrige ce bug de numéros de lignes
Elle est toujours par ici.
Merci encore !
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#57
Posté 01 juin 2006 - 22:08
Le script ne fonctionne de toutes façons pas, même s'il se compile correctement après rectification. Il y a trop de trucs bizarres avec les scripts sur Oblivion je trouve.
Vous arrivez à faire enchainer deux MessageBox vous ? Moi pas.
Genre sur un NPC, j'ai collé ce script :
ScriptName XXXXXXX Begin OnActivate MessageBox "Test1" MessageBox "Test2" End
Et bah j'ai que la deuxième qui s'affiche.
Franchement, si ça vient d'eux on peut dire qu'ils ***** dans la colle !
#58
Posté 01 juin 2006 - 22:35
#59
Posté 01 juin 2006 - 22:58
Sinon ta réponse me parait logique, qu'est-ce qu'on pourrait faire alors ? Instaurer un délai ? Faire un GetButtonpressed et n'afficher la seconde que lorsqu'on a fermé la première ?
Vais tester tout ça, en tous cas merci :-)
#60
Posté 01 juin 2006 - 23:01
(enfin j'pense, j'ai pas attaqué les scripts d'Oblivion )
#61
Posté 05 juin 2006 - 12:14
#62
Posté 05 juin 2006 - 17:23
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#64
Posté 24 novembre 2006 - 11:32
Pseudo-edit : la version 2.04 est disponible par ici !
Elle modifie pas mal de bugs mineurs, mais surtout l'accent a été mis sur l'interface (sur la v2.04) pour le rendre plus agréable aux utilisateurs !
Petit extrait du log des changements :
------------------------
Hello !
J'ai récemment acheté une version étudiant de Visual Studio, et la version 3.0 du débugueur est en marche !
Parmi les principaux changements :
- Le débugueur passe désormais en application de type MDI (multiple document interface), ce qui veut dire que vous pouvez débuguer plusieurs scripts en même temps
- Aide automatique à la mise en forme des scripts (l'indentation se fait automatiquement quand vous appuyez sur Entrée) si vous le souhaitez
- Coloration syntaxique des fonctions reconnues par le débugueur
- Légère amélioration de la vitesse de traitement des scripts
Voilà un petit exemple de ce que ça donne au final :
Bon, il reste encore des problèmes à résoudre pour la coloration syntaxique (notamment le fait de colorer le script quand on le charge, plus quelques petits bugs), mais dans l'ensemble ça donne déja des résultats corrects !
Améliorations en prévision :
- possibilité d'ajouter des fonctions à colorer dans un fichier servant de ressource (merci à Arvan pour l'idée !)
- possibilité d'activer/désactiver la coloration syntaxique (je regarderai ça quand elle marchera ! )
------------------------
Ca y est, ça marche ! Voilà l'extrait du log des changements de la version 3.0 :
Une version bêta est disponible au téléchargement ici :
Débugueur de scripts Oblivion v3.0 BETA
ATTENTION, les nouvelles fonctionnalités de cette version bêta n'ont reçu que mes tests personnels. L'ensemble marchait sans soucis, mais il est tout à fait possible que je n'aie pas pensé à certaines éventualités qui feraient planter/buguer le débugueur.
Une version a été envoyée dans la BAL : si vous voulez la garantie d'une version stable, vous pouvez attendre la sortie officielle de cette version sur le site.
Bons débuguages !
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#66
Posté 25 novembre 2006 - 19:11
Naalu Naiglemez, le 25.11.2006 à 18:53, dit :
- La rubrique " Liste des variables locales utilisées " fait apparaître les variables type REFERENCE de façon aléatoire. Dans scriptname MS38Script d'Oblivion par exemple, la ref arrestGuard n'est pas listée, dans d'autres exemples toujours avec type REFERENCE elles sont incomplètes ou le nom est incongru, sans rapport.
Edit2 : d'accord, j'ai compris. C'est tout à fait normal : en réalité, la référence "arrestguard" se trouve parmi les objets de type "personne". J'ai fait le choix de le ranger dans cette catégorie si certaines fonctions me permettaient de mieux discriminer le type de la référence ! ("personne" est plus précis que "référence" )
J'en toucherai un mot dans le readme !
Citation
- Le Begin est parfois décalé, parfois pas,... je pense qu'il serait préférable de ne pas le décaler.
Citation
- Les variables listées le sont en caractères minuscules, s'il était possible de les afficher en respect des minuscules/majuscules ce serait un plus, notamment pour celles dont le nom est très long.
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#67
Posté 25 novembre 2006 - 20:45
Nenfëa, le 25.11.2006 à 19:11, dit :
Citation
- Le Begin est parfois décalé, parfois pas,... je pense qu'il serait préférable de ne pas le décaler.
Le décalage de begin se produit désormais après la treizième ( ) lettre de la syntaxe et non plus au début. Exemples sur les deux premiers scripts d'Oblivion.
*regarde sous son bureau s'il n'y aurait pas un fantôme*
@Edit1 : à noter que si l'on retire la ligne blanche aussitôt après le begin, le décalage par tabulation ne se produit plus.@Edit2 : Après débuguage du script scn OblivionBloodFountain01SCRIPT les lignes 19 et 61 sont signalées avec une tabulation intempestive. Dans les deux cas, on les trouve effectivement après un endif. Cependant, la correspondance de l'option " Aller à la ligne " du débugueur fait arriver à la ligne aussitôt avant.
@Edit3 : La bébête que tu viens de corriger ci-dessous est déjà très correcte (merci encore) et les termes syntaxiques en couleur sont d'un grand confort... Mais imagine qu'en passant le curseur de la souris par dessus on fasse apparaître l'info bulle de leur définition , ça devient alors la bébête qui tue !
Manquerait plus que :
- des infos bulles sur les icônes du menu,
- quelques raccourcis claviers similaires à ceux du Tesc dont le célèbre Ctrl G,
- la numérotation optionnelle des lignes de script en fond de teint,
- le nettoyage optionnel du script de toutes les remarques et/ou lignes vides, tabulations intempestives,
- l'apparition dans les statistiques du nombre de Message/MessageBox,
- et celui du % d'écriture ou nombre de caractères encore possibles avant de saturer le script,
- d'améliorer la liste des fonctions en ajoutant leur définition dans Aide (cf équivalent Wiwi s'il veut bien),
le générateur automatique de scripts basiques (ou machine à boudin pour les intimes),ok, ok j'arrête…
Modifié par Naalu Naiglemez, 26 novembre 2006 - 12:13.
#68
Posté 30 novembre 2006 - 08:27
De plus, les noms des objets sont désormais gardés avec la casse !
L'archive de mon post ci dessus a été corrigée et devrait contenir une bêbête un peu plus correcte !
Naalu Naiglemez, le 25.11.2006 à 20:45, dit :
Edit : je n'arrive pas à reproduire le problème avec le script OblivionBloodFountain01SCRIPT, chez moi il va bien directement en fin de la ligne 19 (ou 61).
Citation
Citation
Citation
Citation
Citation
Citation
Citation
Citation
Merci pour toutes ces idées !
J'en profite pour signaler que la v3.0 est en ligne, ainsi que la v2.05 pour ceux qui n'auraient pas XP !
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#69
Posté 01 décembre 2006 - 00:27
- Quelques raccourcis claviers similaires à ceux du Tesc dont le célèbre Ctrl G.
Dans une fenêtre de script sous l'éditeur du Tesc, appuyer sur Ctrl + G active une boîte de dialogue permettant un " Go To Line ".
. - La numérotation optionnelle des lignes de script en fond de teint.
Peut-être par là (si tu ne connais pas déjà).
. - L'apparition dans les statistiques du nombre de Message/MessageBox.
Je vois deux intérêts à cette information :- Rappeler que le script comporte des zones de textes et par conséquent éventuellement des fautes d'orthographe. A ce sujet pourquoi ne pas utiliser une fenêtre du débogueur ne ressortant que le texte avec possibilité de corrections manuelles puis réintégration automatique dans le script ?
- Le script qui contient ces Message/MessageBox, dispose en fait d'une réserve mémoire où aller puiser en cas de saturation : en réduisant le texte placé entre guillemets, on dégage une possibilité de continuer le script.
- Rappeler que le script comporte des zones de textes et par conséquent éventuellement des fautes d'orthographe. A ce sujet pourquoi ne pas utiliser une fenêtre du débogueur ne ressortant que le texte avec possibilité de corrections manuelles puis réintégration automatique dans le script ?
- Et celui du % d'écriture ou nombre de caractères encore possibles avant de saturer le script.
Je n'ai pas d'info sur l'évaluation d'un script avant saturation. J'ai remarqué que supprimer les commentaires et les lignes vides n'apportait rien, qu'un script qui sature peut néanmoins accepter de nouvelles déclarations de variables. Je soupçonne que certaines syntaxes sont plus consommatrices que d'autres, ce qui compliquerait l'évaluation.
. - Le générateur automatique de scripts basiques (ou machine à boudin pour les intimes).
J'appelle un script basique un script utilisé plusieurs fois dans un même mod, mais pour lequel les objets sont différents. Cette bête là pourrait ressembler à un publipostage où le modèle en fil de fer contiendrait les syntaxes sans les variables ni les objets, ceux-ci faisant partie d'une base de données. La fusion des deux produisant autant de scripts que nécessaires à récupérer en copier/coller vers le Tesc.
______________
.@Edit2 (Naalu) : Après débuguage du script scn OblivionBloodFountain01SCRIPT les lignes 19 et 61 sont signalées avec une tabulation intempestive. Dans les deux cas, on les trouve effectivement après un endif. Cependant, la correspondance de l'option " Aller à la ligne " du débugueur fait arriver à la ligne aussitôt avant.
Edit (Nenfëa) : je n'arrive pas à reproduire le problème avec le script OblivionBloodFountain01SCRIPT, chez moi il va bien directement en fin de la ligne 19 (ou 61).
J'ai vérifié à nouveau en prenant pour "Aller à la ligne " :
- la valeur 1, cela place le curseur devant le premier caractère dans la premère ligne
Xscn OblivionBloodFountain01SCRIPT - avec la valeur 2, le curseur est toujours sur la premère ligne mais à la fin
scn OblivionBloodFountain01SCRIPTX - avec la valeur 4 j'obtiens
float timerX
Modifié par Naalu Naiglemez, 01 décembre 2006 - 08:07.
#70
Posté 01 décembre 2006 - 08:19
Naalu Naiglemez, le 01.12.2006 à 00:27, dit :
- Quelques raccourcis claviers similaires à ceux du Tesc dont le célèbre Ctrl G.
Dans une fenêtre de script sous l'éditeur du Tesc, appuyer sur Ctrl + G active une boîte de dialogue permettant un " Go To Line ".
.
Citation
- La numérotation optionnelle des lignes de script en fond de teint.
Peut-être par là (si tu ne connais pas déjà).
.
"Oh, mais comment on peut faire ça ? [Creusage de tête une demi-heure, petit tour sur le net...] Ah tiens, c'était expliqué là ! "
Mais en l'occurence, il n'y a rien de tel pour la manière de gérer les numéros de lignes.
Eventuellement, je verrai pour faire afficher le numéro de la ligne et de la colonne en cours sur la barre d'état, tout en bas de la fenêtre principale.
Citation
- L'apparition dans les statistiques du nombre de Message/MessageBox.
Je vois deux intérêts à cette information :- Rappeler que le script comporte des zones de textes et par conséquent éventuellement des fautes d'orthographe. A ce sujet pourquoi ne pas utiliser une fenêtre du débogueur ne ressortant que le texte avec possibilité de corrections manuelles puis réintégration automatique dans le script ?
- Le script qui contient ces Message/MessageBox, dispose en fait d'une réserve mémoire où aller puiser en cas de saturation : en réduisant le texte placé entre guillemets, on dégage une possibilité de continuer le script.
- Rappeler que le script comporte des zones de textes et par conséquent éventuellement des fautes d'orthographe. A ce sujet pourquoi ne pas utiliser une fenêtre du débogueur ne ressortant que le texte avec possibilité de corrections manuelles puis réintégration automatique dans le script ?
Par contre, pour la saturation, je ne suis pas sur de comprendre... on parle bien d'une saturation dans l'éditeur de scripts du TESC, pas de la limitation à 5000 caractères de mon débugueur ? Si oui, mettre les zones de texte en réserve mémoire dans mon débugueur ne servira à rien, puisqu'il ne traite que des fichiers au format texte et pas directement les esp... Sinon, j'ai une méthode plus simple pour m'affranchir de la limitation des 5000 caractères que je mettrai en oeuvre prochainement !
Citation
- Et celui du % d'écriture ou nombre de caractères encore possibles avant de saturer le script.
Je n'ai pas d'info sur l'évaluation d'un script avant saturation. J'ai remarqué que supprimer les commentaires et les lignes vides n'apportait rien, qu'un script qui sature peut néanmoins accepter de nouvelles déclarations de variables. Je soupçonne que certaines syntaxes sont plus consommatrices que d'autres, ce qui compliquerait l'évaluation.
.
Citation
- Le générateur automatique de scripts basiques (ou machine à boudin pour les intimes).
J'appelle un script basique un script utilisé plusieurs fois dans un même mod, mais pour lequel les objets sont différents. Cette bête là pourrait ressembler à un publipostage où le modèle en fil de fer contiendrait les syntaxes sans les variables ni les objets, ceux-ci faisant partie d'une base de données. La fusion des deux produisant autant de scripts que nécessaires à récupérer en copier/coller vers le Tesc.
Naalu Naiglemez, le 01.12.2006 à 00:27, dit :
Edit (Nenfëa) : je n'arrive pas à reproduire le problème avec le script OblivionBloodFountain01SCRIPT, chez moi il va bien directement en fin de la ligne 19 (ou 61).
J'ai vérifié à nouveau en prenant pour "Aller à la ligne " :
- la valeur 1, cela place le curseur devant le premier caractère dans la premère ligne
Xscn OblivionBloodFountain01SCRIPT - avec la valeur 2, le curseur est toujours sur la premère ligne mais à la fin
scn OblivionBloodFountain01SCRIPTX - avec la valeur 4 j'obtiens
float timerX
Merci pour toutes ces idées... je n'ai plus qu'à me remettre au boulot moi !
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#71
Posté 01 décembre 2006 - 21:25
Nenfëa, le 01.12.2006 à 08:19, dit :
Naalu Naiglemez, le 01.12.2006 à 00:27, dit :
Edit (Nenfëa) : je n'arrive pas à reproduire le problème avec le script OblivionBloodFountain01SCRIPT, chez moi il va bien directement en fin de la ligne 19 (ou 61).
J'ai vérifié à nouveau en prenant pour "Aller à la ligne " :
- la valeur 1, cela place le curseur devant le premier caractère dans la premère ligne
Xscn OblivionBloodFountain01SCRIPT - avec la valeur 2, le curseur est toujours sur la premère ligne mais à la fin
scn OblivionBloodFountain01SCRIPTX - avec la valeur 4 j'obtiens
float timerX
Edit 05/12/06 : bonsoir Nenfëa - Sur l'ordi qui fonctionnait sans souci, maintenant fonctionne avec le même problème, et cela après avoir téléchargé la mise à jour Internet Explorer 7 le fautif, mais pourquoi...?!
Modifié par Naalu Naiglemez, 09 décembre 2006 - 11:01.
#72
Posté 06 décembre 2006 - 12:56
Naalu Naiglemez, le 01.12.2006 à 21:25, dit :
Merci pour l'info en tous cas !
Edit : j'en profite pour signaler que les raccourcis clavier Ctrl+D (débuguer), Ctrl+G (go to line), et la correction automatique des erreurs d'espacements/tabulations marchent correctement sur la version 3.01 en cours de confection !
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#73
Posté 06 décembre 2006 - 21:12
Dans mon cas avec la mise à jour d'IE, je remarque que wdigest.dll sous Windows/system32 a été modifié, mais cela n'a aucune incidence. Il y aurait encore à contrôler quelque mille autres fichiers sans compter d'autres bizarreries sans rapport avec le débuggeur...
J'ai donc effectué un simple point de restauration à la date juste avant cette mise à jour et mon débuggeur préféré a retrouvé sa jeunesse .
#74
Posté 10 décembre 2006 - 13:13
C'est d'autant plus étrange que les indications de ligne désormais affichées dans la barre d'état sont indiquent le bon numéro de ligne. Bref, il y a sans doutes là dessous un complot multiplanétaire pour faire échouer mon débugueur !
Après quelques sueurs là dessus, j'ai finalement laissé tomber. La version 3.01 est donc désormais en ligne.
Petit extrait du log des changements :
Elle ne rajoute pas l'extraction des zones de texte, par manque de temps à consacrer à la question. Je m'y mettrai surement un de ces quatres sur un prochaine version.
- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!
Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!
Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !
#75
Posté 17 juillet 2007 - 01:42
Super ce débuggeur. Il m'a permis de détecter un "end if" au lieu d'un "endif" sur un long script sur lequel je m'arrachais les cheveux.
Juste pour dire sinon qu'avec ce script qui marche pourtant bien (normal c un script de nennfëa ^^)
scn xulaltitude Float altitude begin Onload Set altitude to ( Player.GetPos z ) Set altitude to ( altitude + 2500 ) Player.SetPos z altitude end
J'ai quand même un message d'erreur avec le débugueur :
Citation
---------------------
- Ligne 9 : impossible de détecter le dernier paramètre de la fonction SetPos !
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)