Page 1 sur 1

[MUS] Comment ajouter une musique de combat ?

Posté : ven. 23 nov. 2018, 16:41
par DrAzTiK
re re

je vais coder un dernier combat de type "boucherie" en attendant que la dernière version de SCS II soit plus stable.
Donc mon combat prends place dans la map AR0414, c'est à l’extérieur de la sphère planétaire, quand on doit récupérer le coeur d'un démon.

Le truc c'est qu'il n'y a pas de musique de combats dans cette zone et je voudrais en mettre une.

De même dans la map AR 2600 et AR0204 aussi..

Voilà j'espère que c'est pas un truc trop chiant à coder. Sinon je peux éditer avec near infinity mais c'est dommage et bizarre qu'il n'y ait pas de musiques de combats dans ces zones.

Posté : ven. 23 nov. 2018, 17:33
par Freddy_Gwendo
Faut que je recherche dans mes codes, mais je dois avoir ça quelque part. Quelle musique veux-tu ajouter pour que je fasse un test avec les versions EE une fois que je l'aurai retrouvé. Je pense qu'il doit être compatible EE puisque le format des fichiers ARE n'a pas été modifié (seuls quelques flags ont été ajoutés), mais je préfère être certain du code avant de te le passer.

Posté : sam. 24 nov. 2018, 21:26
par DrAzTiK
Re Freddy

J'aimerai bien avoir la musique BD2.MUS (BD2)-49 pour les maps Ar0414, AR 2600 et AR0204 stp.

Tiens j'en parlerai peut être sur le forum de tweak anthology au passage.

Posté : sam. 24 nov. 2018, 23:32
par Freddy_Gwendo
OK. Je regarde ça demain.

Posté : dim. 25 nov. 2018, 02:18
par Freddy_Gwendo
Bon, puisque j'ai terminé plus vite que prévu ce que j'avais à faire, je me suis penché sur ton affaire et ça a été plutôt simple.

En principe, j'utilise une macro qui me permet de lire tous les champs d'une carte en une seule fois, mais pour ton cas, ce n'est pas la peine. Voici le code :

Code : Tout sélectionner

COPY_EXISTING ~SONGLIST.2DA~ ~override~

  COUNT_2DA_COLS cols
  READ_2DA_ENTRIES_NOW listsongs cols
  SET battle_song_BD2 = "-1"

  FOR (row = 1 ; row < listsongs ; ++row) BEGIN
 
    PATCH_IF (battle_song_BD2 = "-1") BEGIN

      READ_2DA_ENTRY_FORMER listsongs row 0 ~number~
      READ_2DA_ENTRY_FORMER listsongs row 1 ~name~

      PATCH_IF (~%name%~ STRING_EQUAL_CASE ~BD2~) BEGIN
        SET battle_song_BD2 = %number%
      END

    END

  END
BUT_ONLY


ACTION_FOR_EACH area IN AR0204 AR0414 AR2600 BEGIN

  COPY_EXISTING ~%area%.are~ ~override~

    READ_LONG 0x0bc "song_offset"
    READ_LONG (song_offset + 12) "battle_song"

      PATCH_IF (battle_song != %battle_song_BD2%) BEGIN
        WRITE_LONG (song_offset + 12) %battle_song_BD2%
      END

  BUT_ONLY

END
La première partie du code va chercher le numéro de la musique dans le fichier SONGLIST.2DA. Je le fais systématiquement au cas où un moddeur aurait modifié le fichier, mais tu peux t'en passer. Si tu ne souhaites pas l'utiliser, le code suivant devrait suffire.

Code : Tout sélectionner

ACTION_FOR_EACH area IN AR0204 AR0414 AR2600 BEGIN

  COPY_EXISTING ~%area%.are~ ~override~

    READ_LONG 0x0bc "song_offset"
    READ_LONG (song_offset + 12) "battle_song"

    PATCH_IF (battle_song != 49) BEGIN
      WRITE_LONG (song_offset + 12) 49
    END

  BUT_ONLY
END
Je n'ai testé le code que dans NI : le thème musical est bien ajouté. Mais pas dans le jeu : à toi de vérifier si ça fonctionne. N'oublie pas que ces modifications ne seront pas prises en compte si tu as déjà visité ces cartes. ;)

Posté : dim. 25 nov. 2018, 10:48
par DrAzTiK
merçi Freddy, Je vais tester ça ;)

edit: le code fonctionne à merveille

Posté : jeu. 06 déc. 2018, 17:52
par Freddy_Gwendo
Discussion marquée comme résolue et déplacée dans la bonne section.