유즈맵에 SCA 세이브/로드 적용법

이 튜토리얼은 SCA 세이브/로드 기능을 맵에 적용하는 강좌입니다

미네랄을 저장하는 방법이며 이걸 응용해서 유닛 세이브/로드도 만들 수 있습니다

사용하지 않는 유닛 이름을 변경하여 총 6 개의 DC를 만드세요.

RUNSAVE

GAMESAVE

SAVETIME

DISCCHECK

LOADCHECK

MONEY

유닛을 위 이름으로 똑같이 변경해주세요

Terran의 * 섹션에있는 유닛을 사용하면 좋아요

유닛 이름 변경뒤 TrigEdt ++를 열고 다음 트리거를 삽입하십시오.

TrigEdit ++가 표시되어 있지 않다면 설치하지 않은 것입니다.

Trigger { -- No comment (31D979D9)
    players = {P8},
    conditions = {
        Deaths(CurrentPlayer, AtMost, 9000, "SAVETIME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Add, 1, "SAVETIME");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (4D7C7DC7)
    players = {P8},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 9000, "SAVETIME");
    },
    actions = {
        SetDeaths(CurrentPlayer, SetTo, 0, "SAVETIME");
        SetDeaths(P1, Add, 1, "SAVEGAME");
        SetDeaths(P2, Add, 1, "SAVEGAME");
        SetDeaths(P3, Add, 1, "SAVEGAME");
        SetDeaths(P4, Add, 1, "SAVEGAME");
        SetDeaths(P5, Add, 1, "SAVEGAME");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (5579B3D8)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, Exactly, 0, Ore);
    },
    actions = {
        SetDeaths(CurrentPlayer, SetTo, 0, "SAVEGAME");
        SetDeaths(CurrentPlayer, SetTo, 1, "RUNSAVE");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (52AB5C5E)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 1, Ore);
        Accumulate(CurrentPlayer, AtMost, 9, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 1, Ore);
        SetDeaths(CurrentPlayer, Add, 1, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (D61B8F0C)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 10, Ore);
        Accumulate(CurrentPlayer, AtMost, 99, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 10, Ore);
        SetDeaths(CurrentPlayer, Add, 10, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (ADDF9844)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 100, Ore);
        Accumulate(CurrentPlayer, AtMost, 999, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 100, Ore);
        SetDeaths(CurrentPlayer, Add, 100, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (B65FAEB1)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 1000, Ore);
        Accumulate(CurrentPlayer, AtMost, 9999, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 1000, Ore);
        SetDeaths(CurrentPlayer, Add, 1000, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (23B6E20D)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 10000, Ore);
        Accumulate(CurrentPlayer, AtMost, 99999, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 10000, Ore);
        SetDeaths(CurrentPlayer, Add, 10000, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (545BB1CE)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 100000, Ore);
        Accumulate(CurrentPlayer, AtMost, 999999, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 100000, Ore);
        SetDeaths(CurrentPlayer, Add, 100000, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (2E46A336)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "SAVEGAME");
        Accumulate(CurrentPlayer, AtLeast, 1000000, Ore);
    },
    actions = {
        SetResources(CurrentPlayer, Subtract, 1000000, Ore);
        SetDeaths(CurrentPlayer, Add, 1000000, "MONEY");
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (63A6792E)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1000000, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 1000000, "MONEY");
        SetResources(CurrentPlayer, Add, 1000000, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (7BB6A7A1)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 100000, "MONEY");
        Deaths(CurrentPlayer, AtMost, 999999, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 100000, "MONEY");
        SetResources(CurrentPlayer, Add, 100000, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (F47BE628)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 10000, "MONEY");
        Deaths(CurrentPlayer, AtMost, 99999, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 10000, "MONEY");
        SetResources(CurrentPlayer, Add, 10000, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (E6109ACC)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1000, "MONEY");
        Deaths(CurrentPlayer, AtMost, 9999, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 1000, "MONEY");
        SetResources(CurrentPlayer, Add, 1000, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (09045933)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 100, "MONEY");
        Deaths(CurrentPlayer, AtMost, 999, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 100, "MONEY");
        SetResources(CurrentPlayer, Add, 100, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (7A550563)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 10, "MONEY");
        Deaths(CurrentPlayer, AtMost, 99, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 10, "MONEY");
        SetResources(CurrentPlayer, Add, 10, Ore);
        PreserveTrigger();
    },
}
 
Trigger { -- No comment (2360655D)
    players = {Force1},
    conditions = {
        Deaths(CurrentPlayer, AtLeast, 1, "MONEY");
        Deaths(CurrentPlayer, AtMost, 9, "MONEY");
        Deaths(CurrentPlayer, Exactly, 0, "SAVEGAME");
    },
    actions = {
        SetDeaths(CurrentPlayer, Subtract, 1, "MONEY");
        SetResources(CurrentPlayer, Add, 1, Ore);
        PreserveTrigger();
    },
}

위 트리거가 추가 되었다면 맵을 저장하세요.

이제 SCM Draft는 종료해도됩니다

EUD 에디터 3을 열고 플러그인 탭으로 가세요

여기서 eudTurbo를 활성화 해주시고

Trigger Editor 쪽으로 가봅시다

새 epScript 파일을 만들고 영어로 이름을 바꿉니다. 전 “qorpg2” 로 변경 했습니다

변경후 오른쪽의 텍스트 필드에 아래 코드를 붙여 넣습니다.

import TriggerEditor.SCArchive as sca;
 
function luasca(){}
 
 
function onPluginStart(){
}
 
function beforeTriggerExec(){
 
    EUDPlayerLoop()();
    sca.Exec();
    
     
    if(Deaths(CurrentPlayer, Exactly, 1, "RUNSAVE")){ // Data Save
            SetDeaths(CurrentPlayer, SetTo, 0, "RUNSAVE");
            sca.SaveData(0);
    }
 
     
    if(Deaths(P8, AtLeast, 8000, "SAVETIME")){ // Cheat Check
            switch(sca.ConnectStatus()){
        case 1:
            SetDeaths(CurrentPlayer, SetTo, 11, "DISCCHECK");
            break;
   
    }
    }
 
        if(Deaths(CurrentPlayer, AtLeast, 11, "DISCCHECK")){ // Cheat End
            switch(sca.GetLastMessage()){
        case 1:
            break;
        case 2:
            Defeat();
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            break;
        case 8:
            break;
        case 9:
            break;
             
             
        default:
            sca.ResetLastMessage();
    }
    }
 
 
     
    if(Deaths(CurrentPlayer, Exactly, 0, "LOADCHECK") && Deaths(P8, AtLeast, 3000, "SAVETIME") && CountdownTimer(Exactly, 0)){ // Data Save
            SetDeaths(CurrentPlayer, SetTo, 1, "LOADCHECK");
            SetCountdownTimer(SetTo, 1);
            sca.LoadData(0);
    }
 
    EUDEndPlayerLoop();
}
 
 
function afterTriggerExec(){
 
}

위 트리거는 게임 내에서 6 분마다 미네랄을 DC 값으로 저장합니다.

또한 게임 시작시 DC 값을 로드하고 미네랄로 변환합니다.

DISCCHECK는 게임 중에 플레이어의 SCA 런처가 연결 해제되었는지 확인하고 감지되면 패배하는 트리거 입니다

거의 완료되었습니다. 이제 설정 아이콘을 클릭하고 SCArchive 탭으로 가보세요

배틀 코드, SCA런처 비번, 맵 이름, 이메일 주소 등 정보를 입력 하세요.

SCA런처 비번이 없는 경우 먼저 SCA런처를 실행해서 계정을 만들어야합니다.

버퍼 크기는 저장되는 DC 당 50 개를 설정하는 것이 좋습니다.

위 예제 맵은 하나의 DC 값만 저장하므로 기본 버퍼 크기 인 300으로 두겠습니다.

저걸 다 하셨으면 이제 DC를 추가해야합니다.

+ 아이콘을 클릭하고 전에 변경한 유닛 MONEY를 추가하세요

매우 중요한 단계입니다. 첫 번째 탭에서 epScript 파일을 설정해야합니다.

제 epScript 파일은 “qorpg2″로 이름이 변경되었으므로 그걸 선택하겠습니다.

컴파일이 성공되면

https://scarchive.kr/maker/main.php 페이지로 이동하세요.

SCA 제작자 관리자 기능입니다.

SCA 사이트에 맵이 표시되도록 설정했습니다.

마지막 단계는 실시간 순위표를 시하는 것입니다.

이 정보가 도움이 되셨기를 바랍니다.

보너스 팁 으로 SCMDraft 말고 TE3 으로 변환하는 방법입니다 (중급):

-Lifebot