天龙怀旧游戏前台python脚本6

一、电脑和游戏设置:

1. 电脑桌面(2560x1440缩放125%,游戏分辨率1920x1080)

2. 游戏目录Bin及Bin64下的game.exe和Launch.exe 右键 

3. 属性 - 兼容性 - 更改所有用户的设置 - 更改高dpi设置  - 勾选替换搞的dpi缩放行为 - 选应用程序。

二、功能介绍:这个只写了几个简单的功能。

home暂停/恢复

end停止

三:2560x1440分辨率脚本python代码:保存为wegame2025.py

import tkinter as tk
import pygetwindow as gw
import json
import os
import asyncio
import pyautogui
import threading
import time
import random
import win32api
import win32con
import keyboard  # 新增的库
import json
import cv2
import numpy as np
from PIL import ImageGrab
 
# 初始化全局变量
running = True
paused = False
 
# 创建主窗口
root = tk.Tk()
root.title("By:樱道流衿紫")
 
# 假设 checkbutton_vars 是一个包含选项的字典
checkbutton_vars = {
      "打死怪": tk.IntVar(),
      "挂马贼": tk.IntVar(),
      "加状态": tk.IntVar(),
      "BB副本": tk.IntVar(),
      "打绿怪": tk.IntVar(),
      "打红怪": tk.IntVar(),
      "峨眉饺子": tk.IntVar(),
      "组队": tk.IntVar(),
      "内挂": tk.IntVar(),
      "升级": tk.IntVar(),
}
 
def activate_window():#查找游戏
    windows = gw.getAllTitles()
    target_windows = [title for title in windows if "新天龙八部" in title]
 
    if target_windows:
        window = gw.getWindowsWithTitle(target_windows[0])[0]
        window.activate()
        window.maximize()
 
# 使用pywin32模拟按键
def send_key_press(key):
    valid_keys = ['F1','F2','F3','F4','F5','F6','F7','F8','F9','F10']
    if key in valid_keys:
        pyautogui.press(key)  # 使用 pyautogui 发送按键
 
def get_pixel_colors(x,y):
    screenshot = pyautogui.screenshot()
    return screenshot.getpixel((x,y))
 
def move_at_position(x, y):
    pyautogui.moveTo(x, y)
 
# 使用 win32api 来模拟鼠标点击
def click_at_position(screen_x,screen_y):
    # 使用 win32api 进行鼠标点击
    win32api.SetCursorPos((screen_x,screen_y))  # 移动鼠标到指定位置
    time.sleep(random.uniform(0.03,0.04))
    # 模拟鼠标点击:鼠标左键按下和释放
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0)  # 按下鼠标左键
    time.sleep(0.02)  # 按下时稍作停顿
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)    # 释放鼠标左键
    time.sleep(random.uniform(0.03,0.04))
    
def colors_are_similar(colorzz1, colorzz2, tolerance=20):
    return all(abs(c1 - c2) <= tolerance for c1, c2 in zip(colorzz1, colorzz2))
    
def da_si_huan_guai(): #打怪

    colordd2 = get_pixel_colors(1225, 1334) 
    colorz39 = get_pixel_colors(278, 58) 
    colorz310 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd2, tolerance=20) and 
        colorz39 == (255, 162, 150) and 
        colorz310 != (155, 153, 152)): 
        send_key_press('F4')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colordd9 = get_pixel_colors(1261,1334) 
    colorz49 = get_pixel_colors(278, 58) 
    colorz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd9, tolerance=20) and 
        colorz49 == (255, 162, 150) and 
        colorz410 != (155, 153, 152)): 
        send_key_press('F5')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colorddd9 = get_pixel_colors(1296,1334) 
    colorzz49 = get_pixel_colors(278, 58) 
    colorzz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colorddd9, tolerance=20) and 
        colorzz49 == (255, 162, 150) and 
        colorzz410 != (155, 153, 152)): 
        send_key_press('F6')  
        time.sleep(random.uniform(0.07, 0.08))
    bu_neng_gong_ji_huan_guai() 
    for _ in range(5):  # 循环10次
        colordd1 = get_pixel_colors(1189, 1334) 
        color9 = get_pixel_colors(278, 58) 
        color10 = get_pixel_colors(279, 41) 
        if (colors_are_similar((125, 104, 73), colordd1, tolerance=20) and 
            color9 == (255, 162, 150) and 
            color10 != (155, 153, 152)): 
            send_key_press('F3')  
            time.sleep(random.uniform(0.07, 0.08))
        color1 = get_pixel_colors(278,58) # 有血
        color2 = get_pixel_colors(279,41) # 白怪
        if color1  == (255,162,150) and  color2  != (155,153,152):
          send_key_press('F2')
          time.sleep(random.uniform(0.05, 0.06))
        else:
          send_key_press('F1')
          time.sleep(random.uniform(0.05, 0.06))
        color23 = get_pixel_colors(95,106) 
        color24 = get_pixel_colors(196,106) 
        if color23 == (16,4,0) and  color24 != (255,162,150):
            send_key_press('F10')  # 如果颜色符合要求,按 F10
            time.sleep(random.uniform(0.07, 0.08))

          
def gua_jiao_zi(): #打怪
    si_wang_hui_dian2()
    for _ in range(10):  # 循环10次
        color3 = get_pixel_colors(278, 58)  # 有血
        colorev3 = get_pixel_colors(447,79)  # 峨眉山怪
        if color3 == (255,162,150) and colorev3 == (253,249,214) :  # 检查是否有绿怪
            send_key_press('F2')  # 假设F2是打绿怪的键
            time.sleep(random.uniform(0.11, 0.13))
            send_key_press('F1')
            time.sleep(random.uniform(0.11, 0.13))
        else:
            send_key_press('F1')
            time.sleep(random.uniform(0.11, 0.13))
        colorpp22 = get_pixel_colors(62,32)         
        color22 = get_pixel_colors(83,63) 
        if  colorpp22== (206,186,90) and  color22 != (255,162,150):   # 加血
            send_key_press('F7')  # 如果颜色符合要求,按 F7
            time.sleep(random.uniform(0.07, 0.08))

def da_hong_guai(): #打怪
    bu_neng_gong_ji_huan_guai() 
    colordd2 = get_pixel_colors(1225, 1334) 
    colorz39 = get_pixel_colors(278, 58) 
    colorz310 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd2, tolerance=20) and 
        colorz39 == (255, 162, 150) and 
        colorz310 == (155, 1, 1)): 
        send_key_press('F4')  
        time.sleep(random.uniform(0.07, 0.08))
    for _ in range(10):  # 循环10次
        colordd1 = get_pixel_colors(1189, 1334) 
        color9 = get_pixel_colors(278, 58) 
        color10 = get_pixel_colors(279, 41) 
        if (colors_are_similar((126, 107, 76), colordd1, tolerance=20) and 
            color9 == (255, 162, 150) and 
            color10 == (155, 1, 1)): 
            send_key_press('F3')  
            time.sleep(random.uniform(0.07, 0.08))
        color1 = get_pixel_colors(278,58) # 有血
        color2 = get_pixel_colors(279,41) # 红怪
        if color1  == (255,162,150) and  color2  == (155, 1, 1):
          send_key_press('F2')
          time.sleep(random.uniform(0.05, 0.06))
        else:
          send_key_press('F1')
          time.sleep(random.uniform(0.05, 0.06))


def fang_ji_neng(): #打怪
    colordd2 = get_pixel_colors(1225, 1334) 
    colorz39 = get_pixel_colors(278, 58) 
    colorz310 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd2, tolerance=20) and 
        colorz39 == (255, 162, 150) and 
        colorz310 != (155, 153, 152)): 
        send_key_press('F4')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colordd9 = get_pixel_colors(1261,1334) 
    colorz49 = get_pixel_colors(278, 58) 
    colorz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd9, tolerance=20) and 
        colorz49 == (255, 162, 150) and 
        colorz410 != (155, 153, 152)): 
        send_key_press('F5')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colorddd9 = get_pixel_colors(1296,1334) 
    colorzz49 = get_pixel_colors(278, 58) 
    colorzz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colorddd9, tolerance=20) and 
        colorzz49 == (255, 162, 150) and 
        colorzz410 != (155, 153, 152)): 
        send_key_press('F6')  
        time.sleep(random.uniform(0.07, 0.08))

def da_lv_guai():
    colordd2 = get_pixel_colors(1225, 1334) 
    colorz39 = get_pixel_colors(278, 58) 
    colorz310 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd2, tolerance=20) and 
        colorz39 == (255, 162, 150) and 
        colorz310 != (155, 153, 152)): 
        send_key_press('F4')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colordd9 = get_pixel_colors(1261,1334) 
    colorz49 = get_pixel_colors(278, 58) 
    colorz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colordd9, tolerance=20) and 
        colorz49 == (255, 162, 150) and 
        colorz410 != (155, 153, 152)): 
        send_key_press('F5')  
        time.sleep(random.uniform(0.07, 0.08))
        
    colorddd9 = get_pixel_colors(1296,1334) 
    colorzz49 = get_pixel_colors(278, 58) 
    colorzz410 = get_pixel_colors(279, 41) 
    if (colors_are_similar((126, 107, 76), colorddd9, tolerance=20) and 
        colorzz49 == (255, 162, 150) and 
        colorzz410 != (155, 153, 152)): 
        send_key_press('F6')  
        time.sleep(random.uniform(0.07, 0.08))

    for _ in range(10):  # 循环10次
        colordd1 = get_pixel_colors(1189, 1334) 
        color9 = get_pixel_colors(278, 58) 
        color10 = get_pixel_colors(279, 41) 
        if (colors_are_similar((126, 107, 76), colordd1, tolerance=20) and 
            color9 == (255, 162, 150) and 
            color10 != (155, 153, 152)): 
            send_key_press('F3')  
            time.sleep(random.uniform(0.07, 0.08))
        color3 = get_pixel_colors(278, 58)  # 有血
        if color3 == (255,162,150):  # 检查是否有绿怪
            send_key_press('F2')  # 假设F2是打绿怪的键
            time.sleep(random.uniform(0.05, 0.06))
            send_key_press('F1')  # 默认操作
            time.sleep(random.uniform(0.05, 0.06))
        else:
            send_key_press('F1')
            time.sleep(random.uniform(0.05, 0.06))
        color23 = get_pixel_colors(95,106) 
        color24 = get_pixel_colors(196,106) 
        if color23 == (16,4,0) and  color24 != (255,162,150):
            send_key_press('F10')  # 如果颜色符合要求,按 F10
            time.sleep(random.uniform(0.05, 0.06))


def fang_ji_neng2(): #打怪
        colormazei1 = get_pixel_colors(453, 64)  # 是马贼1
        colordd1 = get_pixel_colors(1189, 1334) 
        color9 = get_pixel_colors(278, 58) 
        color10 = get_pixel_colors(279, 41) 
        if (colors_are_similar((125, 104, 73), colordd1, tolerance=20) and 
            colormazei1  == (205, 195, 196) and 
            color9 == (255, 162, 150) and 
            color10 != (155, 153, 152)): 
            send_key_press('F3')  
            time.sleep(random.uniform(0.07, 0.08))
            
        colormazei2 = get_pixel_colors(453, 64)  # 是马贼1
        colordd2 = get_pixel_colors(1224, 1334) 
        colorz39 = get_pixel_colors(278, 58) 
        colorz310 = get_pixel_colors(279, 41) 
        if (colors_are_similar((121, 101, 69), colordd2, tolerance=20) and 
            colormazei2 == (205, 195, 196) and 
            colorz39 == (255, 162, 150) and 
            colorz310 != (155, 153, 152)): 
            send_key_press('F4')  
            time.sleep(random.uniform(0.07, 0.08))

def gua_ma_zei():
    for _ in range(3):  # 循环3次
        fang_ji_neng2()
        color2626 = get_pixel_colors(453, 64)  # 是马贼1
        color2627 = get_pixel_colors(466, 63)  # 是马贼2
        color2628 = get_pixel_colors(278, 58)  # 有血    
       
<think>嗯,用户之前让我帮忙写一个AutoHotkey脚本,用于《天龙八部》怀旧服的按键循环。现在他问是否可以用Python来实现。我需要先理解用户的需求。他可能对AutoHotkey不太熟悉,或者更倾向于使用Python,因为Python是他更熟悉的语言。也有可能他在使用过程中遇到了问题,或者想扩展更多的功能,而Python的库更丰富。 首先,我要确认Python是否能够实现后台按键模拟。Python有pyautogui这样的库,但它是基于前台的,也就是说需要窗口处于激活状态。而用户明确提到要后台运行,所以可能需要其他库,比如pywin32或者ctypes来调用Windows API。此外,用户需要启动和停止按钮,可能需要一个GUI界面,Python中可以用Tkinter或者PyQt来实现。 接下来,我需要考虑游戏的反作弊机制。AutoHotkey的ControlSend可能被某些游戏检测到,而Python通过后台发送消息同样有可能被检测。这一点需要提醒用户注意,避免账号风险。 然后,用户可能需要具体的代码示例。我需要编写一个Python脚本,使用pywin32的SendMessage或PostMessage来发送按键消息到游戏窗口。同时,设置间隔200ms的循环,并且有开始和停止的按钮。还需要处理窗口句柄的获取,确保脚本能找到正确的游戏窗口。 另外,用户可能对Python的环境配置不熟悉,需要提醒安装必要的库,比如pywin32、pyautogui、tkinter等。同时,管理员权限的问题,因为某些操作可能需要提升权限才能执行。 还要考虑到用户的使用场景,可能是在玩游戏的同时运行脚本,所以GUI界面需要简洁易用,开始和停止按钮要明显。此外,后台运行可能会影响性能,需要代码尽可能高效,避免占用过多资源。 最后,要强调遵守游戏规则,使用脚本可能存在风险,建议用小号测试。同时,给出扩展建议,比如随机延时、日志功能等,帮助用户根据需要调整脚本。</think>可以,但需要注意Python实现后台按键需要更复杂的Windows API调用。以下是基于Python的实现方案(需安装必要库): ```python # 需先安装:pip install pywin32 pyautogui import win32gui import win32con import time import threading import tkinter as tk from tkinter import messagebox class AutoPresser: def __init__(self): self.running = False self.window_name = "天龙八部怀旧版" # 需修改为实际窗口标题 self.hwnd = None def find_window(self): self.hwnd = win32gui.FindWindow(None, self.window_name) return self.hwnd is not None def send_key(self, key): if self.hwnd: # 发送后台按键消息 win32gui.PostMessage(self.hwnd, win32con.WM_KEYDOWN, key, 0) time.sleep(0.05) win32gui.PostMessage(self.hwnd, win32con.WM_KEYUP, key, 0) def worker(self): while self.running: try: if self.find_window(): self.send_key(0x70) # F1 time.sleep(0.2) self.send_key(0x71) # F2 time.sleep(0.2) self.send_key(0x79) # F10 time.sleep(0.2) else: messagebox.showerror("错误", "未找到游戏窗口") self.stop() except Exception as e: print(f"错误: {str(e)}") self.stop() def start(self): if not self.running: self.running = True self.thread = threading.Thread(target=self.worker) self.thread.start() def stop(self): self.running = False # GUI界面 app = tk.Tk() app.title("天龙按键助手") app.geometry("200x100") presser = AutoPresser() def on_start(): if not presser.find_window(): messagebox.showerror("错误", "请先启动游戏") return presser.start() btn_start.config(state=tk.DISABLED) btn_stop.config(state=tk.NORMAL) def on_stop(): presser.stop() btn_start.config(state=tk.NORMAL) btn_stop.config(state=tk.DISABLED) btn_start = tk.Button(app, text="开始", command=on_start) btn_start.pack(pady=10) btn_stop = tk.Button(app, text="停止", command=on_stop, state=tk.DISABLED) btn_stop.pack() app.protocol("WM_DELETE_WINDOW", lambda: (presser.stop(), app.destroy())) app.mainloop() ``` 使用说明: 1. 安装依赖库:`pip install pywin32 pyautogui` 2. 修改代码中`window_name`为实际游戏窗口标题 3. 以管理员身份运行脚本 与AHK方案对比: ✅ 优势: - 更易扩展复杂功能 - 支持跨平台开发(需调整Windows API部分) - 便于整合其他Python生态功能 ❌ 劣势: - 实现复杂度更高 - 更容易被反作弊系统检测 - 需要Python运行环境 - 内存占用略高(约20-30MB) 注意事项: 1. 虚拟键值需要精确匹配(当前代码已配置F1/F2/F10) 2. 游戏必须运行在窗口模式 3. 部分游戏可能需要改用DirectX输入方式 4. 建议配合虚拟环境使用 5. 可能触发杀毒软件误报 增强建议: 1. 可添加窗口标题自动检测功能 2. 整合配置文件保存设置 3. 添加异常处理机制 4. 可扩展为支持多技能序列的配置系统 请特别注意:使用任何自动化工具都可能违反游戏用户协议,实际使用前请务必确认合规性,建议仅用于单机环境测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值