Można bardzo łatwo dodać nową muzykę. Wystarczy otworzyć module_music.py i dodać nowe pliki zgodnie z wzorcem:
# 1) Track id: used for referencing tracks.
# 2) Track file: filename of the track
# 3) Track flags. See header_music.py for a list of available flags
# 4) Continue Track flags: Shows in which situations or cultures the track can continue playing. See header_music.py for a list of available flags
Czyli pierwszym elementem ma być unikalna nazwa utworu, którą można użyć w innych częściach moda aby ręcznie odtworzyć zadany utwór.
Drugim elementem jest nazwa pliku, identyczna z umieszczoną w folderze music. Ważne jest żeby zgadzały się rozszerzenia.
Kolejnym elementem są flagi, czyli najważniejszy element. Silnik gry używa ich żeby dostosować odtwarzaną muzykę do sytuacji. W danej sytuacji wybierane do odtworzenia mogą zostać tylko utwory posiadające przyporządkowane do nich flagi. Poszczególne flagi oddzielane są znakiem "|" i można je dowolnie łaczyć. Spis wszystkich możliwości znajduje się w header_music.py.
Na samym końcu znajdują się flagi kontynuacji, sytuacja w grze może ulec zmianie, przykładowo gracz wychodząc z miasta zmieni stan z mtf_sit_town na mtf_sit_travel. Jeżeli aktualnie odtwarzany utwór posiada flagę kontynuacji mtf_sit_travel będzie on kontynuowany. W przeciwnym wypadku zostanie wyciszony i wylosowany zostanie nowy, pasujący utwór.
Przykłądy paru ścieżek z native:
("travel_khergit", "travel_khergit.mp3", mtf_culture_3|mtf_sit_travel, mtf_sit_town|mtf_sit_tavern|mtf_sit_night|mtf_culture_all),
Muzyka odtwarzać się będzie tylko i wyłącznie w sytuacji powiązanej z kulturą 3, czyli khergidzką. Jak zacznie się odtwarzać nie zostanie przerwana dopóki gracz będzie w sytuacji początkowej, w mieście, tawernie lub podczas nocy. Ostatnia flaga pokazuje że gdy zmieni się kultura powaiżana z sytuacją, gdy przykładowo wejdziemy do swadiańskiego miasta utwór nie zostanie przerwany. Jednak gdy zaczniemy przykładowo walczyć(mtf_sit_fight) to wylosowany zostanie nowy utwór.
("travel_neutral", "travel_neutral.mp3", mtf_sit_travel, mtf_sit_town|mtf_sit_tavern|mtf_sit_night),
Sytuacja jest podobna, z tym że nie ma już wymogów co do konkretnej kultury.
("fight_as_rhodok", "fight_as_rhodok.mp3", mtf_culture_5|mtf_sit_fight|mtf_sit_multiplayer_fight|mtf_sit_ambushed, mtf_culture_all),
Ta muzyka zacznie się odtwarzać dla kultury piątej podczas walki, walki w multiplayerze lub podczas zasadzki. Kontynuowana będzie gdy stan nie ulegnie zmianie(będzie dalej mtf_sit_fight lub mtf_sit_multiplayer_fight lub mtf_sit_ambushed) ale nie ulegnie zmianie podczas zmiany kultury. Akurat w tym wypadku ciężko mi wyobrazić sobie taką sytuacje ale przezorny zawsze ubezpieczony.
To powinieneś napisać w pierwszym poście żebym się nie produkował bez powodu... A co do tego to nic straconego. Wszystko możesz odtworzyć, tylko musisz doczytać o systemach liczbowych i operacjach bitowych.
Następnie musisz otworzyć music.txt i zedytować te dwie liczby przy poszczególnych utworach.
W spoilerze masz header_music i na ich podstawie musisz odtworzyć zadane liczby.
mtf_culture_1 = 0x00000001
mtf_culture_2 = 0x00000002
mtf_culture_3 = 0x00000004
mtf_culture_4 = 0x00000008
mtf_culture_5 = 0x00000010
mtf_culture_6 = 0x00000020
mtf_culture_all = 0x0000003F
##mtf_sit_map_travel = 0x00000001
##mtf_sit_attack = 0x00000002
##mtf_sit_defense = 0x00000004
##mtf_sit_raid_attack = 0x00000010
##mtf_sit_raid_defense = 0x00000020
##
mtf_looping = 0x00000040
mtf_start_immediately = 0x00000080
mtf_persist_until_finished = 0x00000100
mtf_sit_tavern = 0x00000200
mtf_sit_fight = 0x00000400
mtf_sit_multiplayer_fight = 0x00000800
mtf_sit_ambushed = 0x00001000
mtf_sit_town = 0x00002000
mtf_sit_town_infiltrate = 0x00004000
mtf_sit_killed = 0x00008000
mtf_sit_travel = 0x00010000
mtf_sit_arena = 0x00020000
mtf_sit_siege = 0x00040000
mtf_sit_night = 0x00080000
mtf_sit_day = 0x00100000
mtf_sit_encounter_hostile = 0x00200000
mtf_sit_main_title = 0x00400000
mtf_sit_victorious = 0x00800000
mtf_sit_feast = 0x01000000
mtf_module_track = 0x10000000 ##set this flag for tracks placed under module folder
Przykładowo gdy chcesz dodać muzykę która będzie odtwarzała się w trakcie oblężenia powiązanego z kulturą 2 musisz zrobić
mtf_culture_2 |mtf_sit_siege
czyli
0x00000002 | 0x00040000
co równa się
0x00040002
co jest równoznaczne z 262146 w dziesiętnym.
Dlatego musisz na końcu pliku dodać:
moja_muzyka mojamuzyka.mp3 262146 262146
Ogólnie tak jest dużo ciężej i mniej wygodnie, ale akurat dodawanie nowej muzyki da się zrobić bez problemu. Z czego nei wiem czy ktoś nie napisał do tego jakiegoś dedykowanego programu.
PS. Pamiętaj że gdy dodajesz nowy wpis w pliku txt musisz zwiększyć numer na początku pliku. Musi się on równać liczbie ścieżek znajdujących się w pliku.