明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1477|回复: 21

[源码] 植物大战僵尸阳光值修改

  [复制链接]
发表于 2024-12-7 00:49:43 | 显示全部楼层 |阅读模式
本帖最后由 yxp 于 2024-12-7 00:57 编辑

年纪大了喜欢玩不动脑子的老游戏,昨天捡起来一个植物大战僵尸,嫌点阳光麻烦顺手用CAD修改了一下。
有兴趣玩的可以试试,游戏地址:植物大战僵尸下载
阳光值修改源码:


  1. ;;植物大战僵尸中文版 阳光值修改,程序中修改为 90000,阳光不足时再运行一次
  2. ;;AutoCAD 中运行本程序需要 dynwrapx 支持,详见 dynwrapx.mjtd.com
  3. (vl-load-com)
  4. (defun c:plants (/ k)   
  5.   (setq DWX (vlax-create-object "DynamicWrapperX"))
  6.   (vlax-invoke DWX 'Register "user32" "FindWindowExW" "i=hhhw" "r=m")
  7.   (vlax-invoke DWX 'Register "user32" "GetWindowThreadProcessId" "i=hl" "r=l")
  8.   (vlax-invoke DWX 'Register "kernel32" "OpenProcess" "i=qbq" "r=p")
  9.   (vlax-invoke DWX 'Register "kernel32" "ReadProcessMemory" "i=hpllb" "r=l")
  10.   (vlax-invoke DWX 'Register "kernel32" "WriteProcessMemory" "i=hpllb" "r=l")
  11.   (setq handle (vlax-invoke DWX 'FindWindowExW 0 0 0 "植物大战僵尸中文版"))
  12.   (setq kpid (vlax-invoke dwx 'MemAlloc 4 1))
  13.   (setq process (vlax-invoke DWX 'GetWindowThreadProcessId handle kpid))
  14.   (setq pid (vlax-invoke DWX 'NumGet kpid 0 "l"))
  15.   (setq pdl (vlax-invoke DWX 'OpenProcess 2035711 0 pid))
  16.   (setq k1 (vlax-invoke dwx 'MemAlloc 4 1))
  17.   (vlax-invoke DWX 'ReadProcessMemory pdl 6987456 k1 4 0)
  18.   (setq d1 (vlax-invoke DWX 'NumGet k1 0 "l"))
  19.   (setq k2 (vlax-invoke dwx 'MemAlloc 4 1))
  20.   (vlax-invoke DWX 'ReadProcessMemory pdl (+ d1 1896) k2 4 0)
  21.   (setq d2 (vlax-invoke DWX 'NumGet k2 0 "l"))
  22.   (setq k4 (vlax-invoke dwx 'MemAlloc 4 1))
  23.   (vlax-invoke dwx 'NumPut 90000 k4 0)
  24.   (vlax-invoke DWX 'WriteProcessMemory pdl (+ d2 21856) k4 4 0)
  25.   (princ)
  26. )
  27. (princ)




另外,有没有喜欢玩 dota 的兄弟,用这个方法可以把 dota 英雄的坐标输出到 AutoCAD 里,变成动态的图,如果隐刺偷袭你的时候,会给警报。

评分

参与人数 4明经币 +4 收起 理由
cghdy + 1 过于牛逼!
baitang36 + 1 很给力!
dtucad + 1 赞一个!
飞雪神光 + 1 666

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

 楼主| 发表于 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++ 的特殊程序也可以强制提权,但会造成系统不安全,属于黑客程序了。
回复 支持 0 反对 1

使用道具 举报

发表于 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/g7Eyi ... 9134&lang=zh_CN


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 2024-12-7 02:30:34 | 显示全部楼层
太高级了看不懂
回复 支持 反对

使用道具 举报

发表于 2024-12-7 07:07:56 来自手机 | 显示全部楼层
vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在2000之后vlax-invoke也通用吧。
回复 支持 反对

使用道具 举报

发表于 2024-12-7 07:22:01 来自手机 | 显示全部楼层
重生之我把CAD当真视宝石打dota
回复 支持 反对

使用道具 举报

发表于 2024-12-7 08:03:20 来自手机 | 显示全部楼层
qazxswk 发表于 2024-12-7 07:07
vlax-invoke与vlax-invoke-method是一样的吧,我查了 葵花宝典说AutoCAD2000之前是写为vlax-invoke,那现在 ...

不知道为什么会有这样两种写法,区别在哪里。
回复 支持 反对

使用道具 举报

发表于 2024-12-7 08:14:35 来自手机 | 显示全部楼层
人才啊,太牛逼了。
回复 支持 反对

使用道具 举报

发表于 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菜鸟一枚,又菜又爱玩,大佬能不能逐行解释一下啊,或者介绍一下调用其他程序相关的书籍资料啊

点评

yxp
如果想学习的人多,我可以逐行解释一下,目前这方面资料比较少。我把 DWX 官网的翻译放到本站了,请查阅 http://dynwrapx.mjtd.com/  发表于 2024-12-7 14:09
回复 支持 反对

使用道具 举报

发表于 2024-12-7 11:10:25 | 显示全部楼层
大佬就是大佬,用cad可以做好多的事情哦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-5 19:51 , Processed in 0.199642 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表