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=0ea20062d3955345db6fdd71d6fb526fMé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

les mystères de worldedit

 
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
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1846
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 23/02/12 21:00    Sujet du message: les mystères de worldedit Citer

Les conversions de types de variables

Voici en jass, les 6 fonctions de conversion que l'on retrouve :
Jass:
call I2S(integer) // integer => string
call I2R(integer) // integer => real
call R2S(real) // real => string
call R2I(real) // real => integer
call S2R(string) // string => real
call S2I(string) // string => integer


à priori, c'est simple. Je rentre ma variable de type integer, et je peux avec cette fonction l'utiliser comme une string ou un real.
Cependant, lorsque c'est une string que l'on veut transformer en integer ou en real, il se peut que dans le lot il s'y glisse une lettre.

Que deviennent les lettres une fois integer ou réel ?
Jass:
call BJDebugMsg(I2S(S2I("45df32")))

Ceci affichera 45.
Je converti un integer en string un string au préalable converti en integer.
on y voit de la perte. Il en va de même si j'avais converti un réel en string.
On voit donc que la convertion s'arrête nette lorsqu'elle rencontre une lettre.
Cependant,
Jass:
call BJDebugMSG(I2S(S2I("d4215648")))

affichera 0, de même pour un réel et non null.


Que deviennent les integers une fois réels ?

C'est une simple troncature de tout les chiffres après la virgule, rien de plus à dire. Aucun mystère.

Que deviennent les 'code' une fois convertis en string ?

à ma grande surprise,
Jass:
call BJDebugMsg(I2S('hpea'))

n'affichera pas hpea mais une série de 10 chiffres.
tout comme :
Jass:
call BJDebugMsg(I2S(GetTerrainType(GetRectCenterX(gg_rct_a), GetRectCenterY(gg_rct_a))))

on se retrouve avec 10 chiffres.

Ces chiffres correspondent surement à un numéro de série, ou peut être que chaque lettre en 'code' a sa propre écriture chiffré. Aucune idée, ça serait à approfondir mais j'n'ai pas le temps.

Que deviennent les 'code' convertis en real ?

On pourrait penser que c'est la même chose que 'code' en string mais avec une virgule, ba non. Le nombre est différent.
Jass:
call BJDebugMsg(R2S(I2R(GetTerrainType(GetRectCenterX(gg_rct_a), GetRectCenterY(gg_rct_a)))))
call BJDebugMsg(R2S(I2R('hpea')))
call BJDebugMsg(I2S(GetTerrainType(GetRectCenterX(gg_rct_a), GetRectCenterY(gg_rct_a))))
call BJDebugMsg(I2S('hpea'))

On aura : 1281651200.000 et 1281651316 pour le terrain type. J'ai pas eu le temps de copier le type unit, mais encore une fois ce sont les derniers chiffres qui changent.
Allez me trouver une logique ? J'en sais rien, ça serait encore à approfondir, mais trop long et trop vague.

Faire attention :

Il est important, quand on fait des calculs en utilisant des fonction convertissant des string en integer ou réel, de vérifier qu'il n'y aura pas de lettre pouvant mettre à mal votre calcul.
Une division par 0 est impossible, j'en viens alors à mon 2è sujet.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
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
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