Tworzysz sobie równoległe zdarzenie gdzieś na mapie i wybierasz warunek > 4. zakładka > na dole "script" > wpisujesz:
$game_player.current_area_name == "nazwa obszaru"
i ustawiasz zmianę BGM'a. To działa na danej mapie, ale z tego co zrozumiałam, to powinno wystarczyć

No chyba że ustawisz to w "common event"

Dzięki temu, że wpisujesz nazwę obszaru, może to dotyczyć kilku różnych obszarów o takiej samej nazwie.
Edit:
Sprawdzam to właśnie i coś mi nie działa. Niedługo dojdę do tego jak to powinno być i Ci tu napiszę ;)
Edit 2:
Już wiem dlaczego. Wszystko dobrze Ci napisałam, tylko trzeba jeszcze wrzucić ten skrypt nad Main:
# if $game_player.current_area_name == "NAZWA_OBSZARU"
class Game_Character
def in_area?(area)
return false if area == nil
return false if $game_map.map_id != area.map_id
return false if @x < area.rect.x
return false if @y < area.rect.y
return false if @x >= area.rect.x + area.rect.width
return false if @y >= area.rect.y + area.rect.height
return true
end
def current_area_name
for area in $data_areas.values
if in_area?(area) == true
return_area_name = area.name
break
end
end
return return_area_name
end
end
Ja go chyba wycięłam z jakiegoś innego skryptu. Jak znajdę z jakiego, to Ci napiszę

Albo jakiś przerobiłam (?)...
Edit 3:
Z tego skryptu to wycięłam:
http://www.ultimateam.pl/viewtopic.php?t...light=area. Więc jak masz już ten, to tego wyżej nie potrzebujesz