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)
Pas trop de problème sur ce point la, cela sert juste à compiler le script dans le jeu.
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.
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.
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.