오토핫키를 이용해서 만드는 세븐 나이츠 매크로
2015년 10월 22일 시작
==========================================================
비활성 픽셀 서치 함수,
결국 좌표식 서치로 만들어야 겠다!
먼저 무한의 탑을 완성 시켜보자.
대충 입장 순서를 정리하자면 [전투입장 -> 무한의 탑 -> 황금의 방 -> ~]
으로 진행이 되어지니깐.
먼저 전투 입장을 할 수있게 만들어야 겠지.
~ 제작 중 ~
2015년 10월 22일 끝
==========================================================
전체 페이지뷰
2015년 10월 22일 목요일
2015년 10월 21일 수요일
[세븐나이츠]오토핫키 프로그램 제작 5일차
오토핫키를 이용해서 만드는 세븐 나이츠 매크로
2015년 10월 21일 시작
==========================================================
비활성을 위한 소스 중 하나.
PixelColor(pc_x, pc_y, pc_wID)
{
If pc_wID
{
pc_hDC := DllCall("GetDC", "UInt", pc_wID)
WinGetPos, , , pc_w, pc_h, ahk_id %pc_wID%
pc_hCDC := CreateCompatibleDC(pc_hDC)
pc_hBmp := CreateCompatibleBitmap(pc_hDC, pc_w, pc_h)
pc_hObj := SelectObject(pc_hCDC, pc_hBmp)
pc_hmCDC := CreateCompatibleDC(pc_hDC)
pc_hmBmp := CreateCompatibleBitmap(pc_hDC, 1, 1)
pc_hmObj := SelectObject(pc_hmCDC, pc_hmBmp)
DllCall("PrintWindow", "UInt", pc_wID, "UInt", pc_hCDC, "UInt", 0)
DllCall("BitBlt" , "UInt", pc_hmCDC, "Int", 0, "Int", 0, "Int", 1, "Int", 1, "UInt", pc_hCDC, "Int", pc_x, "Int", pc_y, "UInt", 0xCC0020)
pc_fmtI := A_FormatInteger
SetFormat, Integer, Hex
DllCall("GetBitmapBits", "UInt", pc_hmBmp, "UInt", VarSetCapacity(pc_bits, 4, 0), "UInt", &pc_bits)
pc_c := NumGet(pc_bits, 0)
SetFormat, Integer, %pc_fmtI%
DeleteObject(pc_hBmp), DeleteObject(pc_hmBmp)
DeleteDC(pc_hCDC), DeleteDC(pc_hmCDC)
DllCall("ReleaseDC", "UInt", pc_wID, "UInt", pc_hDC)
Return pc_c
}
}
CreateCompatibleDC(hdc=0) {
return DllCall("CreateCompatibleDC", "UInt", hdc)
}
CreateCompatibleBitmap(hdc, w, h) {
return DllCall("CreateCompatibleBitmap", UInt, hdc, Int, w, Int, w)
}
SelectObject(hdc, hgdiobj) {
return DllCall("SelectObject", "UInt", hdc, "UInt", hgdiobj)
}
DeleteObject(hObject) {
Return, DllCall("DeleteObject", "UInt", hObject)
}
DeleteDC(hdc) {
Return, DllCall("DeleteDC", "UInt", hdc)
}
검색을 하다 찾은 소스인데
특정 응용프로그램이 최소화 되어있지 않다면
원하는 위치의 Pixel 값을 가져오는 기능!
즉, 화면이 가려져도 Pixel 값을 가져올수 있지!
하지만... 여기서 큰 문제점은
시간이 너무 오래걸려 ㅠ_ㅠ
물론 범위를 주고 최소한의 범위를 주면 시간도 줄겠지
그래! 그래서 범위를 가로 100픽셀 세로 40픽셀만 줘봤지.
ㅋㅋㅋㅋㅋ 스캔시간이 8초나 걸린다고
어짜피 세븐나이츠는 2D게임이니깐 고정좌표로 할까..?
흠...
2015년 10월 21일 끝
==========================================================
2015년 10월 21일 시작
==========================================================
비활성을 위한 소스 중 하나.
PixelColor(pc_x, pc_y, pc_wID)
{
If pc_wID
{
pc_hDC := DllCall("GetDC", "UInt", pc_wID)
WinGetPos, , , pc_w, pc_h, ahk_id %pc_wID%
pc_hCDC := CreateCompatibleDC(pc_hDC)
pc_hBmp := CreateCompatibleBitmap(pc_hDC, pc_w, pc_h)
pc_hObj := SelectObject(pc_hCDC, pc_hBmp)
pc_hmCDC := CreateCompatibleDC(pc_hDC)
pc_hmBmp := CreateCompatibleBitmap(pc_hDC, 1, 1)
pc_hmObj := SelectObject(pc_hmCDC, pc_hmBmp)
DllCall("PrintWindow", "UInt", pc_wID, "UInt", pc_hCDC, "UInt", 0)
DllCall("BitBlt" , "UInt", pc_hmCDC, "Int", 0, "Int", 0, "Int", 1, "Int", 1, "UInt", pc_hCDC, "Int", pc_x, "Int", pc_y, "UInt", 0xCC0020)
pc_fmtI := A_FormatInteger
SetFormat, Integer, Hex
DllCall("GetBitmapBits", "UInt", pc_hmBmp, "UInt", VarSetCapacity(pc_bits, 4, 0), "UInt", &pc_bits)
pc_c := NumGet(pc_bits, 0)
SetFormat, Integer, %pc_fmtI%
DeleteObject(pc_hBmp), DeleteObject(pc_hmBmp)
DeleteDC(pc_hCDC), DeleteDC(pc_hmCDC)
DllCall("ReleaseDC", "UInt", pc_wID, "UInt", pc_hDC)
Return pc_c
}
}
CreateCompatibleDC(hdc=0) {
return DllCall("CreateCompatibleDC", "UInt", hdc)
}
CreateCompatibleBitmap(hdc, w, h) {
return DllCall("CreateCompatibleBitmap", UInt, hdc, Int, w, Int, w)
}
SelectObject(hdc, hgdiobj) {
return DllCall("SelectObject", "UInt", hdc, "UInt", hgdiobj)
}
DeleteObject(hObject) {
Return, DllCall("DeleteObject", "UInt", hObject)
}
DeleteDC(hdc) {
Return, DllCall("DeleteDC", "UInt", hdc)
}
검색을 하다 찾은 소스인데
특정 응용프로그램이 최소화 되어있지 않다면
원하는 위치의 Pixel 값을 가져오는 기능!
즉, 화면이 가려져도 Pixel 값을 가져올수 있지!
하지만... 여기서 큰 문제점은
시간이 너무 오래걸려 ㅠ_ㅠ
물론 범위를 주고 최소한의 범위를 주면 시간도 줄겠지
그래! 그래서 범위를 가로 100픽셀 세로 40픽셀만 줘봤지.
ㅋㅋㅋㅋㅋ 스캔시간이 8초나 걸린다고
어짜피 세븐나이츠는 2D게임이니깐 고정좌표로 할까..?
흠...
2015년 10월 21일 끝
==========================================================
2015년 10월 16일 금요일
[세븐나이츠]오토핫키 프로그램 제작 4일차
오토핫키를 이용해서 만드는 세븐 나이츠 매크로
2015년 10월 17일 시작
==========================================================
일이 바빠서 프로그램에 전혀 손을 대지 못했네 ㅠㅠ
아! 그리고 일하면서 계속 생각하면서 시간 날 때마다 20~30분 실험을 했더니,
비활성이 가능하게 되었네? ㅋㅋㅋㅋ
소스를 활성 서치 -> 비활성 서치로 바꾸고.....
처음부터 다시 짜는게 좋겠지!
좋아. 이왕 비활성 도전하는거 다시 처음부터 짜보자!
음.. 그래도 클릭 함수와 키보드 함수는 쓸만할테니 그대로 쓰고.
Gui도 바꿀 필요 없으니 가져다가 쓰고.
~ 제작 중 ~
==========================================================
2015년 10월 17일 시작
==========================================================
일이 바빠서 프로그램에 전혀 손을 대지 못했네 ㅠㅠ
아! 그리고 일하면서 계속 생각하면서 시간 날 때마다 20~30분 실험을 했더니,
비활성이 가능하게 되었네? ㅋㅋㅋㅋ
소스를 활성 서치 -> 비활성 서치로 바꾸고.....
처음부터 다시 짜는게 좋겠지!
좋아. 이왕 비활성 도전하는거 다시 처음부터 짜보자!
음.. 그래도 클릭 함수와 키보드 함수는 쓸만할테니 그대로 쓰고.
Gui도 바꿀 필요 없으니 가져다가 쓰고.
~ 제작 중 ~
==========================================================
2015년 9월 28일 월요일
[세븐나이츠]오토핫키 프로그램 제작 3일차
오토핫키를 이용해서 만드는 세븐나이츠 매크로
2015년 9월 28일 3일차 시작
==========================================================
모양을 완성했으니 어떻게 세븐나이츠를 컴퓨터에서 자동화를 시킬 것인지 생각 해야겠지?
먼저 컴퓨터에서 세븐나이츠를 실행 시키는 방법을 알아보자.
컴퓨터에서 실행 시키는 방법은 에뮬레이터를 이용하는 방법.
내가 알고 있는 에뮬레이터들은
1. 블루스택
2. 앤디
3. 지니모션
4. 녹스
5. 윈드로이
6. 미러링 (ex. 모비즌)
대략 이정도?
어떤 에뮬레이터를 사용하는지에 따라서 만들어지는 프로그램의 방향도 달라지니깐
잘 선택해야지.
에뮬레이터에서 가장 만만한게
1번 블루스택과 6번 미러링 정도?
그 외에는 내가 잘 모르거나 또는 컴퓨터 사양이 많이 받쳐줘야 되기 때문!
1번 , 6번 어느걸로 할까.....는
1번으로 해야지 6번으로 하면 휴대폰을 계속 켜놔야 해서 번거롭잖아.
에뮬레이터를 정했으니 자동화를 어떻게 시킬껀지 정해야겠지?
자동화를 시키는 방법은 2가지
1. PixelSearch
2. ImageSearch
1번과 2번에는 서로 장단점이 있어.
1번의 경우는 속도가 빠르고 정확도가 높은 장점을 지니고 있지.
대신에 다른 컴퓨터에서 제대로 작동이 되질 않을 수도 있고,
만드는데 시간이 오래 걸려.
2번의 경우는 어느 컴퓨터에서도 작동이 되어질 확률이 높아.
대신에 속도가 1번보다는 느리고 엉뚱한 것을 검색 할 수도 있고,
만드는데 시간이 오래 걸리지 않아.
그렇다면 몇 번으로 만드는게 좋을까?
역시 2번이지!
왜냐하면 꼭 내 컴퓨터에서만 쓴다는 보장이 없잖아?
내 컴퓨터를 못쓰게 되는 상황이 올 수도 있는거지.
그리고 만드는데 걸리는 시간도 1번 보다는 훨~씬 덜 걸리니깐 말이야!
그렇다면 ImageSerch에 대해서 잘 알아야겠지?
ImageSerch , 저장할X , 저장할Y , 시작X1 , 시작Y1 , 끝X2 , 끝Y2 , ImageFile(옵션)
참고로 이미지서치는 CoordMood를 사용해야 돼.
단순히 ImageSerch만 컴퓨터 해상도 내에 어디서 무엇이 진행되는지는 알 수가 없어.
왜냐고? 컴퓨터 해상도 내에 에뮬레이터가 어디있는지 알고 시작점을 만든다는 거야?
그러니깐 에뮬레이터가 어디있는지 알아야 겠지?
에뮬레이터가 어디있는지 알기 위해선 다른 명령어가 필요해.
바로 WinGetPos 라는 명령어지.
음.... 어디 한번 만들어 볼까?
========================== 코드 ============================
==========================================================
음..... 문제가 있군.
Msgbox와 전체적으로 말이야.
Msgbox가 뜨게되면 진행이 멈추게 되고,
저렇게 소스를 사용 하게되면
계속해서 저걸 써야하니 줄수가 매우 길어지겠지..?
어디보자.. 줄일 수 있는 방법이....
========================== 코드 ============================
이렇게 만들면
내가 필요할 때마다 호출 하면 되니,
저 많은 것들이 1줄로 요약 된다는 말씀.
이미지검색(ClickX,ClickY,UseError,경로) <- 와 같이 말이야.
그렇다면 소스는 해결 되었고,
Msgbox는 어떻게 처리할까?
음... 음....
아! 기록! 기록을 남기자!!
Gui에 기록을 저장 하는거지. 그러면 어디서 오류가 나는지도 알 수 있고,
진행도 막히지 않으니 좋잖아?
기록이라.. 어떻게 구현해야 될까?
가능성이 있는 Gui는 ListBox밖에 없나?
ListBox를 이용해서 함수를 만든 다음에 내가 필요한 곳에서
기록이 되도록 만들면 되려나?? 에라 모르겠다!! 일단 만들어보자!
========================== 코드 =========-==================
이런식으로 기록을 할 함수를 만들어 두고
변수 := "기록"
MyLog(변수)
또는
기록 := "기록"
변수 = %기록%
MyLog(변수)
를 이용해서 ListBox에 계속해서 Text를 남기면서
마지막에 적힌 Text를 선택을 하도록 만드는거지!
그렇다면 위에 코드도 이렇게 바뀔수가 있지!
이런식으로 말이야!
=========================================================
후... 오늘은 여기까지!
이미지검색 함수를 만들었으니,
마우스 관련 함수(클릭)와키보드 관련 함수를 만들면 함수 부분은 이로써 끝!!
※주의※
내가 올려둔 코드를 이용 또는 스크랩 할 때는 반드시 출처를 남겨주길 바래.
그리고 소스에 일부로 오타를 냈으니 찾아서 수정하길 바래~
2015년 9월 28일 3일차 끝~
==========================================================
==========================================================
모양을 완성했으니 어떻게 세븐나이츠를 컴퓨터에서 자동화를 시킬 것인지 생각 해야겠지?
먼저 컴퓨터에서 세븐나이츠를 실행 시키는 방법을 알아보자.
컴퓨터에서 실행 시키는 방법은 에뮬레이터를 이용하는 방법.
내가 알고 있는 에뮬레이터들은
1. 블루스택
2. 앤디
3. 지니모션
4. 녹스
5. 윈드로이
6. 미러링 (ex. 모비즌)
대략 이정도?
어떤 에뮬레이터를 사용하는지에 따라서 만들어지는 프로그램의 방향도 달라지니깐
잘 선택해야지.
에뮬레이터에서 가장 만만한게
1번 블루스택과 6번 미러링 정도?
그 외에는 내가 잘 모르거나 또는 컴퓨터 사양이 많이 받쳐줘야 되기 때문!
1번 , 6번 어느걸로 할까.....는
1번으로 해야지 6번으로 하면 휴대폰을 계속 켜놔야 해서 번거롭잖아.
에뮬레이터를 정했으니 자동화를 어떻게 시킬껀지 정해야겠지?
자동화를 시키는 방법은 2가지
1. PixelSearch
2. ImageSearch
1번과 2번에는 서로 장단점이 있어.
1번의 경우는 속도가 빠르고 정확도가 높은 장점을 지니고 있지.
대신에 다른 컴퓨터에서 제대로 작동이 되질 않을 수도 있고,
만드는데 시간이 오래 걸려.
2번의 경우는 어느 컴퓨터에서도 작동이 되어질 확률이 높아.
대신에 속도가 1번보다는 느리고 엉뚱한 것을 검색 할 수도 있고,
만드는데 시간이 오래 걸리지 않아.
그렇다면 몇 번으로 만드는게 좋을까?
역시 2번이지!
왜냐하면 꼭 내 컴퓨터에서만 쓴다는 보장이 없잖아?
내 컴퓨터를 못쓰게 되는 상황이 올 수도 있는거지.
그리고 만드는데 걸리는 시간도 1번 보다는 훨~씬 덜 걸리니깐 말이야!
그렇다면 ImageSerch에 대해서 잘 알아야겠지?
ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
간단하게 해석하자면 이정도랄까...?ImageSerch , 저장할X , 저장할Y , 시작X1 , 시작Y1 , 끝X2 , 끝Y2 , ImageFile(옵션)
참고로 이미지서치는 CoordMood를 사용해야 돼.
단순히 ImageSerch만 컴퓨터 해상도 내에 어디서 무엇이 진행되는지는 알 수가 없어.
왜냐고? 컴퓨터 해상도 내에 에뮬레이터가 어디있는지 알고 시작점을 만든다는 거야?
그러니깐 에뮬레이터가 어디있는지 알아야 겠지?
에뮬레이터가 어디있는지 알기 위해선 다른 명령어가 필요해.
바로 WinGetPos 라는 명령어지.
WinGetPos [, X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText]
이걸 이용하면 간단하게 ImageSerach를 사용할 수가 있지.음.... 어디 한번 만들어 볼까?
========================== 코드 ============================
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
|
CoordMood , Peixel , Screen ; 좌표를 Peixel 모드 / 찾는 화면을 Screen 모드
WinGetPos , GetX , GetY , GetW , GetH , BlueStacks App Player ; 블루스택의 좌표를 가져옴
SysSet , GetF , 7 ; 테마의 프레임 값을 가져옴.
SysSet , GetC , 4 ; 테마의 캡션 값을 가져옴.
; 블루스택의 시작점 좌표 구하기
sX := GetX + GetF
sY := GetY + GetF + GetC
; 블루스택의 끝점 좌표 구하기
sX2 := GetX + GetW - GetF
sY2 := GetY + GetH - GetF
; 오차 60%로 찾는다.
ImageFile := ;아직 이미지 파일 없음.
ImageSerach , vX , vY , sX , sY , sX2 , sY2 , *100 %ImageFile% ;아직 이미지 파일이 없음.
IfExist , %ImageFile% ; 만약에 이미지 파일이 없다면.
{
msgbox , 48 , 오류 , 이미지 파일이 해당 경로에 없음. %ImageFile%
}
if(ErrorLevel = 2)
{
msgbox , 48 , 오류 , ImageSearch에 오류가 생김.
}
if(ErrorLevel = 1)
{
msgbox , 48 , 오류 , 이미지를 찾지 못함.
}
if(ErrorLevel = 0) ; 검색에 성공하면 클릭할 X , Y값을 저장.
{
ClickX := vX - GetX - 22 ;좌표가 Screen모드이기 때문에 GetX와 GetY값을 빼줌.
ClickY := vY - GetY - 22 ;22는 블루스택 하단 검은색 줄.
}
|
==========================================================
음..... 문제가 있군.
Msgbox와 전체적으로 말이야.
Msgbox가 뜨게되면 진행이 멈추게 되고,
저렇게 소스를 사용 하게되면
계속해서 저걸 써야하니 줄수가 매우 길어지겠지..?
어디보자.. 줄일 수 있는 방법이....
========================== 코드 ============================
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
|
이미지검색(ByRef ClickX , ByRef ClickY , UseError , ImageFile)
{
CoordMood , Peixel , Screen ; 좌표를 Peixel 모드 / 찾는 화면을 Screen 모드
WinGetPos , GetX , GetY , GetW , GetH , BlueStacks App Player ; 블루스택의 좌표를 가져옴
SysSet , GetF , 7 ; 테마의 프레임 값을 가져옴.
SysSet , GetC , 4 ; 테마의 캡션 값을 가져옴.
; 블루스택의 시작점 좌표 구하기
sX := GetX + GetF
sY := GetY + GetF + GetC
; 블루스택의 끝점 좌표 구하기
sX2 := GetX + GetW - GetF
sY2 := GetY + GetH - GetF
ImageSerach , vX , vY , sX , sY , sX2 , sY2 , *%UseError% %ImageFile% ;아직 이미지 파일이 없음.
IfExist , %ImageFile% ; 만약에 이미지 파일이 없다면.
{
msgbox , 48 , 오류 , 이미지 파일이 해당 경로에 없음. %ImageFile%
return false
}
if(ErrorLevel = 2)
{
msgbox , 48 , 오류 , ImageSearch에 오류가 생김.
return false
}
if(ErrorLevel = 1)
{
msgbox , 48 , 오류 , 이미지를 찾지 못함.
return false
}
if(ErrorLevel = 0) ; 검색에 성공하면 Click할 X , Y값을 저장.
{
ClickX := vX - GetX - 22 ; 좌표가 Screen모드이기 때문에 GetX와 GetY값을 빼줌.
ClickY := vY - GetY - 22 ; 22는 블루스택 하단 검은색 줄.
return true
}
}
|
이렇게 만들면
내가 필요할 때마다 호출 하면 되니,
저 많은 것들이 1줄로 요약 된다는 말씀.
이미지검색(ClickX,ClickY,UseError,경로) <- 와 같이 말이야.
그렇다면 소스는 해결 되었고,
Msgbox는 어떻게 처리할까?
음... 음....
아! 기록! 기록을 남기자!!
Gui에 기록을 저장 하는거지. 그러면 어디서 오류가 나는지도 알 수 있고,
진행도 막히지 않으니 좋잖아?
기록이라.. 어떻게 구현해야 될까?
가능성이 있는 Gui는 ListBox밖에 없나?
ListBox를 이용해서 함수를 만든 다음에 내가 필요한 곳에서
기록이 되도록 만들면 되려나?? 에라 모르겠다!! 일단 만들어보자!
========================== 코드 =========-==================
1
2
3
4
5
6
7
8
9
10
11
12
|
MyLog(WriteLog)
{
GuiControl, Font , LogList
LogList := WriteLog "|"
GuiControl, , LogList , %LogList%
GuiControl, Choose , %nWriteLog%
nWriteLog++
return
}
|
이런식으로 기록을 할 함수를 만들어 두고
변수 := "기록"
MyLog(변수)
또는
기록 := "기록"
변수 = %기록%
MyLog(변수)
를 이용해서 ListBox에 계속해서 Text를 남기면서
마지막에 적힌 Text를 선택을 하도록 만드는거지!
그렇다면 위에 코드도 이렇게 바뀔수가 있지!
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
|
이미지검색(ByRef ClickX , ByRef ClickY , UseError , ImageFile)
{
CoordMood , Peixel , Screen ; 좌표를 Peixel 모드 / 찾는 화면을 Screen 모드
WinGetPos , GetX , GetY , GetW , GetH , BlueStacks App Player ; 블루스택의 좌표를 가져옴
SysSet , GetF , 7 ; 테마의 프레임 값을 가져옴.
SysSet , GetC , 4 ; 테마의 캡션 값을 가져옴.
; 블루스택의 시작점 좌표 구하기
sX := GetX + GetF
sY := GetY + GetF + GetC
; 블루스택의 끝점 좌표 구하기
sX2 := GetX + GetW - GetF
sY2 := GetY + GetH - GetF
ImageSerach , vX , vY , sX , sY , sX2 , sY2 , *%UseError% %ImageFile% ;아직 이미지 파일이 없음.
IfExist , %ImageFile% ; 만약에 이미지 파일이 없다면.
{
WriteLog := " 오류 발생 " ImageFile " 없음."
MyLog(WriteLog)
return false
}
if(ErrorLevel = 2)
{
WriteLog := " 오류 발생 !!"
MyLog(WriteLog)
return false
}
if(ErrorLevel = 1)
{
WriteLog := " 이미지 못 찾음 !! " ImageFile
MyLog(WriteLog)
return false
}
if(ErrorLevel = 0) ; 검색에 성공하면 Click할 X , Y값을 저장.
{
WriteLog := " 이미지 찾음 !! " ImageFile
MyLog(WriteLog)
ClickX := vX - GetX - 22 ; 좌표가 Screen모드이기 때문에 GetX와 GetY값을 빼줌.
ClickY := vY - GetY - 22 ; 22는 블루스택 하단 검은색 줄.
return true
}
}
|
이런식으로 말이야!
=========================================================
후... 오늘은 여기까지!
이미지검색 함수를 만들었으니,
마우스 관련 함수(클릭)와키보드 관련 함수를 만들면 함수 부분은 이로써 끝!!
※주의※
내가 올려둔 코드를 이용 또는 스크랩 할 때는 반드시 출처를 남겨주길 바래.
그리고 소스에 일부로 오타를 냈으니 찾아서 수정하길 바래~
2015년 9월 28일 3일차 끝~
==========================================================
2015년 9월 27일 일요일
[세븐나이츠]오토핫키 프로그램 제작 2일차
오토핫키를 이용해서 만드는 세븐나이츠 매크로
2015년 9월 27일 2일차 시작
==========================================================
추석 연휴!
오늘은 24일날 만든 프로그램 창을 꾸며보자!
음.. 일단 프로그램의 창은 작을 수록 좋겠지. 크면 거슬리고 불편하잖아?
그렇다면 어느정도 크기가 적당할까?
모바일로도 사용하는 컨텐츠가
모험(쫄작)과 무한의 탑(황금의 방)과 결투장과 레이드 뿐이지?
그럼 적당히 300*100으로 하고,
다른 것들은 또 다른 창이 띄워지게 만들어가면 되겠지.
어디어디 보자...
R 적혀있는 버튼은 프로그램을 재시작하는 기능이고,
★ 적혀있는 버튼은 Adventure(모험)설정을 할 수 있는 창이 띄워지는 것이고,
◆ 적혀있는 버튼은
GoldRoom(황금의 방)과 Battle(결투장)설정을 할 수 있는 창이 띄워지는 것이고,
● 적혀있는 버튼은 Raid(레이드)설정을 할 수 있는 창이 띄워지는 것이고,
♥ 적혀있는 버튼은 프로그램의 편의를 설정 할 수있는 창이 띄워지는 것이고,
Start 적혀있는 버튼은 위에 CheckBox를 체크한 기능을 반복을 실행 시키는 버튼으로
만들었는데....
내가 디자인에 전혀 재주가 없다고 생각했는데 전혀는 아니였나 보네.
저기 빈 공간에는 프로그램이 어디 진행하고있는지 알 수 있게 표시해둬야지~
일단 껍데기(디자인)는 완성.
껍데기를 완성 시켰으니 속을 채워야 겠지.
어느 속부터 채워볼까?라고 고민 할 필요는 없겠구나.
~깐니이험모 은것 한요중 장가 서에츠이나븐세
먼저 모험을 돌기 위해서 필요 한 것들을 정리하자.
======================== 정리 목록 ===========================
1. 맵
어디를 돌아야 하는지 확실히 정해야겠지.
아스드대륙 / 달빛의 섬 으로 구분하고,
아스드대륙은 영지별로 1~10번을 구분할 수 있게 만들고,
달빛의 섬은 영지별로 1~15번을 구분할 수 있게 만들면 되겠지.
2. 난이도
꼭 난이도가 고정 된다는 보장은 없잖아?
내가 보통이나 쉬움도 돌아야하는 때가 올 수 도있으니깐
쉬움/보통/어려움 으로 나누자.
어짜피 난이도를 변경해도 영지 위치는 같으니깐 말이지 ' -' =3
3. 팀
내가 모험을 돌 때 몇 번팀을 돌것인지를 정해둬야 편하겠고,
1번팀은 모험 / 2번팀은 황금의방 / 3번팀은 요일던전 등으로 셋팅해두고
원하는 팀으로 바로바로 변경해서 돌아야 신속하겠지.
4. 진형
내가 보호진형을 매우 선호하는 편히지만,
쫄작 할 때는 공격진형을 선호하는 편이지.
그러니깐 보호진형,공격진형 이렇게 두가지를 추가하자.
5. 영웅교체
영웅교체 만큼 중요한 것은 없다고 생각한다.
30레벨을 달성한 영웅을 구별하는 것과 30레벨이 아닌 영웅과
팀에 참여 중인 영웅과 중복이 되지 않게 구별하는게 가장 중요하다고 생각한다.
위에 처럼 구분하지 않고 순서대로 하게되면,
매크로의 속도는 매우 느려지기 때문이다.
그러니깐 영웅교체는 다른 목록보다 가장 오래걸리는 항목이다.
6. 스킬
모험을 돌 때 스킬을 사용한다.
이것은 가장 세븐나이츠에서는 기본적이다.
물론 스킬을 안 쓸수도 있지만, 거의 다 쓴다고 봐도 무방하다.
스킬도 웨이브별로 몇번 영웅이 어느 스킬을 사용 할 것인지 정확하게 구분하게
만들어야 한다.
또한 다음 웨이브로 넘어갈 때 전 웨이브 스킬을 해지하게 만들어야 되겠고,
각성스킬과 스킬을 지정하지 않았을 때 자동으로 스킬이 나가는 자동스킬 버튼을
활성화 시키는지 안 시키는지도 추가해야 한다.
그 외에의 부가기능은 필요하다고 생각되는 것들만 추가하면서 나아가면 된다.
=========================================================
모험을 어떻게 효율적으로 빠르게 돌 것인가?를 어떻게 구성해야 좋을까
하고 생각하는데 시간이 오래 걸렸다.(오래 걸릴 것도 아닌데..)
위에 있는 정리 한 것들을 천천히 만들어나가야 겠다.
2015년 9월 27일 끝!
==========================================================
==========================================================
추석 연휴!
오늘은 24일날 만든 프로그램 창을 꾸며보자!
음.. 일단 프로그램의 창은 작을 수록 좋겠지. 크면 거슬리고 불편하잖아?
그렇다면 어느정도 크기가 적당할까?
모바일로도 사용하는 컨텐츠가
모험(쫄작)과 무한의 탑(황금의 방)과 결투장과 레이드 뿐이지?
그럼 적당히 300*100으로 하고,
다른 것들은 또 다른 창이 띄워지게 만들어가면 되겠지.
~
- 형태 제작 중 -
~
어디어디 보자...
R 적혀있는 버튼은 프로그램을 재시작하는 기능이고,
★ 적혀있는 버튼은 Adventure(모험)설정을 할 수 있는 창이 띄워지는 것이고,
◆ 적혀있는 버튼은
GoldRoom(황금의 방)과 Battle(결투장)설정을 할 수 있는 창이 띄워지는 것이고,
● 적혀있는 버튼은 Raid(레이드)설정을 할 수 있는 창이 띄워지는 것이고,
♥ 적혀있는 버튼은 프로그램의 편의를 설정 할 수있는 창이 띄워지는 것이고,
Start 적혀있는 버튼은 위에 CheckBox를 체크한 기능을 반복을 실행 시키는 버튼으로
만들었는데....
내가 디자인에 전혀 재주가 없다고 생각했는데 전혀는 아니였나 보네.
저기 빈 공간에는 프로그램이 어디 진행하고있는지 알 수 있게 표시해둬야지~
일단 껍데기(디자인)는 완성.
껍데기를 완성 시켰으니 속을 채워야 겠지.
어느 속부터 채워볼까?라고 고민 할 필요는 없겠구나.
~깐니이험모 은것 한요중 장가 서에츠이나븐세
먼저 모험을 돌기 위해서 필요 한 것들을 정리하자.
======================== 정리 목록 ===========================
1. 맵
어디를 돌아야 하는지 확실히 정해야겠지.
아스드대륙 / 달빛의 섬 으로 구분하고,
아스드대륙은 영지별로 1~10번을 구분할 수 있게 만들고,
달빛의 섬은 영지별로 1~15번을 구분할 수 있게 만들면 되겠지.
2. 난이도
꼭 난이도가 고정 된다는 보장은 없잖아?
내가 보통이나 쉬움도 돌아야하는 때가 올 수 도있으니깐
쉬움/보통/어려움 으로 나누자.
어짜피 난이도를 변경해도 영지 위치는 같으니깐 말이지 ' -' =3
3. 팀
내가 모험을 돌 때 몇 번팀을 돌것인지를 정해둬야 편하겠고,
1번팀은 모험 / 2번팀은 황금의방 / 3번팀은 요일던전 등으로 셋팅해두고
원하는 팀으로 바로바로 변경해서 돌아야 신속하겠지.
4. 진형
내가 보호진형을 매우 선호하는 편히지만,
쫄작 할 때는 공격진형을 선호하는 편이지.
그러니깐 보호진형,공격진형 이렇게 두가지를 추가하자.
5. 영웅교체
영웅교체 만큼 중요한 것은 없다고 생각한다.
30레벨을 달성한 영웅을 구별하는 것과 30레벨이 아닌 영웅과
팀에 참여 중인 영웅과 중복이 되지 않게 구별하는게 가장 중요하다고 생각한다.
위에 처럼 구분하지 않고 순서대로 하게되면,
매크로의 속도는 매우 느려지기 때문이다.
그러니깐 영웅교체는 다른 목록보다 가장 오래걸리는 항목이다.
6. 스킬
모험을 돌 때 스킬을 사용한다.
이것은 가장 세븐나이츠에서는 기본적이다.
물론 스킬을 안 쓸수도 있지만, 거의 다 쓴다고 봐도 무방하다.
스킬도 웨이브별로 몇번 영웅이 어느 스킬을 사용 할 것인지 정확하게 구분하게
만들어야 한다.
또한 다음 웨이브로 넘어갈 때 전 웨이브 스킬을 해지하게 만들어야 되겠고,
각성스킬과 스킬을 지정하지 않았을 때 자동으로 스킬이 나가는 자동스킬 버튼을
활성화 시키는지 안 시키는지도 추가해야 한다.
그 외에의 부가기능은 필요하다고 생각되는 것들만 추가하면서 나아가면 된다.
=========================================================
모험을 어떻게 효율적으로 빠르게 돌 것인가?를 어떻게 구성해야 좋을까
하고 생각하는데 시간이 오래 걸렸다.(오래 걸릴 것도 아닌데..)
위에 있는 정리 한 것들을 천천히 만들어나가야 겠다.
2015년 9월 27일 끝!
==========================================================
2015년 9월 24일 목요일
[세븐나이츠]오토핫키 프로그램 제작 1일차
오토핫키를 이용해서 만드는 세븐나이츠 매크로
2015년 9월 24일 1일차 시작
==========================================================
내가 좋아하는 모바일 게임 '세븐나이츠' 매크로를 만들어 보자!
음... 구성을 어떻게 하는게 좋을까.
형태를 만들어 놓고 작동 스크립트를 짤까?
아니면 작동 스크립트를 먼저 짜고 그 뒤에 형태를 만들어 갈까?
어떤 방법이 편할까.
- 1시간 고민 후 -
아! 크게 고민 할 필요는 없는거 같아. 고민 하면 고민으로 끝날거 같아.
일단 부딪치고 보는게 어떨까?
좋아. 형태부터 만들고 기능을 추가하도록 하자!
기본적으로 세븐나이츠에 있어서 컨텐츠는 정해져있잖아?
가장 중요한 루비작(쫄작)이니깐 말이야.
그래도 그냥 만들기엔 재미가 없겠지?
이것 저것 다양하게 재미있게 추가해보자 ㅋㅋ
아아! 그전에 프로그램 이름을 지어야 하잖아! 어떻게 지을까?
끙... 어디보자 내가 오토핫키를 다루는게 아직 초보 수준이니깐.
"Autohotkey Biginner Programmers Seven Kinght"
.....너무 길잖아 앞자만 따서 합쳐볼까?
"ABPSK"
무언가 조금 허접한 이름이야. 어떻게 하면 괜찮아 질까?
오토핫키 초보 프로그래머 와 세븐나이츠를 따로 나누고 버전을 넣어보자.
"Abp_Sk 1.0ver"
오! 역시 이렇게 하니깐 나아졌잖아? ㅋㅋ
그럼 이제 만들어 볼까?
♬ 어떻게 만들어 볼까~ 음음~ ♬
~
- 형태 제작 중 -
~
짠!
일단 실행하면 처음엔 계산기 프로그램인 '척' 할꺼야.
내가 따로 지정해둔 번호를 입력 후에 "code"라고 순서대로 치면
메인 창이 나오게 말이야. 후후후!
먼저 내가 지정해둔 코드 번호는 15 하나야.
1버튼과 5버튼을 눌러서
15를 입력하고
이렇게 15가 입력 됬을 때 말이야
"code"라고 치면!
짠! 처음에 있던 계산기 화면은 없어지고
메인화면이 나오게 되지!
이렇게 만들고 나서 느끼는게
"오토핫키는 정말 간단하고 빠르게 제작 할 수 있구나!"
라는게 느껴져
그리고 오늘은 여기까지~
하루에 너무 몰두해도 좋을건 없지.
천천히 원하는 기능을 빼먹지 않고 진행하는게 중요하니깐.
2015년 9월 24일 1일차 끝
==========================================================
피드 구독하기:
글 (Atom)