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