XYrq8/|E3PX ( @ (//(  0/80@0?/8 0( ?G@POWOXOP?H0@/7@O_``h_hPX 0(P_oppxow_g@O/8'' 7p`o?G/7 0??H/8`/o?GOX@H0?/pOW?H/8 7OP?G/7( P0@PX@O0@ 0O @H/@' 00@@P0?'_OP@H( 7/7' ^^^^^^^^^^^^^^^^^^^^^^^^^^TeeBBBBeTT^^^^^^^eBDJ33333JJDBeZ^^^^TD33==#####==3JDBT^^^^eJ=###=3DeZ^^TB3# #=3JBZ^^T3#  #=JBT^^J# Sll #=JBZ^T# %,68??86,/@A*< ##45('.6787-9%:;*<=#$+&,--.,/01)2 3 $%&&'%($!)* ##  !"#     ??d0e/eY@global_optionsZ-X+ :xM F3x7FW^xD=6%R(i^Jd'$jx<^s^uPϵ(/{<0^Xkie<0%C >|(PCe?Y-P/7b,0-hm7o:wRllNۊt19K~^:畘of!T]>|[Gw^}$b2p^\3;ðXL,y,INݖmbif֟$#H5M>|(PC >|(PC>oYYm0羶Ek11 add_objectZ-X+ Ox10 E8 sN{%ʯ㦥?55N?Q$P9wcߍ{74><6+]ǿ"|pV2%>@>@>@+*7}xx-O9jZt0},/6O!o5+tu,ޏtz<O}5bt?QE2!_x]Gt# [y1Vm3Ά䭧Ei,Xz?uךUj_5%c!9W @>@>@>-(q{B<og(default_sprite  xs5a3 b(fdH@Q@>(JL&2 ' M& OE1hV|bw 9܃>C|C5 w:~OT[0]x mini_barre  ?xɱ QhI =L~x!+:QNun+Tsave  Lxs5a3 b(fdH@Q@(;?j6PF5700G揚OS4 iload  dxs5a3 b(fdH@Q@($*QG5Q|  D.COX/11T34h 2O߀ fleche_droite  xM Pw-;kiߝ%iRa:O0Ayq:3x~)p }k4VJIRO)_$3S>9'La _,sd/޷ ﷮rge/?"kg}YkWtL fleche_gauche  x= P='`&ީ7W" @KN$yսq 6ɩ;غ~)Yr,K|2էx'c|ps*ԗ,)$q] ǧH|L?[DoU_NL global_animation_options/*Ce script s execute quand le joueur appuie sur global options*/ var change,clic; change=0;// Cette variable designe si il y a un changement dans les global.name clic=0; //Cette variable contient le nombre de steps depuis quand la souris est cliquee et vaut donc 1 lors du clic draw_set_valign(fa_top) do { draw_rectangle_color(30,30,room_width-30,room_height-30,c_gray,c_gray,c_gray,c_gray,0) set_automatic_draw(0) change=0 for(i=1;i<=global.nombre_options;i+=1) { draw_text(100,60+i*20,global.name[i]) if variable_global_get(global.name[i])=1 draw_rectangle_color(500,60+i*20,520,75+i*20,c_green,c_green,c_green,c_green,0) else draw_rectangle_color(500,60+i*20,520,75+i*20,c_red,c_red,c_red,c_red,0) } draw_rectangle_color(500,380,540,400,c_blue,c_blue,c_blue,c_blue,0) while!(mouse_x>500&&mouse_x<540&&mouse_y>380&&mouse_y<400&&clic=1) { screen_refresh() if mouse_check_button(mb_left) clic+=1 else clic=0 io_handle() if mouse_x>500 && mouse_x<520 && mouse_y<360 && mouse_y>80 && clic=1 && mouse_y mod 20 <15 { i=floor((mouse_y-60)/20) variable_global_set(global.name[i],1-variable_global_get(global.name[i])) change=1 } if change=1 { change=2 break } } } until(change==0) set_automatic_draw(1)obj_add/*ce script sert a ajouter un objet dans la room*/ global.nombre_objets+=1 global.idobjet[global.nombre_objets]=instance_create(room_width/2,room_height/2,objet)  initializeK/*Ce script est simplement le script d initialisation,il est execute par l objet control au tout debut du jeu*/ global.mode="edit" //modes: edit, record, play global.nombre_objets=0 //le nombre d'objets global.nombre_carac=14 //le nombre de variables specifiques aux objets pour la sauvegarde d animations (changeable en fonction des parametres) global.nombre_options=14 //le nombre de variables specifiques aux objets maximum (constante) global.gridid=ds_grid_create(1,1) //cree une grille qui enregistre toutes les donnees global.step=0 // frame en cours de visualisation global.obj_selected=0 //l id de l'objet selectionne global.x=448 // global.y=400 // position de depart des boutons d'options global.stepstotal=0 //le nombre de frames total global.object_num=0 global.nombre_array=100 global.nombre_instructions=1000 global.num_instr=1 global.debug_mode=0 //si le mode debug est active 1 oui 0 non global.max=0 //le maximum de temps possible nombre_debut_debug=0 for(i=1;i<=global.nombre_instructions;i+=1) { global.temps[i]=0 global.obj[i]=0 global.commande[i]=0 global.valeur[i]=0 } global.i=0 //sert pour les boucles global.j=0 //pour les boucles for(i=0;i<=100;i+=1) global.idobjet[i]=0 global.x_util=1 global.y_util=1 global.image_angle_util=1 global.speed_util=1 global.direction_util=1 global.angle_speed_util=1 global.gravity_util=1 global.gravity_direction_util=1 global.friction_util=1 global.image_scale_util=1 global.image_scale_chang_util=1 global.depth_util=1 global.image_alph_util=1 global.image_alph_chang_util=1 global.name[1]="x_util" global.name[2]="y_util" global.name[3]="image_angle_util" global.name[4]="speed_util" global.name[5]="direction_util" global.name[6]="angle_speed_util" global.name[7]="gravity_util" global.name[8]="gravity_direction_util" global.name[9]="friction_util" global.name[10]="image_scale_util" global.name[11]="image_scale_chang_util" global.name[12]="depth_util" global.name[13]="image_alph_util" global.name[14]="image_alph_chang_util" global.nom[1]="x" global.nom[2]="y" global.nom[3]="image_ang" global.nom[4]="vitesse" global.nom[5]="direc" global.nom[6]="angle_change" global.nom[7]="gravite" global.nom[8]="gravite_dir" global.nom[9]="fric" global.nom[10]="scale" global.nom[11]="scale_chang" global.nom[12]="profondeur" global.nom[13]="alpha" global.nom[14]="alpha_chang" /* image_ang=0 //equivalent de image_angle vitesse=0 //equivalent de speed direc=0 //equivalent de direction angle_change=0 // change l angle gravite=0 //equivalent de la gravity gravite_dir=0 //equivalent de gravity_direction fric=0 // la friction scale=0 // equivalent de image_scale scale_chang=0 // le changement de image_scale profondeur=0 // la depth */ // nombre de steps ecoules /* Variables globales qui sont specifiques a l animation entiere x_util : si la variable x est utilisee dans la sauvegarde y_util : si la variable y est utilisee dans la sauvegarde image_angle_util : si la variable image_angle est utilisee dans la sauvegarde speed_util : si la variable speed est utilisee dans la sauvegarde direction_util : si la variable direction est utilisee dans la sauvegarde angle_speed_util : si la variable angle_speed est utilisee dans la sauvegarde gravity_util : si la variable gravity est utilisee dans la sauvegarde gravity_direction_util : si la variable gravity_direction est utilisee dans la sauvegarde friction_util : si la variable friction est utilisee dans la sauvegarde image_scale_util : si la variable image_scale est utilisee dans la sauvegarde depth_util : si la variable depth est utilisee dans la sauvegarde Variables servant pour la sauvegarde des animations (specifiques a chaque objet) x : position x y : position y image_angle : rotation de l image speed : vitesse direction : direction angle_speed : vitesse de rotation de l'image gravity : gravite gravity_direction : direction de la gravite friction : friction image_scale : definira l'agrandissement de l image. depth : profondeur */  draw_selected /*Ce script dessine toutes les variables specifiques a chaque objet pendant la selection. Il teste aussi si le joueur clique sur un des rectangles imaginaires*/ if global.obj_selected!=0 { draw_rectangle_color(30+global.x-448-30,416+global.y-432,440+global.x-448-30,480+global.y-432,c_gray,c_gray,c_gray,c_gray,0) draw_text(40+global.x-448-30,418+global.y-432,"x :"+string(global.obj_selected.x)) draw_text(40+global.x-448-30,432+global.y-432,"y :"+string(global.obj_selected.y)) draw_text(40+global.x-448-30,446+global.y-432,"i_ang :"+string(global.obj_selected.image_ang)) draw_text(120+global.x-448-30,418+global.y-432,"vit :"+string(global.obj_selected.vitesse)) draw_text(120+global.x-448-30,432+global.y-432,"dir :"+string(global.obj_selected.direc)) draw_text(120+global.x-448-30,446+global.y-432,"ang_ch :"+string(global.obj_selected.angle_change)) draw_text(200+global.x-448-30,418+global.y-432,"grav :"+string(global.obj_selected.gravite)) draw_text(200+global.x-448-30,432+global.y-432,"grav_dir :"+string(global.obj_selected.gravite_dir)) draw_text(200+global.x-448-30,446+global.y-432,"friction :"+string(global.obj_selected.fric)) draw_text(280+global.x-448-30,418+global.y-432,"scale :"+string(global.obj_selected.scale)) draw_text(280+global.x-448-30,432+global.y-432,"sc_cha :"+string(global.obj_selected.scale_chang)) draw_text(280+global.x-448-30,446+global.y-432,"depth :"+string(global.obj_selected.profondeur)) draw_text(360+global.x-448-30,416+global.y-432,"alpha :"+string(global.obj_selected.alpha)) draw_text(360+global.x-448-30,432+global.y-432,"alph_ch :"+string(global.obj_selected.alpha_chang)) if mouse_x>40+global.x-448-30 && mouse_x<440+global.x-448-30 && mouse_y>418+global.y-432-30 && mouse_y<460+global.y-432 && mouse_check_button_pressed(mb_left) { global.i=floor((mouse_x-global.x+448-40+30)/80) global.j=floor((mouse_y-global.y+432-404)/14); if global.i*3+global.j<=global.nombre_options with(global.obj_selected) { variable_local_set(global.nom[global.i*3+global.j],real(get_string(global.nom[global.i*3+global.j],0))); } } /* image_ang=0 //equivalent de image_angle vitesse=0 //equivalent de speed direc=0 //equivalent de direction angle_change=0 // change l angle gravite=0 //equivalent de la gravity gravite_dir=0 //equivalent de gravity_direction fric=0 // la friction scale=0 // equivalent de image_scale scale_chang=0 // le changement de image_scale profondeur=0 // la depth */ } next_step/*Ce script se charge d ajouter un step quand l utilisateur appuie sur la fleche droite*/ if global.step==global.stepstotal { global.stepstotal+=1; //le nombre de frames total global.step=global.stepstotal; global.obj_num=0; if global.step mod 100 == 1 { //sauvegarde de toutes les donnees toutes les 100 entrees with(objet) { for(i=1;i<=global.nombre_options;i+=1) variable_local_array2_set("position_object",ceil(global.step/100),i,variable_local_get(global.nom[i])); } } else { //reactualise les positions des objets with(objet) { if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x-=grav_x vit_y-=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse+=fric if vitesse<0 vitesse=0 } x=x-cos(degtorad(direc))*vitesse y=y+sin(degtorad(direc))*vitesse image_ang-=angle_change //equivalent de image_angle scale-=scale_chang // equivalent de image_scale alpha-=alpha_chang } with(objet) { for (i=1;i<=global.nombre_options;i+=1) if compare(variable_local_get(global.nom[i]),variable_local_get("last_"+global.nom[i]),0.99)==0 { //show_message(global.nom[i]+" "+string(variable_local_get(global.nom[i]))+string(variable_local_get("last_"+global.nom[i]))) global.temps[global.num_instr]=global.step global.max=global.step global.obj[global.num_instr]=obj_number global.commande[global.num_instr]=i global.valeur[global.num_instr]=variable_local_get(global.nom[i]) global.num_instr+=1 } } with(objet) { x=x+cos(degtorad(direc))*vitesse y=y-sin(degtorad(direc))*vitesse image_ang+=angle_change //equivalent de image_angle if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x+=grav_x vit_y+=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse-=fric if vitesse<0 { vitesse=0 fric=0 } } scale+=scale_chang // equivalent de image_scale alpha+=alpha_chang } } with(objet) { for(i=1;i<=global.nombre_options;i+=1) variable_local_set("last_"+global.nom[i],variable_local_get(global.nom[i])) } //reactualise les positions des objets with(objet) { x=x+cos(degtorad(direc))*vitesse y=y-sin(degtorad(direc))*vitesse image_ang+=angle_change //equivalent de image_angle if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x+=grav_x vit_y+=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse-=fric if vitesse<0 { vitesse=0 fric=0 } } scale+=scale_chang // equivalent de image_scale alpha+=alpha_chang for(i=1;i<=global.nombre_options;i+=1) variable_local_set("deb_"+global.nom[i],variable_local_get(global.nom[i])) } } else step_sci(global.step+1) draw_debug/* Charge de dessiner en debugmode, toutes les variables d instructions*/ for(i=1+nombre_debut_debug;i<20+nombre_debut_debug;i+=1) { draw_text(50,(i-nombre_debut_debug)*20,string(i)) draw_text(100,(i-nombre_debut_debug)*20,string(global.temps[i])) draw_text(150,(i-nombre_debut_debug)*20,string(global.obj[i])) draw_text(200,(i-nombre_debut_debug)*20,string(global.commande[i])) draw_text(250,(i-nombre_debut_debug)*20,string(global.valeur[i])) } previous_step`/*Ce script permet de retourner en arriere d'un step*/ if global.step>1 { global.step-=1 }compare/*Ce script renvoie 1 si le nombre 1 et le nombre 2 sont egals a une precision de precision et 0 si ils sont differents, en prenant aussi en compte leur signe*/ var nombre1,nombre2,precision; nombre1=argument0 nombre2=argument1 precision=argument2 if (sign(nombre1)=-1 && sign(nombre2)=1) || (sign(nombre1)=1 && sign(nombre2)=-1) return 0; if nombre1=0 && nombre2 =0 return 1; if abs(nombre1)>precision*abs(nombre2) && abs(nombre1)*precision1 { i=floor(numerostep/100) j=(numerostep mod 100)-1 if j=-1 j=99 show_message(string(i)+" "+string(j)) if global.max>i*100 { while(global.temps[k]<=(i+1)*100) { k+=1 } for(l=1;l<=14;l+=1) with(objet) { variable_local_set(global.nom[l],position_object[i+1,l]) } for(l=1;l<=j;l+=1) { with(objet) { while (fleche_ga.l+100*fleche_ga.i=global.temps[fleche_ga.k]) { if global.obj[fleche_ga.i]=obj_number { if global.commande[fleche_ga.i]<=global.nombre_options { a=global.commande[fleche_ga.i] variable_local_set(global.nom[fleche_ga.a],global.valeur[fleche_ga.i]) } } } x=x+cos(degtorad(direc))*vitesse y=y-sin(degtorad(direc))*vitesse image_ang+=angle_change //equivalent de image_angle if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x+=grav_x vit_y+=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse-=fric if vitesse<0 { vitesse=0 fric=0 } } scale+=scale_chang // equivalent de image_scale alpha+=alpha_chang } } } else { for(l=1;l<=14;l+=1) with(objet) variable_local_set(global.nom[fleche_ga.i],position_object[fleche_ga.i,fleche_ga.l]) for(i=1;i<=j;i+=1) { with(objet) { x=x+cos(degtorad(direc))*vitesse y=y-sin(degtorad(direc))*vitesse image_ang+=angle_change //equivalent de image_angle if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x+=grav_x vit_y+=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse-=fric if vitesse<0 { vitesse=0 fric=0 } } scale+=scale_chang // equivalent de image_scale alpha+=alpha_chang } } global.step=numerostep } } */step_sciif argument0>0 { fleche_ga.numero_step=argument0 fleche_ga.l=1 fleche_ga.i=floor(fleche_ga.numero_step/100); fleche_ga.t=(fleche_ga.numero_step mod 100)-1; if fleche_ga.t=-1 fleche_ga.t=99 //show_message(string(fleche_ga.i)+" "+string(fleche_ga.t)) if global.max<=fleche_ga.i*100 //si il n y a pas d instructions apres i*100 { //initialisation for(fleche_ga.k=1;fleche_ga.k<=14;fleche_ga.k+=1) with(objet) variable_local_set(global.nom[fleche_ga.k],position_object[fleche_ga.i+1,fleche_ga.k]) for(fleche_ga.k=1+fleche_ga.i*100;fleche_ga.k<=fleche_ga.t+1+fleche_ga.i*100;fleche_ga.k+=1) { with(objet) { step_objet() } } } if global.max>fleche_ga.i*100 { fleche_ga.t=(fleche_ga.numero_step mod 100)-1; //show_message(string(fleche_ga.numero_step)) for(fleche_ga.k=1;fleche_ga.k<=14;fleche_ga.k+=1) with(objet) variable_local_set(global.nom[fleche_ga.k],position_object[fleche_ga.i+1,fleche_ga.k]) while(1) { if global.temps[fleche_ga.l]>fleche_ga.i*100 break; else fleche_ga.l+=1 } for(fleche_ga.k=fleche_ga.i*100+1;fleche_ga.k<=fleche_ga.t+1+fleche_ga.i*100;fleche_ga.k+=1) { with(objet) { while global.temps[fleche_ga.l]=fleche_ga.k && global.obj[fleche_ga.l]=obj_number { fleche_ga.a=global.commande[fleche_ga.l] fleche_ga.b=global.valeur[fleche_ga.l] variable_local_set(global.nom[fleche_ga.a],fleche_ga.b) //show_message(string(fleche_ga.a)+" "+string(fleche_ga.b)+" "+string(global.obj[fleche_ga.l])) fleche_ga.l+=1 } step_objet() } } } global.step=fleche_ga.numero_step }  step_objet9x=x+cos(degtorad(direc))*vitesse y=y-sin(degtorad(direc))*vitesse image_ang+=angle_change //equivalent de image_angle if gravite!=0 { vit_x=cos(degtorad(direc))*vitesse vit_y=-sin(degtorad(direc))*vitesse grav_x=cos(degtorad(gravite_dir))*gravite grav_y=-sin(degtorad(gravite_dir))*gravite vit_x+=grav_x vit_y+=grav_y vitesse=sqrt(sqr(vit_x)+sqr(vit_y)) direc=point_direction(0,0,vit_x,vit_y) } if fric!=0 { vitesse-=fric if vitesse<0 { vitesse=0 fric=0 } } scale+=scale_chang // equivalent de image_scale alpha+=alpha_chang control [initialize() 0000000[if mouse_check_button(mb_left)&& !(mouse_x>40+global.x-448-30 && mouse_x<650+global.x-448-30 && mouse_y>418+global.y-432 && mouse_y<460+global.y-432) global.obj_selected=00000000m[.if nombre_debut_debug>0 nombre_debut_debug-=10000000k[nombre_debut_debug+=100000003[cif global.obj_selected!=0 { (global.obj_selected).x=mouse_x; (global.obj_selected).y=mouse_y; }0000000[if !collision_rectangle(30+global.x-448-30,416+global.y-432,440+global.x-448-30,480+global.y-432,objet,1,0) draw_selected() draw_text(global.x+64,global.y+45,string(global.step)+"/"+string(global.stepstotal)) if global.debug_mode=1 draw_debug()0000000y[Fif global.debug_mode=0 global.debug_mode=1 else global.debug_mode=00000000 draw_global [#x=global.x+sprite_width y=global.y0000000[if !collision_rectangle(x,y,x+sprite_width,y+sprite_height,objet,1,0) if mouse_x>x && mouse_xy && mouse_yx && mouse_xy && mouse_yx && mouse_xy && mouse_yx && mouse_xy && mouse_yx && mouse_xy && mouse_yx && mouse_xy && mouse_yx && mouse_xy && mouse_y 60 && time mod 8=0 step_sci(global.step-1) if time<60 && time > 30 && time mod 4=0 step_sci(global.step-1) if time<30 && time> 0 && abs(time)mod 2=0 step_sci(global.step-1) if time<0 && time> -30 step_sci(global.step-1) if time<-30 repeat(4) step_sci(global.step-1) } draw_sprite(sprite_index,image_single,x,y)0000000 fleche_dr [ time=100 0000000[&x=global.x+sprite_width y=global.y+450000000[if !collision_rectangle(x,y,x+sprite_width,y+sprite_height,objet,1,0) if mouse_x>x && mouse_xy && mouse_yx && mouse_xy && mouse_y 60 && time mod 8=0 next_step() if time<60 && time > 30 && time mod 4=0 next_step() if time<30 && time> 0 && abs(time)mod 2=0 next_step() if time<0 && time> -30 next_step() if time<-30 repeat(4) next_step() } draw_sprite(sprite_index,image_single,x,y)0000000test          XGame InformationX{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil Arial;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\f0\fs24 \par } Spritesglobal_options add_objectdefault_sprite mini_barresaveload fleche_droite fleche_gaucheSounds BackgroundsPathsScripts  initializeglobal_animation_optionsobj_add draw_selected draw_debug next_step previous_step step_gocompare step_sci step_objet Fonts Time LinesObjects controlercontroloptions draw_global object_addobjetposition_changload_objsave_obj fleche_ga fleche_drRoomstest Game Information Global Game Settings