-- ROI 영역 설정
roi1 = {x1, y1, w1, h1} -- 주사위 영역 ROI
roi2 = {x2, y2, w2, h2} -- 주사위M 영역 ROI
roi3 = {x3, y3, w3, h3} -- 빈이미지 영역 ROI


for i = 1, 6 do
    local imgDice = "주사위" .. i
    local imgDiceM = "주사위" .. i .. "m"

    -- 주사위 이미지 검색
    local retDice, accDice, xDice, yDice = ImageSearch(imgDice, accDice, roi1)

    if retDice == 1 then
        -- 주사위M 이미지 검색
        local retDiceM, accDiceM, xDiceM, yDiceM = ImageSearch(imgDiceM, accDiceM, roi2)

        if retDiceM == 1 then
            -- 주사위 이미지를 주사위M 이미지로 드래그 이동
            Mouse(LBUTTON, DRAG, xDice, yDice, xDiceM, yDiceM)
        else
            -- 랜덤하게 빈이미지 선택
            local randomEmptyIndex = math.random(1, 6)
            local imgEmpty = "빈이미지" .. randomEmptyIndex

            -- 빈이미지 이미지 검색
            local retEmpty, accEmpty, xEmpty, yEmpty = ImageSearch(imgEmpty, accEmpty, roi3)
            
            if retEmpty == 1 then
                -- 주사위M 이미지가 없는 경우, 빈 이미지로 드래그 이동
                Mouse(LBUTTON, DRAG, xDice, yDice, xEmpty, yEmpty)
            end
        end
    else
        -- 주사위 이미지를 찾지 못한 경우
    end
end

-- ROI 영역 설정
roi1 = {x1, y1, w1, h1} -- 주사위 영역 ROI
roi2 = {x2, y2, w2, h2} -- 주사위M 영역 ROI
roi3 = {x3, y3, w3, h3} -- 빈이미지 영역 ROI

--roi1 = {96, 836, 377, 127} -- 주사위 영역 ROI
--roi2 = {5, 200, 538, 543} -- 주사위M 영역 ROI
--roi3 = {5, 200, 538, 543} -- 빈이미지 영역 ROI



for i = 1, 6 do
    local imgDice = "주사위" .. i
    local imgDiceM = "주사위" .. i .. "m"

    -- 주사위 이미지 검색
    local retDice, accDice, xDice, yDice = ImageSearch(imgDice, accDice, roi1)

    if retDice == 1 then
        -- 주사위M 이미지 검색
        local retDiceM, accDiceM, xDiceM, yDiceM = ImageSearch(imgDiceM, accDiceM, roi2)

        if retDiceM == 1 then
            -- 주사위 이미지를 주사위M 이미지로 드래그 이동
            Mouse(LBUTTON, DRAG, xDice, yDice, xDiceM, yDiceM)
        else
            -- 랜덤하게 빈이미지 선택
            local randomEmptyIndex = math.random(1, 5)
            local imgEmpty = "빈이미지" .. randomEmptyIndex

            -- 빈이미지 이미지 검색
            local retEmpty, accEmpty, xEmpty, yEmpty = ImageSearch(imgEmpty, accEmpty, roi3)
            
            if retEmpty == 1 then
                -- 주사위M 이미지가 없는 경우, 빈 이미지로 드래그 이동
                Mouse(LBUTTON, DRAG, xDice, yDice, xEmpty, yEmpty)
            end
        end
    else
        -- 주사위 이미지를 찾지 못한 경우
    end
end

'이미지맥스' 카테고리의 다른 글

이미지맥스 -내장함수-  (0) 2023.06.21

아래 내용은 이미지맥스 LUA언어의 내장함수를 정리한 내용입니다.

ChatGPT를 이용하여 아래내용을 구분선기준으로 복붙하여 내용은 인지 시킨 후 문의하면 

원하는 기능을 설명하는 방식으로 답변을 받을수잇습니다.

 

-------내장함수--------

-- ms(밀리초)동안 현재 쓰레드 실행을 일시 중단합니다.
Sleep(uint ms) --예제) Sleep(500) --0.5초 딜레이
-- 시스템이 시작된 이후 경과한 시간(밀리초)을 반환합니다.-- 리턴값: 64비트 부호없는 정수
t = GetTickCount()
-- 로그창에 text를 출력합니다.
print(string text)
-- 현재 액션 이후 다음 액션 n개를 건너뜁니다.
PassAct(uint count)
-- 현재 액션 이후 다음 액션들을 모두 건너뜁니다.
PassAllAct()
-- 현재 액션 이후 인식 실패시 액션으로 건너뜁니다.
GotoFailAct()
-- 이미지를 활성 또는 비활성 상태로 변경합니다.
EnableImage(bool enable, string imagename)
-- enable: true or false
-- 이미지의 활성/비활성 상태를 묻습니다.
ret = IsEnableImage(string imagename)
-- 리턴값: true or false
-- 멀티이미지 인식을 수행합니다.
ret = MultiImage(string opimage)
-- 리턴값: 인식여부(0,1)
예제1) ret = MultiImage('이미지001&이미지002')
예제2) ret = MultiImage('이미지001|(이미지002&이미지003)')
예제3) ret = MultiImage('이미지001|("이미지001(2)"&이미지003)') -- 이미지이름에 ()가 포함된 경우 따옴표 사용
-- 다음 인식 순서를 해당 이미지로 변경합니다.
GotoImage(string imagename)
-- 이미지를 인식합니다.
ret, acc, ix, iy, sx, sy = ImageSearch(string imagename)
ret, acc, ix, iy, sx, sy = ImageSearch(string imagename, int acc, int[] roi)
-- 리턴값: 인식여부(0,1), 유사도, 이미지센터기준 x, y, 이미지원점기준 x, y
예제) ret, acc, ix, iy = ImageSearch('이미지001')
        if(ret == 1) then
         print('이미지001 발견')
         Mouse(LBUTTON, CLICK, ix, iy) -- 이미지001 위치 클릭
        end
참고) 반복문에서 ImageSearch 함수를 호출하여 0.01초 단위의 순간적으로 변화되는
       이미지를 인식하려면 내장 변수 imagesearch_refresh = 1로 변경하여야 합니다.
-- 이미지 인식 성공시 클릭합니다.
ret = ImageClick(string imagename)
ret = ImageClick(string imagename, int x, int y, int rand_x, int rand_y, double delaysec)
-- x, y: 이미지센터기준 좌표
-- rand_x, rand_y: 랜덤 좌표(기본값: 5, 5)
-- delaysec: 이미지 클릭 후 딜레이(초)
-- 리턴값: 인식여부(0,1)
​-- 최근 찾은 이미지를 클릭합니다.
ImageClick()
ImageClick(nil, x, y, rand_x, rand_y, delaysec)
-- imagename이 nil인 경우 최근 찾은 이미지
예제) '이미지 클릭' 액션과 동일한 ImageClick() 스크립트
-- 이미지의 ROI를 변경합니다.
   런타임시 원본이미지의 ROI가 변경되며 Stop상태가 될 때까지 유지됩니다.
ret = SetImageROI(string imagename, int[] roi)
예제) roi = {0, 0, 1280, 720}    -- {x, y, w, h}
       SetImageROI('이미지001', roi)
-- 이미지의 ROI를 가져옵니다.
roi = GetImageROI(string imagename)
예제) -- 화면 중심부근에 '소원나무'가 없으면 화면 전체에서 '소원나무'를 찾아서 '드래그'하는 예제입니다.
       ret = ImageSearch('소원나무')
       if(ret == 0) then
           roi_old = GetImageROI('소원나무')
           roi_new = {0, 0, 1280, 720} -- {x, y, w, h}
           SetImageROI('소원나무', roi_new) -- 인식 범위를 넓혀서 다시 Search
           ret, acc, ix, iy = ImageSearch('소원나무')
           if(ret == 1) then
               Mouse(LBUTTON, DRAG, ix, iy, 1280/2, 720/2) -- 소원나무를 화면 중앙으로 드래그
           end
           SetImageROI('소원나무', roi_old) -- 기존 인식 범위로 복구
       end
-- 마우스 입력을 수행합니다.
Mouse(LBUTTON, CLICK, int x1, int y1)
Mouse(LBUTTON, CLICK, int x1, int y1, int x2, int y2, int rand_x, int rand_y, double delaysec, int iteration, speed, type)
-- arg1: LBUTTON|RBUTTON|MBUTTON -- 버튼
-- arg2: CLICK|DBCLICK|DRAG|MOVE|DOWN|UP|WHEELUP|WHEELDOWN -- 이벤트
-- x1, y1: 입력 시작 좌표
-- x2, y2: 입력 해제 좌표
-- rand_x, rand_y: 랜덤 좌표(기본값: 5, 5)
-- delaysec: 마우스 입력 후 딜레이(초)
-- iteration: 입력 반복 횟수
-- speed: FASTEST|FASTER|NORMAL|SLOWER|SLOWEST -- 속도
-- type: MKEVENT|MESSAGE|DRIVER|HW -- 방식 (활성,비활성,드라이버,하드웨어)
예제1) Mouse(LBUTTON, CLICK, 100, 100) -- 인식 대상 창 기준 (100, 100) 좌표 클릭
예제2) Mouse(LBUTTON, DRAG, 100, 100, 200, 200) -- 인식 대상 창 기준 (100, 100) -> (200, 200) 좌표로 드래그
예제3) Mouse(LBUTTON, WHEELDOWN, 100, 100) -- 인식 대상 창 기준 (100, 100) 좌표 휠 다운
예제4) Mouse(LBUTTON, CLICK, 100, 100, 0, 0, 0, 0, 0.5, 1, FASTER, MKEVENT) -- 활성 입력으로 (100, 100) 좌표 클릭
-- 키보드 입력을 수행합니다.
Keybd(string text)
Keybd(string text, speed, type)
-- speed: FASTEST|FASTER|NORMAL|SLOWER|SLOWEST -- 속도
-- type: MKEVENT|MESSAGE|DRIVER|HW -- 방식 (활성,비활성,드라이버,하드웨어)
예제) Keybd('<Ctrl_Press>v<Ctrl_Release>', FASTER, MKEVENT) -- Ctrl+v를 활성방식 입력
​-- n초간 사운드 파일(wav)을 재생합니다.
PlaySound(string wavfilename, int alarmsec)
-- 카톡 n번째(1번째방 index=0) 채팅방에 텍스트 또는 스크린샷을 전송합니다.
SendKakaoTalk(uint chatroomindex, string text, bool screenshot)
예제) SendKakaoTalk(0, '보스', false) -- 카톡 첫번째 상단고정 채팅방에 '보스' 텍스트 전송
       SendKakaoTalk(0, '', true) -- 카톡 첫번째 상단고정 채팅방에 스크린샷 전송
-- 열려있는 카톡 채팅방에 텍스트 또는 스크린샷을 비활성 전송합니다.
   (채팅창을 열어놓고 최소화 후 사용 가능)
SendKakaoTalk(string name, string text, bool screenshot)
예제) SendKakaoTalk('준영', '보스', false) -- 열려있는 '준영' 채팅방에 '보스' 텍스트 전송
       SendKakaoTalk('준영', '', true) -- 열려있는 '준영' 채팅방에 스크린샷 전송
-- 텔레그램을 전송합니다.(텍스트 및 사진 첨부 가능)
SendTelegram(string token, string chat_id, string text, string photo_path)
-- 디스코드를 전송합니다.(텍스트 및 사진 첨부 가능)
SendDiscord(string webhook_url, string name, string text, string photo_path)
-- 인식 대상 창의 현재 화면을 스크린샷(png)으로 저장합니다.
filepath = SaveScreenshot() -- 화면 전체
SaveScreenshot(int[] roi)
SaveScreenshot(int x, int y, int w, int h)
SaveScreenshot(string filename)
SaveScreenshot(string filename, int x, int y, int w, int h)
-- 리턴값: 저장된 스크린샷 파일 경로
예제) filepath = SaveScreenshot()                   -- 화면 전체 스샷
       SendTelegram(token, chat_id, "", filepath)  -- 스샷 파일을 텔레그램으로 전송
-- 스크린샷(png) 파일을 저장할 경로를 지정합니다.
   (한번 지정된 경로는 프로그램 종료시까지 유지되며, 경로를 지정하지 않으면
   기본경로 "문서\Screenshot\스크립트명\날짜" 폴더에 저장됩니다.)
SetScreenshotDir(string dirpath)
예제1) SetScreenshotDir('D:\\Screenshot')
         SaveScreenshot('test.png') -- 스크린샷을 'D:\\Screenshot\\test.png' 파일로 저장
예제2) SetScreenshotDir('../screenshot') -- 스크린샷을 '스크립트명/screenshot' 경로로 지정
         SaveScreenshot() -- 스크린샷을 '스크립트명/screenshot/현재날짜_시간.png' 파일로 저장
참고) lua 스크립트의 현재 디렉토리(./)는  '스크립트명/action'
-- 프로그램을 Stop 상태로 만듭니다.
Stop()
-- Stop 상태인지 여부를 묻습니다.
ret = IsStop()
-- Pause 상태인지 여부를 묻습니다.
ret = IsPause()
-- PreScript를 재실행합니다.
ReloadPreScript()
-- 다른 스크립트를 열고 실행합니다.
OpenScript(string scriptname)
예제) OpenScript('LD플레이어재실행')
-- 메모리(이미지) 버퍼를 생성합니다.
bits = NewBits(int w, int h)
-- 리턴값: 메모리 시작 주소값
-- 메모리(이미지) 버퍼를 삭제합니다.
ReleaseBits(ulong bits)
-- 인식 대상 창의 특정 영역을 캡처하여 메모리 버퍼에 저장합니다.
CaptureScreen(ulong bits, int[] roi)
CaptureScreen(ulong bits, int x, int y, int w, int h)
예제) roi = {100, 100, 50, 50}
       CaptureScreen(bits, roi)
-- 메모리 버퍼를 이미지 파일(png)로 저장합니다.
SaveImageFile(ulong bits, int w, int h)
예제) filepath = SaveImageFile(bits, roi[3], roi[4])
-- 인식 대상 창의 특정 영역을 메모리 버퍼와 비교합니다.
acc, fx, fy = BitsSearch( { ulong bits, int w, int h } , int[] roi )
-- arg1: 메모리 버퍼 {bits, w, h} table (주의: bits, w, h - key 고정)
-- arg2: 인식 대상창 {x, y, w, h} table
-- 리턴값: 유사도, 찾은 위치 시작좌표 x, y
예제) centerframe = {bits=nil, w=100, h=100}
       centerframe.bits = NewBits(centerframe.w, centerframe.h)
       roi = {600, 300, 100, 100}
       CaptureScreen(centerframe.bits, roi)
       Sleep(2000)
       acc, fx, fy = BitsSearch(centerframe, roi) -- 2초전 캡처된 centerframe을 현재 roi 영역과 비교합니다
       print('acc, fx, fy = '..acc, fx, fy)
       ReleaseBits(centerframe.bits)
       centerframe.bits = nil
-- 특정 윈도우의 핸들 값을 가져옵니다.
hwnd = FindWindow(string classname, string windowname)
-- 리턴값: 찾은 창 핸들
예제) hwnd = FindWindow('LDMultiPlayerMainFrame', 'LDMultiPlayer')
​-- 특정 윈도우에 포함된 자식 윈도우의 핸들 값을 가져옵니다.
hwnd = FindWindowEx(HWND hwndParent, HWND hwndChildAfter, string classname, string windowname)
-- 리턴값: 찾은 자식 창 핸들
-- 특정 윈도우에 지정된 메시지를 보냅니다.
SendMessage(HWND hwnd, uint msg, uint wParam, uint lParam)
예제) local WM_CLOSE = 0x0010
       SendMessage(hwnd, WM_CLOSE, 0, 0)
-- 특정 윈도우의 메시지큐에 지정된 메시지를 보냅니다.
PostMessage(HWND hwnd, uint msg, uint wParam, uint lParam)
예제) local WM_LBUTTONDOWN = 0x0201
       PostMessage(hwnd, WM_LBUTTONDOWN, 0, 0)
-- 특정 윈도우를 활성화 시킵니다.
ActivateWindow(HWND hwnd, bool focus)
예제) hwnd = FindWindow('Notepad', '제목 없음 - Windows 메모장')
       ActivateWindow(hwnd, true)
-- 특정 윈도우의 위치와 크기를 변경합니다.
MoveWindow(HWND hwnd, int x, int y, int w, int h)
예제) hwnd = FindWindow('Notepad', '제목 없음 - Windows 메모장')
       MoveWindow(hwnd, 0, 0, 800, 500)
-- 인식 대상 창의 이름을 가져옵니다.
tw_name = GetTargetWindowName()
print('tw_name: '..tw_name)
-- 인식 대상 창의 핸들을 가져옵니다.
tw_handle = GetTargetWindowHandle()
print('tw_handle: '..string.format('0x%X', tw_handle))
(참고: 대상 창의 최상위 윈도우 핸들을 반환하는 함수는 GetTargetFrameHandle로 변경되었습니다.)
-- 인식 대상 창의 최상위 핸들을 가져옵니다.
tw_handle = GetTargetFrameHandle()
print('tf_handle: '..string.format('0x%X', tf_handle))
-- 인식 대상 창의 위치를 가져옵니다.
x, y, w, h = GetTargetWindowPos()
print('tw pos: '..x, y, w, h)
-- 인식 대상 창의 최상위 윈도우 위치를 가져옵니다.
x, y, w, h = GetTargetFramePos()
print('tf pos: '..x, y, w, h)
-- 특정 상황에서 '인식 대상 창 크기가 변경되는 경우​' 이벤트 핸들러 함수를 정의할 수 있습니다.
   Lua 스크립트에 OnTargetWindowSizeChanged 함수가 정의된 경우 호출되고
   '인식 대상 창 크기 변경됨' 팝업창이 뜨지 않습니다.
예제)
function OnTargetWindowSizeChanged()
    print('인식 대상 창 크기 변경됨')
    x, y, w, h = GetTargetWindowPos()
    print('target window pos: '..x, y, w, h)
    if(w < 600) then
        OpenScript('세로화면540x960')
    end
end
-- 특정 상황에서 '인식 대상 창이 없어지는 경우' 이벤트 핸들러 함수를 정의할 수 있습니다.
   Lua 스크립트에 OnTargetWindowNotFound 함수가 정의된 경우 호출되고
   프로그램이 Stop 되지 않습니다.
예제)
function OnTargetWindowNotFound()
    print('인식 대상 창 없음')
    OpenScript('재실행')
end
-- 클립보드에 저장된 텍스트를 가져옵니다.
text = GetClipboardData()
-- 클립보드에 텍스트를 저장합니다.
ret = SetClipboardData(string text, bool unicode)
-- 현재 커서 (인식 대상 창 기준) 위치를 가져옵니다.
x, y = GetCursorPos()
-- (인식 대상 창 기준) x, y 좌표의 R,G,B값 또는 Int값을 가져옵니다.
r,g,b = GetPixelRGB(int x, int y)
color = GetPixelInt(int x, int y)
-- 이미지서치의 결과를 테이블 형식으로 가져옵니다. (찾은 위치를 모두 저장)
result_count, result_table = ImageSearchMultipleResults(string imagename, SORT_PTDIST, int[] ptCenter)
-- 리턴값: 결과 개수, 결과값 테이블 {필드명: acc, ix, iy, sx, sy}
-- arg1: 이미지이름 또는 이미지이름 테이블 {'이미지001', '이미지002'}
-- arg2: 결과값 정렬기준(SORT_PTDIST|SORT_ACC|SORT_COORD) - ptCenter거리순, acc유사도순, x,y좌표순
-- ptCenter: SORT_PTDIST 정렬시 기준 위치
예제1) '이미지001'에 해당하는 모든 위치를 테이블에 저장합니다.
   result_count, result_table = ImageSearchMultipleResults('이미지001')
예제2) 결과값 저장시 x:100, y:100 좌표에 가까운 거리순으로 정렬합니다.
   result_count, result_table = ImageSearchMultipleResults('이미지001', SORT_PTDIST, {100, 100})
테스트예제) 결과값이 저장된 위치에 순서대로 마우스 포인터를 이동합니다.
   for i = 1, result_count do
      print('result_table field: '..i, result_table[i].acc, result_table[i].ix, result_table[i].iy, result_table[i].sx, result_table[i].sy)
      Mouse(LBUTTON, MOVE, result_table[i].ix, result_table[i].iy, 0, 0, 0, 0, 0.5, 1, FASTER, MKEVENT)
   end
-- 특정 이미지에 대한 핫키를 등록합니다.
RegisterHotKey(string imagename, string hotkey, bool available_in_stop)
전처리 스크립트(PreScript)에 등록시 오토핫키로 활용 가능
예제) -- Ctrl+1을 누르면 이미지001 인식 후 액션 수행 (stop시에도 사용)
       RegisterHotKey('이미지001', '<Ctrl>1', true)
       -- Shift + 좌클릭시 이미지002 인식 후 액션 수행 (stop시 사용 안함)
       RegisterHotKey('이미지002', '<Shift><LButton>', false)
-- 특정 이미지에 대한 핫키를 해제합니다.
UnregisterHotKey(string imagename)
-- lua 스크립트에 대한 핫키를 등록합니다.
RegisterScriptHotKey(string script_code, string hotkey, bool available_in_stop)
예제) -- Ctrl+R을 눌러 PreScript Reload (사용자 GUI 제작시 활용)
       RegisterScriptHotKey('ReloadPreScript()', '<Ctrl>R', true)
-- 현재 순서의 이미지 이름을 가져옵니다.
imagename = GetCurImageName()
-- 실행중인 이미지맥스의 버전을 가져옵니다.
im_ver = GetImageMaxVer()
-- ini 폴더의 ini_filename에 값을 저장합니다. (내부적으로 WritePrivateProfileString 호출)
IniSetValue(string app, string key, string value, string ini_filename)
-- app: key가 속해있는 section
-- key, value: 해당 key에 value를 저장
-- ini_filename: ini 폴더의 filename
-- ini 폴더의 ini_filename에서 값을 가져옵니다. (내부적으로 GetPrivateProfileString 호출)
value = IniGetValue(string app, string key, string ini_filename)
-- app: key가 속해있는 section
-- key, value: 해당 key에서 value를 가져옴(문자열)
-- ini_filename: ini 폴더의 filename

-------내장함수--------

 

-------내장함수GUI--------
<< 사용자 GUI 함수 >>
-- 사용자 탭을 추가합니다.
-- tabname: 추가할 탭이름
-- ini_section: ini에 저장되는 섹션명 (nil이면 탭이름으로 저장)
GUIAddTab(string tabname, string ini_section)
-- GUI item을 추가할 탭을 지정합니다.
GUISetCurTab(string tabname)
-- 텍스트를 추가합니다.
-- x: 추가할 텍스트의 x좌표(0~360)
-- y: 추가할 텍스트의 y좌표(0~320)
-- w: 추가할 텍스트의 너비(-1이면 자동)
-- h: 추가할 텍스트의 높이(-1이면 자동)
-- text: 텍스트 내용
-- 리턴값: GUI item id
item_id = GUIAddText(int x, int y, int w, int h, string text)
-- 그룹박스를 추가합니다.
-- x, y, w, h, text, 리턴값: 상동
GUIAddGroup(int x, int y, int w, int h, string text)
-- 버튼을 추가합니다.
-- func: 버튼을 누르면 lua 스크립트에 정의된 func(함수)를 호출합니다.
GUIAddButton(int x, int y, int w, int h, string text, string func)
-- 체크박스를 추가합니다.
-- var: 체크박스에 체크시 var(변수)는 1이 됩니다. (체크 해제시 0)
GUIAddCheck(int x, int y, int w, int h, string text, string func, string var)
-- 라디오버튼을 추가합니다.
-- var: 버튼 선택시 var(변수)는 라디오버튼의 index가 됩니다. (0, 1, 2..)
   (주의: 라디오버튼 그룹의 첫번째 버튼에만 var(변수)를 지정해야 합니다.)
GUIAddRadio(int x, int y, int w, int h, string text, string func, string var)
-- 콤보박스를 추가합니다.
-- text_table: 콤보박스에 추가할 텍스트 항목들
-- var: 항목 선택시 var(변수)는 콤보박스 항목의 index가 됩니다. (0, 1, 2..)
GUIAddCombo(int x, int y, int w, int h, string[] text_table, string func, string var)
-- 에디트박스를 추가합니다.
-- var: 에디트박스에 작성한 내용이 var(변수)에 저장됩니다.
GUIAddEdit(int x, int y, int w, int h, string text, string func, string var)
-- 현재까지 추가된 컨트롤을 윈도우에 보여줍니다.
GUIShow()
-- id에 해당하는 GUI item을 숨기거나 보여줍니다.
GUIItemShow(int id, bool show)

예제) -- 버튼1을 추가 후 숨김
       btn1_id = GUIAddButton(10, 50, -1, -1, '버튼1', 'onButton1')
       GUIItemShow(btn1_id, false)
-- id에 해당하는 GUI item을 활성 또는 비활성 상태로 만듭니다.
GUIItemEnable(int id, bool enable)
​-- id에 해당하는 GUI item의 상태를 강제로 수정합니다.
GUIItemUpdate(int id, int value)
GUIItemUpdate(int id, string value)
-- GUIItemUpdate 이후 사용자 GUI를 갱신합니다.
GUIUpdate()
예제) 스크립트에서 UI 상태를 수정 후 화면 갱신
function onButton1(btn_id)
    var_combo1 = 1
    GUIItemUpdate(combo1_id, var_combo1) -- 버튼1을 누르면 combo1_id에 해당하는 UI 상태 변경
    GUIUpdate() -- 수정된 값으로 화면 업데이트
end
comboText = {'선택1', '선택2', '선택3'}
combo1_id = GUIAddCombo(10, 170, -1, -1, comboText, 'onCombo1', 'var_combo1')
GUIAddButton(10, 50, -1, -1, '버튼1', 'onButton1')
-- id에 해당하는 콤보박스의 index(0,1,2)에 해당하는 항목 문자열을 가져옵니다.
string value = GUIComboGetText(int id, int index)
-- id에 해당하는 콤보박스의 텍스트 항목들을 재설정합니다.
GUIComboSetContent(int id, string[] text_table)
-- 사용자 GUI의 현재 설정 파일 이름을 가져옵니다.
string ini_name = GUIGetCurIniName()
-- 대화상자(팝업창)를 생성합니다.
-- dlgname: 추가할 대화상자 이름
-- ini_section: ini에 저장되는 섹션명
-- w, h: 대화상자 너비, 높이
-- 리턴값: GUI item id
dlg_id = GUIAddDialog(string dlgname, string ini_section, int w, int h)
-- id에 해당하는 대화상자에 해당 GUI item을 추가합니다.
-- parent_id: 대화상자 item id
-- x, y, w, h, text, func, var, 리턴값: 상동
GUIAddText(int parent_id, int x, int y, int w, int h, string text)
GUIAddGroup(int parent_id, int x, int y, int w, int h, string text)
GUIAddButton(int parent_id, int x, int y, int w, int h, string text, string func)
GUIAddCheck(int parent_id, int x, int y, int w, int h, string text, string func, string var)
GUIAddRadio(int parent_id, int x, int y, int w, int h, string text, string func, string var)
GUIAddCombo(int parent_id, int x, int y, int w, int h, string[] text_table, string func, string var)
GUIAddEdit(int parent_id, int x, int y, int w, int h, string text, string func, string var)
-- id에 해당하는 대화상자를 열거나 닫습니다.
GUIItemShow(int id, bool show, bool is_dlg_cancel)
예제) 대화상자 생성 후 열기 및 닫기
dlg_id = GUIAddDialog('대화상자', '옵션', 300, 200) -- 대화상자 생성
GUIAddButton(dlg_id, 10, 50, -1, -1, '버튼1', 'onButton1')
GUIItemShow(dlg_id, true) -- 대화상자(팝업창) 열기
GUIItemShow(dlg_id, false) -- 대화상자(팝업창) 닫기(확인 버튼 누른 경우)
GUIItemShow(dlg_id, false, true) -- 대화상자(팝업창) 닫기(취소 버튼 누른 경우)
-- 메시지 박스를 띄웁니다.
   주의) 이미지맥스 쓰레드가 중지되므로 GUI 함수내에서만 사용 권장
MessageBox(string msg)




<< 사용자 GUI 샘플 코드 >>
-- 전처리 스크립트(PreScript)에 등록 후 사용
function onButton1(btn_id)
    print('Button1')
end

​function onCheck1(check_id)
    print('check1: '..check1)
end
function onRadio1(radio_id)
    print('radio1: '..radio1)
end

function onCombo1(combo_id)
    print('combo1: '..combo1)
end
function onEdit1(edit_id)
    print('edit1: '..edit1)
end
​GUIAddTab('사용자')
GUISetCurTab('사용자')
GUIAddText(10, 10, -1, -1, '텍스트')
GUIAddButton(10, 50, -1, -1, '버튼', 'onButton1')
GUIAddCheck(10, 90, -1, -1, '체크', 'onCheck1', 'check1')
​GUIAddRadio(10, 130, -1, -1, '선택1', 'onRadio1', 'radio1') -- 첫번째 라디오버튼에만 var지정
GUIAddRadio(70, 130, -1, -1, '선택2', 'onRadio1')
GUIAddRadio(130, 130, -1, -1, '선택3', 'onRadio1')
comboText = {'선택1', '선택2', '선택3'};
GUIAddCombo(10, 170, -1, -1, comboText, 'onCombo1', 'combo1')
GUIAddEdit(10, 210, -1, -1, '편집', 'onEdit1', 'edit1')
GUIShow()
GUISetCurTab('사용자')
사용자 GUI 실행화면
-------내장함수GUI--------

+ Recent posts