Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[SCRIPT] Comment lancer aléatoirement un sort ?

Répondre
Avatar du membre
Armand
Adepte de Grondemarteau
Ours des cavernes
Messages : 1141
Enregistré le : lun. 03 déc. 2007, 22:04
Localisation : Dordogne
Statut : Hors ligne

[SCRIPT] Comment lancer aléatoirement un sort ?

.

Message par Armand »

Je tente d’améliorer un script de combat qui a présenté quelques soucis en jeu en ayant recours au script multiples. Sur ce modèle :

Code : Tout sélectionner

IF
  See(NearestEnemyOf(Myself))
  OR(2)
    HaveSpell(CLERIC_MENTAL_DOMINATION)
    HaveSpell(WIZARD_HOLD_MONSTER)
  Global("#VPeaudecorce","LOCALS",1)
  OR(2)
    Global("#VImmoMonstres","LOCALS",0)
    Global("#VImmoMonstres","LOCALS",1)
  OR(2)
    Global("#VDominMental","LOCALS",0)
    Global("#VDominMental","LOCALS",1)
  !StateCheck(LastSeenBy(Myself),STATE_HELPLESS)
THEN
  RESPONSE #100
    IncrementGlobal("#VImmoMonstres","LOCALS",1)
    Spell(NearestEnemyOf(Myself),WIZARD_HOLD_MONSTER)
  RESPONSE #100
    IncrementGlobal("#VDominMental","LOCALS",1)
    Spell(NearestEnemyOf(Myself),CLERIC_MENTAL_DOMINATION)
END

Ici je vérifie si j'ai deux sorts qui sont "domination mentale" et "immobilisation des monstres" et si j'ai un des deux je vais lancer soit l'un soit l'autre.
Ma question serait de savoir si jamais je n'ai pas l'un des sorts le bloc le concernant risque de se déclencher tout de même non ? Y aurait-il un moyen de déclencher des sorts de manière aléatoire comme ceci en empêchant les sorts non disponibles de se déclencher ?
http://toutlemondesontrolistes.blogspot ... ation.html
Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Comme Spell exige d'avoir le sort mémorisé, ton bloc a une chance sur deux de ne rien faire si le personnage n'a que l'un des deux sorts. L'usage du Or(2) sur les HaveSpell fait qu'il pourras passer les conditions et tomber aléatoirement sur le sort que le personnage n'a pas. Ce serait sans doute une action de perdue dans le combat.

A ma connaissance, il n'existe pas de solution élégante pour ce que tu veux faire. Je pense que le seul moyen est d'écrire de la façon suivante :
J'ai les deux sorts : je choisis aléatoirement
J'ai le sort 1 : je le lance
J'ai le sort 2 : je le lance
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
Armand
Adepte de Grondemarteau
Ours des cavernes
Messages : 1141
Enregistré le : lun. 03 déc. 2007, 22:04
Localisation : Dordogne
Statut : Hors ligne
.

Message par Armand »

Comme Spell exige d'avoir le sort mémorisé, ton bloc a une chance sur deux de ne rien faire si le personnage n'a que l'un des deux sorts. L'usage du Or(2) sur les HaveSpell fait qu'il pourras passer les conditions et tomber aléatoirement sur le sort que le personnage n'a pas. Ce serait sans doute une action de perdue dans le combat.
Oui c'est bien ce que je craignais malheureusement le moteur n'est pes assez intelligent pour skipper un sort qui n'existe pas.

A ma connaissance, il n'existe pas de solution élégante pour ce que tu veux faire. Je pense que le seul moyen est d'écrire de la façon suivante :
J'ai les deux sorts : je choisis aléatoirement
J'ai le sort 1 : je le lance
J'ai le sort 2 : je le lance
Oui la solution est pas conne en dupliquant plusieurs scripts sur ce modèle on arrive à des résultats intéressants. Ce n'est pas la solution la plus légère oui mais ça fonctionne.
http://toutlemondesontrolistes.blogspot ... ation.html
Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Si tu veux être sur de ne lancer qu’un seul des deux sorts, pourquoi ne pas faire ceci :

Si valeur =0
Si j'ai le sort A
Si je vois l'ennemi
=
Lancer sort A
Mettre valeur à 1

Si valeur =0
Si j'ai le sort B
Si je vois l'ennemi
=
Lancer sort B
Mettre valeur à 1

où la valeur est unique et correspond à ce sort (tu peut en rajouter une autre pour un autre usage).

Comme ça rien n'est lancé si aucun des sorts n'est mémorisé, et seulement le A si les deux sont mémorisés. Sinon seulement celui qui est mémorisé.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
Armand
Adepte de Grondemarteau
Ours des cavernes
Messages : 1141
Enregistré le : lun. 03 déc. 2007, 22:04
Localisation : Dordogne
Statut : Hors ligne
.

Message par Armand »

Oui j'ai plus ou moins suivi ce modéle en adaptant un peu les indications d'isaya. Comme je l'ai dit plus haut ça a tendance à multiplier les blocs mais c'est efficace.
http://toutlemondesontrolistes.blogspot ... ation.html
Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe
Avatar du membre
deratiseur
Golem de fer
Messages : 3698
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Armand a écrit :Oui j'ai plus ou moins suivi ce modéle en adaptant un peu les indications d'isaya. Comme je l'ai dit plus haut ça a tendance à multiplier les blocs mais c'est efficace.
Note : au script type que je t'ai indiqué, tu peux rajouter un troisième bloc :
Si valeur est à 1
Si j'ai le sort B
Si monstre n'est pas sous l’effet du sort A
=
lancer le sort B
Mettre la valeur à 2

Ainsi, si il a les 2 sorts, il lance le A, et si l'ennemi y résiste, il lance le B

note : il faut rajouter un petit "wait" après le lancement de A dans le premier bloc du script que j'ai proposé pour que l'effet du sort s'applique avant la vérification par le 3eme bloc.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité