dnf python自动搬砖定制脚本

   广告:

信号屏蔽器:守护你的数字生活,为你带来宁静与专注

https://sz-sstx.com 

恩山,修罗

驱动级键盘操作跳过检测

结合opencv简单识别图像

直接上代码

import time

import cv2
import numpy as np
import win32api
import win32con
import ctypes
import win32gui
import random
import threading
from PIL import Image
from PIL import ImageGrab
import time
isEnd = False
VK_CODE = {
    'backspace': 0x08,
    'tab': 0x09,
    'clear': 0x0C,
    'enter': 0x0D,
    'shift': 0x10,
    'ctrl': 0x11,
    'alt': 0x12,
    'pause': 0x13,
    'caps_lock': 0x14,
    'esc': 0x1B,
    'spacebar': 0x20,
    'page_up': 0x21,
    'page_down': 0x22,
    'end': 0x23,
    'home': 0x24,
    'left_arrow': 0x25,
    'up_arrow': 0x26,
    'right_arrow': 0x27,
    'down_arrow': 0x28,
    'select': 0x29,
    'print': 0x2A,
    'execute': 0x2B,
    'print_screen': 0x2C,
    'ins': 0x2D,
    'del': 0x2E,
    'help': 0x2F,
    '0': 0x30,
    '1': 0x31,
    '2': 0x32,
    '3': 0x33,
    '4': 0x34,
    '5': 0x35,
    '6': 0x36,
    '7': 0x37,
    '8': 0x38,
    '9': 0x39,
    'a': 0x41,
    'b': 0x42,
    'c': 0x43,
    'd': 0x44,
    'e': 0x45,
    'f': 0x46,
    'g': 0x47,
    'h': 0x48,
    'i': 0x49,
    'j': 0x4A,
    'k': 0x4B,
    'l': 0x4C,
    'm': 0x4D,
    'n': 0x4E,
    'o': 0x4F,
    'p': 0x50,
    'q': 0x51,
    'r': 0x52,
    's': 0x53,
    't': 0x54,
    'u': 0x55,
    'v': 0x56,
    'w': 0x57,
    'x': 0x58,
    'y': 0x59,
    'z': 0x5A,
    'numpad_0': 0x60,
    'numpad_1': 0x61,
    'numpad_2': 0x62,
    'numpad_3': 0x63,
    'numpad_4': 0x64,
    'numpad_5': 0x65,
    'numpad_6': 0x66,
    'numpad_7': 0x67,
    'numpad_8': 0x68,
    'numpad_9': 0x69,
    'multiply_key': 0x6A,
    'add_key': 0x6B,
    'separator_key': 0x6C,
    'subtract_key': 0x6D,
    'decimal_key': 0x6E,
    'divide_key': 0x6F,
    'F1': 0x70,
    'F2': 0x71,
    'F3': 0x72,
    'F4': 0x73,
    'F5': 0x74,
    'F6': 0x75,
    'F7': 0x76,
    'F8': 0x77,
    'F9': 0x78,
    'F10': 0x79,
    'F11': 0x7A,
    'F12': 0x7B,
    'F13': 0x7C,
    'F14': 0x7D,
    'F15': 0x7E,
    'F16': 0x7F,
    'F17': 0x80,
    'F18': 0x81,
    'F19': 0x82,
    'F20': 0x83,
    'F21': 0x84,
    'F22': 0x85,
    'F23': 0x86,
    'F24': 0x87,
    'num_lock': 0x90,
    'scroll_lock': 0x91,
    'left_shift': 0xA0,
    'right_shift ': 0xA1,
    'left_control': 0xA2,
    'right_control': 0xA3,
    'left_menu': 0xA4,
    'right_menu': 0xA5,
    'browser_back': 0xA6,
    'browser_forward': 0xA7,
    'browser_refresh': 0xA8,
    'browser_stop': 0xA9,
    'browser_search': 0xAA,
    'browser_favorites': 0xAB,
    'browser_start_and_home': 0xAC,
    'volume_mute': 0xAD,
    'volume_Down': 0xAE,
    'volume_up': 0xAF,
    'next_track': 0xB0,
    'previous_track': 0xB1,
    'stop_media': 0xB2,
    'play/pause_media': 0xB3,
    'start_mail': 0xB4,
    'select_media': 0xB5,
    'start_application_1': 0xB6,
    'start_application_2': 0xB7,
    'attn_key': 0xF6,
    'crsel_key': 0xF7,
    'exsel_key': 0xF8,
    'play_key': 0xFA,
    'zoom_key': 0xFB,
    'clear_key': 0xFE,
    '+': 0xBB,
    ',': 0xBC,
    '-': 0xBD,
    '.': 0xBE,
    '/': 0xBF,
    ' ': 0xBA,
    '[': 0xDB,
    '\\': 0xDC,
    ']': 0xDD,
    "'": 0xDE,
    '`': 0xC0}


# handle = win32gui.FindWindow(None, '地下城与勇士')
# win32gui.SetForegroundWindow(handle)
# 获取随机时间上下0.1倍浮动
def getRandomTime(t):
    t0 = t - t * 0.01
    t2 = t + t * 0.01
    # print("左边界",t0)
    # print("有边界",t2)
    t1 = random.uniform(t0, t2)
    # print("随机结果",t1)
    return t1

    # 等待操作


def sleep(t):
    time.sleep(getRandomTime(t))

    # 按键操作(按一次松)


def keyOperation(button, t):
    win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), 0, 0)  # 0
    t = getRandomTime(t)
    sleep(t)
    win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), win32con.KEYEVENTF_KEYUP, 0)
    sleep(0.1)
    # 加破击兵刃

    # 按下某个键


def keyOn(button):
    win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), 0, 0)  # 0


def keyOf(button):
    win32api.keybd_event(VK_CODE[button], win32api.MapVirtualKey(VK_CODE[button], 0), win32con.KEYEVENTF_KEYUP, 0)


def getbuff1():

     keyOperation("q",0.4)

    # 加流行狂


def getbuff2():
    keyOperation("d", 0.05)
    keyOperation("d", 0.1)
    keyOperation("j", 0.1)


    # 流星升+刺


def liuxingsheng():
    keyOperation("o", 0.1)
    keyOperation("l", 0.2)
    sleep(0.5)
    keyOperation("o", 0.2)

    # 里鬼剑术


def ligui():
    i = 0
    while True:
        i = i + 1
        if (i == 3):
            return
        keyOperation("u", 0.05)
        keyOperation("u", 0.05)
        keyOperation("u", 0.05)
        keyOperation("o", 0.05)
        keyOperation("o", 0.05)
        sleep(1)
    # 前冲


def go(t):
    keyOperation("d", 0.1)
    keyOperation("d", t)

    # 进入房间的操作d


def intoRoom():
    go(getRandomTime(2))
    keyOperation("f", 0.1)
    go(getRandomTime(2))
    # 测试用




    # 猛龙


def menglong():
    keyOn("d")
    keyOperation("p", 0.1)
    keyOf("d")
    keyOn("a")
    keyOperation("p", 0.5)
    keyOf("a")

    # 是否有闪光
def has_gold_flash(image):
    # 加载图像并转换为RGB模式
    image = image.convert('RGB')
    # image = Image.open(image_path).convert('RGB')

    # 获取图像的宽度和高度
    width, height = image.size

    # 遍历图像的每个像素
    for x in range(width):
        for y in range(height):
            # 获取当前像素的颜色
            r, g, b = image.getpixel((x, y))

            # 检查当前像素是否为金色
            if r > g and r > b and g < b:
                return True

                # 如果没有找到金色闪光,返回False
    return False
def gran_screen_pil():
    # 截取窗口图片,建议将游戏窗口调整到最左上角,调整后面两个参数截取你想要的图片大小
    image = ImageGrab.grab(bbox=(0, 0, 1350, 760))
    image = np.array(image)
    end = cv2.imread('D:\desktop\dnf\end.png', cv2.IMREAD_GRAYSCALE)
    if len(image.shape) > 2:
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    if len(end.shape) > 2:
        end = cv2.cvtColor(end, cv2.COLOR_BGR2GRAY)
    resultEnd = cv2.matchTemplate(image, end, cv2.TM_SQDIFF_NORMED)
    minEnd_val, maxEnd_val, minEnd_loc, maxEnd_loc = cv2.minMaxLoc(resultEnd)
    # print('结果{}----------------{}',minEnd_val,maxEnd_val)
    if (minEnd_val < 0.5):
        global isEnd
        print("见到结束画面,开始下一把")
        isEnd = True

    # if has_gold_flash(image):
    #     print("有金色闪光")
def ci():
    keyOperation("d", 0.1)
    keyOn("d")
    sleep(0.2)
    keyOperation("j", 0.05)
    keyOperation("j", 0.05)
    keyOf("d")

def read_picture():
    while True:
        # 1秒后开始截图hd
        time.sleep(0.1)
        gran_screen_pil()
def do():
    global isEnd
    while True:
        isEnd = False


        print("开始!")
        getbuff2()
        sleep(1)
        print('杀意buff!')
        getbuff1()
        print("波动刻印!")
        time.sleep(0.5)

        go(5)

        keyOperation("h", 1)

        sleep(1.5)
        print("第一个图打完")
        go(2.3)
        keyOperation("f", 0.2)
        sleep(getRandomTime(1.5))
        print("第2个图打完")

        # keyOperation("o",0.2)
        # sleep(1)

        go(1.3)
        keyOperation("u",0.2)
        print("邪光斩!")
        sleep(0.5)
        keyOperation("p", 0.2)
        sleep(1)
        go(3.7)


        keyOperation("y",0.2)
        print("y技能")
        sleep(3)
        go(2)
        # keyOperation("n",0.2)
        # print("二觉")
        # sleep(2)
        keyOperation("e",0.2)
        sleep(0.5)
        keyOperation("t", 0.2)
        print("三觉")
        sleep(6.2)
        if(isEnd):
            print("结束")
            doEnd()
            continue

        keyOperation("b",0.2)


        if(isEnd):
            print("结束")
            doEnd()
            continue

        if(isEnd):
            print("结束")
            doEnd()
            continue
        sleep(1)
        keyOperation("h",0.2)
        sleep(1)
        keyOperation("q",0.2)
        print("q技能")
        sleep(3)
        if(isEnd):
            print("结束")
            doEnd()
            continue
        keyOperation("h",0.2)
        print("圣又之阵")
        sleep(1)

        if(isEnd):
            print("结束")
            doEnd()
            continue

        doEnd()


# 最后一个图的结束操作n
def doEnd():
    print("结束")

    keyOperation("0", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)
    keyOperation("j", 0.2)

    time.sleep(0.5)
    keyOperation("esc", 0.2)
    time.sleep(0.5)
    keyOperation("F10", 0.2)
    time.sleep(4)

if __name__ == '__main__':
    sleep(2)
    t1 = threading.Thread(target=read_picture)
    t2 = threading.Thread(target=do)
    t1.start()
    t2.start()

注意,需要以管理员身份运行代码即可

更多细节请咨询sz-sstx.com留言                                                        

                                                                                                                                源自sz-sstx.com

  • 19
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
按键精灵是一款在游戏中自动执行按键操作的脚本软件,可以辅助玩家完成重复性的游戏任务。DNF是一个非常热门的网络游戏,由于游戏中存在大量的刷怪、刷装备等重复性操作,所以使用按键精灵编写DNF搬砖脚本可以帮助玩家提高效率。 DNF搬砖脚本主要用于自动化打怪、拾取物品、升级等操作。玩家可以通过录制按键和鼠标操作,然后将这些操作编写成脚本。当需要进行搬砖任务时,只需要运行该脚本,按键精灵就会自动模拟玩家的操作执行。 使用按键精灵DNF搬砖脚本有如下优点: 1. 提高效率:按键精灵可以以非常快的速度执行操作,远超过人工操作的速度,节省了玩家大量的时间和精力。 2. 降低风险:使用脚本可以避免因为疏忽或操作失误导致的意外发生,减少了玩家在游戏中的实际参与度,降低了游戏操作的风险。 3. 自动化操作:按键精灵可以持续执行玩家设定好的操作,无需盯着电脑屏幕,解放了玩家的双手,同时也减少了游戏操作的单调性。 当然,使用按键精灵DNF搬砖脚本也存在一些问题。首先,脚本的执行需要遵守游戏运营商的规定,不得超出合理范围,以免触发游戏规则导致封号等风险。其次,脚本的编写需要一定的技术能力,对于非技术人员来说可能有一定的学习和使用门槛。 总体来说,按键精灵DNF搬砖脚本可以帮助玩家提高游戏效率,但需要合理使用,遵守游戏规则,以免触发风险。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值