Index de l'article

 

Exemple de script

 

Remarque : les noms de fonctions sont dans cet exemple en majuscules, cependant il est possible de les écrire sous toutes les formes (minuscules, ou mélange de majuscules et de minuscules). Seules les instructions if, then, else, endif doivent être en minuscule impérativement.

 

#Création et animation d'un hélico :

#############################################
### Init les données de départ du script

#On crée l'helico :
{
  IA(HELICO;3000;210;1;1,4;1,4;100;1;2)
  setIDIA(HELICO1)
  OMBREIA(1;0;1 250;0,8;0,5;2500)
  IA_VISIBLE(1)
  IADESTROYONRELOAD(HELICO1;1)
  PLAYSON(HELICO;2)    #son des pales
 
  bDommages=0
  vieMax=getIaLifeMax(HELICO1)
  vieDommages=vieMax/2
  timerTir=0
}

#On fait avancer l'hélico:
{
  KP_INIT(1)
  KPG(2;10;0,50;0,50;20;0;-1)
  KP(3000;100;1,4;1,4;-10;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1350;210;1,4;1,4;-10;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1289;210;1,4;1,4;-25;255;255;255;255;0;0;-1;-1;-1;-1)
}

#On bloque le script tant que l'hélico n'est pas arrivé à destination:
ATTENDRE_FIN_ANIMKP()

#Helico en surplace une fois arrivé:
{
  KP_INIT(1)
  KPG(2;4;0,50;0,50;40;0;-1)
  KP(1 300;210;1,4;1,4;-30;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1 100;338;1,4;1,4;-35;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1 400;450;1,4;1,4;-30;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1 500;250;1,4;1,4;-35;255;255;255;255;0;0;-1;-1;-1;-1)
}

#############################################
### Boucle principale du script
:GESTION

bVisible=isIaVisible(HELICO1)
if (bVisible=1)
    #visible : gestion des dégats sur l'helico
    vie=getIaLife(HELICO1)
    if (vie<=0)
         #mort !
         GOTO(MORT)
    else
          if (bDommages=0)        
               if (vie<vieDommages) then GOTO(DOMMAGES)
          else
                 #helico endommagé=> les pâles font un bruit avec pause:
                PLAYSON(HELICO;1)    #son des pales avec ratés
          endif
    endif
    
    #Gestion du tir: l'helico tire à intervalle régulier sans chercher à viser Mars
    if (timerTir>=2)
          timerTir=0   
          IA_TIRER(HELICO1)
    else
          timerTir=timerTir+1
    endif
else
    #pas visible => on stoppe le script
    GOTO(FINSCRIPT)    
endif

GOTO(GESTION)

#############################################
:DOMMAGES
{
  INITIADEF(HELICO1)
  ADD_OVER(OVER_HELICO_FUMEE;FUMEE_FEU;HELICO1;;0;-110;1;1;15;1;-1)
  bDommages=1
}

#On rallie un point commun :
{
  KPG(2;6;0,50;0,50;40;0;-1)
  KP(1 300;200;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
}

#On bloque le script tant que l'hélico n'est pas arrivé à destination:
ATTENDRE_FIN_ANIMKP()

#Helico en surplace :
{
  KP_INIT(1)
  KPG(2;6;0,50;0,50;40;0;-1)
  KP(1 300;200;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1 300;700;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
}
GOTO(GESTION)

#############################################
:MORT
{
  INITIADEF(HELICO1)
  PLAYSON(EXPLOSION)
  ADD_OVER(OVER_HELICO_FUMEE2;FUMEE_FEU;HELICO1;;-80;-110;2,5;1,4;15;1;-1)
  ADD_OVER(OVER_HELICO_FUMEE3;FUMEE_FEU;HELICO1;;30;-150;1,4;1,1;15;1;-1)
}

#On rallie un point commun :
{
  KPG(2;6;0,50;0,50;40;0;-1)
  KP(1 300;100;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
}

#On bloque le script tant que l'hélico n'est pas arrivé à destination:
ATTENDRE_FIN_ANIMKP()

#Coupe le son des pales:
PLAYSON(HELICO;-1)

#Helico en surplace :
{
  KP_INIT(1)
  KPG(2;50;0,50;0,50;40;0;1)
  KP(1 300;100;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
  KP(1 300;930;1,4;1,4;-15;255;255;255;255;0;0;-1;-1;-1;-1)
}

#On bloque le script tant que l'hélico n'est pas arrivé à destination:
ATTENDRE_FIN_ANIMKP()

#Ok, l'helico est au sol : il explose en laissant la carcasse visible !
EXPLOSION("HELICO1";"")

#Animation de mort :
IAANIM(HELICO1;1)

#Coupe toute animation:
KP_INIT(0)

#Le script est terminé, on peut le quitter
GOTO(FINSCRIPT)

##############################
:FINSCRIPT