# 插件编写——需求篇

在开始编写插件之前,我们需要首先明确插件需要什么功能,具体细节是什么样的以及各种用于二次开发的API需求和事件需求。

在接下来的篇幅中,将以抽奖插件为例,按照流程制作一个完整的插件。

# 插件需求

每日进行1期抽奖,每位玩家可随机领取3个不同的号码,号码取值是1~10000,领完为止。每日20:00开奖,通过邮件(官方neteaseAnnounced插件)告知中奖玩家并发放奖励。

# 细节需求

  • 玩家可在game服或lobby服,输入cp1领取号码,成功领取后,用官方neteaseAlert插件提示“本次领取的号码是%s”
  • 奖励号码每日开奖后重置,玩家可重新领取。
  • 若超过当日可领取的上限:3,输入cp1领取时,用官方neteaseAlert插件提示“今日领取的号码已超过上限”
  • 每日开奖时间之前(上一天的20:01~当天20:00),输入cp2可查询已领取的号码。
  • 官方neteaseAlert插件提示已领取的号码情况“今日已领取%s(数量)个号码:%s、%s、%s”
  • 从1~10000中随机抽取5个号码作为本期中奖号码。
  • 中奖的邮件提示:本期中奖号码:%s、%s、%s、%s、%s。恭喜你,在本期抽奖活动中中奖,请再接再厉。邮件附件内容:黑曜石*5
  • 没中奖的邮件提示:本期中奖号码:%s、%s、%s、%s、%s。很遗憾,在本期抽奖活动中未能中奖,请继续努力。邮件附件内容:铁锭*3
  • 当天没有领取任何号码的玩家无需发放邮件。

# API需求

  • 给指定玩家随机获得1个号码(必须是本期活动没有获得过的,如果没有号码则返回-1)
  • 返回玩家已获取的号码数量
  • 返回玩家已获取的号码列表
  • 重置某个玩家的号码
  • 重置所有号码
  • 执行发奖,返回获奖的号码列表以及获奖玩家列表

# 事件需求

  • 发奖时刻之前触发——返回中奖号码,可修改中奖号码
  • 发奖时刻之后触发——返回中奖号码与中奖玩家