AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]

Aller en bas 
3 participants
AuteurMessage
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyDim 12 Fév 2012 - 22:14

Bien le bonjour, ou bonsoir.

J'aurait besoin de savoir comment faire pour récupérer les IDs, d'un objet en particulier, et tout ceci dans un tableau.
Simple, oui, c'est vrai, mais il y a des spécifications :

-on ne sait pas combien d'objets existe (donc boucle for)
-on ne connais pas le nom de l'objet (donc argument0,1,2...)
-on aura besoin de réutiliser les ID pour faire subir des actions au objet(les actions seront identique, mais pas au même endroit, moment, et pas sous les même condition)

Pour que vous voyez un peu mieux la chose, voila ce que je souhaiterait faire subir au objet :

Code:
/*
 * /!\ lui ajouter le MPF_collision
 *arg0 = les objet qui peuvent faire bouger les plateformes
 *arg1 = la plateforme qui bouge
 *arg2 = 0:tombe ; 1:direction en ° ; 2:path
 *arg3 = -arg2=0 gravité
 *      -arg2=1 degrés
 *      -arg2=2 nom du path
 *arg4 = évènement en cas de non collision (0=continue,1= arrêt,2=demi-tour,3=saut a la base,4= disparaît)
 *arg5 = Hors view (0=continue,1=arrêt,2=demi-tour,3=saut a la base,4= disparaît)
 *arg6 = vitesse de retour ( cas de non collision, ou sorti de view)
 *arg7 = vitesse (pour les direction, ou les paths)
 *arg8 = (que pour les paths) fin de path (0=Stop; 1=fait un saut a la position initial du path; 2=refait le path a partir de sa nouvelle position; 3=fait le path en sens inverse)
 *arg9 = (que pour les paths) suivie du path, true = a partir de la position réel du path, false = a partir de la position de l'objet
 */

with argument0
begin

if !variable_local_exists("scotch")
    {
    scotch=0
    }


// MPF_plateform_move(obj_acteur,obj_actif,0,grav,nocontact,'vitesse')

if argument2==0 //tombe
    {
    if place_meeting(x,y+5,argument1) //si contacte dessous
        {
       
        with instance_place(x,y+1,argument1) //récupération de l'id de l'objet desous
            {
            gravity=argument3
            argument0.vspeed=vspeed
            }
        }
    else
        {
        if argument4==1 //arret  FONCTIONNE
            {
            argument1.gravity=0
            argument1.vspeed=0
            }
        if argument4==2 //demi-tour A REGLER
            {
            if place_meeting(x,y+2,argument1)
                {
                scotch=instance_place(x,y+6,argument1)
                }
            if argument0.scotch==argument1.id
                {
                with argument1.id
                    {
                    vspeed=-argument5
                    if y<=ystart
                        {
                        y=ystart
                        vspeed=0
                        }
                    }
                }
            }
        if argument4==3 //saut à la base A REGLER
            {
            if argument0.scotch==argument1.id
                {
                with argument1.id
                    {
                    gravity=0
                    vspeed=0
                    x=xstart
                    y=ystart
                    }
                }
            }
        if argument4==4 //disparait PAS ESSAYER
            {
            if argument0.scotch==argument1.id
                {
                with argument1.id
                    {
                    object_delete(self)
                    }
                }
            }
        }
    }

//MPF_platform_move(obj_acteur,obj_actif,1,degrés,vitesse)
   
if argument2==1 //mouvement
    {
    if place_meeting(x,y+1,argument1) //si contacte dessous
        {
        with argument1
            {
            direction=argument3
            speed=argument4
            argument0.y+=vspeed
            argument0.x+=hspeed
            }
        if keyboard_check_pressed(vk_space) && place_free(x,y-1)
            {
            vspeed=-8 //mouvement haut
            }
        }
    }
   
//MPF_plateform(obj_acteur,obj_actif,2,nom_path,vitesse,fin_path,absolue)
   
if argument2==2 //path
    {
   
    }
   
end

Bon, une explication s'impose

C'est un script qui gère les mouvement des objets (plateforme)

Explication :

Code:
MPF_plateform_move(arg0,arg1,arg2,arg3,arg4,&rg5,arg6,arg7,arg8,arg9)

arg0 = objet dit "acteur" le joueur autrement dit, mais l'on peux mettre d'autre objet, genre enemi...

arg1 = objet dit "actif" c'est celui qui subit les actions quand les condition sont remplit par l' "acteur"

arg2 = si 0 = l'objet actif subira une gravité
si 1 = l'objet ira dans une direction
si 2 = l'objet suivra un path

arg3 = si arg2 = 0 gravité de l'objet
si arg2 = 1 degrés de la direction (360 possibilité)
si arg2 = 2 nom du path a suivre

arg4 = si le joueur n'est plus sur la plateforme, choisir une action a faire =
-0 continue(de tomber, la direction ou le path)
-1 arret (stop tout mouvement, et reste la ou il est)
-2 retourne a sa position initiale (en mouvement)
-3 se téléporte directement a sa position initiale
-4 disparais

arg5 = si la plateforme sors de la view =
-0 continue(de tomber, la direction ou le path)
-1 arret (stop tout mouvement, mais il reprend sa route lors de sa réapparition sur la view)
-2 retourne a sa position initiale (en mouvement)
-3 se téléporte directement a sa position initiale
-4 disparais

arg6 = la vitesse de retour (si arg4=2 ou arg5=2) sinon mettre 0

arg7 = vitesse de la plateforme de direction, ou la plateforme qui suis un path

arg8 = (n'est pris en compte que pour les paths) a la fin de son parcours du path, la plateforme =
-0 se stop et reste a sa nouvelle position
-1 se téléporte a sa position initiale
-2 refait le path a partir de sa nouvelle position
-3 retourne a sa position initiale en faisant le path en sens inverse (a la même vitesse que l'aller)
-4 disparaît
-5 nouveau path (Complexe et a voir si utile)

arg9 = (n'est pris en compte que pour les paths) position de la plateforme sur la path (absolue)
-true
-false

ce qui nous intéresse c'est ça :

Code:
MPF_plateform_move(joueur,plateforme,0,0.5,[2,3 ou 4]) //on s'en fou de argument 4 et 5

La plateforme fonctionne bien si elle est toute seule, mais des qu'il y en a 2 ou plus... c'est la catastrophe.

C'est pour cela qu'il faudrait que je trouve un moyen de pouvoir faire tournée en continue le script avec les ID de chacun des objets, pour qu'ils soit tous "différent"

donc j'ai supposer qu'un tableau avec les IDs de chaque objet pourrait résoudre le problème.

Oui? non? comment et pourquoi surtout?


PS : je tien a m'excuser pour les nombreuses de fautes de grammaire, et orthographe, ou même de conjugaison


Dernière édition par Caohimin le Dim 4 Mar 2012 - 1:55, édité 1 fois
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error


Messages : 1015
Projet Actuel : Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Bas-machoire2000

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyLun 13 Fév 2012 - 0:58

Si tu veux te faire des listes d'ID, tu peux utiliser instance_find(obj,n) instance_number(obj)
Ou bien un with...
Spoiler:
Mais je crois que tu te compliques. (j'ai pas tout compris)
Après y'a collision_line etc. qui renvoient une id correcte...


Précisions ?
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyLun 13 Fév 2012 - 1:04

Avec une seule plateforme,

Dans la view, il y en aura peut être 4-5 ou 30 de plateformes, et j'ai remarquer que si je monte sur l'une d'elle, elle tombe, normal, mais si je monte sur une autre pendant que la première remonte a sa position initiale, bien ce sont les deux qui tombe, et si je monte sur une troisième ce sont les trois qui tombe... etc

J'aimerait que la première continue de remonter, alors que je suis sur une autre.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyLun 13 Fév 2012 - 23:07

T'as qu'à pop les objets de ta plateforme en stockant leur id dans une liste...

Code:
object_list=ds_list_create();
with instance_create(x,y,obj)
{
ds_list_add(other.object_list,id);
}

et pour ta question numéro deux t'as qu'à faire un truc du genre
Code:
with id_de_lobjet
{
//code avec un if qui vérifie si le y est plus grand ou plus petit que l'autre.
}
C'est dégeu comme exemple mais jtouche plus à gm donc bon Mad
Et pour les with saches (si tu ne le sais pas déjà) que tout le code entre {} est considéré comme du code présent dans un event de cet objet, donc pour faire appel aux variables de l'objet qui éxécute le with faut mettre un other. avant le nom de la variabe (voir premier code)
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyMar 14 Fév 2012 - 0:24

Je ne connaissait pas ça tien.

PS : Je ne sait pas si cela vient de moi, mais soit la liste enregistre les ID de toute les instance, soit il prend plusieurs fois, une seule ID, soit il prend une ID lorsque je suis en contacte avec elle, une fois hors contacte il la supprime, soitil en prend une et n'en ajoute plus ou n'en retire plus...

En gros, il ne fait rien de se que j'aimerait...

Edit : Je n'ai rien dit, ça fonctionne. Je met tout ça en place, et je vous dirait si cela fonctionne.

Edit 2 : Bon, c'est pas réellement ce que je voulais, mais les listes ne garde pas, infiniment en mémoire les valeurs qu'on lui donne... Je vais faire ça avec des tableau, ce sera, plus complexe, mais moins contraignant. Si j'ai a nouveau un soucis, je reviendrait ici.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] EmptyVen 17 Fév 2012 - 15:12

Désoler pour le double post, mais ma question va être légèrement différente :

J'ai ce script la :

Code:
with (argument0)
begin

if place_meeting(x,y+3,argument1) //si on est au dessus
    {
    with (instance_place(x,y+1,argument1)) //l'instance dessous
        {
        gravity=argument2
        argument0.vspeed=vspeed
        }
    }

end

Qui sert a mettre une gravité sur mes objet plateforme, lorsque le joueur se trouve au dessus de l'un d'eux, seulement, je ne trouva pas comment faire pour que la plateforme cesse de tomber lorsque le personnage n'est plus dessus.

Code:
if !place_meeting(x,y+3,argument1)
    {
    with [color=red]Que mettre ici?[/color]
        {
        gravity=0
        vspeed=0
        }
    }

Je peut mettre tout simplement

Code:
argument1

Qui donnerait :

Code:
if !place_meeting(x,y+1,argument1)
    {
    with argument1
        }
        gravity=0
        vspeed=0
        }
    }

Ça réglerait en partit mon problème, alors pourquoi en partit :

Si je créer des plateforme qui ne se chevauche pas, cela ne pose pas de probleme, l'ID de

Code:
argument1

ne sera pas la même, donc pas de conflit, mais si l'objet joueur se trouve au dessus de deux plateformes qui se chevauche, la il y a problème...

Ou aussi lorsque l'on change de plateforme plus rapidement que l’exécution du script ( en 1 step quoi, qui est un cas rare, mais ça met arriver)

Le problème rencontrer est que la première plateforme continue de tomber alors que l'on est passer sur la seconde, et si je vais sur une troisième, les deux premières continue de tomber...

Merci.
Revenir en haut Aller en bas
Contenu sponsorisé





Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty
MessageSujet: Re: Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]   Recueillir toute les ID d'un certain objet dans un tableau. [Résolue] Empty

Revenir en haut Aller en bas
 
Recueillir toute les ID d'un certain objet dans un tableau. [Résolue]
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Traitement sur toute les instances de l'objet X dans un rayon
» récupéré toute les id d'un objet
» draw_text(x,y,str) reconnaitre un caractère dans str (résolue)
» Baisser la room_speed de toute la room sauf d'un objet
» Appeler, dans un objet, une var d'un autre objet [résolu]

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