AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

 

 [Résolu] Ajouter des objets à la volée

Aller en bas 
AuteurMessage
GuZzO
Nouveau


Messages : 3

[Résolu] Ajouter des objets à la volée Empty
MessageSujet: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée EmptyMer 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
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

[Résolu] Ajouter des objets à la volée Empty
MessageSujet: Re: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée EmptyMer 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 Very Happy

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
GuZzO
Nouveau


Messages : 3

[Résolu] Ajouter des objets à la volée Empty
MessageSujet: Re: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée EmptyMer 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 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.
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

[Résolu] Ajouter des objets à la volée Empty
MessageSujet: Re: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée EmptyMer 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 Very Happy

mais, ton sprite_add, t'es sur qu'il point au bon endroit ? t'as testé s'il ne retournait pas -1 ?

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
GuZzO
Nouveau


Messages : 3

[Résolu] Ajouter des objets à la volée Empty
MessageSujet: Re: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée EmptyJeu 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);
Revenir en haut Aller en bas
Contenu sponsorisé




[Résolu] Ajouter des objets à la volée Empty
MessageSujet: Re: [Résolu] Ajouter des objets à la volée   [Résolu] Ajouter des objets à la volée Empty

Revenir en haut Aller en bas
 
[Résolu] Ajouter des objets à la volée
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: