| | Système de craft basique ? | |
| | Auteur | Message |
---|
Mamie Wawa Très bonne participation
Messages : 112
| Sujet: Système de craft basique ? Lun 23 Fév 2015 - 21:49 | |
| Bonsoir, J'essaye de m'entrainer avec les boucles for et les arrays et donc j'ai essayer de créer un système de craft assez basique, celui-ci se base sur le nombres d'objets et leurs quantités possédés puis propose des recette en conséquence. J'ai donc commencer par créer des variables simple qui définissent les objets : Dans le oController.create: - Code:
-
// LOG global.log_collect = 0; // ROCK global.rock_collect = 0; // LEAVE global.leave_collect = 0;
Puis je créé l'array qui va contenir les noms et la quantité d'objets possédé : Dans le oController.create ET step event: - Code:
-
craft_item[0,0] = "log : "; craft_item[0,1] = global.log_collect; craft_item[1,0] = "rock : "; craft_item[1,1] = global.rock_collect; craft_item[2,0] = "string : "; craft_item[2,1] = global.string_collect; craft_item[3,0] = "leave : "; craft_item[3,1] = global.leave_collect; Enfin j'affiche le système : oController.draw: - Code:
-
for ( i = 0; i < 4; i++; ) { draw_text(x+10,y+10+(i*12),string(craft_item[i,0])+string(craft_item[i,1]) ); } Maintenant me voilà confronté à de nouveaux problèmes au quels je n'arrive pas vraiment à y répondre - Dans la boucle for, j'ai essayé de mettre array_length_1d(craft_item) mais cela ne m'affiche que les 2 premiers objets ( log et rock ) j'ai essayé donc array_length_2d mais rebelote, comment utilisé cette fonction ? - Comme je l'ai dit plus haut j'aimerais que le système propose les recette si nous possédons les objets adéquats, mais comment faire pour vérifier chaque recette sans utiliser plein de IF à la chaine ? J'aimerais éviter ça : - Code:
-
if ( craft_item[0,1] >= 2 ) { draw_sprite(spr_craft1,-1,100,100); } - Enfin pour proposer les recettes je voulais le faire sous forme de sprite qui s'afficheraient donc à la suite, mais la non plus je ne vois pas comment je pourrais vérifier si un sprite est déjà affiché j'imagine qu'il faudrait que j'utilise des grid pour la dernière question mais je ne vois pas quelle fonction utiliser ( j'ai parcouru la documentation sans grand succès ) Pour la deuxième question je pense qu'il faudrait utiliser d'autres boucle for et peut être déclaré la quantité nécessaire à la recette dans l'array donc ? mais si la recette demande plusieurs objets ? Je bloque à ce niveau ... Merci d'avance Bonne soirée. |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Système de craft basique ? Lun 23 Fév 2015 - 22:20 | |
| Ouai sous GM c'est un peu le bordel car tu peux pas faire de structures. Du coup, le mieux c'est de faire un truc du genre: Représenter les ingrédients: item_name[0] = "Rock" item_count[0] = 0 ... Ensuite pour gérer tes items tu peux faire un bête script, avec une variable de comptage: - Code:
-
//addItem(name, icon) item_name[global._item_counter] = argument0 item_count[global._item_counter] = 0 item_sprite[global._item_counter] = argument1 global._item_counter += 1 Représentation des recettes recipe[0, 0] = 2 // nombre d'ingredients recipe[0, 1] = 3 // item index du résultat, un item random la recipe[0, 2] = 0 // ingredient 1: item index de rock recipe[0, 3] = 1 // ingredient 2: item index d'un autre item... .... Affichage: - Code:
-
for(i=0; i<recipe_count; i+=1) { draw_sprite(item_sprite[recipe[i, 1]], 0, x, y + i * line_hei) for(j=0; j<recipe[i, 0]; j+=1) { draw_sprite(item_sprite[recipe[i, j+2]], 0, x + (j + 1) * col_wid, y + i * line_hei) } } |
| | | Mamie Wawa Très bonne participation
Messages : 112
| Sujet: Re: Système de craft basique ? Mar 24 Fév 2015 - 18:04 | |
| Salut, Merci de m'avoir répondu, j'ai essayé de comprendre ton code mais je bloque à plusieurs niveau, pour ton script pour ajouter les items, la variable global._item_counter correspond à une seule ou bien je la change par global.wood_item_counter par exemple ? Je ne comprend pas non plus le fait de mettre des "[]" c'est un array qui contient une variable ? ça devient confus pour moi Après pour le draw event, recipe_count correspond au nombre de recettes actuellement disponible, mais après au niveau de item_sprite[recipe[i, 1]], tu fais appelles à un array a l'intérieur d'un autre ? Encore une fois je suis vraiment perdu ( même en lisant le code plusieurs fois et en relisant les arrays et variables ... Et si j'ai bien compris les 2 boucles for affiche chaque sprite des recettes donc ? J'aurais aimé afficher les recettes seulement selon le nombres d'items disponibles ( si j'ai 2 bois et 2 pierres, afficher les recettes qui contiennent 2 bois et ou 2 pierres ) Aussi si j'ai bien compris ton code le nombre d'ingrédients en recipe[0,0] ne prend pas en compte les ingrédients de chaque ? seulement si les sortes ? Merci bien, et encore désolé de poser autant de question mais ces boucles imbriqué ainsi que les arrays imbriqué me rendent vraiment confus ! |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Système de craft basique ? Mar 24 Fév 2015 - 18:28 | |
| Non juste global._item_counter. L’intérêt c'est qu'il s'auto incrémente tout seul, comme ça t'es pas obligé de spécifier l'index de chaque entrée en appelant le script d'initialisation de la table des items. C'est plus clair à écrire, et tu peux switch des lignes sans avoir à tout modif. item_sprite[recipe[i, 1]] me permet juste d'obtenir le sprite de l'objet résultat de la recette 'i', vu que recipe[i, 1] contiens un index d'objet, me suffit ensuite d'aller a la table des sprites... Pour afficher uniquement les recettes possibles, rien de compliqué, suffit que tu crées une fonction pour vérifier qu'une recette peut être faite en regardant le nombre de chaque élément que t'as, pis ensuite: - Code:
-
line = 0 for(i=0; i<recipe_count; i+=1) { if(!craftable(i)) continue draw_sprite(item_sprite[recipe[i, 1]], 0, x, y + line * line_hei) for(j=0; j<recipe[i, 0]; j+=1) { draw_sprite(item_sprite[recipe[i, j+2]], 0, x + (j + 1) * col_wid, y + line * line_hei) } line += 1 } |
| | | Mamie Wawa Très bonne participation
Messages : 112
| Sujet: Re: Système de craft basique ? Mer 25 Fév 2015 - 13:54 | |
| Merci, onilink_ Je vais essayer de faire marcher tout ça même si ça reste encore un peu brouillon dans ma tête, merci pour ton aide en tout cas |
| | | Contenu sponsorisé
| Sujet: Re: Système de craft basique ? | |
| |
| | | | Système de craft basique ? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |