테스트 사이트 - 개발 중인 베타 버전입니다

문자열 찾고 수정하기 채택완료

crypt2hex 3년 전 조회 3,466

$tmp = '


-- 1/7회 출력
Trigger {
    players = {P7},
    conditions = {
    Deaths(P12, AtLeast, 1, 3);
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Deaths(P10, AtLeast, 1, 9);
    },
    actions = {
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P10, SetTo, 0, 9); -- 랜덤 타이머 초기화
    SetDeaths(Force1, SetTo, 1, 181);  -- 사운드 유닛
    SetScore(Force1, Add, 30000, Kills);
    SetResources(Force1, Add, 1, Gas);
    Wait(25);
    CreateUnit(1, "Terran Valkyrie", "[G] H5", P1); -- 유닛 생성
    SetDeaths(Force1, SetTo, 0, 181);  -- 사운드 유닛
    }
}
-- 2/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Infested Duran", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 68, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 100,
    shield = 100,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 3/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Unclean One (Defiler)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 119, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 4/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Protoss Scout", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 170, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 5/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Kukulza (Mutalisk)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 221, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 100,
    shield = 100,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 6/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Fenix (Zealot)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 2, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 272, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 7/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Tassadar (Templar)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 3, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 323, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
    RemoveUnitAt(0, "Terran Valkyrie", "[G] H5", P1);
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
';

이런 문구가 있는데.
Deaths(P10, AtLeast,  << -- 전영역 타이머 부분에 값을 가져오고 -1을 하여 전부다 이어 붙히고 싶습니다.ㅠ

어떻게 해야될까요..?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
B
3년 전

Deaths(P10, AtLeast, 1, 9)
↓ 고정 문자열에서 Escape 처리, 변경되는 부분 패턴, 괄호 묶기

Deaths\(P10, AtLeast, (\d+), 9\)

이제 이 부분값에서 1 빼서 치환해주면 끝이죠.

</p>

<p>$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', function ($m) {

    return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';

}, $tmp);</p>

<p>// 익명 함수 사용할 수 없는 옛날 버전이면 아래처럼 따로 처리하면 됩니다.</p>

<p>function change_value($m) {</p>

<p>    return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';</p>

<p>}</p>

<p>$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', 'change_value', $tmp);</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
crypt2hex
3년 전
와 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

정보감사합니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

이건 무슨 언어에요 ㅋㅋㅋ 본적 없는데

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
crypt2hex
3년 전
스타크래프트 트리거 생성을 php 로 만들었어요 ㅋㅋ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인