自动化脚本让一切更自然!

Python游戏自动化脚本|千花代码分享基地-Mrnsht.com

当前位置: 主页 > 脚本代码

全能多功能自动喊话工具

时间:2025-09-01 19:47来源:本站原创 作者:千花 点击:
指定对象窗口标题例如某个QQ好友,或者游戏名称,喊话内容这个自定义,喊话间隔时间自己想要几秒发送一次,最后点击开始喊话就行了。 以下是python完整脚本。 import pyautogui import

指定对象窗口标题例如某个QQ好友,或者游戏名称,喊话内容这个自定义,喊话间隔时间自己想要几秒发送一次,最后点击开始喊话就行了。

以下是python完整脚本。


import pyautogui

import pygetwindow as gw

import time

import tkinter as tk

from tkinter import messagebox, ttk

from threading import Thread, Event

import json

import os


class GameShouter:

   def __init__(self):

       self.root = tk.Tk()

       self.root.title("游戏喊话助手 v3.1")

       self.setup_ui()

       self.running = False

       self.stop_event = Event()

       self.config_file = "shout_config.json"

       

   def setup_ui(self):

       main_frame = ttk.Frame(self.root, padding=10)

       main_frame.pack(fill=tk.BOTH, expand=True)

       

       # 窗口标题输入

       ttk.Label(main_frame, text="指定窗口标题:").grid(row=0, column=0, sticky=tk.W)

       self.window_entry = ttk.Entry(main_frame, width=40)

       self.window_entry.grid(row=0, column=1, pady=5)

       

       # 喊话内容输入

       ttk.Label(main_frame, text="喊话内容:").grid(row=1, column=0, sticky=tk.NW)

       self.content_entry = tk.Text(main_frame, height=5, width=30)

       self.content_entry.grid(row=1, column=1, pady=5)

       

       # 间隔时间设置

       ttk.Label(main_frame, text="间隔(秒):").grid(row=2, column=0, sticky=tk.W)

       self.interval_entry = ttk.Entry(main_frame, width=5)

       self.interval_entry.insert(0, "5")

       self.interval_entry.grid(row=2, column=1, sticky=tk.W)

       

       # 控制按钮

       btn_frame = ttk.Frame(main_frame)

       btn_frame.grid(row=3, columnspan=2, pady=10)

       

       self.start_btn = ttk.Button(btn_frame, text="开始喊话", command=self.start)

       self.start_btn.pack(side=tk.LEFT, padx=5)

       

       self.stop_btn = ttk.Button(btn_frame, text="停止", command=self.stop, state=tk.DISABLED)

       self.stop_btn.pack(side=tk.LEFT, padx=5)

       

       # 状态显示

       self.status_var = tk.StringVar(value="准备就绪")

       ttk.Label(main_frame, textvariable=self.status_var).grid(row=4, columnspan=2)


   def focus_window(self, title):

       try:

           wins = gw.getWindowsWithTitle(title)

           if wins:

               wins[0].activate()

               time.sleep(0.5)

               return True

       except Exception as e:

           self.status_var.set(f"窗口激活失败: {str(e)}")

       return False


   def send_text(self, text):

       try:

           if not self.focus_window(self.window_entry.get().strip()):

               return False

               

           pyautogui.press('enter')

           time.sleep(0.3)

           

           # 分段发送避免游戏接收不全

           for chunk in [text[i:i+30] for i in range(0, len(text), 30)]:

               pyautogui.write(chunk, interval=0.08)

               time.sleep(0.05)

               

           pyautogui.press('enter')

           return True

       except Exception as e:

           self.status_var.set(f"发送失败: {str(e)}")

           return False


   def shout_loop(self):

       interval = max(1, int(self.interval_entry.get()))

       while not self.stop_event.is_set():

           content = self.content_entry.get("1.0", tk.END).strip()

           if not content:

               time.sleep(1)

               continue

               

           if self.send_text(content):

               self.status_var.set(f"喊话发送成功 - 间隔{interval}s")

               

           for _ in range(interval * 10):

               if self.stop_event.is_set():

                   break

               time.sleep(0.1)


   def start(self):

       if self.running:

           return

           

       self.running = True

       self.stop_event.clear()

       self.start_btn.config(state=tk.DISABLED)

       self.stop_btn.config(state=tk.NORMAL)

       

       Thread(target=self.shout_loop, daemon=True).start()

       self.status_var.set("喊话已启动...")


   def stop(self):

       self.running = False

       self.stop_event.set()

       self.start_btn.config(state=tk.NORMAL)

       self.stop_btn.config(state=tk.DISABLED)

       self.status_var.set("喊话已停止")


   def run(self):

       self.root.mainloop()


if __name__ == "__main__":

   app = GameShouter()

   app.run()


(责任编辑:admin)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容