lua 를 사용하는 스크립트를 프로그램에서

lua 를 사용하는 스크립트를 프로그램에서

작성일 2023.02.03댓글 1건
    게시물 수정 , 삭제는 로그인 필요

아래 코드는 루아를 활용할수있는 스크립트 제작 프로그램을 사용할때 사용중인 소스입니다.
앱이 정지..즉 캡쳐하다 이전화면과 같음을 판단시 앱을 재실행하는건데요...
이건 반대로 같은 이미지에서 
변경되는걸 인식해서 SendKakaoTalk(string name, string text, bool screenshot)
코드를 사용해서 스크린샷을 발송하는것으로 바꾸고싶어서요 어떻게 바꿔야할까요?

function setClock()
    return os.clock()
end

function getClock(_clock)
    if _clock ~= nil then
        return os.clock() - _clock
    else
        print('getClock() ERROR : _clock is null')
    end
end

-- 앱 동작 정지 감시 유사도, 판단 시간, 검사 간격 설정
STOP_JUDGE_ACC = 98 -- 유사도(%)
STOP_JUDGE_TIME = 10 -- 판단 시간(초)
STOP_CHECK_PERIOD = 3 -- 검사 간격(초)

-- 사용하는 앱의 해상도나 사이즈에 따라 변경 필수! 가로폭, 높이(w,h)
local screen_size = {w = 1000, h = 500}
local roi = {500, 400, screen_size.w, screen_size.h}

-- 현재 화면 저장 인스턴스 생성 및 스크린캡쳐
if tmp_screen == nil then
    tmp_screen = NewBits(screen_size.w, screen_size.h)
    CaptureScreen(tmp_screen, roi)
    stop_check_period = setClock()
end

-- 앱 정지판단 검사 간격 시간 도달, 캡쳐된 인스턴스와 현재화면 비교
if getClock(stop_check_period) >= STOP_CHECK_PERIOD then
    local acc, fx, fy = BitsSearch({bits = tmp_screen, w = screen_size.w, h = screen_size.h}, roi)
    print(string.format('>> 앱 정지 체크 시작 (%d초 마다 검사)', STOP_CHECK_PERIOD))
    print(string.format('( 화면유사도(acc)가 %d 이상일 경우 동작 정지 의심 )', STOP_JUDGE_ACC))
    print(string.format('[ acc : %f, fx : %d, fy : %d ]', acc, fx, fy))

    -- 설정한 유사도(기본값:98) 이상일시 앱 정지로 판단
    if acc >= STOP_JUDGE_ACC then
        if stop_check_time == nil then
            stop_check_time = setClock()
        end

        local sec = math.floor(getClock(stop_check_time))
        print(string.format('- 앱 정지 모니터 시간 : %d / %d 초', sec, STOP_JUDGE_TIME))

        -- 앱 정지 판단 설정 시간 보다 이상 정지 확인시 동작
        if getClock(stop_check_time) >= STOP_JUDGE_TIME then
            print('- 앱 정지 체크 결과 : 동작 정지 의심!')
            print('=============================================')

            -- 앱 정상동작으로 판단, 초기화
            ReleaseBits(tmp_screen)
            tmp_screen = nil
            stop_check_period = nil
            stop_check_time = nil
            
            OpenScript('재실행스크립트') -- 재실행용 스크립트 전환


            ld_quit() -- LD앱플레이어 종료 함수
            Sleep(1000)
            ld_launchex() -- LD앱플레이어 실행 및 지정앱 실행 함수
        end

    else
        -- 앱 정상동작으로 판단, 초기화
        ReleaseBits(tmp_screen)
        tmp_screen = nil
        stop_check_period = nil
        stop_check_time = nil
        print('- 앱 정지 체크 결과 : 동작 양호!')
        print('=============================================')
    end
end



profile_image 익명 작성일 -

안녕하세요. 스크립트를 사용해 이미지의 변경을 감지하고, 변경이 있을 때 스크린샷을 발송하는 기능을 추가하고자 하시는 것으로 이해했습니다. 아래는 수정된 코드입니다.

-- 앱 동작 정지 감시 유사도, 판단 시간, 검사 간격 설정

STOP_JUDGE_ACC = 98 -- 유사도(%)

STOP_JUDGE_TIME = 10 -- 판단 시간(초)

STOP_CHECK_PERIOD = 3 -- 검사 간격(초)

-- 사용하는 앱의 해상도나 사이즈에 따라 변경 필수! 가로폭, 높이(w,h)

local screen_size = {w = 1000, h = 500}

local roi = {500, 400, screen_size.w, screen_size.h}

-- 이전 프레임과 비교할 이미지 변수

local prev_frame = nil

-- 프레임 간격 측정을 위한 변수

local last_frame_time = os.clock()

-- 스크린샷 발송 함수

function send_screenshot()

-- 스크린샷 발송하는 코드 구현

-- SendKakaoTalk(string name, string text, bool screenshot)

end

while true do

-- 현재 화면 저장 인스턴스 생성 및 스크린캡쳐

local curr_frame = NewBits(screen_size.w, screen_size.h)

CaptureScreen(curr_frame, roi)

-- 이전 프레임이 존재하면 비교 if prev_frame ~= nil then -- 두 프레임의 유사도 계산 local acc = BitsSimilarity(prev_frame, curr_frame, {method = "ssim"}) -- 설정한 유사도(기본값:98) 이상일시 앱 정지로 판단 if acc < STOP_JUDGE_ACC then last_frame_time = os.clock() elseif os.clock() - last_frame_time >= STOP_JUDGE_TIME then send_screenshot() end end -- 이전 프레임 저장 및 변수 초기화 ReleaseBits(prev_frame) prev_frame = curr_frame curr_frame = nil Sleep(STOP_CHECK_PERIOD * 1000) -- 검사 간격 시간 만큼 대기

end

위 코드에서 스크린샷 발송하는 부분은 아직 구현되지 않았으므로, 해당 부분은 사용자의 필요에 따라 구현하셔야 합니다. 또한, 코드의 일부는 변경되지 않았지만, 스크린샷을 발송할 때 스크립트가 재실행되지 않고, 이미지 변경을 계속 감지할 수 있도록 수정했습니다.

HTML5 , Lua, C언어, JAVA 언어공부...

... 문의사항1 위 언어들은 모두 스크립트를 작성하기 위해... 각 언어들을 활용하기 위해서 사용하는 프로그램들이... Lua는 잘 모르겠고, 우선 Java부터 공부하시는게 낳을 듯...

저기요 컴파일질문좀 할게요 Lua도함께.

... 이걸어떻게사용하는지는안나와있더군요.. 아니면... 스크립트 언어중 하나입니다. 자세한건 http://www.lua.... 구동용 프로그램이 완성되어 나올겁니다. 실행하고...

루아(lua)고수분들 10번까지...

[ 제 1회 루아 (Lua) 퀴즈 ] - 답안 작성은 답안지... 게임가디언에서 사용 가능한 스크립트의... 5️⃣ monetary: 루아 프로그램에 아무 영향도 없다....

Python과 Lua 스크립트 언어 관련 질문

... Lua와 C언어의 혼용 Lua와 C언어가 혼용 될 수있다고... 대부분의 스크립트 언어는 동적 타이핑을 사용하기... 타 언어 혼용 실행되는 코드 자체와 프로그램을 혼동하여 생기는...

스크립트는 무엇인가요? 액션...

... 근데 스크립트는 이 프로세스를 제어하는데 사용합니다. 예를들어서 웹브라우저에... LUA스크립트로 내가 개발하는 프로그램에 스크립트를 적용 할 수도 있고요. 그외에...

안녕하세요 obs 관련 질문드립니다

... 안되는경우가있는대 프로그램 종료시 자동 저장되게 할수있는 방법도있나요... 자동 저장 스크립트 사용: OBS에서는 Lua 스크립트를 사용하여 자동 저장 기능을...

XML 의 사용용도 정도를,,,

... 애드온을 보면(제 개인적인 생각으로)XML과 lua로 구성이 된것 같은데요.. XML은 스크립트 언어와만 사용이... 복잡한 절차를 거치지 않고도 타 언어나 타 프로그램으로...

IoT개발에 제일 유용한 프로그래밍언어

... Lua: 경량 스크립트 언어로, IoT 장치의 제한된 자원에서 사용됩니다. 10. Ruby: 간결하고 직관적인 언어로, 프로토타입 개발 및 웹 서버에서 IoT 응용프로그램을 만드는...

로블록스 스튜디오 코딩

... Lua 라는 스크립트 언어를 사용하는데, Lua가 초보자에게 접근하기에 용이한 면이... 로블록스 스튜디오에서 Lua 스크립트 프로그램을 할때, 생각만큼 반응이 직관적이지...