植物大战僵尸阳光值修改
本帖最后由 yxp 于 2024-12-7 00:57 编辑年纪大了喜欢玩不动脑子的老游戏,昨天捡起来一个植物大战僵尸,嫌点阳光麻烦顺手用CAD修改了一下。
有兴趣玩的可以试试,游戏地址:植物大战僵尸下载
阳光值修改源码:
;;植物大战僵尸中文版 阳光值修改,程序中修改为 90000,阳光不足时再运行一次
;;AutoCAD 中运行本程序需要 dynwrapx 支持,详见 dynwrapx.mjtd.com
(vl-load-com)
(defun c:plants (/ k)
(setq DWX (vlax-create-object "DynamicWrapperX"))
(vlax-invoke DWX 'Register "user32" "FindWindowExW" "i=hhhw" "r=m")
(vlax-invoke DWX 'Register "user32" "GetWindowThreadProcessId" "i=hl" "r=l")
(vlax-invoke DWX 'Register "kernel32" "OpenProcess" "i=qbq" "r=p")
(vlax-invoke DWX 'Register "kernel32" "ReadProcessMemory" "i=hpllb" "r=l")
(vlax-invoke DWX 'Register "kernel32" "WriteProcessMemory" "i=hpllb" "r=l")
(setq handle (vlax-invoke DWX 'FindWindowExW 0 0 0 "植物大战僵尸中文版"))
(setq kpid (vlax-invoke dwx 'MemAlloc 4 1))
(setq process (vlax-invoke DWX 'GetWindowThreadProcessId handle kpid))
(setq pid (vlax-invoke DWX 'NumGet kpid 0 "l"))
(setq pdl (vlax-invoke DWX 'OpenProcess 2035711 0 pid))
(setq k1 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke DWX 'ReadProcessMemory pdl 6987456 k1 4 0)
(setq d1 (vlax-invoke DWX 'NumGet k1 0 "l"))
(setq k2 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke DWX 'ReadProcessMemory pdl (+ d1 1896) k2 4 0)
(setq d2 (vlax-invoke DWX 'NumGet k2 0 "l"))
(setq k4 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke dwx 'NumPut 90000 k4 0)
(vlax-invoke DWX 'WriteProcessMemory pdl (+ d2 21856) k4 4 0)
(princ)
)
(princ)
另外,有没有喜欢玩 dota 的兄弟,用这个方法可以把 dota 英雄的坐标输出到 AutoCAD 里,变成动态的图,如果隐刺偷袭你的时候,会给警报。
自贡黄明儒 发表于 2024-12-7 13:57
版主玩"DynamicWrapperX"太溜了。由于"DynamicWrapperX"在64位系统上,以管理员身份自动注册是个难题,我都 ...
好久不见啊,老黄。
以管理员身份运行 CAD 就行,几年前我做过一个 vlx 可以自动释放 dwx64 位 的 dll 文件(原理是释放一个 txt 资源文件,然后通过 base64 转码为 dll),然后在 CAD 里运行 dos 命令注册,就在这个论坛里有。
在 win10 的安全策略里,大部分 windows api 需要管理员权限才能正常运行。用 c++ 的特殊程序也可以强制提权,但会造成系统不安全,属于黑客程序了。
qazxswk 发表于 2024-12-7 07:07
vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在 ...
详细说明:
https://mp.weixin.qq.com/s/g7EyilU6cit1e-SUHq2fGQ?token=1178519134&lang=zh_CN
太高级了看不懂 vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在2000之后vlax-invoke也通用吧。 重生之我把CAD当真视宝石打dota qazxswk 发表于 2024-12-7 07:07
vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在 ...
不知道为什么会有这样两种写法,区别在哪里。 人才啊,太牛逼了。 Bao_lai 发表于 2024-12-7 08:03
不知道为什么会有这样两种写法,区别在哪里。
两个返回值不同,
-method返回标准变体,对于变体,需要人工转lisp类型。
-invoke一般会将safearray的变体转为lisp的list。 dota菜鸟一枚,又菜又爱玩,大佬能不能逐行解释一下啊,或者介绍一下调用其他程序相关的书籍资料啊 大佬就是大佬,用cad可以做好多的事情哦