Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMé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

Découverte bizarre avec les call Destroy et variable

 
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
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 22/07/08 22:45    Sujet du message: Découverte bizarre avec les call Destroy et variable Citer

Je vient de découvrir quelque chose je m'explique. Lorsque je supprime une variable avec un call Destroy... il détruit la variable ainsi que les donner qu'elle contient et les donner de la variable utiliser si il y en a une. Ce n'est pas très bien expliquer donc je vais mettre un exemple.

Gui:
Trigger:
Collapse Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing 1 as Résultat équivalent
Conditions
Collapse Actions
Collapse Groupe unité - Pick every unit in a and do (Actions)
Collapse Boucle - Actions
Partie - Display to (All players) the text: (Name of (Picked unit))
Wait 2.00 seconds
Groupe unité - Add Paysan 0001 <gen> to a
Groupe unité - Add Paysan 0002 <gen> to a
Groupe unité - Add Paysan 0003 <gen> to a
Collapse Groupe unité - Pick every unit in a and do (Actions)
Collapse Boucle - Actions
Partie - Display to (All players) the text: (Name of (Picked unit))


Quand je commence la partie et que j'appui sur 1 tout d'abord cela ne me donne rien et 2 seconde plus tard les nom de mes 3 unités apparaissent.

Gui:
Trigger:
Collapse Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing 2 as Résultat équivalent
Conditions
Collapse Actions
Set b = a
Custom script:   call DestroyGroup ( udg_b )


Ensuite je tape sur 2 puis a nouveau 1 mais la plus rien n'apparait, même en attendant plusieurs secondes et en ré-écrivant 1 plus rien n'apparait.

Je pense donc que un call Destroy détruit la variable mai aussi tout ce qui est a l'intérieur et donc même les variable qui peuvent la constituer.
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 22/07/08 23:13    Sujet du message: Citer

C'est parce que c'est un handle , explication:

Il existe 5 type principal (si j'en oubli pas):
-real(réel)
-integer(entier)
-string
-boolean
-handle(en gui ont en parle jamais)

Tout autre type est en réalité un handle , mais pourquoi sa change quelque chose ?

Car les handle sont des pointeur , si tu préfère des variable de type réel, entier , string et booléene enregistre directement la valeur , alors que les handles pointent vers un objet (tout se qui a une forme de struct/float (je sait plus comment sa se dit en langage "courant") , mais lorsque tu appelle une fonction qui détruit un (extend) d'handle , elle détruit l'objet et non la valeur dans la variable.

Exemple:

Ont crée une groupe d'unité , ont dit qu'il est a l'emplacement (handle) 5 , ont imagine que tu a 2 variable A et B.

A pointe déjà sur le groupe donc il a comme valeur 5.
Si tu fait "set B = A" alors sa mettra la valeur 5 à B et donc ne créera pas un autre groupe.

Donc si après tu détruit le groupe de B (d'emplacement 5) sur A le groupe existera pas non plu , car c'était le même groupe. (celui à l'emplacement 5)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 22/07/08 23:29    Sujet du message: Citer

Faut le préciser dans les tuto, en tout cas c'est vraiment stupide comme logique ... En gros pour que sa marche il faut 3 variables a b c

ou a = b
b = c
et on détruit c et donc b mais pas a

Sa marche sa ?
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2012
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 22/07/08 23:54    Sujet du message: Citer

Non.

Prenons le type Point, notre processeur 32 bits ne peux pas gérer directement notre type point car celui-ci est composé de deux floats, c'est à dire 2 * 32 bits.
Créer un point consiste à demander au système d'allouer 64 bits pour pouvoir stocker les données du point; comme une variable ne peut faire que 32 bits, c'est l'adresse mémoire qui y est stockée. C'est pour cela qu'il ne faut pas oublier de détruire le point, c'est à dire désallouer les 64 bits de mémoire vive à partir de l'adresse mémoire qui est stockée dans notre variable.

ainsi si tu as
Set A = CreateGroup()

Dans A on a l'équivalent d'un entier qui correspond à l'adresse mémoire du groupe, imaginons 1356.
Si on fait
Set B = A

B aura alors pour valeur 1356.
Si on détruit le groupe à partir de la variable A alors on ne pourra pas y accéder à partir de B car cela n'aura pas copié le groupe.
Tu peux utiliser 100 variables cela n'y changera rien.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 22/07/08 23:55    Sujet du message: Citer

J'ai l'impression que tu as rien compris a se que j'ai dit. Rolling Eyes

Tout (extend d') handle est un pointeur vers un objet , un groupe est un objet.

Si tu crée un groupe G , et qu'il à comme référence(/position) 21 , alors se sera sa seul référence.

Si tu as la variable A qui pointe vers G elle aura comme valeur 21.

Tu set B = A (B = 21 , A = 21)

Tu set C = B (C = 21 , B = 21 , A = 21)

Etc

Si tu Destroy le groupe avec C (21) alors tout autre variable qui aura 21 n'aura plus de groupe en valeur.

Edit:Post d'Ayane avant que je finisse de taper , je le laisse au cas où (j'ai pas encore lu ton message Ayane.)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 22/07/08 23:59    Sujet du message: Citer

C'était juste une question mais c'est bon j'ai comprit et je trouve sa encore plus con ^^
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2012
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 23/07/08 00:10    Sujet du message: Citer

C'est une question de performances, on pourrait faire que cela fasse des copies à chaque fois, mais cela impliquerais que cela le fasse à chaque fois que l'on passe une variable en paramètre d'une fonction, ce qui ferait beaucoup d'accès mémoires pour accéder dans 98% des cas à la même donnée.

Si tu as une meilleure idée de conception n'hésite pas à la proposer.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 23/07/08 00:11    Sujet du message: Citer

Ajouter tout simplement un handle constant a déterminer quand on utilise la variable.
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2012
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 23/07/08 00:24    Sujet du message: Citer

Il est constant, enfin tant que l'on ne change pas le groupe, je n'arrive pas à saisir ta pensée.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 23/07/08 02:00    Sujet du message: Citer

En gros un handle sur le qu'elle on peut pointer mais qui lui ne peut pas pointer sur quelque chose et que sont contenu soit constant et qui ne peut pas être supprimer
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
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: 23/07/08 16:48    Sujet du message: Citer

The.gosu a écrit:
En gros un handle sur le qu'elle on peut pointer mais qui lui ne peut pas pointer sur quelque chose et que sont contenu soit constant et qui ne peut pas être supprimer

Et comment tu définirais quelle valeur doit être fixée.
Ca n'a aucun sens.

Tient ca me fait penser, je vais faire une librairie de copy, ca sera utile (oupa).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 24/07/08 16:01    Sujet du message: Citer

Code:
memcpy(thegosu);

Output: Unrecoverable error, system fails.
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
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