如題,用python3實現 dota改建精靈。本質原理是通過改變鍵盤按鍵對映關係。比如按下數字鍵1,對映到字母a。對映關係可以自定義。 這樣就構成了改建邏輯。
實現工具清單如下:
完整**如下,可直接使用:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @date : 2020-09-05 19:13:10
# @author : nero
# @link :
# @version : dota技能一把梭
'''使用說明:
1). 根據需求修改keymap中對應的值,字母不區分大小寫
2). 程式執行後,通過「\」 開啟、關閉 鍵盤對映功能
'''#導入庫檔案
import pythoncom
import pyhook3
import win32api
import win32con
#構建對映關係
keymap=
#提示資訊
print
('author: nero\n'
)print
("裝備欄順序如下:\n裝備欄1 裝備欄2\n裝備欄3 裝備欄4\n裝備欄5 裝備欄6\n"
)#輸入各裝備欄的快捷鍵
for i in keymap:
keymap[i]
=input
('請輸入""的快捷鍵: '
.format
(i))
#改建開關提示
print
('\n請輸入 「\」 開啟改鍵功能\n'
)#開關flag
turnonoff=
'oem_5'
# 「\」 開啟/關閉 按鍵對映功能按鍵
startflag=
false
#開關函式
defswitchflag()
:global startflag
if startflag:
print
('功能停止'
) startflag=
false
else
:print
('功能開啟'
) startflag=
true
defcheckflag()
:return startflag
#主程式將一直監聽鍵盤輸入,並判斷是否是自定義的快捷鍵,根據判斷結果將指定的按鍵傳送給系統。
defonkeyboardevent
(event)
:#列印當前鍵盤輸入
print
('key: '
.format
(event.key)
)#程式開啟/關閉
ifstr
(event.key)
=='oem_5'
: switchflag(
)#如果程式開啟,如果檢測到按鍵為快捷鍵,則將該快捷鍵對映的值送給系統
if checkflag():
ifstr
(event.key)
.lower(
)== keymap[
'裝備欄1'
].lower():
win32api.keybd_event(
103,0,
0,0)
#對應小鍵盤7
win32api.keybd_event(
103,
0, win32con.keyeventf_keyup,0)
elif
str(event.key)
.lower(
)== keymap[
'裝備欄3'
].lower():
win32api.keybd_event(
100,0,
0,0)
#對應小鍵盤4
win32api.keybd_event(
100,
0, win32con.keyeventf_keyup,0)
elif
str(event.key)
.lower(
)== keymap[
'裝備欄5'
].lower():
win32api.keybd_event(97,
0,0,
0)#對應小鍵盤1
win32api.keybd_event(97,
0, win32con.keyeventf_keyup,0)
elif
str(event.key)
.lower(
)== keymap[
'裝備欄2'
].lower():
win32api.keybd_event(
104,0,
0,0)
#對應小鍵盤8
win32api.keybd_event(
104,
0, win32con.keyeventf_keyup,0)
elif
str(event.key)
.lower(
)== keymap[
'裝備欄4'
].lower():
win32api.keybd_event(
101,0,
0,0)
#對應小鍵盤5
win32api.keybd_event(
101,
0, win32con.keyeventf_keyup,0)
elif
str(event.key)
.lower(
)== keymap[
'裝備欄6'
].lower():
win32api.keybd_event(98,
0,0,
0)#對應小鍵盤2
win32api.keybd_event(98,
0, win32con.keyeventf_keyup,0)
else
:pass
# 返回 true 以便將事件傳給其它處理程式
# 注意,這兒如果返回 false ,則滑鼠事件將被全部攔截
# 也就是說你的輸入失效,似乎失去響應了
return
true
defmain()
:# 建立乙個「鉤子」管理物件
hm = pyhook3.hookmanager(
)# 監聽所有鍵盤事件
hm.keydown = onkeyboardevent
# 設定鍵盤「鉤子」
hm.hookkeyboard(
)# 進入迴圈,如不手動關閉,程式將一直處於監聽狀態
pythoncom.pumpmessages(
)if __name__ ==
"__main__"
: main(
)
WIN32編寫Warkey 實現改建
下面介紹下,利用win32編寫自己的warkey,實現改鍵,編譯出的 更小巧,希望對感興趣的朋友有些幫助。主要利用低階鍵盤和滑鼠鉤子,無需額外的dll,程式很小巧,主要 如下。ifndef winver define winver 0x0500 endif ifndef win32 winnt de...
python爬蟲 dota2上分ing
這是max 上一張英雄勝率圖 那麼我們怎麼獲取中的資訊並加以利用呢?1.編輯定向獲取該網頁的爬蟲,獲得上面的 姓名 勝率 使用次數 的資訊 新建爬蟲專案dotaitems 新建後的scrapy基本框架就是這樣子 分別說一下幾個部分 item.py相當於爬取到資料的容器 name scrapy.fie...
列舉類實現介面 精
列舉類實現介面 精 列舉類和普通類實現介面一樣嗎?列舉類實現介面與普通類實現介面是一樣的,都需要實現介面的抽象方法。但是!列舉類 實現介面的同乙個抽象方法,該抽象方法在列舉類不同物件實現不同的行為。如何實現那?簡單 只要在列舉類的每個物件都重寫該方法就可以做到不同物件實現該抽象方法不同的行為。定義乙...