Code: |
// scriptcond. nss
/* variable iPierre int représente le n° de pierre*/ int StartingConditional (int iPierre) { /* prend l'objet "pierre" +"1","2", ou "3" selon la valeur de iPierre*/ object oPierre = GetItemPossessedBy (GetPCSpeaker(), "pierre"+IntToString (iPierre)); /* retourne TRUE si oPierre est dans l'inventaire du joueur*/ return GetIsObjectValid (oPierre); } |
Code: |
// scriptportail.nss
void main (int iDest) { object oPC = GetPCSpeaker (); /* va falloir que tu choppes le resref de l'effet placé et que tu le mettes ici. Tu le trouve dans les propriétés de l'effet placé*/ string sResref = ""; /* création de l'effet placé, et destruction dans 10 secondes)*/ object oEffect = CreateObject (OBJECT_TYPE_PLACED_EFFECT, sResref, GetLocation (OBJECT_SELF)); DelayCommand (10.0f, DestroyObject (oEffect)); /* téléportation du pj au WP de destination après 2 secondes ... 2 secondes car faut bien que le joueurs puisse voir l'effet du portail, sinon ça sert à rien :p*/ object oDest = GetWaypointByTag ("WP"+IntToString (iDest)); DelayCommand (2.0f, AssignCommand (oPC, JumpToObject (oDest))); } |
Code: |
// scriptcond2. nss
/* variable iPierre int représente le n° de pierre*/ int StartingConditional (int iPierre) { /* nouveau test aléatoire 50 % de chance un chiffre aléatoire entre 0 et 99 doit être inférieur à 50) donc s'il est supérieur, je renvoie FALSE */ if (Random(100) > 50) return FALSE; else { /* prend l'objet "pierre" +"1","2", ou "3" selon la valeur de iPierre*/ object oPierre = GetItemPossessedBy (GetPCSpeaker(), "pierre"+IntToString (iPierre)); /* retourne TRUE si oPierre est dans l'inventaire du joueur*/ return GetIsObjectValid (oPierre); } } |
Code: |
// scriptcond2. nss
/* variable iPierre int représente le n° de pierre*/ int StartingConditional (int iPierre, int iPourcentage) { /* nouveau test aléatoire iPourcentage % de chance */ if (Random(100) > iPourcentage) return FALSE; else { /* prend l'objet "pierre" +"1","2", ou "3" selon la valeur de iPierre*/ object oPierre = GetItemPossessedBy (GetPCSpeaker(), "pierre"+IntToString (iPierre)); /* retourne TRUE si oPierre est dans l'inventaire du joueur*/ return GetIsObjectValid (oPierre); } } |
Code: |
void main (int iDest)
{ // (...) /* en gros ici le script a 50 % de chance d'avoir une destination aléatoire, entre les 3 WP l'aléa est choisi avec IntToString (Random (3)+1) qui choisi une bout de string (ne nous méprenons pas sur ce terme hautement technique) entre 0 et 2, auquel on rajoutera 1 (donc au final entre 1 et 3) */ object oDest = GetWaypointByTag ("WP"+IntToString (iDest)); //// rajout if (Random(100) < 50) oDest = GetWaypointByTag ("WP"+IntToString (Random (3)+1)); //// DelayCommand (2.0f, AssignCommand (oPC, JumpToObject (oDest))); } |
Code: |
object oSound = GetObjectByTag (GetTag(OBJECT_SELF) + "sound");
SoundObjectPlay (oSound); |
Code: |
object oPierre;
// si la destination est le 5eme portail, c'est la pierre n°3 if (iDest == 5) oPierre = GetItemPossessedBy (GetItemPossessedBy (GetPCSpeaker(), "pierre3"); // si la destination est le 4eme portail, c'est la pierre n°2 else if (iDest == 4) oPierre = GetItemPossessedBy (GetItemPossessedBy (GetPCSpeaker(), "pierre2"); // sinon c'est la pierre n°1 else oPierre = GetItemPossessedBy (GetItemPossessedBy (GetPCSpeaker(), "pierre1"); // on prend les charges de la pierre int iCharges = GetItemCharges (oPierre); // on décrémente le nombre de charges iCharges --; // si plus de charge, on détruit la pierre if (iCharges == 0) DestroyObject (oPierre); // sinon on enregistre le nombre de charges restantes else SetItemCharges (oPierre, iCharges); |