yxp 发表于 2024-12-7 00:49:43

植物大战僵尸阳光值修改

本帖最后由 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 里,变成动态的图,如果隐刺偷袭你的时候,会给警报。

yxp 发表于 2024-12-7 14:06:13

自贡黄明儒 发表于 2024-12-7 13:57
版主玩"DynamicWrapperX"太溜了。由于"DynamicWrapperX"在64位系统上,以管理员身份自动注册是个难题,我都 ...

好久不见啊,老黄。
以管理员身份运行 CAD 就行,几年前我做过一个 vlx 可以自动释放 dwx64 位 的 dll 文件(原理是释放一个 txt 资源文件,然后通过 base64 转码为 dll),然后在 CAD 里运行 dos 命令注册,就在这个论坛里有。
在 win10 的安全策略里,大部分 windows api 需要管理员权限才能正常运行。用 c++ 的特殊程序也可以强制提权,但会造成系统不安全,属于黑客程序了。

vitalgg 发表于 2024-12-7 11:24:36

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


magicheno 发表于 2024-12-7 02:30:34

太高级了看不懂

qazxswk 发表于 2024-12-7 07:07:56

vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在2000之后vlax-invoke也通用吧。

Bao_lai 发表于 2024-12-7 07:22:01

重生之我把CAD当真视宝石打dota

Bao_lai 发表于 2024-12-7 08:03:20

qazxswk 发表于 2024-12-7 07:07
vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在 ...

不知道为什么会有这样两种写法,区别在哪里。

hubeiwdlue 发表于 2024-12-7 08:14:35

人才啊,太牛逼了。

kozmosovia 发表于 2024-12-7 08:44:52

Bao_lai 发表于 2024-12-7 08:03
不知道为什么会有这样两种写法,区别在哪里。

两个返回值不同,
-method返回标准变体,对于变体,需要人工转lisp类型。
-invoke一般会将safearray的变体转为lisp的list。

被承包的东子 发表于 2024-12-7 10:28:29

dota菜鸟一枚,又菜又爱玩,大佬能不能逐行解释一下啊,或者介绍一下调用其他程序相关的书籍资料啊

lxl217114 发表于 2024-12-7 11:10:25

大佬就是大佬,用cad可以做好多的事情哦
页: [1] 2 3
查看完整版本: 植物大战僵尸阳光值修改