开启辅助访问      

传世单机社区

 找回密码
 立即注册
https://www.wooolc.com
楼主: hzengxin

[彩虹脚本] 非0730版本的全屏拾取,自动叠加,完整版本,亲测!

  [复制链接]

升级   74.83%

发表于 2025-8-3 19:46:11 | 显示全部楼层

楼主太厉害了!楼主,I*老*虎*U!我觉得传世单机社区真是个好地方!

回复 支持 反对

使用道具 举报

升级   74.83%

发表于 2025-8-3 19:49:58 | 显示全部楼层

这东西我收了!谢谢楼主!传世单机社区真好!

回复 支持 反对

使用道具 举报

升级   5.8%

发表于 2025-8-6 02:41:27 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得传世单机社区是注册对了!

回复 支持 反对

使用道具 举报

升级   98.29%

发表于 2025-8-6 13:28:32 | 显示全部楼层

这东西我收了!谢谢楼主!传世单机社区真好!

回复 支持 反对

使用道具 举报

升级   100%

发表于 前天 09:27 | 显示全部楼层
核心功能支持位置(4.txt - 2016年更新日志):  2016年11月29日 [WolServer.exe 更新日志]:  第49点:49、增加怪物爆出物品后触发机器人RobotManage.txt脚本! //需要使用DB工具设置,设置物品属性为“怪物掉落触发”!  这直接对应教程第一步:用GameLoad DB Manager勾选“怪物掉落触发”,并触发[@_物品掉落触发]脚本。 脚本返回参数:  $PARAM(0):地图ID $PARAM(1):地图名字 $PARAM(2):怪物名字(不包含数字) $PARAM(3):怪物DB数据库名字(如通天教主1) $PARAM(4):物品名字(不包含数字) $PARAM(5):物品DB数据库名字(如命运1) $PARAM(6):物品ID $PARAM(7):玩家名字  教程中直接使用这些$PARAM,如$PARAM(7).GIVE $PARAM(5) 1、CLEARMAPITEM $STR(S188)等。  第21点(同更新):21、修正CLEARMAPITEM清理地面物品异常的问题!  对应教程中[@TIGER清理]的CLEARMAPITEM $STR(S188)(清理拾取后地面物品)。   数据文件支持(4.txt 同更新):  多次提到QuestDiary\数据文件路径,如物品/怪物配置示例中用于列表检查。 对应第一步创建自动拾取数据.txt和可叠加物品.txt(用于CHECKVARLIST命令检查物品是否自动拾取/叠加)。   辅助功能支持位置:  2022年日志(2022.txt):  新增范围拾取命令 RangePick:3、新增范围拾取命令 RangePick 参数1 参数2 参数3(X,Y,范围),并触发[@拾取物品]。  教程中在[@TIGER拾取物品]复制[@拾取物品]逻辑,并扩展叠加/广播。 GameLoad DB Manager扩展“禁止范围拾取物品”规则,对应避免宝盒等被全屏拾取。   2017年日志(5.txt):  RobotManage.txt扩展:如35、新增删除行会成员不在线时,则触发RobotManage.txt脚本 [@_行会_成员退出],确认RobotManage作为全局触发器支持自定义[@_物品掉落触发]。  多日志通用支持:  CHECKVARLIST/CheckVarList:早期脚本扩展(如1.txt/2.txt变量列表支持),用于检查txt文件列表(自动拾取/可叠加)。 SETPARAM 23/24:物品掉落状态记录(日志中$PARAM(23)为掉落状态,教程设SETPARAM 23 11标记玩家拾取)。 开关变量[777]:自定义变量支持(如1.txt ChangeCustomValue,多日志扩展S变量到S299)。 登陆脚本初始化:如3.txt(2015)登陆脚本(QM)增加一个[@LoginNotice]触发,常见用于SET [777] 0关闭默认开关。 GIVE/TAKE叠加:日志中多次修正物品叠加(如2.txt 修正物品叠加问题),教程中TAKE $STR(S1) 9999 + GIVE $STR(S1) $STR(P15)实现叠加。   实现注意:  这个功能完全基于2016年(4.txt)核心更新构建,用户自定义扩展了自动拾取逻辑,无需更高版本引擎。 DELAYGOTO 50 @TIGER清理:延迟清理地面,避免视觉闪现(日志中DELAY2等延迟命令支持)。 广播:使用SENDMSG 1全服消息,结合CheckVarList ..\QuestDiary\数据文件\广播物品.txt(教程扩展,未在日志,但兼容列表命令)。 完美化:登陆脚本加入SET [777] 0防止旧数据残留,已在多日志支持自定义变量持久化。

回复 支持 反对

使用道具 举报

升级   100%

发表于 前天 09:31 | 显示全部楼层
第一步:找到“怪物掉东西能触发脚本”的依据
在你提供的 文件 中,有这一条关键更新:

49、增加怪物爆出物品后触发机器人RobotManage.txt脚本! //需要使用DB工具设置,设置物品属性为“怪物掉落触发”!

✅ 这说明:

当怪物爆出某个物品时,如果该物品在数据库里被标记了“怪物掉落触发”,
引擎就会自动去执行 RobotManage.txt 里的一个特定脚本(按惯例叫 [@_物品掉落触发])。
这是整个功能的起点。

第二步:确认脚本能拿到哪些信息(参数)
虽然你贴的文档里没直接写 $PARAM(0~7) 的完整定义,但在 文件 的示例中出现了类似用法:

#ACTMOV S10 $PARAM(0) QUERYVAL 10 1 7 @ModeFunc44 ...

而在 文件 中明确提到:

[@_物品掉落触发] 脚本返回以下参数

$PARAM(0) //回收装备数量

(虽是回收场景,但证明 $PARAM 是标准传参方式)

更重要的是,在你给出的教程代码中使用了:

qf
编辑
$PARAM(7).GIVE $PARAM(5) 1
CLEARMAPITEM $STR(S188)   ; S188 = $PARAM(0)
结合 文件 第49点“爆出物品触发脚本”,可合理推断:

$PARAM(5) 是掉落的物品名(DB名)
$PARAM(7) 是与掉落相关的玩家对象(因为能对其执行 .GIVE)
$PARAM(0) 是地图上该物品的唯一标识(因为能被 CLEARMAPITEM 清除)
这些推断与引擎行为一致。

第三步:如何“自动捡”?——用 GIVE 模拟拾取
在 文件 中提到:

支持自动叠加的物品使用 GIVE 脚本一次给与多个时,自动叠加

支持自动叠加的物品使用 TAKE 脚本自动扣除相应的数量

这说明:

GIVE 物品名 数量 是服务端直接发物品给玩家的标准命令;
它不依赖玩家点击地面,而是强制发放。
因此,在 [@_物品掉落触发] 中写:

qf
编辑
$PARAM(7).GIVE $PARAM(5) 1
就等于让系统代替玩家“捡起”这个物品。

这就是“自动拾取”的本质:不是扫描地图捡东西,而是在东西刚掉出来的一瞬间,直接塞进玩家背包,并删掉地上的图标。

第四步:如何控制“只捡想要的”?——用 CHECKVARLIST
在多份文件中反复出现文本列表检查功能:

文件:CHECKTXT 检测文件是否存在
文件:隐含列表处理(如白金帐号.txt)
文件:ReadRandomStr 支持读取文本行
最关键的是教程代码中使用了:
qf
编辑
CHECKVARLIST $PARAM(5) ..\QUESTDIARY\数据文件\自动拾取数据.TXT
虽然 CHECKVARLIST 命令本身未在日志中明确定义,但结合上下文和命名惯例,它显然是用来检查某字符串是否存在于指定文本文件的某一行中。

所以:

把想自动捡的物品名列在 自动拾取数据.txt 里;
脚本通过 CHECKVARLIST 判断当前掉落物是否在名单内;
不在?直接 BREAK,不处理。
第五步:如何清理地面残留?——CLEARMAPITEM
在 文件 中明确修复:

21、修正CLEARMAPITEM清理地面物品异常的问题!

说明该命令就是用来删除地图上某个物品实体的。

而 $PARAM(0)(来自掉落事件)正好是该物品在地图上的唯一ID(或坐标+类型组合),所以:

qf
编辑
MOV S188 $PARAM(0)
DELAYGOTO 50 @TIGER清理
...
CLEARMAPITEM $STR(S188)
就能确保:物品进包后,地面上的图标被清除,其他玩家看不到也捡不到。

第六步:如何处理堆叠?——TAKE + GIVE
在 文件 中强调:

支持自动叠加的物品使用 GIVE/TAKEM 自动叠加

因此,对于药水等可堆叠物:

qf
编辑
TAKE $STR(S1) 9999   ; 先清空背包里已有的
GIVE $STR(S1) $STR(P15) ; 再按实际数量给
就能合并成一堆。

而 P15 的值来自 $PARAM(12)(掉落数量),虽然 $PARAM(12) 未在日志明确定义,但从逻辑和教程代码可推知其含义。

第七步:开关控制与初始化
使用自定义变量 [777] 作为开关(文件 提到 ChangeCustomValue,支持自定义变量);
登录时 SET [777] 0(文件 提到登陆脚本如 [@LoginNotice] 可用于初始化状态);
玩家通过 NPC 切换 [777] 的值,控制是否启用自动拾取。
✅ 最终结论(完全基于你提供的文档)
“全屏拾取”是这样实现的:

前提:在 GameLoad DB Manager 中,将希望自动拾取的物品勾选 “怪物掉落触发”(依据:4.txt 第49点);
触发:当怪物爆出这类物品时,引擎自动调用 RobotManage.txt 中的 [@_物品掉落触发] 脚本;
判断:
检查玩家是否开启开关([777] == 1);
检查背包是否有空位;
检查物品是否在 自动拾取数据.txt 名单中(用 CHECKVARLIST);
执行:
用 $PARAM(7).GIVE $PARAM(5) 1 直接发物品给玩家(依据:2.txt 的 GIVE 叠加支持);
如果是可叠加物品,先 TAKE 9999 再 GIVE 实际数量;
清理:用 CLEARMAPITEM $PARAM(0) 删除地面物品(依据:4.txt 第21点修复);
初始化:登录时重置开关状态,防止异常(依据:3.txt 登陆脚本支持)。
🌟 整个过程不依赖客户端,不扫描地图,而是“在物品诞生的瞬间就拦截并分配”,因此高效、稳定、无延迟感,玩家体验如同“全屏自动捡”。

回复 支持 反对

使用道具 举报

升级   50.67%

发表于 前天 23:45 | 显示全部楼层

楼主太厉害了!楼主,I*老*虎*U!我觉得传世单机社区真是个好地方!

回复 支持 反对

使用道具 举报

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

关闭

站长推荐 上一条 /1 下一条

传奇世界单机版|传世服务端|传世版本|关于我们|小黑屋|手机版| 传世单机社区 |网站地图

GMT+8, 2025-11-9 15:33 , Processed in 0.043576 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2018 Comsenz Inc.

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