Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=287331de0aff480bdb135a92dbbdeffcMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

La foire aux bugs
Aller à la page 1, 2, 3, 4, 5  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 11/11/07 17:33    Sujet du message: La foire aux bugs Citer

Petite définition (Wikipedia.org power)
Secret:

Un bogue ou bug informatique est une anomalie dans un programme informatique l’empêchant de fonctionner correctement. Sa gravité peut aller de bénigne (défauts d’affichage mineurs) à majeure (explosion du vol 501 de la fusée Ariane 5).

Les bogues sont généralement dus à un problème de conception du logiciel ; l'erreur peut parfois être identifiée (et la correction effectuée simplement), mais elle peut aussi bien provenir de la conception même du programme, ce qui nécessite une refonte profonde. Plus rarement, les bogues dans les logiciels peuvent être dus à des erreurs dans les outils de développement utilisés par les programmeurs du logiciel. Enfin, le matériel lui-même peut comporter des bogues, comme ce fut le cas du bogue de la division du Pentium qui a affecté les premières versions de ce processeur.



Ici seront listés les bogues qui n'ont aucune utilité mais qu'il faut prendre en compte.
Et ceux plus rares mais parfois trés utiles, les bugs exploitables.

CODE DE LA MISE EN FORME :

Code:
[color=blue][size=20]TitreDuBug[/size][/color]

DescriptionEnQuelquesLignes


[b][size=15][color=red]A) EXPLOITATION DU BUG[/color][/size][/b]

ExplicationAvecEventuellementUnExemple


[b][size=15][color=red]B) RESOLUTION DU BUG[/color][/size][/b]

ExplicationAvecEventuellementUnExemple


[b][size=18]IMPORTANT : SiVousVoulezSoulignerUnPointParticulier[/size][/b]



Vous pouvez poster ici vos bugs rencontrés ou vos idées d'exploitation d'un bug ou vos commentaires (constructifs)
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 19/01/08 19:55; édité 10 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 11/11/07 17:35    Sujet du message: Bogues en tout genre Citer

En construction

Conversion de types

Tout d'abord il faut savoir qu'il existe 4 types principaux.
- handle (objet)
C'est tout ce qui est créé avec l'éditeur, aussi bien les choses concrètes, telle une unité, que les choses abstraites (une condition de trigger)
- integer (entier)
nombre ayant comme valeurs possible : - à +.
Il existe plusieurs bases mais cela fera l'objet d'un autre topic

- real (reel)
- boolean (booleen)

D'autres types existent mais ils sont tous une sous famille du type handle.

Tous les types sont codés sous le même nombre de bits, et un bug du compilateur permet leur conversion.

Voici le légendaire H2I :
Jass:
function H2I takes handle returns integer
  return H
  return 0 // on retourne une valeur entière mais ce return ne sera jamais exécuté, c'est juste pour feinter le compilateur qui autrement vomirait une erreur de compilation
endfunction


en utilisant cette fonction on récupère l'adresse d'un objet sous la forme d'un entier exploitable.
On peut comparer cela à un tatouage unique pour chaque objet.
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 14/11/07 11:49; édité 2 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 14/11/07 11:43    Sujet du message: Citer

"Mélange" de compétences

Quand 2 compétences ont les mêmes ordres chaînes, et sont possédées en même temps, elles se "mélangent".
Le fait de changer ces ordres chaînes n'a aucun effet sauf pour les compétences livre de sort 'Aspb' et canaliser 'ANcl'.

A) EXPLOITATION DU BUG

On arrive à rajouter en cours de jeu des compétences à un livre de sort en jouant avec ces chaînes.
>>> Cliquer ici pour en savoir plus <<<

B) RESOLUTION DU BUG

Il faut donc ne pas se baser sur la même compétence si une unité peut posséder 2 compétences en même temps (hormis canaliser et livre de sort où l'on peut changer l'ordre chaîne pour éviter cela )

IMPORTANT : Ne pas oublier que pour une compétence soit utilisable il faut que les requis soit valides ( premiers champs dans l'éditeur d'objet )
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 15/11/07 19:11; édité 2 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 14/11/07 11:58    Sujet du message: Citer

Ordres reçus par la mise en pause / stun d'une unité

Quand une unité est mise en pause, elle reçoit un ordre avec point pour cible (le centre de la map)
Quand une unité est assomée (compétence passive ou non), elle reçoit un ordre avec objet pour cible ( l'objet ou l'unité qui l'a assomé).

Si l'unité est déjà en pause ou assomée elle ne reçoit pas d'ordre

A) EXPLOITATION DU BUG

A ce jour je n'ai pas découvert d'utilité étant donné que l'unité ne reçoit pas d'ordre si elle est déjà en pause.
Ca peut servir pour détecter la première mise en pause d'une possible longue série Razz Rolling Eyes

B) RESOLUTION DU BUG

Il suffit de spécifier vos ordres en conditions ou sinon d'utiliser ma fonction >>> DebugPauseUnit <<<
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 15/11/07 17:13; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 14/11/07 22:03    Sujet du message: Citer

Ordres reçus quand l'unité possède une compétence que l'on peut activer / désactiver

A ma connaissance les ordres concernés sont :
- "undefend"
- "magicundefense"
- "unflamingarrows"

Il y en a peut être d'autres.

Si une unité possède une telle compétence elle recoit l'ordre de la désactiver ( Texte Ordre chaînes off ) 1 ou 2 fois, dans les cas suivants :

- remove de la compétence : ( 2 fois )
- kill de l'unité ( 1 fois )
- remove de l'unité ( 2 fois )

Et ce, même si la compétence n'est pas disponible ( requis valides ) et désactivée pour le joueur possesseur de l'unité.

A) EXPLOITATION DU BUG

J'ai une idée un peu bizarre à défaut de mieux pour l'instant.
Ca pourrait servir pour éxécuter automatiquement une suite d'actions , du genre anti leak sans devoir le faire à chaque remove d'unité.
bon d'accord c'est un peu space comme idée Razz

B) RESOLUTION DU BUG

Vous pouvez utiliser une variable booleene.
Cela fonctionne parfaitement pour le remove ability et le kill mais pas pour le remove unit.

ex :
Gui:
Trigger:
Actions
Set b = FALSE
-------- votre action --------
Unité - Kill Fantassin 0000 <gen>
Set b = TRUE

Il ne vous reste plus qu'à rajouter en condition de votre trigger détectant les ordres sans cible :
Gui:
Trigger:
b Egal à  TRUE


On ne peut utiliser cette technique avec le remove unit, car cette fonction est trop lente, on pourrait rajouter un wait mais si vous utilisez une globale, comme dans cette exemple c'est pas top Surprised

L'astuce consiste à kill l'unité d'abord, mettre un wait de 0 s et remove l'unité ensuite

IMPORTANT : Votre variable booleene globale doit avoir la valeur initiale TRUE
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 19/01/08 19:54; édité 3 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/11/07 19:09    Sujet du message: Citer

Impossible de donner un ordre sans cible

Quand l'unité vient de recevoir un ordre avec point/objet pour cible, lui donner un ordre sans cible sera sans effet


A) EXPLOITATION DU BUG

En cherchant une amélioration de la résolution du bug j'ai eu l'idée de donner à l'unité un ordre sans cible (celui reçu par la mise en pause d'une unité ) et ca fonctionne Razz
Ca stoppe immédiatement l'unité et conserve même l'ordre sans cible si l'unité en avait un (tenir position, stop, etc).
Par contre si vous voulez donner un autre ordre sans cible, c'est toujours aussi lent

Gui:
Trigger:
Unité - Pause (Triggering unit)
Custom script:   call IssueImmediateOrderById ( GetTriggerUnit() , 851973)
Unité - Reprendre (Triggering unit)


B) RESOLUTION DU BUG

On peut mettre un wait juste avant l'action sans cible mais dans ce cas l'unité aura le temps de bouger.

A défaut de mieux j'ai trouvé cette technique :
Gui:
Trigger:
Test
Collapse Evénements
Unité - A unit Reçoit un ordre avec objet pour cible
Unité - A unit Reçoit un ordre avec point pour cible
Conditions
Collapse Actions
Unité - Pause (Triggering unit)
Unité - Order (Triggering unit) to Arrêter  // ou si l'ordre voulu n'est pas stop utiliser le custom script du haut ( EXPLOITATION DU BUG ) car l'ordre sans cible ne sera détecté qu'un peu de temps aprés la demande de celui ci  :(
Unité - Reprendre (Triggering unit)
-------- votre ordre s'il est différent de stop --------
Unité - Order (Triggering unit) to Tenir la position


IMPORTANT : Ne pas oublier l'ordre généré par la pause d'une unité
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 19/01/08 19:50    Sujet du message: Citer

a partir de maintenant je ne repecterais plus ma propre mise en forme (trop de boulot pour pas assez de lectures).
Ca sera la foire au bug.

J'en ai appris un récemment.
Si on utilise l'index 8191 (index maximum) d'une variable déployée.
Il devient impossible de charger une partie sauvegardée de cette map (warcraft plante au chargement)
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Rommstein60
MODÉRATEUR À LA RETRAITE


Inscrit le: 23 Aoû 2007
Messages: 4766
Sujets: 136
Spécialité en worldedit: Keskesapeutfout'
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 20/01/08 10:21    Sujet du message: Citer

O_O
Trop cool !!!!
Tu peux faire des recherches là dessus pour avoir plus de précisions? Very Happy

_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 20/01/08 11:22    Sujet du message: Citer

pas besoin, t'utilises l'index 8191 de nimporte quel variable déployée, et tu lui donnes une quelquonque valeur à l'init de la map, pour être sûr de ne pas oublier
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 20/01/08 12:08    Sujet du message: Citer

Lol, c'est trop cool, comme ça on peut pas utiliser le save/load.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kapoka
Membre a fort taux de post


Inscrit le: 21 Aoû 2007
Messages: 915
Sujets: 47
Spécialité en worldedit: Faire des maps avec 500 déclos en GUI alors que 2 en JASS suffisent
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 20/01/08 13:05    Sujet du message: Citer

Il y a aussi celui ci :
Gui:
Trigger:
Collapse Evénements
Map initialization
Conditions
Collapse Actions
Set Reg[0] = Région 000 <gen>
Set Reg[1] = Région 001 <gen>
Set Reg[2] = Région 002 <gen>


Gui:
Trigger:
Collapse Evénements
Unité - A unit enters Région 000 <gen>
Unité - A unit enters Région 001 <gen>
Unité - A unit enters Région 002 <gen>
Conditions
Collapse Actions
Collapse For each (Integer A) from 0 to 2, do (Actions)
Collapse Boucle - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
(Reg[(Integer A)] contains (Triggering unit)) Egal à  TRUE
Collapse Alors - Actions
Set ResuPoint[(Player number of (Owner of (Entering unit)))] = Reg[(Integer A)]
Partie - Display to (All players) the text: (String((Integer A)))
Skip remaining actions
Collapse Sinon - Actions


Qui ne fonctionne que si l'unité vient de la gauche ou d'en bas de la région Sad

Résolution :


Gui:
Trigger:
Collapse Evénements
Map initialization
Conditions
Collapse Actions
Set Reg[1] = Point1 <gen>
Set Reg[2] = Point2 <gen>
Set Reg[3] = Point3 <gen>
Set Reg[4] = Point4 <gen>
Collapse For each (Integer A) from 1 to 4, do (Actions)
Collapse Boucle - Actions
Set Center[(Integer A)] = (Center of Reg[(Integer A)])
Set Unit[1] = Fantassin 0000 <gen>
Set ResuPoint[1] = (Center of Depart <gen>)

Gui:
Trigger:
Collapse Evénements
Unité - A unit enters Point1 <gen>
Unité - A unit enters Point2 <gen>
Unité - A unit enters Point3 <gen>
Unité - A unit enters Point4 <gen>
Collapse Conditions
(Unit-type of (Triggering unit)) Egal à  Fantassin
Collapse Actions
Set Dist = 1000000000.00
Set U = (Triggering unit)
Set TempPoint = (Position of U)
Collapse For each (Integer A) from 1 to 4, do (Actions)
Collapse Boucle - Actions
Set R = (Distance between Center[(Integer A)] and TempPoint)
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
R Inférieur à  Dist
Collapse Alors - Actions
Set Index = (Integer A)
Set Dist = R
Sinon - Actions
Set ResuPoint[(Player number of (Owner of U))] = Center[(Integer A)]
Effet spécial - Create a special effect at (Center of Reg[Index]) using AbilitiesSpellsOtherHowlOfTerrorHowlCaster.mdl
Effet spécial - Destroy (Last created special effect)
Son - Play Rescue <gen>
Custom script:   call RemoveLocation(udg_TempPoint)
Je sais pas vraiment a quoi est du la bug donc il faudrai bien expliqué ^^
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 20/01/08 13:25    Sujet du message: Citer

Euh je suis le seul à trouver que ce bug sert à rien et qu'il est plutôt néfaste ?
Je vois mal en quoi c'est trop cool de pas pouvoir save/load Oo
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 20/01/08 13:27    Sujet du message: Citer

Hmm Kopaka cette solution ne fonctionne que si les regions sont suffisamment petites et éloignées les une des autres.

quand l'event une unité entre dans une région se déclenche :

Quand l'unité vient de la droite son X est plus grand que le Xmax de la region , elle est donc considérée en dehors de la région.
Quand l'unité vient du haut son Y est plus grand que le Ymax de la region , elle est donc considérée en dehors de la région.

J'ai pas essayé avec l'event une unité sort d'une région

Brissou de Mourièssou a écrit:
Euh je suis le seul à trouver que ce bug sert à rien et qu'il est plutôt néfaste ?
Je vois mal en quoi c'est trop cool de pas pouvoir save/load Oo


+1 c'est surtout à eviter car de toute façon on peut détecter le chargement d'une partie Razz

Edit : tient c'est une annonce now Very Happy
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 20/01/08 15:13    Sujet du message: Citer

C'est moins long a faire de déployer une variable que de faire un trigger et tout, c'est des octects gagnés xD.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 20/01/08 18:55    Sujet du message: Citer

Quand j'ai appris le bug, j'ai enfin compris pourquoi Vexorian n'utilisait pas l'index 8191 pour le Vjass.
Mais ce genre de mentalité ca m'énerve.
Fallait le trouver ce bug, et il est resté trés longtemps dans un cercle trés fermé de geeks de l'hack de l'éditeur.
Si jamais je me mets à l'éditeur de starcraft2 (en gros si ils me répondent Razz ), je créerais un tel topic
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2, 3, 4, 5  Suivante
Page 1 sur 5

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com