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 remplacer une créature d'une carte par une autre ?

Répondre
Nysi
Ours noir
Messages : 191
Enregistré le : mer. 29 oct. 2003, 14:20
Localisation : Valenciennes
Contact :
Statut : Hors ligne

[SCRIPT] Comment remplacer une créature d'une carte par une autre ?

.

Message par Nysi »

:) Bon je suis de retour et j'ai un petit probleme.

Le fichier .cre du madulf d'origine dans l'override s'appelle UHOGRE1

Mon fichier .tp2 fait:

COPY ~Override\UHOGRE1.cre~ ~Madulf\Backup\UHOGRE1.cre~
COPY ~Madulf\Madulf.cre~ ~Override\UHOGRE1.cre

Madulf.cre est le perso qui doit être recruté.

Pourtant apres avoir utilisé le setup (pas d'erreur) je retrouve le Madulf d'origine dans les collines d'Umar.

Quelqu'un pourrait m'expliquer mon erreur?
Venez visiter mon site http://membres.lycos.fr/nysi/
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 »

Les personnages qui ne sont pas créés par un script mais qui sont directement présents dans le fichier ARE (c'est probablement le cas de Madulf car il est présent dès le début des quêtes à Umar) sont mémorisés dans ton fichier de sauvegarde. Assure-toi donc de reprendre une partie dans laquelle tu n'es jamais allé dans les collines d'Umar. Sinon c'est trop tard.
:!: 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 !
Silk
Statut : Hors ligne
.

Message par Silk »

Et ce sera trop tard dans le mod aussi, je présume :)
Nysi
Ours noir
Messages : 191
Enregistré le : mer. 29 oct. 2003, 14:20
Localisation : Valenciennes
Contact :
Statut : Hors ligne
.

Message par Nysi »

Ok merci j'ai compri donc la seule solution est de faire comme weimer avec Solaufein: créer un nouveau madulf et supprimé l'ancien de la zone des collines d'Umar.
Comme Madulf rejoint apres avoir conclu le pacte avec le village, le supprimé ne pose pas de probleme mais par contre je ne sais pas comment on fait.
Venez visiter mon site http://membres.lycos.fr/nysi/
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 »

Originally posted by Nysi@samedi 29 novembre 2003, 01:33
Ok merci j'ai compri donc la seule solution est de faire comme weimer avec Solaufein: créer un nouveau madulf et supprimé l'ancien de la zone des collines d'Umar.
Peut-être trouveras-tu une solution en regardant comment Weimer a fait, tout simplement ?
:!: 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
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Grenouillebleue »

J'avais eu le même problème avec la prêtresse d'Umberlee à Brynnlaw.

Ma solution, qui vaut ce qu'elle vaut, c'est:

1. Tu crées un fichier script que tu nommes madulfswap:

Code : Tout sélectionner

IF
  G("MADULFSWAP",0)
THEN
  RESPONSE #100
    DestroySelf()
    SG("MADULFSWAP",1)
END
2. Tu crées un fichier script que tu nommes madulfswaparea:

Code : Tout sélectionner

IF
  G("MADULFSWAP",1)
THEN
  RESPONSE #100
    CreateCreature("Madulf2",X,Y,Z)
    SG("MADULFSWAP",2)
END
3. Dans ton TP2, tu rajoutes:

Code : Tout sélectionner

EXTEND_TOP ~MADULF.bcs~ ~TONNPC\MADULFSWAP.bcs~

EXTEND_BOTTOM ~(chiffre de la zone).bcs~ ~TONNPC\MADULFSWAPAREA.bcs~
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Nysi
Ours noir
Messages : 191
Enregistré le : mer. 29 oct. 2003, 14:20
Localisation : Valenciennes
Contact :
Statut : Hors ligne
.

Message par Nysi »

Merci grenouille :)
Si tu pourrait preciser quelque detail s'il te plait ça m'aiderai beaucoup.

dans le Madulfswaparea.bcs, doit je mettre les coordonnées de Madulf a la place des X,Y,Z (j'ai le X et le Y mais alors Z dans un jeu en 2D je pige pas ...)

Une fois que mes script sont fait, que doit je en faire? comment faire pour les declencher?

Et pourrait tu m'expliquer a quoi serve les "response #100" et la variable "Madulfswap"

merci d'avance.
Venez visiter mon site http://membres.lycos.fr/nysi/
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 »

Dans CreateCreature(), le Z indique l'orientation du personnage. La valeur va de 1 à 8 il me semble.

Ce qu'a écrit Grenouille à propos du "TP2" concerne l'installation d'un mod avec WeiDU. Les lignes qu'il a indiquées provoquent l'ajout des bouts de scripts que tu as créés dans ceux du jeu (MADULF.BCS et ARxxxx.BCS, ARxxxx représentant la zone d'Umar). Tant que tu es en phase de création, le plus simple est peut-être de prendre un éditeur de script et d'ajouter les morceaux de scripts directement.

"RESPONSE 100" est un codage indiquant le poids relatif des différentes possibilités quant tu en indiques plusieurs. La valeur indique le poids. Par exemple :

Code : Tout sélectionner

IF
  CONDITION
THEN
  RESPONSE #70
    Action1()
  RESPONSE #30
    Action2()
END
signifie qu'il y a 70% de chances que l'action 1 soit effectuée et 30% que ce soit la 2. La somme des valeurs n'est pas nécessairement également à 100. Le poids effectif de chaque branche est déterminé de façon relative.
En général, RESPONSE 100 est utilisé quand il n'y a qu'une seule possibilité auquel cas, elle a 100% de chances.

La variable SWAP est utile pour s'assurer que la création ne s'effectue qu'une seule fois. Les 3 états sont nécessaires car les actions de destruction et de création s'effectuent dans des scripts différents.
:!: 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
Grenouillebleue
Loup effrayant
Messages : 723
Enregistré le : sam. 27 sept. 2003, 22:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Grenouillebleue »

En fait, je viens de réfléchir, et il y a beaucoup plus simple.
Oublie complètement mon histoire d'area, tu n'auras à modifier qu'un seul script, celui de madulf (MADULF.BCS).

Code : Tout sélectionner

IF
  G("MADULFSWAP",0)
THEN
  RESPONSE #100
    CreateCreature("Madulf2",[-1.-1],0)
    SG("MADULFSWAP",1)
    DestroySelf()
END

Pour expliquer clairement ce script, morceau par morceau :

Code : Tout sélectionner

IF
  G("MADULFSWAP",0)
Si la variable Madulfswap est égale à 0...

Code : Tout sélectionner

THEN
  RESPONSE #100
...alors, il y a 100% de chances qu'il se passe les choses suivantes:

Code : Tout sélectionner

    CreateCreature("Madulf2",[-1.-1],0)
1. La créature nommée Madulf2 sera créée juste à côté du Madulf original (lorsque tu mets [-1.-1] comme paramètre, ça crée la créature à côté du personnage qui joue le script).

Code : Tout sélectionner

    SG("MADULFSWAP",1)
2. La variable MADULFSWAP devient égale à 1, pour éviter que le script soit ré effectué par erreur.

Code : Tout sélectionner

    DestroySelf()
3. Le madulf originel disparaît, ce qui laisse donc Madulf2 tout seul

Et voilà !
MOD KIM TERMINE
- Des centaines de dialogues et d'interactions
- De nombreuses quêtes
- De nouveaux objets magiques
- Une véritable romance

Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
Intro 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Nysi
Ours noir
Messages : 191
Enregistré le : mer. 29 oct. 2003, 14:20
Localisation : Valenciennes
Contact :
Statut : Hors ligne
.

Message par Nysi »

Merci a vous deux :oops: , le script fonctionne mais j'ai un nouveau probleme, le nouveau pnj ne parle pas (Le jeu indique qu'il n'a rien a me dire).

J'ai pourtant créer un fichier .D et je lui est assigné avec creaturemaker.

Est ce qu'il faut aussi assigné d'autre script a mon pnj pour qu'il puisse repondre?

Avec le script des persos créer en multi ça fonctionne mais Madulf vient direct sur le Pj pour rejoindre le groupe.
Venez visiter mon site http://membres.lycos.fr/nysi/
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 »

Un dialogue se construit en précisant la condition (ça peut être un ensemble de conditions) dans laquelle le bout de dialogue apparaîtra. Lorsque tu veux parler à quelqu'un, le jeu cherche la première condition vérifié et utilise ce dialogue. Si ton personnage n'a rien à dire, c'est qu'aucune condition n'est vérifiée.
Pour un premier dialogue, un classique de condition est : NumTimesTalkedTo() = 0 (à vérifier, je ne suis plus sûr de l'écriture exacte).
Vérifie parmi les questions posées il y a environ 2 mois par Grenouille, il a été confronté au même problème si ma mémoire est bonne.
:!: 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 !
Nysi
Ours noir
Messages : 191
Enregistré le : mer. 29 oct. 2003, 14:20
Localisation : Valenciennes
Contact :
Statut : Hors ligne
.

Message par Nysi »

Ok merci Iasya ça marche maintenant.
Venez visiter mon site http://membres.lycos.fr/nysi/
Avatar du membre
Walar
Blême
Messages : 979
Enregistré le : jeu. 24 avr. 2003, 20:39
Contact :
Statut : Hors ligne
.

Message par Walar »

Comment effacer un personnage qui a un script général ou n'en a pas...

Pour compléter un peu le sujet de comment effacer un personnage, je voulais récemment enlever deux roturiers dans une maison du district du pont. Le problème est que l'on ne peut pas simplement faire un nouveau script et le rajouter à celui qu'ils ont actuellement car tous les roturiers ont le même (en fait ils en ont même 3 de scripts... :..: )...

Donc si je mettais "DestroySelf()", tous les roturiers du jeu y seraient passés... :omg:

Alors, j'ai tout d'abord créé un nouveau script, que je nommerais V#BRAT1 par exemple (c'est un fichier .baf contenant) : (petite précision le PNJ que je voulais éliminer se nommait "BRAT1").

Code : Tout sélectionner

IF
  Global("V#BRAT1","GLOBAL",0)
  !Dead("BRAT1")
THEN
  RESPONSE #100
    SetGlobal("V#BRAT1","GLOBAL",1)
    DestroySelf()
END
Jusque ici c'est relativement simple. Ensuite pour allouer le script au PNJ il faut utiliser la commande WeiDU : WRITE_ASCII

Voilà ce que donne ce passage dans mon fichier .tp2 :

Code : Tout sélectionner

COMPILE ~WALAANPC\V#BRAT1.baf~
COPY_EXISTING ~BRAT1.cre~ ~override\BRAT1.cre~
  WRITE_ASCII ~0x250~ ~V#BRAT1~
  WRITE_BYTE 0x257 0x00
(Ça peut sembler barbare au premier abord mais je vais tâcher d'expliquer)

Code : Tout sélectionner

COMPILE ~WALAANPC\V#BRAT1.baf~
Pas trop de problème sur ce point la, cela sert juste à compiler le script dans le jeu.

Code : Tout sélectionner

COPY_EXISTING ~BRAT1.cre~ ~override\BRAT1.cre~
Pour pouvoir effectuer la modification sur le fichier, il faut que l'original soit dans le dossier override. Cette commande relativement facile à comprendre le permet.

Code : Tout sélectionner

  WRITE_ASCII ~0x250~ ~V#BRAT1~
Là ça se complique un petit peu. WRITE_ASCII va permettre de modifier certaines données du fichier .cre dans ce cas. le 0x250 indique l'endroit du fichier où je veux que la modification soit effectuée. Et ensuite vous reconnaissez le nom du nouveau script à ajouter.

Code : Tout sélectionner

  WRITE_BYTE 0x257 0x00
On pourrait penser que la procédure s'arrête à la phase précédente mais un méchant problème fait que WeiDU rajoute un "caractère" à la fin de la ligne de script modifiée dans le fichier .cre Donc pour éviter cela il faut soit :
1) Utiliser un éditeur hexadécimal pour rajouter un 0 à la fin de V#BRAT1 (directement)
2) Soit utiliser cette commande qui le rajoute par l'intermédiaire de WeiDU et donc élimine le caractère parasite.
Le 0x257 est l'endroit où cela doit être ajouté (à la fin de V#BRAT1) qui fait 7 lettres.

Et voilà, lorsque vous entrez dans la map concernée, le bonhomme disparait.

Ayant débuter relativement récemment l'editing (2-3 semaines), il y a peut-être une méthode plus simple et c'est peut-être confus. Enfin ça marche. N'hésitez pas à poster en cas de besoin de précisions supplémentaires.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Walar a écrit :

Code : Tout sélectionner

  WRITE_ASCII ~0x250~ ~V#BRAT1~
Là ça se complique un petit peu. WRITE_ASCII va permettre de modifier certaines données du fichier .cre dans ce cas. le 0x250 indique l'endroit du fichier où je veux que la modification soit effectuée. Et ensuite vous reconnaissez le nom du nouveau script à ajouter.

Code : Tout sélectionner

  WRITE_BYTE 0x257 0x00
On pourrait penser que la procédure s'arrête à la phase précédente mais un méchant problème fait que WeiDU rajoute un "caractère" à la fin de la ligne de script modifiée dans le fichier .cre Donc pour éviter cela il faut soit :
1) Utiliser un éditeur hexadécimal pour rajouter un 0 à la fin de V#BRAT1 (directement)
2) Soit utiliser cette commande qui le rajoute par l'intermédiaire de WeiDU et donc élimine le caractère parasite.
Le 0x257 est l'endroit où cela doit être ajouté (à la fin de V#BRAT1) qui fait 7 lettres.
Inutile, WeiDU fait tout ceci tout seul, comme un grand :

Code : Tout sélectionner

  WRITE_ASCII ~0x250~ ~V#BRAT1~ [color=yellow]#8[/color]
#8 permet à WeiDU de savoir qu'il écrit une chaîne devant comporter au maximum 8 caractères. Il comble donc les "blancs" si la variable fait moins de 8 caractères.

Sinon, la fonction Weidu ALTER_AREA_ACTOR le fait très bien ! ;)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Répondre

Retourner vers « Scripts »

Qui est en ligne

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