Partage
  • Partager sur Facebook
  • Partager sur Twitter

Effet aléatoire

    11 juillet 2006 à 6:40:31

    Alors voila mon probleme:

    Vous devriez connaitre le jeu Neverwinter night (si c'est pas le cas, honte a vous :colere2: ) et dans ce jeu il est possible de créer ses propres scripts afin d'avoir un peu plus d'interactivité etc.. Bref, je veux me faire un script pour que quand le joueur tape d'une certaine façon, il y ai tel ou tel effet. Les effets etant aleatoire..

    Voici mon script:


    void main()
    {
      object ObjectSelf = OBJECT_SELF;
      object Player = GetLastKiller();

      effect Visual1 = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
      effect Visual2 = ExtraordinaryEffect(EffectVisualEffect(VFX_DUR_GLOW_RED));
      effect Visual3 = EffectVisualEffect(VFX_COM_CHUNK_RED_BALLISTA);
      effect Visual4 = EffectVisualEffect(VFX_COM_CHUNK_BONE_MEDIUM);
      effect Visual5 = EffectVisualEffect(VFX_COM_CHUNK_RED_LARGE);

      int RandomEffect = Random(1) ;


      //Apply Visual Effects to the Player
      ApplyEffectToObject(DURATION_TYPE_INSTANT, Visual1, Player);
      ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Visual2, Player, 20.0);

      //Apply Visual Effect to the ObjectSelf
      ApplyEffectToObject(DURATION_TYPE_INSTANT, Visual3, ObjectSelf);
      ApplyEffectToObject(DURATION_TYPE_INSTANT, Visual4, ObjectSelf);
      ApplyEffectToObject(DURATION_TYPE_INSTANT, Visual5, ObjectSelf);


    ///////////////////////////////////////////////////////////////////
    /// Effect - Stats
    ///////////////////////////////////////////////////////////////////

    //Abilities Increase
    if (RandomEffect == 1)
    {
      effect Effect1 = ExtraordinaryEffect(EffectAbilityIncrease(ABILITY_STRENGTH, 1));
      effect Effect2 = ExtraordinaryEffect(EffectAbilityIncrease(ABILITY_CONSTITUTION, 1));
      ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Effect1, Player, 20.0);
      ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Effect2, Player, 20.0);
    }
    }

    Vous l'aurez sans doute compris, c'est la deuxieme partie qui me pose probleme.. Là les effets sont cummulés. Je voudrais avoir soit l'effet1 soit l'effet 2.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 juillet 2006 à 10:59:50

      Utilise plutot rand() que Random (sauf si c'est une fonction définie autre part dans le script)

      Citation

      Vous l'aurez sans doute compris, c'est la deuxieme partie qui me pose probleme.


      C'est normal, tu fait if (RandomEffect ==1 ) et tu déclare les deux effets, tu devrait plutot délarer l'effet 1, non ?
      • Partager sur Facebook
      • Partager sur Twitter
        11 juillet 2006 à 22:32:52

        En fait, je vais vous avouer un truc :p J'ai pas encore réussi a dépasser le cours sur les fonctions :p Je ne dois pas avoir assez de logique, mais je n'arrives pas a assimiler le concept..

        Bref ^^

        Ce script est une création d'un scripteur pro de Nwn, mais beaucoup, beaucoup, beaucoup trop abusé.. (pour dire, j'ai supprimé 14 effets pour n'en laisser que 2 :p )

        J'ai bien compris le systeme de if..else if et else, mais je doute que ca puisse m'aider pour mon probleme actuel.

        En faisant ceci, je sais que je déclare 1 action pour 2 effets
        if (RandomEffect == 1)

        Mais j'ai peur que si je fais:
        if (RandomEffect == 1)
        {
          effect Effect1 = ExtraordinaryEffect(EffectAbilityIncrease(ABILITY_STRENGTH, 1));
          ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Effect1, Player, 20.0);
        }
        else if (RandomEffect == 2)
        {
        effect Effect2 = ExtraordinaryEffect(EffectAbilityIncrease(ABILITY_CONSTITUTION, 1));
          ApplyEffectToObject(DURATION_TYPE_TEMPORARY, Effect2, Player, 20.0);
        }

        Ca me plante le script et me fasse buguer. De plus, si ca ne me fait pas buguer, je ne vois pas quelle action pourrait déclancher la partie dans le else if {}.

        Y a t-il une commande spéciale pour avoir des effets aléatoire ou mon petit bout de code (avec le RandomEffect == 2) est-il suffisant ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          12 juillet 2006 à 9:53:51

          Je ne vois pas comment faire d'autre, et il n'y à aucune raison que ça bug ainsi.
          Si tu veux faire ça avec les 14 effets, tu remets des else if partout.
          Saurais tu quel est la valeur numérique de ABILITY_STRENGTH et de ABILITY_CONSTITUTION (va voir dans les headers). Si tu ne vois pas de quoi je parle, lis au moins le cours sur le préprocesseur
          • Partager sur Facebook
          • Partager sur Twitter
            12 juillet 2006 à 10:23:25

            ou sinon mais un switch pour RandowEffect
            c'est une simple suggestion
            • Partager sur Facebook
            • Partager sur Twitter

            Effet aléatoire

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown