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=193c172ecfd7d20a13fc3ff0973391c9Mé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

au rythme des marées
Aller à la page Précédente  1, 2, 3, 4  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Présentation de vos cartes
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Helheim
Ptit Nouveau


Inscrit le: 03 Fév 2013
Messages: 37
Sujets: 7



MessagePosté le: 26/06/13 11:59    Sujet du message: Citer

Merci pour les explications. Smile

Ben en fait, si, j'ai déjà fait de la programmation, et j'adore ça, mais l'ennui, c'est que je suis quasiment autodidacte. Donc oui, je sais faire des trucs, quand même, mais il y a des grosses lacunes dans mon savoir-faire. J'ai eu des cours à la fac, mais c'était les bases et voilà, je suis pas en école d'informatique. En l’occurrence, les langages que j'ai utilisé sont le matlab et le fortran. Je n'ai jamais fait de C ou de PHP, même si pour ton programme en php, la syntaxe est assez proche de matlab et j'ai une idée de ce qu'il est sensé faire.

Troll-Brain a écrit:
Il n'est pas possible de faire une telle boucle en jass, mais tu peux générer le code jass nécessaire avec un langage quelconque puis copier/coller le code dans l'éditeur.


Je n'ai pas compris. En fait, je ne comprends pas en quoi vos programmes vont m'aider à faire ce que je veux. D'une part, il semblerait que worldedit ne reconnaisse que le JASS, et d'autre part, si j'écris un programme dans un langage quelconque et que je le compile avec un logiciel quelconque, en quoi ça concerne ma carte étant donné que ce programme est traité en dehors de worldedit et qu'à priori, les logiciels et donc les programmes vont tourner séparément. En fait, j'ai l'impression que vous essayez de me dire qu'on peut faire communiquer un logiciel de programmation quelconque avec worldedit. Si c'est ça, je ne sais pas le faire (mais je veux bien qu'on m'explique Very Happy ).

super_mouton a écrit:
HS : Fortran c'est mieux Smile ! (=>[])

J'aime ! Very HappyVery Happy
_________________
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: 26/06/13 12:54    Sujet du message: Citer

Ils te conseillent de créer un petit programme qui génère du texte. Une fois que tu as ce texte, tu peux le copier-coller dans ta map.

Au lieu d'écrire 1000 lignes de code toutes quasi-pareil, tu as juste à les copier-coller, du coup.
_________________
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é
 Helheim
Ptit Nouveau


Inscrit le: 03 Fév 2013
Messages: 37
Sujets: 7



MessagePosté le: 26/06/13 13:14    Sujet du message: Citer

D'accord, ça y est, j'ai pigé !!!!!!!!!!!

C'est vrai, c'est super simple en fait !

merci beaucoup !!! Very Happy Very Happy
_________________
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: 26/06/13 16:29    Sujet du message: Citer

Toutefois il ne faut pas générer non plus des milliers de lignes de codes, toujours en rapport avec le "limit op", plusieurs centaines de lignes ça devrait le faire.

Au delà il faut s'assurer que le limit op n'est pas atteint.
Pour vérifier que cette limite n'est pas atteinte rajouter simplement un message en dernière ligne.
S'il n'est pas affiché, la limite a été franchie (ou alors le thread a crashé pour une autre raison, mais ceci est une autre histoire qui vous sera conté une autre fois).
En cas de grandes boucles et/ou successions de lignes de code il est facile de les "couper" avec un wait de 0 s (qui est tout sauf instantané et régulier, mais ceci est une autre histoire qui vous sera conté une autre fois ²) et permet ainsi de reset le limit op.

PS : J'adore la langue de Molière mais ce n'est pas la panacée pour la programmation, franglais > all
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Helheim
Ptit Nouveau


Inscrit le: 03 Fév 2013
Messages: 37
Sujets: 7



MessagePosté le: 27/06/13 00:07    Sujet du message: Citer

Ayé, fini ! J'ai à peu près 1460 lignes de code et la limite op n'est pas atteinte (j'ai mis un test en appelant une fonction pour tuer une unité tout à la fin, et la commande s'exécute). Je sais pas à combien elle est fixée, mais elle doit être assez élevée. Est ce que tu sais à combien elle est ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 27/06/13 09:32    Sujet du message: Citer

La limite dite op en (v)Jass est de 8191, ou de 8192 je ne sais plus.
En toute cas saches qu'en général on a plutôt pas mal de marge.
_________________
Inactif(Enfn presque)
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: 27/06/13 11:11    Sujet du message: Citer

Helheim a écrit:
Ayé, fini ! J'ai à peu près 1460 lignes de code et la limite op n'est pas atteinte (j'ai mis un test en appelant une fonction pour tuer une unité tout à la fin, et la commande s'exécute). Je sais pas à combien elle est fixée, mais elle doit être assez élevée. Est ce que tu sais à combien elle est ?


Fais pleins de tests en rajoutant des lignes et tu le sauras Very Happy.

Non, de toute façon, ça ne dépend pas seulement du nombre de lignes, mais aussi de la vitesse d'exécution de chaque ligne, donc je ne pense pas qu'on puisse vraiment de savoir.

Secret:

Même pour Troll-Brain qui sort des connaissances venues d'on ne sait d'où.
Secret:

Quoique...



En parlant de ça, Troll-Brain, tu n'as pas une autre technique que le Wait(0)? Parce qu'actuellement je rencontre ce problème, et faudrait des dizaines de Wait(0), ce qui ralentit pas mal les calculs : /.
_________________
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: 27/06/13 13:53    Sujet du message: Citer

ExecuteFunc réinitialise aussi la limitop.
EDIT : un TriggerExecute marche aussi (ou "FaireBeaucoup.execute()" en vJass). Je ne me souviens plus si l'evaluate fait ça aussi, mais il me semble que non.

Jass:
globals
    FaireBeaucoup_Index
endglobals

function FaireBeaucoup takes nothing returns nothing
    local integer i = 0
    loop
        exitwhen i>=10000 or FaireBeaucoup_Index>=Pow(10,10)
        call DoSomething()
        set i = i+1
        set FaireBeaucoup_Index = FaireBeaucoup_Index+1
    endloop
    if FaireBeaucoup_Index<=Pow(10,10) then
        call ExecuteFunc("FaireBeaucoup")
    endif
endfunction

function InitFaireBeaucoup takes nothing returns nothing
    set FaireBeaucoup_Index = 0
    call ExecuteFunc("FaireBeaucoup")
endfunction


La limite de 8191 n'est pas la limite op(érations) mais l'index maximum d'un array, c'tout.
_________________
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é
 Vladadamm
Floodozaurus


Inscrit le: 11 Fév 2011
Messages: 2151
Sujets: 114
Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.


MessagePosté le: 27/06/13 14:14    Sujet du message: Citer

Une boucle faite en groupe unité et autres du genre aussi, ça réinitialise la limitop.

Sinon TriggerExecute = Run Trigger en GUI ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 27/06/13 14:25    Sujet du message: Citer

@Vladadamm:

Gui:
Trigger:
Déclencheur - Run (This trigger) (checking conditions)


-->

Jass:
function ConditionalTriggerExecute takes trigger trig returns nothing
    if TriggerEvaluate(trig) then
        call TriggerExecute(trig)
    endif
endfunction


alors que:

Gui:
Trigger:
Déclencheur - Run ( trigger) (ignoring conditions)


-->

Jass:
call TriggerExecute( trigger )

_________________
Inactif(Enfn presque)
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: 27/06/13 21:11    Sujet du message: Citer

Toute fonction jass native qui évalue un code ou un dérivé du type code (tel que boolexpr) reset le limit op, puisqu'un nouveau thread est créé.
Et qu'est ce qu'un trigger, sinon des morceaux de code liés éventuellement à des événements, oui TriggerEvaluate ouvre un nouveau thread mais pour une raison évidente on ne peut pas utiliser TriggerSleepAction ou forcément PolledWait à l'intérieur, sinon le thread crashe.
ForForce étant le plus efficace de toutes les méthodes si mes tests étaient corrects (avec un seul dummy player à l'intérieur évidemment).

Enfin quand je dis que des nouveaux thread sont ouverts, je ne sais pas au final comment est géré le bousin, mais il ne peut y avoir qu'un seul thread à la fois, le précédent étant mis "en pause".
Donc en fait ça reset peut être simplement le limit op et dire qu'un nouveau thread est créé serait un abus de langage.
Secret:

Oui oui, ce dernier paragraphe est une pure masturbation intellectuelle, sans aucun intérêt pratique.
On connaît les effets produits, peu importe de savoir comment c'est fait.



Et non limit op et vitesse de code ne sont pas directement liés, il s'agit simplement d'un nombre d'opérations, d'évaluation du code jass. (parsage du code jass quoi, "set" "call" "<nomdefonction>" "<nomdevariable>", ... )
Peu importe la taille des noms de fonctions/variables (même si ça influe la vitesse de traitement du code jass dans une certaine mesure)
Je dis peut être une connerie mais ça doit être de l'ordre de 100 000 opérations.
Et il est tout à fait possible de savoir le nombre d'opérations d'un bloc de code mais l'intérêt est relatif.
Ayane en sait peut être plus, mais si vous voulez vraiment en savoir plus à ce sujet go wc3c.net, il me semble même qu'une précédente version de "grimoire" (fonctionnant avec une version de wc3 antérieur) détectait les limit op.
Et je suis presque certain que les opérations sont listées quelque part dans un topic quelconque et/ou dans une doc de "grimoire" ou autre.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Helheim
Ptit Nouveau


Inscrit le: 03 Fév 2013
Messages: 37
Sujets: 7



MessagePosté le: 28/06/13 01:01    Sujet du message: Citer

Ouaah, je ne pensais pas que mon sujet lancerait des débats aussi animés XD !

Dites, j'ai une questions. J'ai un de mes déclencheurs écrit en JASS qui fait un truc bizarre. En fait... Je l'ai créé, j'ai commencé par placer un évènement en GUI (évènement périodique qui se répète toutes les secondes). En haut, il y a la case "on au départ" qui peut ou non être cochée. Ensuite, je l'ai converti en JASS, et cette case s'est transformée en "lancer à l'initialisation de la carte".

wtf ? Quelle est la différence entre les deux ?

De plus, ce déclencheur est sensé être inactif au départ et activé en cours de partie. Est ce qu'il peut être affecté par un "turn trigger on" maintenant qu'il est dans cet état ?
_________________
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: 29/06/13 08:49    Sujet du message: Citer

Y'a pas de débat, le choix du terme est inapproprié Very Happy

Allez continuons la fête du slip, plutôt que créer un topic pour chaque question, remplissons ce fourre tout.
De toute façon on s'en fout dans 100 ans on est tous mort (et ce n'est pas moi qui le dit).

Je ne suis plus un expert en GUI mais il est facile de vérifier si le déclencheur est "on" ou "off" une fois convertit en jass.
En jass il suffit d'utiliser Enable/DisableTrigger, c'est ce que fait d'ailleurs aussi le GUI avec la case à cocher, mais de façon transparente pour l'utilisateur.
Et en GUI l'event "map initialisation" n'est pas vraiment un événement, cela a pour effet de lancer le trigger au chargement de la carte.
Comme ce n'est pas un événement, une fois le trigger convertit en jass on a cette case à disposition pour faire la même chose.
Cela dit avec le vJass on peut faire la même chose et bien plus en pur code sans cette case.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


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

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

MessagePosté le: 29/06/13 09:11    Sujet du message: Citer

Le Jass n'est pas parsé à la volée lors de son exécution, lors du chargement de la carte il est compilé en bytecode. Ce bytecode est alors interprété avec une machine virtuelle lors de l'exécution instruction par instruction et doit incrémenter une variable propre au contexte à chaque instruction exécutée (similaire au registre IP des processeurs x86) et vérifier qu'elle ne dépasse pas la valeur souhaitée.
Le bytecode est bien plus libre que le Jass et peut exécuter du code machine qui se trouve à n'importe quelle adresse mémoire accessible par le programme, il y a ainsi eu des exploits qui consiste à créer un buffer contenant du bytecode, retrouver l'adresse du buffer en fonction de l'adresse des autres fonctions, et transtyper notre adresse en code afin de pouvoir l'exécuter.
A partir de là on peut appeler des fonctions systèmes déjà charger par Warcraft3 tel que LoadLibrary et de ce fait charger une DLL que l'on a placé dans la carte; cela nous permet alors de faire exécuter le code machine de son choix.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé 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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 29/06/13 09:22    Sujet du message: Citer

Ah oui c'est vrai, mais par contre du coup je ne comprend pas pourquoi la taille des noms de fonctions/variables influe sur la vitesse du code jass.
Et ce n'est pas une légende urbaine.
Certes ca s'applique dans une certaine mesure (à défaut d'une mesure certaine).
_________________
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 -> Présentation de vos cartes Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2, 3, 4  Suivante
Page 3 sur 4

 
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