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=6c5517647512d3312411ceae7f76bb6aMé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

Gros gros calculs

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 15/08/13 20:09    Sujet du message: Gros gros calculs Citer

Plop Smile.

J'ai un ami - qui fait du gui, le pauvre - cherchant à résoudre des sudokus sur wc3.
Il a donc fait un algorithme qui marche plutôt bien, sauf que le limit op est assez vite atteint.
Au début il a donc utilisé des waits de 0 seconde pour reset la limite, mais la résolution prenait 15 minutes !
Donc je lui ai expliqué comment utiliser ExecuteFunc en gui, et... ça crashe.
Les calculs sont trop lourd, donc wc3 croit que c'est une boucle infinie.
Comment résoudre ça?
Tirlititi, dans l'exemple que t'avais donné, dans une conversation à propos du limit op, pourquoi ça crashait pas?
Est-ce que c'est parce que à l'intérieur de la fonction appelée en boucle tu faisais une autre boucle?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

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

C'est pas censé crashé du tout. Le plus probable est que c'est un mauvais paramètre qu'il a utilisé dans "ExecuteFunc".
En gui, tu peux simplement utiliser "Execute trigger".
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

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

Non non, j'ai vérifié. Le paramètre est bon dans ExecuteFunc : en ajoutant des waits de 0 seconde, on voit que tout fonctionne.

On a déjà testé avec Execute Trigger, et ça marche pas.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 15/08/13 21:27    Sujet du message: Citer

Ben c'est pas la limitop le problème alors...
Fais voir le code/déclo?
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 15/08/13 21:32    Sujet du message: Citer

Ca c'était pour le test de ExecuteFunc (je suis pas sûr que le code ait un sens :p) :

Gui:
Trigger:
TestStart
Collapse Evénements
Joueur - Joueur 1 (Rouge) skips a cinematic sequence
Collapse Conditions
Sudoku_Calculator Egal à  0.00
Collapse Actions
Cinématique - Clear the screen of text messages for Groupe joueur - Joueur 1 (Rouge)
Partie - Display to (All players) for 0.00 seconds the text: -------- Analysing ...
Set Calculated_Currently = 0
Set Int_5 = 0
Set Int = 1
Set Int_2 = 1
Set Int_3 = 0
Set Suggestion_Amount[1] = 0
Set Sudoku_Calculator = 1.00
Déclencheur - Run TestLoop <gen> (ignoring conditions)


Gui:
Trigger:
TestLoop
Evénements
Conditions
Collapse Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Int_3 Supérieur ou égal à  81
Collapse Alors - Actions
Set Int_5 = 0
Set Int_3 = 1
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Int_2 Egal à  9
Collapse Alors - Actions
Set Int_2 = 1
Set Int = (Int + 1)
Set Suggestion_Amount[Int] = 0
Collapse Sinon - Actions
Set Int_2 = (Int_2 + 1)
Collapse Sinon - Actions
Set Int_3 = (Int_3 + 1)
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Field_Value[Int] Egal à  0
Collapse Alors - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Or - Any (Conditions) are true
Collapse Conditions
Field_Value[Int_3] Différent de Int_2
And - All (Conditions) are true
Collapse Conditions
Block_Value[Int] Différent de Block_Value[Int_3]
Y[Int] Différent de Y[Int_3]
X[Int] Différent de X[Int_3]
Collapse Alors - Actions
Set Int_5 = (Int_5 + 1)
Sinon - Actions
Sinon - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Suggestion_Value[(((Int - 1) x 9) + Int_2)] Egal à  0
Int_5 Egal à  81
Int_3 Egal à  81
Collapse Alors - Actions
Set Suggestion_Amount[Int] = (Suggestion_Amount[Int] + 1)
Set Suggestion_Value[(((Int - 1) x 9) + Int_2)] = Int_2
Set Calculated_Currently = (Calculated_Currently + 1)
Sinon - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Int Egal à  81
Collapse Alors - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
Calculated_Currently Différent de 0
Collapse Alors - Actions
Cinématique - Clear the screen of text messages for Groupe joueur - Joueur 1 (Rouge)
Set Sudoku_Calculator = 3.00
Collapse Sinon - Actions
Cinématique - Clear the screen of text messages for Groupe joueur - Joueur 1 (Rouge)
Set Sudoku_Calculator = 0.00
Partie - Display to (All players) for 20.00 seconds the text: Can't analyse more ...
Collapse Sinon - Actions
Custom script:   call ExecuteFunc("Trig_TestLoop_Actions")


Mais de toute façon, quand un déclencheur appelle un autre qui lui même appelle le premier, le jeu crashe. Là c'est le même phénomène, non?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 15/08/13 22:58    Sujet du message: Citer

Non, le jeu freeze, y'a pas de fatal error (ou peut-être si on attend et que l'ordi ne peut plus allouer de mémoire vive, mais moi, ça a toujours freezé).
Mais là il devrait y avoir une fin dans la boucle quand le sudoku se termine ou qu'il ne peut pas aller plus loin. Essaie de voir ce qui se passe avec ces 2 tests différents :
- En rajoutant ça à la fin du testloop juste avant le "ExecuteFunc" (VarInt est une nouvelle variable initialisée à 0) :
Gui:
Trigger:
Set VarInt = VarInt + 1
Partie - Display to All Players the text : String(VarInt)

- En rajoutant ça au même endroit :
Gui:
Trigger:
Set Int = 81


Je suppose que les variables X, Y et Bloc_Value sont initialisée ailleurs ?
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 16/08/13 11:52    Sujet du message: Citer

Citation:
Non, le jeu freeze, y'a pas de fatal error (ou peut-être si on attend et que l'ordi ne peut plus allouer de mémoire vive, mais moi, ça a toujours freezé).


Chez moi ça crashe. Et chez mon pote aussi :s. C'est d'ailleurs pour ça qu'on a pas utilisé Run Trigger.

Pour le premier test que tu décris, ça n'affichera pas grand chose, le jeu crashe instantanément (aucun freeze avant) :p. Donc j'ai mis un wait pour éviter que ça crashe, et on voit bien la variable augmenter.

Le deuxième test arrête directement la boucle (et pas de crashe).

Citation:
Je suppose que les variables X, Y et Bloc_Value sont initialisée ailleurs ?

Yep
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 16/08/13 15:21    Sujet du message: Citer

Ben c'est que tu dois avoir raison, alors : c'est le fait qu'il y ait trop de calcul qui fait planter... C'est bizarre...

Parce que là, y'a que des opérations sur des entiers (y'a même pas de nombre négatif ou de division...) et ça peut pas crash en soi.

Du coup, tu peux toujours essayer avec un Timer(0) à la place du wait (tu peux ajouter l'event "TIMER expires" à TestLoop et remplacer ExecuteFunc par "Start TIMER that expires in 0.00 seconds as a un coup timer").
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 22/08/13 20:24    Sujet du message: Citer

Ça semble fonctionner avec le timer!
Merci Smile
_________________
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 -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
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