北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 595|回复: 2

【Paotin++】新人初级合宝石辅助功能设计思路

[复制链接]
发表于 2024-9-12 16:02:10 | 显示全部楼层 |阅读模式
前言:鉴于萌新群大批萌新进入10级以上甚至1.5M以上,开始批量收获宝石;又鉴于论坛上大把Zmud版合宝石机器内容分享,而paotin平台并没有相关内容。为减轻萌新们的手指工作量,分享一个基础版本的合宝石机器方案,本人学习Paotin++时长2个月,水平非常有限,只提供一种基础解决思路,不足之处请大家指导。

功能非常简单,输入命令合并一轮,没考虑内力是否满足,没考虑雷以上不合并,适合主号任务间隙使用,专业合并大米需要考虑连续合并及内力问题,需要自己进行完善。
       
实现思路:
PAOTIN本身提供了非常便利的锦囊辅助管理功能,具体功能可以参考Basic/Char/sachet.tin文件,比较常用的就是各门派通用的锦囊查看命令:jiancha gem,然后就是内置变量#var char[锦囊],之前豆米兄的攻略里有讲到,这个变量是本机器的核心,它其实是一个table结构,每组数据看起来就像这样:
{B3A}
    {
        {序号} {B3A}
        {数量} {1}
        {种类} {玄冰}
        {等级} {水}
        {阴阳} {☆}
}
对于表的操作命令,大家可以参考Tintin++手册Lists/Tables章节,我个人理解有限,本篇只讲如何简单的利用这个表来合宝石。

如果你使用过其他客户端,就会知道合宝石的难点是写触发抓取宝石名字/序号/数量,但paotin内置的char[锦囊]已经帮我们解决了这个问题,所以剩下的工作非常简单。

整个初级合宝石辅助设计上分四个功能点:
1、刷新锦囊数据
2、筛选可以合并宝石
3、取出宝石进行合并
4、合并完放入锦囊,进行下一轮合并或结束合并。

1、刷新锦囊数据
主要是用内置别名,jiancha gem,锦囊管理内置了计数功能,理论上刷新一次后不需再刷新,本机器没考虑连续合并等复杂场景,每轮开始会先刷新一次。另外,定义一个list变量cgem保存待合并的宝石序号。
  1. #alias gem {
  2.     jiancha gem;
  3.     #var cgems {};
  4.     #delay 1 {gem.check}
  5. };
复制代码

2、筛选可以合并的宝石
主要思路是通过loop命令循环遍历所有种类宝石,数量大于2的都保存在cgem变量中,初级机器简单粗暴,如果宝石数量达到6个和9个的情况,也只记1次,合并3个,剩余宝石需要第二轮再次合并。
  1. #alias gem.check {
  2.     #loop &char[锦囊][] 1 index {
  3.         #if {$char[锦囊][+$index][数量] > 2} {
  4.             #list cgems add $char[锦囊][+$index][序号];okLog 符合条件 $cgems;
  5.             }};
  6.         #delay 1 {gem.combine};
  7.     };
复制代码


如果在此基础上进行其他优化,可以在此修改,比如调整雷以上宝石不合,同种类根据数量合并多次等,添加相应条件即可。

3、取出宝石进行合并
这里的功能点有2,一是默认宝石序号是大写,但是pickgem命令跟随序号是小写,需要进行转换,这个简单,paotin内置小写转换函数@str.ToLower轻松实现;二是合并宝石命令使用的对象是ID,需要把序号转换成ID,paotin锦囊管理内置了:序号转name,name转ID函数(应该是没有序号转ID),所以这里转了2次。
运行逻辑是先判断列表是否为空,如不为空,从列表第一项开始合并;否则合并完成。
  1. #alias gem.combine {
  2.     #if { "$cgems" != "" } {okLog 有宝石待合并;
  3.     #3 pickgem @str.ToLower{$cgems[1]};
  4.     busy.Wait {combine @gem.NameToID{@gem.CodeToName{$cgems[1]}}};
  5.         } {
  6.             okLog <147>合并完成!
  7.            }
  8.     };
复制代码


如想连续合并可以在此优化,例如加个当前内力判断,从第2步进行循环。

4、合并完放入锦囊
这里使用触发,判断合并成功后删除列表第一项,重复第3步,直到列表清空,完成合并。
  1. #action {^渐渐的你收回了内力,只觉%!*似乎变得更加完美了!} {okLog ok;
  2.         #list cgems delete {1};
  3.         busy.Wait {pack gem};
  4.         busy.Wait {gem.combine}
  5.         };
复制代码


以上,载入辅助功能后,输入第一个别名gem,开始一轮合并,或者再来一轮。

北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-9-12 16:45:17 | 显示全部楼层
忒好了!跟上了进度 感谢分享!!!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2024-10-14 12:32:26 | 显示全部楼层
非常好用,感谢分享哦
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 12:26 AM , Processed in 0.010390 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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