[SCRIPT] Comment coder l'arrrivée de renforts pendant un combat ?

Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SCRIPT] Comment coder l'arrrivée de renforts pendant un combat ?

.

Message par Cocrane »

Charname va avoir un combat difficile. Si il n'a pas fuit la scène de combat, des renforts arriveront au bout d'un moment.

Comment gérer la notion de temps ?
Comment savoir qu'il n'a pas fuit le combat ?

À l'arrivée, des renforts est-il possible de déclencher un dialogue alors qu'il y a un combat ?

Cocrane
Kev
Tasloï
Messages : 79
Enregistré le : mer. 19 févr. 2014, 13:57
Statut : Hors ligne
.

Message par Kev »

Pour ce qui est du temps, ça dépend de toi, si tu veux par exemple que les renforts débarquent 5 tours après le début du combat, tu écris dans ton/tes scripts de personnages lié au début du combat :

Code : Tout sélectionner

IF
  !GlobalTimerNotExpired("NomVariable","GLOBAL")
THEN
  RESPONSE #100
    SetGlobalTimer("NomVariable","GLOBAL",FIVE_TURNS)
END 
Ou tu peux compter en secondes, genre 3 minutes après le début du combat.

Code : Tout sélectionner

SetGlobalTimer("NomVariable","GLOBAL",180)
Pour ce qui est de la fuite, tu peux ajouter une condition de distance de détection dans un autre script lié à l'expiration du timer et au spawn des renforts :

Code : Tout sélectionner

IF
  Global("RenfortArriver","GLOBAL",0)
  Detect([PC])
  Range(LastSeenBy(Myself),10)
  GlobalTimerExpired("NomVariable","GLOBAL")
THEN
  RESPONSE #100
    SetGlobal("RenfortArriver","GLOBAL",1)
    CreateCreature("NomCreature",[1760.991],6)
//  ect...
END
Pour le dialogue pendant le combat, il te suffit d'écrire un script pour le personnage que tu veux faire parler sans aucune conditions qui pourraient empêcher le dialogue :

Code : Tout sélectionner

IF
  Detect([PC])
  Range(LastSeenBy(Myself),10)
  Global("RenfortArriver","GLOBAL",1)
THEN
  RESPONSE #100
    SetGlobal("RenfortArriver","GLOBAL",2)
    StartDialogueNoSet(LastSeenBy(Myself))
END
Donc sans aucune condition du style :

Code : Tout sélectionner

  !StateCheck(Player1,CD_STATE_NOTVALID)
  CombatCounter(0)
  !See([ENEMY])
J'espère avoir été clair, vu que j'ai pas d'exemple précis de ce que tu veux faire sous la main, j'ai un peu improvisé.
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci Kev pour ce retour détaillé qui va m'aider à réaliser ce script.

Une question de débutant.

Je vois souvant des "REPONSE #100".
La valeur du # est importante?
Avatar du membre
Haplo74
Minotaure
Messages : 1737
Enregistré le : dim. 08 avr. 2012, 20:20
Localisation : Paris
Statut : Hors ligne
.

Message par Haplo74 »

Cocrane a écrit :Merci Kev pour ce retour détaillé qui va m'aider à réaliser ce script.

Une question de débutant.

Je vois souvant des "REPONSE #100".
La valeur du # est importante?
Arf ! J'ai déjà eu ce genre de discussion avec Freddy_Gwendo.
Dans ce sujet de DrAzTiK: http://www.baldursgateworld.fr/lacouron ... ature.html
Et plus précisément à partir de ce [POST=330982]message[/POST].

Haplo74
Modérateur des sections "le bazar de l'aventurier", "la taverne de Château-Suif", "la taverne d'Amkethran" et "le comptoir d'Amn".
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci Haplo. ^^
Répondre

Retourner vers « Scripts »

Qui est en ligne

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