如何下载:
链接:https://pan.baidu.com/s/1Cb09eiHX7IMROpJMRL6Cpg?pwd=007j
提取码:007j
--来自百度网盘超级会员V5的分享
这是如何工作的:
以管理员模式 打开AutoCraft.exe,在程序界面中选择合适的洗装备模板,在游戏过程中按下空格键,程序将使用你手里的通货将他洗到符合要求。
该软件依赖装备模板,模板我只写了中文的。
如何使用:
- 打开 AutoCraft.exe,输入一个数字以选取所需要使用的做装模板
- 鼠标右键点选你要使用的通货
- 按住 shift 键
- 把鼠标移动到你要洗的物品上面
之后按下空格键洗一次物品,或按下CapsLock(大写锁定键)连续洗到满足要求。再次按下 CapsLock 键即终止洗装备过程。
如何安装:
- 在游戏按键设定中,将【显示详细物品描述】按键修改为 shift。
- 下载本文中的文件,以管理员模式运行 AutoCraft.exe
如果你成功运行了程序,那么它将是一个黑框框:
可能存在的问题:
- 请不要在做装过程中移动鼠标到别的物品上
- 为什么我按下 Capslock 键后一直东西拿起来又放下:你没有选取通货,或者没有一直按住shift键。
- 通货洗完了会怎么样?程序不会探测到通货的数量,如果通货用完了重复地物品拿起来然后放下。
- 为什么按下空格没有反应:请使用管理员模式重新打开AutoCraft.exe。
这里面是不是有病毒:
这个程序需要监听你的键盘输入,并向系统发送移动鼠标和模拟键盘按键的指令,我不确定你的防火墙会不会拦截这些行为。
这个程序一共没几行代码,我直接把源代码贴在这里,你也可以不使用我打包好的exe,自己下载python运行源代码。
程序依赖于 Templates 文件夹下的做装模板。
模板是可自定义的,你可以使用任何文本编辑工具修改他们。
如果你需要洗什么目前不支持的东西,你可以在这个贴子下面留言。
目前支持:
1. 中星团洗两个技能
2. 大星团洗三个技能
3. 大星团洗两个技能
4. 幻色石洗n绿n红n蓝
5. 星团洗35效果
6. 洗出一个T1
7. 洗出两个T1
8. 洗出生命T1
9. 洗技能加1
你可以自己去 Templates 文件夹下新建自己的做装模板,或修改现有的做装模板。例如下面这个就是洗技能+1的模板:
def filter(item: str) -> bool:
return item.count("主动技能石等级") >= 1
你可以简单地将他修改成别的什么,比如
def filter(item: str) -> bool:
return item.count("火焰") >= 2
# 这将洗出任何带有两条火焰词缀的物品
def filter(item: str) -> bool:
return "急冻的" in item and "阳刚的" in item
# 这将洗出带有急冻与阳刚两条词缀的物品
def filter(item: str) -> bool:
return "急冻的" in item or "阳刚的" in item
# 这将洗出带有急冻与阳刚中任意一条词缀的物品
使用脚本 幻色石洗n绿n红n蓝 做装时,用户必须手动修改模板文件的内容,告知所需的红、绿、蓝孔个数。
import importlib
import os
import sys
from time import sleep
import win32api
import win32clipboard
import win32con
import win32gui
from pynput import keyboard
TEMPLATES_DIR = 'Templates'
DELAY = 0.04
def send_copy_singal():
sleep(0.01)
win32api.keybd_event(17, 0, 0, 0) # press down Ctrl
win32api.keybd_event(67, 0, 0, 0) # press down C
sleep(0.01)
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0) # release Ctrl
win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0) # release C
def send_mouse_click():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0)
def safe_paste():
got_data = False
while not got_data:
try:
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
win32clipboard.CloseClipboard()
got_data = True
except Exception as e:
pass
return data
def safe_clear():
clear = False
while not clear:
try:
win32clipboard.OpenClipboard()
win32clipboard.SetClipboardText('')
win32clipboard.CloseClipboard()
clear = True
except Exception as e:
pass
def load_template():
print('')
print('# -------------------------- #')
print('加载 Craft 模板 ...')
if os.path.exists(TEMPLATES_DIR):
templates = [_ for _ in os.listdir(TEMPLATES_DIR) if _.endswith('.py')]
dictionary = {}
for fidx, file in enumerate(templates):
dictionary[fidx + 1] = str(file).replace('.py', '')
print(f"{fidx + 1}. {str(file).replace('.py', '')}")
print('# -------------------------- #')
print('')
selected = input(f'Select Craft Template [1 - {len(templates)}]: ')
try:
selected = int(selected)
if selected >= 1 and selected <= len(templates):
print('')
print(f'Loading {dictionary[selected]}')
sys.path.append(os.getcwd())
return importlib.import_module(f'{TEMPLATES_DIR}.{dictionary[selected]}')
else:
raise Exception('Index Out Of Range.')
except Exception as e:
print(e)
win32gui.MessageBox(0, "模板库文件读取失败", "Error", 0)
else:
win32gui.MessageBox(0, "模板库文件不存在", "Error", 0)
class Worker:
def __init__(self) -> None:
self.fever_mode = False
self.last_info = ''
self.filter_func = None
def roll(self):
safe_clear()
send_copy_singal()
sleep(DELAY)
item_info = safe_paste()
if item_info == self.last_info or item_info == '': return
if self.filter_func(item_info):
print('Item has been crafted.')
self.fever_mode = False
return
else: send_mouse_click()
self.last_info = item_info
worker = Worker()
def onpress_callback(key: keyboard.KeyCode):
try:
# if key == keyboard.Key.esc: sys.exit(0)
if key == keyboard.Key.space:
worker.roll()
except Exception as e:
print(e)
if key == keyboard.Key.space and worker.fever_mode == True:
win32api.keybd_event(32, 0, 0, 0) # press down space
def onrelease_callback(key: keyboard.KeyCode):
try:
if key in {keyboard.Key.caps_lock}:
if worker.fever_mode is True:
worker.fever_mode = False
print('Auto Craft Mode End.')
else:
worker.fever_mode = True
worker.last_info = ''
print('Ready to Craft Equipment.')
sleep(1)
win32api.keybd_event(32, 0, 0, 0) # press down space
except Exception as e:
print(e)
print('POE - Auto Craft Ready to Rool.')
template = load_template()
worker.filter_func = template.filter
print('')
print('Press "Space" to craft item once, press "Capslock" to craft until finish.')
hook = keyboard.Listener
with hook(on_press=onpress_callback, on_release=onrelease_callback, suppress=False) as listener:
listener.join()
我是个普通玩家,我认为这些软件能够在不破坏游戏平衡性的基础上对提升游戏体验有显著的作用。
在这几天的游戏中我积攒了10000多改造石,30000多混沌石,我不理解我要如何处理这些通货——手动使用他们根本不可能,我几乎要花一整天的时间坐在电脑前面一个一个地点掉他们,仔细认真地查看物品的词缀变化,这是令人抓狂的折磨。
我无法处理掉这些获取到的通货,哪怕是卖掉他们也会花费相当大的精力,而且无法获得合理的收益。希望游戏设计者与维护者能够尝试去解决游戏过程中存在的不合理问题。
当然,我认为游戏公司完全可以因为你使用这些自动化软件而封停你的账号。