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
|
Posté le: 21/02/13 22:50 Sujet du message: |
|
|
Je ne pense pas en avoir besoin. En ce qui concerne les variations du niveau d'eau, tout fonctionne parfaitement.
Bon, j'ai trouvé une solution pour les arbres.
Par contre, je rencontre un autre problème que j'ai avec d'autres déclencheurs.
Le problème c'est que j'utilise beaucoup de déclencheurs extrèmement lourds pour certains et ça ralenti considérablement le PC : J'ai mon ordi qui rame sévère lorsque j'essaie ma map, le jeu est hyper saccadé... je voudrais savoir si c'est mon PC qui n'a pas assez de mémoire et que ça tournerait mieux sur un autre PC (m'étonnerait quand même, j'ai un 16 Go), où si je sature vraiment la mémoire et dans ce cas, comment je fais pour alléger les déclencheurs ? _________________
|
|
Revenir en haut |
|
|
Farentir Membre actif
Inscrit le: 05 Nov 2009 Messages: 186 Sujets: 10
|
Posté le: 22/02/13 11:53 Sujet du message: |
|
|
Si ce n'est déjà fait, regarde les tutos sur le leak, si tu utilises des variables points régulièrement ça peut aider un peu je pense. _________________
|
|
Revenir en haut |
|
|
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.
|
Posté le: 22/02/13 13:01 Sujet du message: |
|
|
Helheim a écrit: | Je ne pense pas en avoir besoin. En ce qui concerne les variations du niveau d'eau, tout fonctionne parfaitement.
Bon, j'ai trouvé une solution pour les arbres.
Par contre, je rencontre un autre problème que j'ai avec d'autres déclencheurs.
Le problème c'est que j'utilise beaucoup de déclencheurs extrèmement lourds pour certains et ça ralenti considérablement le PC : J'ai mon ordi qui rame sévère lorsque j'essaie ma map, le jeu est hyper saccadé... je voudrais savoir si c'est mon PC qui n'a pas assez de mémoire et que ça tournerait mieux sur un autre PC (m'étonnerait quand même, j'ai un 16 Go), où si je sature vraiment la mémoire et dans ce cas, comment je fais pour alléger les déclencheurs ? |
La mémoire vive n'est qu'une partie de ton PC, y a aussi la carte graphique, le disque dur, le processeur, etc... qui te permettent de jouer à warcraft 3. Avoir 16go de mémoire vive sur un vieux Pentium et sans carte graphiques (chipset quoi) te permettra pas forcément de jouer sans lags ^^'.
Perso, je pense que ça vient pas que du leak. Le leak en lui-même est un problème très mineur, surtout avec 16go de ram, même si il peut être un problème majeur en cas d'abus pour des PC n'ayant pas beaucoup de ram (je parle de PC ayant 1go de ram quoi)
Je verrais plutôt des trucs du genre Boucles super longues et assez grosses en action, masses d'effets spéciaux ou d'unité, ou autres du genre. _________________
|
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 09/03/13 02:37 Sujet du message: |
|
|
Re...
Comme j'arrive à faire disparaître et réaparaitre les arbres, les péons sont perdus au moment de la récolte. Du coup, j'ai imaginé un déclencheur qui leur permettrait de toujours récolter le bon arbre.
Le seul souci, c'est que ce déclencheur fait crasher l'ordinateur et je ne comprends pas pourquoi. Quand je sélectionne un péon et que je lui ordonne de récolter un arbre, le jeu se ferme purement et simplement.
(note : harvest = récolter)
En fait, ce que je veux faire ici, c'est une boucle while. Mais la boucle while semble ne pas exister ici... _________________
|
|
Revenir en haut |
|
|
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...)
|
Posté le: 09/03/13 10:01 Sujet du message: |
|
|
Je comprends pas pourquoi tu fais une boucle, l'ordre harvest est répété tant que l'arbre n'est pas détruit. Ensuite je comprends pas pourquoi l'unité doit récolter un arbre aléatoirement proche de celui ciblé. _________________
Inactif(Enfn presque) |
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 23/06/13 11:19 Sujet du message: |
|
|
Bonjour. Je suis de retour parce que je continue de buter sur les déclencheurs de ma carte.
J'ai laissé tomber mon problème avec les arbres, je n'y arrive vraiment pas.
Par contre, là, j'ai un autre souci. Sur ma carte, j'ai programmé des marées et j'ai besoin de rendre le terrain empruntable quand il est découvert par l'eau. Pour ça, j'ai utilisé des régions, que j'ai nommé suivant une nomenclature bien spécifique.
Le problème, c'est que j'ai un bon millier de région à traiter. J'ai eu l'idée de les mettre dans une variable indexée.
Le soucis, c'est qu'il faut les mettre dans la variable indexée et je n'ai pour l'instant pas trouvé d'autre solution que de le faire manuellement. La commande de base que j'ai trouvé en JASS est la suivante :
Jass: | function Trig_D__clencheur_sans_titre_001_Copier_Actions takes nothing returns nothing
set udg_Terasse_sup[1] = gg_rct_Plage_Ile_principale_P_1
set udg_Terasse_sup[2] = gg_rct_Plage_Ile_principale_P_2
etc...
endfunction
//===========================================================================
function InitTrig_D__clencheur_sans_titre_001_Copier takes nothing returns nothing
set gg_trg_D__clencheur_sans_titre_001_Copier = CreateTrigger( )
call TriggerAddAction( gg_trg_D__clencheur_sans_titre_001_Copier, function Trig_D__clencheur_sans_titre_001_Copier_Actions )
endfunction |
avec udg_Terasse_sup[X] la variable indexée et Plage_Ile_principale_P_X le nom systématique des régions que j'ai placé.
Donc ma question est : sachant que j'ai mis un nom systématique à mes régions, y a-t-il un moyen d'assigner automatiquement avec une boucle toutes ces régions dans ma variable indexée ou est ce que je suis obligé de tout faire manuellement ?
J'ai essayé la commande suivante, mais ça n'a pas marché :
Jass: | function Trig_D__clencheur_sans_titre_001_Actions takes nothing returns nothing
set udg_Terasse_sup[1] = ( "gg_rct_Plage_Ile_principale_P_" + I2S(1) )
endfunction |
_________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 23/06/13 13:36 Sujet du message: |
|
|
Tu peux créer une petit programme pour générer le code correspondant.
Il aurait peut être été plus simple de générer les régions de manière systématique. _________________
|
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 23/06/13 19:10 Sujet du message: |
|
|
Oui, sauf que je commence tout juste à utiliser le JASS et c'est un outil que je maîtrise très mal. Donc je m'y connais vraiment très peu au niveau des fonctions utilisables et de la syntaxe et je tâtonne beaucoup.
Je veux bien le créer, ce programme, mais justement, c'est ma question ? A quoi il ressemblerait ce programme ? _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 23/06/13 20:00 Sujet du message: |
|
|
Code: | <?php
for ($i = 0; $i < 1000; ++$i)
echo ' set udg_Terasse_sup[' . $i . '] = gg_rct_Plage_Ile_principale_P_' . $i . ' )' . PHP_EOL;
?> |
_________________
|
|
Revenir en haut |
|
|
Helheim Ptit Nouveau
Inscrit le: 03 Fév 2013 Messages: 37 Sujets: 7
|
Posté le: 23/06/13 22:31 Sujet du message: |
|
|
Merci. Mais en syntaxe JASS, qu'est ce que ça donne ? J'ai essayé ça, mais ça ne marche pas :
Jass: | loop
exitwhen udg_Compteur > udg_fin
set udg_Terrasse_sup_petites[udg_Compteur] = ( "gg_rct_Plage_Ile_principale_P_" + I2S(udg_compteur) )
set udg_Compteur = udg_Compteur + 1
endloop |
Je n'ai jamais fait de JASS, je débute à peine. J'ai lu les tutos, je comprends ce que fait le code que tu proposes, mais comme je ne connais quasiment pas la syntaxe JASS, je ne vois pas comment l'écrire correctement dans ce langage.
Edit : j'ai une question qui n'a rien à voir. Je sais ce que sont les variables à déploiement, mais je n'ai pas compris à quoi sert la taille du déploiement. J'utilise 1 par défaut quand je dois en utiliser, mais je n'ai jamais constaté de différence que j'utilise 1 ou autre chose. _________________
|
|
Revenir en haut |
|
|
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.
|
Posté le: 24/06/13 13:20 Sujet du message: |
|
|
Tu ne peut pas faire de programmes en JASS (dans le sens où t'exécutes un fichier et ça fais le truc). Il faut le faire en un autre langage (c, java, etc...). _________________
|
|
Revenir en haut |
|
|
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
Posté le: 24/06/13 15:04 Sujet du message: |
|
|
le C++ c'est le mieux ! _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises |
|
Revenir en haut |
|
|
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...)
|
Posté le: 24/06/13 17:14 Sujet du message: |
|
|
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, c'est ce que fait le code d'Ayane en php.
Mais je pense que tu dois pouvoir trouver un petit logiciel créé pour ce genre de chose sur hiveworkshop.com
La taille du déploiement sert a donner une valeur aux différents index de ton tableau (la valeur que tu définis).
Oui, par tableau je veux dire "variable à déploiement".
Si je me souviens bien ça définit les valeurs de 0 à "la taille du déploiement".
Un tableau commençant à 0 et pouvant aller jusqu'à 8191. Et tu n'as pas à te soucier de la taille de ton tableau, c'est dynamique et géré par le jass automatiquement selon les index utilisés.
De la façon dont sont initialisés les index il est inutile d'aller au delà de 8191 pour la taille, étant donné que l'index max est 8191.
Un bug jamais fixé du jass (et donc forcément du GUI), utiliser l'index 8191 d'un tableau empêchera de charger une partie sauvegardée (wc3 crashera avec un message d'erreur)
D'ailleurs il vaut mieux éviter d'utiliser de gros tableaux, car le jass à une limite de nombre d'opérations consécutives (couramment appelé limit op).
Une fois cette limite atteinte, le code jass suivant n'est tout simplement plus interprété.
Tu peux facilement le savoir si tu l’atteins avec la taille et/ou trop de tableaux, aucun déclencheur ne sera créé, tout se passera comme si ta map n'avait aucun déclencheur.
La particularité d'un tableau en jass, par rapport à une variable "classique" c'est que même si tu n'as jamais utilisé un index il y aura toujours la valeur par défaut lorsque tu l'utiliseras, selon le type de ton tableau (entier -> 0 , booléen -> false, etc).
C'est pour cela que définir une taille de tableau est bien souvent superflu.
Enfin dans l'absolu il y a bien cette différence entre une variable tableau et une "non tableau", mais en GUI pas vraiment, car une valeur par défaut est toujours attribuée.
Mais pour utiliser des "objets" il faut que ceux ci aient été créés auparavant, par ex un tableau de compteur, il faut que le compteur ait été créé avant de l'utiliser, et donc il faut définir correctement la taille de ton tableau.
Cela dit rien ne t'empêche de créer ton compteur puis de le "ranger" dans ton tableau même si tu n'avais pas définit la taille de ton tableau, même en GUI il me semble que c'est possible. (je veux dire créer un compteur en cours de jeu)
fulldragon a écrit: | le C++ c'est le mieux ! |
_________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
super_mouton Floodozaurus
Inscrit le: 21 Aoû 2007 Messages: 2072 Sujets: 51 Spécialité en worldedit: Harceller vos maps de critiques !! ';..;' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 25/06/13 09:41 Sujet du message: |
|
|
En C:
Code: | #include <stdio.h>
int main(int argc, char *argv[]) {
int i;
for (i = 0; i < 1000; i += 1) {
printf(" set udg_Terasse_sup[%i] = gg_rct_Plage_Ile_principale_P_%i )\n", i, i);
}
return 0;
} |
Tu as juste à mettre cela dans un fichier gen.c et à le compiler avec gcc ou msvc.
Ce que tu voulais faire avec le Jass n'est pas possible, c'est un langage assez basique, c'est par contre possible dans certains langages scripts tel que le PHP (voir variables dynamiques).
En tout cas si tu n'as jamais fait de programmation avant sache que tu es doué; la plupart des gens décrètent que c'est trop compliqué ou essayent d'appliquer des logiques étranges.
En Jass on pourrait générer le texte en messages mais cela pose des problèmes pour le récupérer, on pourrait aussi utiliser le bogue sur la génération de fichier pour le preloader; bref c'est plus simple d'utiliser un autre langage pour générer le texte. _________________
|
|
Revenir en haut |
|
|
|