| | [Résolu] Ajouter des objets à la volée | |
| | Auteur | Message |
---|
GuZzO Nouveau
Messages : 3
| Sujet: [Résolu] Ajouter des objets à la volée Mer 20 Oct 2010 - 10:44 | |
| Bonjour à tous! Je débute en GML mais j'ai quelques connaissance dans d'autres languages (VB, fenix..) Je bosse sur un petit jeu spatial at la room principale (appelée Galaxy) est assez large. Je dispose de coordonnées des systèmes solaires dans une base de données donc j'aurais voulu remplir la room automatiquement à chaque démarrage. J'arrive à lire les coordonnées des soleils directement dans la base de données SQLite avec le script suivant: - Code:
-
DB_Init(); //Initialize db connector local_db = DB_Open("csdb.db"); //Connect the db local_query = DB_Query(local_db,"SELECT PK, X, Y, Type FROM Soleils WHERE Type = 'G'"); //Query the db
while (DB_Step(local_query) = 1) //fetch rows and for each sun create the object in the Galaxy room {//DEBUG //show_message(string(DB_Double(local_query,0)) + " / " + string(DB_Double(local_query,1)) + " / " + string(DB_Double(local_query,2)) + " / " + string(DB_Text(local_query,3))); init_room_galaxy(DB_Double(local_query,0),DB_Double(local_query,1),DB_Double(local_query,2),DB_Text(local_query,3)); }
Il semble fonctionner, je peux visualiser les infos de la base de données sans problème avec la fonction show_message. J'utilise un deuxième script pour ajouter les objets à la volée et c'est là que ça bloque je crois... - Code:
-
//init_room_galaxy(sun_id,x,y,type_of_sun)
//DEBUG show_message(string(argument0) + " / " + string(argument1) + " / " + string(argument2) + " / " + string(argument3)); sprite_index = sprite_add('spr_sun_' + argument3 + '_001',0,1,0,((200 * argument1)-100),((200 * argument2)-100)); //Assigne un index pour le sprite obj_soleil = object_add() //Ajoute un objet vide et nommé "obj_soleil" object_set_sprite(obj_soleil,sprite_index) //Assigne un sprite à l'objet "obj_soleil" (instance_create(0,0,obj_soleil)).name = ("soleil_" + string(argument0)) //Affiche l'objet "obj_soleil"
Les variables arrivent bien dans la fonction car j'arrive à les visuliser avec le show_message mais aucun soleils n'apparait dans la room. Je crois que le problème vient de la ligne suivante: sprite_index = sprite_add('spr_sun_' + argument3 + '_001',0,1,0,((200 * argument1)-100),((200 * argument2)-100));car si je fais show_message(string(sprite_index)), la valeur retournée est -1.... ça signifie "erreur" non? Merci par avance pour votre aide! GuZzO
Dernière édition par GuZzO le Jeu 21 Oct 2010 - 12:18, édité 2 fois |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [Résolu] Ajouter des objets à la volée Mer 20 Oct 2010 - 14:32 | |
| obj_soleil = object_add() object_event_add(obj_soleil,ev_create,0," sprite_index = sprite_add('spr_sun_' + string(argument3) + '_001',0,1,0,((200 * argument1)-100),((200 * argument2)-100));") comme ça tu assignes le sprite à la création du soleil (là t'as juste assigner un sprite_index à rien si j'ai bien comprit ton code) Dis-moi si ça marche |
| | | GuZzO Nouveau
Messages : 3
| Sujet: Re: [Résolu] Ajouter des objets à la volée Mer 20 Oct 2010 - 15:34 | |
| Merci de ta réponse mais ça ne semble pas fonctionner.... J'ai posté les sources ci-dessous, la version2 contient tes modifications dans le script "init_room_galaxy": Version 1Version 2J'ai aussi posté sur un forum anglophone et on m'a répondu que je ne pouvais pas concaténer une variable comme cela: - Code:
-
sprite_index = sprite_add([b]'spr_sun_' + argument3 + '_001'[/b],0,1,0,((2 * argument1)-1),((2 * argument2)-1)); j'ai donc modifié le script comme suit: - Code:
-
sprite_index = sprite_add(execute_string("return spr_sun_" + argument3 + "_001"),0,1,0,((2 * argument1)-1),((2 * argument2)-1)); ceci dit, ça ne marche pas non plus pour le moment... et merci encore!!! G. |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: [Résolu] Ajouter des objets à la volée Mer 20 Oct 2010 - 19:44 | |
| - GuZzO a écrit:
- Merci de ta réponse mais ça ne semble pas fonctionner....
J'ai posté les sources ci-dessous, la version2 contient tes modifications dans le script "init_room_galaxy": Version 1 Version 2
J'ai aussi posté sur un forum anglophone et on m'a répondu que je ne pouvais pas concaténer une variable comme cela:
- Code:
-
sprite_index = sprite_add([b]'spr_sun_' + argument3 + '_001'[/b],0,1,0,((2 * argument1)-1),((2 * argument2)-1)); j'ai donc modifié le script comme suit:
- Code:
-
sprite_index = sprite_add(execute_string("return spr_sun_" + argument3 + "_001"),0,1,0,((2 * argument1)-1),((2 * argument2)-1)); ceci dit, ça ne marche pas non plus pour le moment...
et merci encore!!!
G. C'est vraiment chelou la modif mais, ton sprite_add, t'es sur qu'il point au bon endroit ? t'as testé s'il ne retournait pas -1 ? |
| | | GuZzO Nouveau
Messages : 3
| Sujet: Re: [Résolu] Ajouter des objets à la volée Jeu 21 Oct 2010 - 11:43 | |
| j'ai résolu mon problème en fusionnant les 2 scripts et en modifiants comme suit: - Code:
-
//Initialisation de la galaxy à la volée DB_Init();
local_db = DB_Open("ressources/dll/csdb.db"); //DEBUG //show_message(string(local_db));
local_query = DB_Query(local_db,"SELECT PK, X, Y, Type FROM Soleils"); //DEBUG //show_message(string(local_query));
while (DB_Step(local_query) = 1) //fetch rows {//DEBUG //show_message(string(DB_Double(local_query,0)) + " / " + string(DB_Double(local_query,1)) + " / " + string(DB_Double(local_query,2)) + " / " + string(DB_Text(local_query,3))); obj_soleil = object_add() //Ajoute un objet vide et nommé "obj_green_slime" object_set_sprite(obj_soleil,execute_string("return spr_sun_" + string(DB_Text(local_query,3)) + "_001")) //Assigne un sprite à l'objet "obj_green_slime" (instance_create(((200 * DB_Double(local_query,1))-100),((200 * DB_Double(local_query,2))-100),obj_soleil)).name = ("soleil_" + string(DB_Double(local_query,0))) }
DB_Close(local_db);
|
| | | Contenu sponsorisé
| Sujet: Re: [Résolu] Ajouter des objets à la volée | |
| |
| | | | [Résolu] Ajouter des objets à la volée | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |