[Résolu]Plusieurs variables dans une variable pour faire un inv?
+4
D-z
Adamo
Térence
gateau
8 participants
Auteur
Message
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 11:51
Bonjour , voila je suis en train de coder chicken'z online, et je m'encombre un peu avec les fichiers .ini , car j'ai deja plein de variables , dont je vous donne un aperçu :
Et je voudrais faire un système d'inventaire qui prenne un minimum d'espace (en .ini bien sur) J'avais pensé a un truc du genre une variable inv
inv = 5,5,1,8,0,0,0,0,0,0,0,0,0
Par exemple 5 = biscuits , 1 : jus de tomate , 8 lance roquettes et 0 vide. Ca marcherait si j'utilise les variables string_char_at? :
Code:
if (string_char_at(inv,0) = "5") //ici mettre un biscuit dans l'inventaire
Je suis un peu perdu aussi ^^ donc si quelqu'un est bon a ceci , merci de m'aider Oh et si je me suis trompé de section , mettez le dans le sous-forum expérimenté.
_________________
Spoiler:
Dernière édition par gateau le Jeu 27 Sep 2012 - 21:05, édité 1 fois
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 13:01
Oui ca devrait marcher.... Les fichiers ini sont simple à utiliser mas si oni passe par là il va te gueuler dessus et te dire de faire tes propres fichiers en binaire pour plus de sécurité
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 13:33
Térence68 a écrit:
Oui ca devrait marcher.... Les fichiers ini sont simple à utiliser mas si oni passe par là il va te gueuler dessus et te dire de faire tes propres fichiers en binaire pour plus de sécurité
Laul. Bon ok je vais essayer ce système d'inv , et si oni passe par la , j'lui dis d'ou bien me refaire mon jeu avec du binayr , ou d'aller dans un autre forum em*erder embêter les programmeurs :3
Edit : Oh pinaize il scrute les forums :X
_________________
Spoiler:
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 13:46
Ben il a raison mais avec gm de toute façon c'est pas sécurisé alors....
Adamo Utilisateur confirmé: Rang ***
Messages : 681 Localisation : Quebec
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 15:25
c'est dommage que la fonction string.split n'existe pas sur gm ca aurais été plus simple et plus pratique parceque ca aurais donner un truc genre : string_split(ini_read_string("Account Info","inv",""),",") donc ca aurais creer directe un tableau avec comme valeur chaque lettre/mot entre ,
mais tien je t'en ai fait un si jamais tu veut t'en servir
en gros c'est très simple a utiliser pour ton inventaire par exemple : inv_str = ini_read_string("Account Info","inv","") string_split(inv_str,",","TonTableau") apres ca te donne TonTableau[0] = 5 TonTableau[1] = 5 TonTableau[2] = 1 TonTableau[3] = 8 TonTableau[4] = 0 ect...
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 15:54
C'est vrai, c'est la fonction que j'utilise le plus pour les tableaux en php (explode).
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 18:49
Merci beaucoup Adamo justement j'me perdais avec les variables , je teste ton script et j'en dis les nouvelles
_________________
Spoiler:
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 19:46
Euh la j'ai essayé un système d'inventaire avec un obj_invbox , qui est une boite de 32x32 qui a 5 images_index , par exemple dans image_index 1 c'est un lance roquette , 4 cookies ... Donc j'ai résolu a faire ce code sur alarm0 , étant donné qu'un poulet a 10 places dans son inventaire
Tout mes obj_invbox ont l'image index 0 , que faire?
_________________
Spoiler:
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Sam 15 Sep 2012 - 23:55
Déjà, en prog on n'a jamais besoin de copier/coller :p
Code:
for(i = 0; i < 10; i += 1) (instance_create(x+24 + 36 * (i mod 5), y+64+ 36 * (i div 5), obj_invbox)).image_index = Inv[i]
Ensuite, 5 jetons que tu as mis "Treat uninitialized variables as 0" dans les options de ton jeu. Or dans un with tu es du point de vue de l'objet cible, et ton tableau Inv n'existe pas pour obj_invbox. Tu noteras que ne pas utiliser de with résout le problème, mais à l'avenir, pense que les variables de l'objet appelant sont accessibles à l'interieur du with via other.
_________________ Home is not a place, it's a feeling.
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Mer 26 Sep 2012 - 21:14
Cette fois j'ai utilisé un script comme les with(inv1){image_index=obj_invhud.Inv[0]}
Code:
//inv_place_change(inv1,global.invplace0) /*if argument1=1{argument0.image_index = 1}else if argument1=2{argument0.image_index = 2}else if argument1=3{argument0.image_index = 3}else if argument1=4{argument0.image_index = 4}else if argument1=5{argument0.image_index = 5}else argument0.image_index=0*/ argument0.image_index = argument1
Note : "je sais que je me complique la vie mais j'ai pas trouvé d'autre choix"
et j'ai des TONNES de problèmes de cannot compare arguments , de l'aide serait de la bienvenue , merci
_________________
Spoiler:
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Mer 26 Sep 2012 - 21:19
C'est normal, tu traite l'argument 0 comme un objet, alors que s'en est pas un (sauf si je suis complètement hs...)
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Mer 26 Sep 2012 - 21:59
Non non, un argument peut très bien être un objet, le problème n'est pas la. A vue d'oeil, je ne vois rien qui cloche... Tu es sûr que l'erreur de "cannot compare" se rapporte à ce bout de code?
_________________ Tous les icones de gm utilisables sur le cbna ICI
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Mer 26 Sep 2012 - 22:58
c'est dans l'égalité (=) que ça me marque cannot compare arguments , et oui c'est bien ce script mad'.
_________________
Spoiler:
Adamo Utilisateur confirmé: Rang ***
Messages : 681 Localisation : Quebec
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Mer 26 Sep 2012 - 23:03
cannot compare argument ca veut simplement dire que tu essaye de regarde si un string = un int essaye en mettant : /*if real(argument1)=1{argument0.image_index = 1}else if real(argument1)=2{argument0.image_index = 2}else if real(argument1)=3{argument0.image_index = 3}else if real(argument1)=4{argument0.image_index = 4}else if real(argument1)=5{argument0.image_index = 5}else argument0.image_index=0*/ argument0.image_index = real(argument1)
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 7:27
Je sais qu'on peut mettre un objet en argument, mais j'avais pas capté que inv1 était un objet, parce que là c'est pas très optimisé...
Et sinon t'es sur qu'on peut faire les conversions comme ca en gml ? Cest du C++ là, non ?
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 10:10
real() permet de convertir une chaîne en double (dans la mesure où elle contient un nombre), si ça foire ça renvoi 0. Et non, il n'existe pas de tel fonction en C++ (nativement), c'est trop haut niveau
_________________ Because these are not the words of God, the same God that burnt the knowing.
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)! Mes projets: SP Lecteur Multimedia (Stand by) S-Portable Graphics (demo1.8 is out! demo2.0 is planned) SSB RPG (Stand by)
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 11:46
Pourquoi ne pas faire un inventaire avec des ds_map? C'est quasiment la même chose qu'un fichier ini. Sachant que vu comment tu structures ton inventaire, j'ai l'impression que (hormis l'optimisation) tu galères à le gérer.
Exemple:
Code:
map_inv = ds_map_create()
Pour créer une ds_map puis tu peux dans chaque ds_map stocker une valeur dans une "clé" qui est un string(comme les ini :vP).
Du genre pour un inventaire avec un système de "poches", c'est à dire qu'on est limité en terme de place à tant d'objet par poche.
Code:
// inventory_init() // Initialisation inventaire map_inv = ds_map_create() ds_map_add( map_inv, "POCHE_QTE", 20 ) for ( i=1 ; i<=ds_map_find_value( map_inv, "POCHE_QTE" ); i+=1 ) { ds_map_add( map_inv, "POCHE_"+string(i), 0 ) // 0 = pas d'objet dans la poche } return map_inv;
Pour assigner un objet à une des poches
Code:
// inventory_obj_assign( inv, poche, obj ) // Assigne un objet dans une poche de l'inventaire ds_map_replace( argument0, "POCHE_"+string(argument1), argument2 )
Après ce n'est qu'un exemple, tu peux aussi stocker l'id d'une ds_map contenant des infos relatives à un objet dans une autre ds_map. Ceci pouvant contenir tous les objets du jeux, avec dans chaque clé le nom de l'objet, la description, la qté maximal à transporter, etc...
Ce que j'aurais tendance à faire pour ce genre de chose c'est de stocker des ids de ds_map dans une ds_map. Pour un système d'objet, je ferais une ds_map ou ds_list qui stockera tout les objets du jeu. Cette liste/map contenant pour chaque objet l'id d'une ds_map contenant les propriétés de l'objet. Voilà ce que j'ai en tête: - dat_obj_list = ds_list (qui stocke les objets et leur ds_map séparé par un caractère séparateur) Ici c'est "|" le caractère séparateur. Ligne 1: Potion +10PV|id Ligne 2: Potion +20PV|id L'id étant la ds_map qui stocke les infos relative à l'objet. Ça peut aller de stocker le nom, la description, au sprite et j'en passe.
Par contre je ne suis pas sûr que ce soit la méthode la plus optimisée. Après faut voir en fonction de ton système d'objet.
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 18:49
Je savais pas qu'on pouvait convertir comme ca ; en tout cas je sais qu'en c#, en php et dans pleins d'autres langages c'est comme ca ; alors comme le GML fait jamais comme tout le monde... Au moins j'aurais appris quelque chose
Adamo Utilisateur confirmé: Rang ***
Messages : 681 Localisation : Quebec
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 20:33
hum dans la plus part des language faut faire apelle a une fonction plutot comme en C# int a = Convert.ToInt32("123") dans GM c'est plus simple puisquil existe que 2 type les strings et les int
gateau Utilisateur confirmé: Rang **
Messages : 353 Projet Actuel : Actuellement rien
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 21:03
Finalement j'ai mit un real(argument0) et j'ai débug pendant quelques quarts d'heures (a différentes solutions) puis j'ai réussi Merci adamo, térence ,d-z,ainsi que tout ceux qui m'ont aidé pour ce système d'inventaire
_________________
Spoiler:
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Jeu 27 Sep 2012 - 21:04
En C# tu peux aussi faire (int)chaine_de_caracteres Sinon ce que j'aime bien mais qui existe qu'en php, c'est que pour concaténer t'utilise le point : "Bonjour agent numéro ".$id_agent ; a t'évite de devoir convertir en string. Par exemple si avec 2 variable a=23 et b=45, tu veux écrire 2345 ; tu peux faire $resultat=$a.$b alors que si tu veux additionner tu fais $resultat=$a+$b. Dans tous les autres langages tu dois caster...
_________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Ven 28 Sep 2012 - 21:06
Salut, je t'ai fait une "data structure inventory". Je pense que ça sera utile à pas mal de personnes.
Ça enregistre le tout dans un fichier "inventaire" en binaire et crypté par un mot de passe.
Voici les fonctions qui sont disponibles pour la data structure. inventoryInit inventorySet inventoryGet inventoryLoad inventorySave inventoryCount inventoryGetName
Plus une fonction pour le cryptage cryptXor
Et un script pour creer une liste à partir de ça :
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv? Ven 28 Sep 2012 - 23:25
Bien intéréssant ce système Caly , je l'ai essayé et il marche bien Si mon jeu commence à être hacké grave(ou qu'oni' visite ce topic) j'prends ton système de criptage :3
_________________
Spoiler:
Contenu sponsorisé
Sujet: Re: [Résolu]Plusieurs variables dans une variable pour faire un inv?
[Résolu]Plusieurs variables dans une variable pour faire un inv?