응원봉 매크로 만들어옴
본문
많이들 응원봉 직접 복붙하기 힘들었지?
그래서 만들어왔어
니들이 입력한대로 응원봉을 대신 흔들어주는 프로그램이야
입력하는 방식이 좀 특이한데, 예를 들어
{
SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote SingsMic SingsNote
}
SingsNote SingsMic SingsNote SingsMic
end
라는 걸 입력하면
SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote SingsMic SingsNote
이 셋 중 하나를 랜덤으로 선택해서 채팅창에 쳐준 뒤
SingsNote SingsMic SingsNote SingsMic
이걸 채팅창에 쳐주는걸 반복해
저 중괄호는 여러번 쓸 수 있고, end를 입력하면 입력이 끝나
저 뒤에는 프로그램이 하라는대로 하면 할 수 있을거야
사용예시를 첨부할게
https://www.twitch.tv/popout/(스트리머 닉)/chat
이렇게 하고선 브라우저 3개 띄워놓고 모바일로 방송보면 계정 3개로 채팅치는 효과가 난다
화력이 3배인건 아니고 3명이 채팅을 치는 효과가 난다는거다
순서는 랜덤하다
물론 계정 하나로 방송보면서 응원봉 흔드는 기능도 넣어놨으니까 걱정하진 말고
마우스를 30픽셀 이상 움직이면 입력이 잠시 멈추고 다시 가져다대면 입력이 다시 시작돼
다운링크는 댓글에 둘게 알아서 써
개추눌러줘 나 이거 만드는데 힘들었어...
+) 코드 추가함 알아서 쓰셈 출처남겨주면 좋고
import pyautogui
import random
import pyperclip
import time
# python C:\Users\tasoo\PycharmProjects\study\chatmacro.py
# pyinstaller --onefile chatmacro.py
order = [] # 순서
chatdur = 2 # 제한시간
accountnum = 3 # 계정 개수
print(
'''
example
{
SingsNote SingsNote SingsNote SingsNote SingsNote SingsNote
SingsNote SingsNote SingsNote SingsNote SingsNote
SingsNote SingsNote SingsNote SingsNote
SingsNote SingsNote SingsNote
SingsNote SingsNote
}
{
SingsMic SingsMic SingsMic SingsMic SingsMic SingsMic
SingsMic SingsMic SingsMic SingsMic SingsMic
SingsMic SingsMic SingsMic SingsMic
SingsMic SingsMic SingsMic
SingsMic SingsMic
}
{
SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote
SingsMic SingsNote SingsMic SingsNote SingsMic SingsNote
}
SingsNote SingsMic SingsNote SingsMic
end
''') # 예시
while True:
inp = input() # 쳐야 할 채팅 입력
if inp == '': # 빈 문자열이 들어오면
continue # 스킵
if inp == 'end': # end라는 문자열이 들어오면
break # 입력 종료
if inp == '{': # 여는중괄호이면
order.append([]) # 리스트 추가
while True: # 무한반복
inp = input() # 입력
if inp == '}': # 만약 닫는중괄호가 들어오면
break # 무한반복 종료
else: # 닫는 중괄호가 아닌것이 들어오면
order[-1].append(inp) # 랜덤항목에 입력된걱 추가
else: # 여는중괄호가 아니면
order.append(inp) # 문자열 추가
chatdur = int(input("몇초에 한번 치실래요? (자연수만 받음) (1초로 설정하면 글로벌벤 당할 수도 있습니다) : "))
accountnum = int(input("계정 몇개로 치실래요? (자연수만 받음) : "))
print("3초 안에 채팅창을 띄우십시오...")
if accountnum == 1:
print("채팅창 위에 커서를 올려주세요...")
time.sleep(3)
while True:
for i in range(len(order)):
posnow = pyautogui.position() # 현재 커서위치 기록
if type(order[i]) is list: # 만약 중괄호 안의 문자열들 차례면
pyperclip.copy(random.choice(order[i])) # 중괄호 안의 문자열들 중 하나 뽑아서 복사
else:
pyperclip.copy(order[i]) # 해당 차례의 문자열 복사
pyautogui.click(posnow) # 기록된 커서위치 클릭
pyautogui.hotkey('ctrl', 'v') # 붙여넣기
pyautogui.press('enter') # 엔터
time.sleep(chatdur) # 아까 입력한 시간만큼 멈춤
t = list(pyautogui.position()) # 현재 커서위치 기록하고 만약 아까보다 30픽셀 이상 떨어져있으면
if t[0] - 30 > list(posnow)[0] or list(posnow)[0] < t[0] + 30 or t[1] - 30 > list(posnow)[1] or list(posnow)[1] > t[1] + 30:
while True: # 무한반복
t = list(pyautogui.position())
print(f"마우스 커서가 채팅창을 벗어났습니다! 응원봉을 계속 흔들고 싶으시다면 마우스를 {posnow}로 돌려놓으십쇼")
print(f"현재 마우스 위치 : {t}")
if t[0] - 30 < list(posnow)[0] < t[0] + 30 and t[1] - 30 < list(posnow)[1] < t[1] + 30: # 커서가 돌아오면
print("프로그램을 재시작합니다")
break
time.sleep(2)
else:
account = [] # 각 계정의 응원봉 흔드는 순서
locate = [] # 각 채팅창 위치
print("이제부터 텍스트가 시키는 대로 커서를 가져다 대십시오")
time.sleep(3)
for i in range(accountnum):
account.append(0)
print(f'{i + 1}번째 채팅창 위에 커서를 올리세요')
time.sleep(2)
locate.append(pyautogui.position()) # i + 1 번째 채팅창 위치 기록
print(locate) # 기록된 위치 출력
while True:
j = random.randint(0, accountnum-1) # 계정 중 하나 뽑기
pyautogui.click(locate[j]) # 해당 계정의 채팅창 클릭
account[j] = (account[j] + 1) % len(order) # 다음 응원봉 흔드는 순서
if type(order[account[j]]) is list: # 랜덤 돌려야 하면
pyperclip.copy(random.choice(order[account[j]])) # 랜덤 돌려서 하나 복사
else: # 아니면
pyperclip.copy(order[account[j]]) # 그냥 복사
pyautogui.hotkey('ctrl', 'v') # 붙여넣기
pyautogui.press('enter') # 엔터
time.sleep(chatdur) # 이하 윗부분 참고
t = list(pyautogui.position())
if t[0] - 30 > locate[j][0] or locate[j][0] > t[0] + 30 or t[1] - 30 > locate[j][1] or locate[j][1] > t[1] + 30:
while True:
t = list(pyautogui.position())
print(f"마우스 커서가 채팅창을 벗어났습니다! 응원봉을 계속 흔들고 싶으시다면 마우스를 {locate[j]}로 돌려놓으십쇼")
print(f"현재 마우스 위치 : {t}")
if t[0] - 30 < locate[j][0] < t[0] + 30 and t[1] - 30 < locate[j][1] < t[1] + 30:
print("프로그램을 재시작합니다")
break
time.sleep(2)
관련자료
댓글 0개
등록된 댓글이 없습니다.