맥스스크립트 심화

슬롯머신(4)

스크립팅하는애님 2019. 9. 26. 22:38
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

오늘도 역시 지난번에 이어 슬롯머신을 계속 진행하겠습니다.

오늘은 코인을 넣고 '+', '-' 버튼과 연동하는 것을 만들어 보겠습니다.

 

우선은 플레이어의 코인을 받는 방법을 해결해 보겠습니다.

처음에는 키보드로 입력을 받을까 하다가 맥스 스크립트 UI내에서 키보드를 사용하는 방법을 찾을 수 없어서 마우스 미들 클릭으로 플레이어가 코인을 받을 수 있게 했습니다. ㅎㅎ

지금까지 작업한 스크립트 파일을 열고 다음과 같이 추가 해 줍시다.

스크립트의 제일 위쪽 부분에 위치한 변수의 선언부에 플레이어의 코인을 받을 수 있는 변수를 선언 하겠습니다.

 

1
playerCoin = 0
cs

 

그리고 'on run_btn pressed do ()'의 다음에 새로이 다이얼로그 실행 함수를 넣겠습니다.

 

1
2
3
4
5
on slot_roll mbuttondown pos do
(
    playerCoin += 10
    format "playerCoin = %\n" playerCoin
)
 
cs

 

이후 실행을 하면 마우스 미들 버튼을 클릭할 때마다 MAXScript Listener에서 playerCoin값이 10씩 증가하는 것을 볼 수 있습니다.

 

다음으로는 '+'버튼을 누를 때마다 playerCoin값이 1씩 줄어들고 playerCoin 값이 0이 되면 더 이상 눌러도 반응이 없도록 하겠습니다.

다음과 같이 on add_btn pressed do ()를 수정해 줍시다.

slotCount += 1 다음 줄에 playerCoin값에 1을 빼주는 스크립트를 추가하고,

블록 내의 스크립트를 if문으로 감싸 playerCoin값이 0보다 크면 블록을 실행하도록 합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
on add_btn pressed do
(
    if(playerCoin > 0) do
    (
        betCoin += 1
        slotCount += 1
        playerCoin -= 1
        
        if(slotCount == 1) then
        (
            bet1Coin += 1
            bet1_lab.text = (bet1Coin as string)
        )
        else if (slotCount == 2) then
        (
            bet2Coin += 1
            bet2_lab.text = (bet2Coin as string)
        )
        else
        (
            bet3Coin += 1
            bet3_lab.text = (bet3Coin as string)
            slotCount = 0
        )
    )
)
 
cs

 

이제 실행을 하면 '+'버튼을 눌러도 정상 작동하지 않습니다.

마우스 미들 버튼을 누르고 playerCoin에 10 값을 추가한 후에는 정상적으로 10까지는 베팅을 할 수 있습니다.

 

다음으로 '-'버튼과 playerCoin을 연동을 시키겠습니다.

내용은 '+'버튼과 비슷합니다.

단지 '-'버튼을 누를 때마다 playerCoin값이 1씩 더해지고 베팅 값을 저장하는 변수 betCoin의 값이 0이 되면 더 이상 작동하지 않는 것이 다릅니다.

다음과 같이 추가를 하고 스크립트를 실행해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
on sub_btn pressed do
(
    if(betCoin > 0) do
    (
        betCoin -= 1
        playerCoin += 1
        
        if(slotCount == 1) then
        (
            bet1Coin -= 1
            bet1_lab.text = (bet1Coin as string)
            slotCount -= 1
        )
        else if (slotCount == 2) then
        (
            bet2Coin -= 1
            bet2_lab.text = (bet2Coin as string)
            slotCount -= 1
        )
        else
        (
            bet3Coin -= 1
            bet3_lab.text = (bet3Coin as string)            
            slotCount = 2
        )
    )
)
 
cs

 

이제 '+', "-'버튼을 누르면 정상적으로 작동을 합니다.

 

지금까지 작업한 스크립트를 확인하면 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
betCoin = 0
slotCount = 0
bet1Coin = 0
bet2Coin = 0
bet3Coin = 0
playerCoin = 0
 
try(destroydialog slot_roll) catch()
 
 
 
rollout slot_roll "슬롯머신"
(
    label slot11_lab "  0" pos:[30,10] width:20 height:20 style_sunkenedge:true
    label slot12_lab "  0" pos:[70,10] width:20 height:20 style_sunkenedge:true
    label slot13_lab "  0" pos:[110,10] width:20 height:20 style_sunkenedge:true
    
    label slot21_lab "  0" pos:[30,45] width:20 height:20 style_sunkenedge:true
    label slot22_lab "  0" pos:[70,45] width:20 height:20 style_sunkenedge:true
    label slot23_lab "  0" pos:[110,45] width:20 height:20 style_sunkenedge:true
    
    label slot31_lab "  0" pos:[30,80] width:20 height:20 style_sunkenedge:true
    label slot32_lab "  0" pos:[70,80] width:20 height:20 style_sunkenedge:true
    label slot33_lab "  0" pos:[110,80] width:20 height:20 style_sunkenedge:true
    
    label bet2_lab "0" pos:[15,12]
    label bet1_lab "0" pos:[15,47]
    label bet3_lab "0" pos:[15,82]
    
    label coin_lab "0" pos:[5,110]
    
    button add_btn "+" pos:[30,110] width:25 height:25
    button sub_btn "-" pos:[60,110] width:25 height:25
    button run_btn "Run" pos:[90,110] width:40 height:25
    
 
    on add_btn pressed do
    (
        if(playerCoin > 0do
        (
            betCoin += 1
            slotCount += 1
            playerCoin -= 1
            
            if(slotCount == 1) then
            (
                bet1Coin += 1
                bet1_lab.text = (bet1Coin as string)
            )
            else if (slotCount == 2) then
            (
                bet2Coin += 1
                bet2_lab.text = (bet2Coin as string)
            )
            else
            (
                bet3Coin += 1
                bet3_lab.text = (bet3Coin as string)
                slotCount = 0
            )
        )
    )
    
    on sub_btn pressed do
    (
        if(betCoin > 0do
        (
            betCoin -= 1
            playerCoin += 1
            
            if(slotCount == 1) then
            (
                bet1Coin -= 1
                bet1_lab.text = (bet1Coin as string)
                slotCount -= 1
            )
            else if (slotCount == 2) then
            (
                bet2Coin -= 1
                bet2_lab.text = (bet2Coin as string)
                slotCount -= 1
            )
            else
            (
                bet3Coin -= 1
                bet3_lab.text = (bet3Coin as string)            
                slotCount = 2
            )
        )
    )
    
    on run_btn pressed do
    (        
        for i = 1 to 3 do
        (
            for j = 1 to 3 do
            (
                (execute("slot_roll.slot" + (i as string) + (j as string) + "_lab")).text = "  " + ((random 1 9) as string)
            )
        )
    )
    
    on slot_roll mbuttondown pos do
    (
        playerCoin += 10
        format "playerCoin = %\n" playerCoin
    )
)
createdialog slot_roll width:140 height:140
 
cs

 

 

오늘은 여기까지 작업을 하겠습니다.

다음에는 playerCoin값을 정상적으로 보여주고, 'Run'버튼을 눌렀을 때 슬롯의 성공과 실패에 대해 적용해 보겠습니다.

728x90
반응형

'맥스스크립트 심화' 카테고리의 다른 글

바이패드 Bip파일 불러오거나Bip파일과 XML파일 불러오기(2)  (2) 2021.03.10
바이패드 Bip파일 불러오거나Bip파일과 XML파일 불러오기(1)  (3) 2021.03.10
슬롯머신(6)  (0) 2019.10.01
슬롯머신(5)  (0) 2019.09.30
슬롯머신(3)  (0) 2019.09.25
슬롯머신(2)  (0) 2019.09.24
슬롯머신(1)  (0) 2019.09.23
Selection Filter확장  (0) 2019.09.19