미디자료

메이플스토리 수련의 숲 BGM (Raindrop Flower)

페이지 정보

runner38 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일20.9.1 03:14 1,115   142

첨부파일

※댓글을 남겨야 다운로드 가능합니다!

본문

배포조건 : 상업적 이용 금지, 2차수정 배포 금지

악기수가 매우 적어서 금방 작업했습니다.
미리듣기는 첨부 링크에서 들으실수 있습니다.
파일명에 8820이 붙은건 SC-8820 실기, SCVA 용이며 나머지는 일반 GS 미디입니다.
GS의 경우 사운트폰트 SGM-V2.01으로 들으시는 것을 추천합니다.
추천 1 비추천 0

댓글목록

sdfsdf님의 댓글

sdfsdf 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

settings
{
    main
    {
        설명: "Overwatch MIDI Pianist mode by ScroogeD. Convert MIDI songs to Overwatch piano songs with this converter on GitHub: github.com/ScroogeD2/owmidiconverter"
    }
    lobby
    {
        대기열에 등록된 플레이어들도 허용: 네
        경기 음성 대화: 활성화
        최대 1팀 플레이어 수: 6
        최대 2팀 플레이어 수: 0
        대기실로 돌아가기: 안 함
    }
    modes
    {
        연습 전투
        {
            enabled maps
            {
                파리
            }
        }
        일반
        {
            게임 모드 시작: 수동
            영웅 제한: 비활성화
            부활 시간 조정: 30%
        }
    }
    heroes
    {
        일반
        {
            기술 재사용 대기시간: 0%
            탄창 제한 없음: 활성화
            궁극기 충전율: 250%
        }
    }
}
variables {
    global:
        0: notePositions
        1: botSpawn
        2: bots
        3: speedPercent
        4: songPlayingState
        5: timeArrayIndex
        6: playerSpawn
        7: i
        8: pitchArrayIndex
        9: botScalar
        10: maxArraySize
        11: banTpLocation
        12: currentBotIndex
        13: waitTime
        14: timeArrays
        15: pitchArrays
        16: chordArrays
        17: maxBots
        18: defaultHorizontalFacingAngle
        28: hasDecompressionFinished
        29: decompressionPercentages
        30: isCompressionEnabled
        31: numberArray
        32: decompressedValue
        33: compressedArrayLength
        34: decompressedArray
        35: compressedElementLength
        36: songDataElementLength
        37: compressedArray
        38: compressionInfo
        39: finalCompressedElementLength
        40: I
        41: J
        42: K
    player:
        1: playNote
        2: currentPitchIndex
        3: playerToRemove
        4: currentKeyPos
}
subroutines {
    0: endSong
    1: decompressArray
}
rule ("Global init") {
    event {
        Ongoing - Global;
    }
    action {
        Disable Inspector Recording;
        Disable Built-In Game Mode Music;
        "Global.botScalar = 0.100;"
        Set Global Variable(bots, Empty Array);
        Set Global Variable(speedPercent, 100);
        Set Global Variable(hasDecompressionFinished, False);
        Create HUD Text(All Players(All Teams), Null, Null, Custom String("Speed: {0}%", Global.speedPercent, Null, Null), Right, 0, White, White, White, Visible To and String, Default Visibility);
        Create HUD Text(All Players(All Teams), Null, Null, Custom String("Host player: Press Interact to start and stop the song, \nand Crouch+Primary or Crouch+Secondary Fire to change speed", Null, Null, Null), Top, 0, White, White, White, Visible To and String, Default Visibility);
        Create HUD Text(All Players(All Teams), Null, Custom String("By ScroogeD", Null, Null, Null), Null, Left, 0, White, Yellow, White, Visible To and String, Default Visibility);
        Create HUD Text(All Players(All Teams), Null, Custom String("Website: github.com/ScroogeD2/owmidiconverter", Null, Null, Null), Null, Left, 1, White, Yellow, White, Visible To and String, Default Visibility);
        Create HUD Text(Filtered Array(All Players(All Teams), Has Status(Current Array Element, Frozen)), Custom String("The host player has decided to remove you temporarily. Please wait a minute before rejoining.", Null, Null, Null), Null, Null, Top, 1, White, White, White, Visible To and String, Default Visibility);
        Create HUD Text(If-Then-Else(Global.hasDecompressionFinished, Empty Array, Host Player), Null, Null, Custom String(" \n\n\nDecompressing\nPitch Arrays      {0}%\nTime Arrays        {1}%\nChord Arrays  {2}%", First Of(Global.decompressionPercentages), Value In Array(Global.decompressionPercentages, 1), Value In Array(Global.decompressionPercentages, 2)), Top, 10, White, White, White, Visible To and String, Default Visibility);
        Set Global Variable(decompressionPercentages, Array(0, 0, 0));
    }
}

rule ("Player init") {
    event {
        Ongoing - Each Player;
        All;
        All;
    }
    condition {
        Is Dummy Bot(Event Player) == False;
        Has Spawned(Event Player) == True;
        Is Alive(Event Player) == True;
    }
    action {
        Teleport(Event Player, Global.playerSpawn);
        Disable Movement Collision With Players(Event Player);
        Wait(0.016, Ignore Condition);
        Set Facing(Event Player, Direction From Angles(Global.defaultHorizontalFacingAngle, Vertical Facing Angle Of(Event Player)), To World);
        Preload Hero(Event Player, Hero(시메트라));
    }
}

rule ("Dummy init") {
    event {
        Ongoing - Each Player;
        All;
        All;
    }
    condition {
        Is Dummy Bot(Event Player) == True;
    }
    action {
        Teleport(Event Player, Global.botSpawn);
        Disable Movement Collision With Environment(Event Player, False);
        Disable Movement Collision With Players(Event Player);
        "Start Scaling Player(Event Player, Global.botScalar, True);"
        Set Invisible(Event Player, All);
        Wait(0.016, Ignore Condition);
        Set Facing(Event Player, Direction From Angles(Global.defaultHorizontalFacingAngle, 89), To World);
    }
}

rule ("Primary fire: increase speed") {
    event {
        Ongoing - Global;
    }
    condition {
        Is Button Held(Host Player, Crouch) == True;
        Is Button Held(Host Player, Primary Fire) == True;
    }
    action {
        Global.speedPercent += 5;
    }
}

rule ("Secondary fire: decrease speed") {
    event {
        Ongoing - Global;
    }
    condition {
        Is Button Held(Host Player, Crouch) == True;
        Is Button Held(Host Player, Secondary Fire) == True;
        Global.speedPercent > 5;
    }
    action {
        Modify Global Variable(speedPercent, Subtract, 5);
    }
}

rule ("Interact: create dummy bots, start playing") {
    event {
        Ongoing - Global;
    }
    condition {
        Is Button Held(Host Player, Interact) == True;
        Global.songPlayingState == 0;
        Or(Not(Global.isCompressionEnabled), Global.hasDecompressionFinished) == True;
    }
    action {
        "States:\n0: song not playing\n1: Preparing to play, creating bots\n2: song playing"
        Set Global Variable(songPlayingState, 1);
        Set Global Variable(i, 11);
        While(And(Compare(Count Of(Global.bots), <, Global.maxBots), Compare(Global.i, >, 0)));
            If(Not(Entity Exists(Players In Slot(Global.i, All Teams))));
                Create Dummy Bot(Hero(시메트라), Team 1, Global.i, Global.botSpawn, Vector(0, 0, 0));
                Modify Global Variable(bots, Append To Array, Last Created Entity);
            End;
            Modify Global Variable(i, Subtract, 1);
            Wait(0.016, Ignore Condition);
        End;
        Wait(1, Ignore Condition);
        Set Global Variable(songPlayingState, 2);
    }
}

rule ("Interact: stop playing") {
    event {
        Ongoing - Global;
    }
    condition {
        Is Button Held(Host Player, Interact) == True;
        Global.songPlayingState == 2;
    }
    action {
        Call Subroutine(endSong);
    }
}

rule ("Play loop") {
    event {
        Ongoing - Global;
    }
    condition {
        Global.songPlayingState == 2;
    }
    action {
        "continue\nvalue = songArray[math.floor(index / maxArraySize)][index % maxArraySize]\ncontinue\nWhile((index < 2dArrayLength) && songPlayingState)"
        While(And(Compare(Global.timeArrayIndex, <, Add(Multiply(Global.maxArraySize, Subtract(Count Of(Global.timeArrays), 1)), Count Of(Last Of(Global.timeArrays)))), Global.songPlayingState));
            Global.waitTime += Multiply(Divide(Value In Array(Value In Array(Global.timeArrays, Round To Integer(Divide(Global.timeArrayIndex, Global.maxArraySize), Down)), Modulo(Global.timeArrayIndex, Global.maxArraySize)), 1000), Divide(100, Global.speedPercent));
            While(Compare(Global.waitTime, >=, 0.016));
                Wait(0.016, Ignore Condition);
                Modify Global Variable(waitTime, Subtract, 0.016);
            End;
            "Loop as many times as there are pitches in the current chord, as indicated by the value in chordArrays. Assign the pitches to the bots."
            For Global Variable(i, 0, Value In Array(Value In Array(Global.chordArrays, Round To Integer(Divide(Global.timeArrayIndex, Global.maxArraySize), Down)), Modulo(Global.timeArrayIndex, Global.maxArraySize)), 1);
                Set Player Variable(Value In Array(Global.bots, Global.currentBotIndex), currentPitchIndex, Global.pitchArrayIndex);
                Set Player Variable(Value In Array(Global.bots, Global.currentBotIndex), playNote, True);
                Set Global Variable(currentBotIndex, Modulo(Add(Global.currentBotIndex, 1), Count Of(Global.bots)));
                Global.pitchArrayIndex += 1;
            End;
            Global.timeArrayIndex += 1;
        End;
        Wait(0.25, Ignore Condition);
        Call Subroutine(endSong);
    }
}

rule ("Stop playing") {
    event {
        Subroutine;
        endSong;
    }
    action {
        For Global Variable(i, 0, 12, 1);
            Destroy Dummy Bot(Team 1, Global.i);
        End;
        Set Global Variable(bots, Empty Array);
        Wait(0.3, Ignore Condition);
        Set Global Variable(songPlayingState, 0);
        Set Global Variable(timeArrayIndex, 0);
        Set Global Variable(pitchArrayIndex, 0);
        Set Global Variable(waitTime, 0);
    }
}

rule ("Play note") {
    event {
        Ongoing - Each Player;
        All;
        All;
    }
    condition {
        Is Dummy Bot(Event Player) == True;
        (Event Player).playNote == True;
    }
    action {
        Set Player Variable(Event Player, currentKeyPos, Value In Array(Global.notePositions, Value In Array(Value In Array(Global.pitchArrays, Round To Integer(Divide((Event Player).currentPitchIndex, Global.maxArraySize), Down)), Modulo((Event Player).currentPitchIndex, Global.maxArraySize))));
        Teleport(Event Player, (Event Player).currentKeyPos);
        Wait(0.016, Ignore Conditi