群员挺期待我搞成赛马娘的… 但是我也不懂那个游戏啊。
先做成我感觉的赛马吧…
3.0 说明
这次加了道具,具体使用可以查看指令说明;应该在指令调用的回复里给足提示了。
使用后,可在评论区给个截图反馈,这次我就不做功能演示了,大家自行使用。
先做成我感觉的赛马吧…
这次加了道具,具体使用可以查看指令说明;应该在指令调用的回复里给足提示了。
使用后,可在评论区给个截图反馈,这次我就不做功能演示了,大家自行使用。
好耶!
好耶!
赛个马(saigma)无端)
已修复,更新到 0.3.4 版本即可。顺便修复了之前说的那个 return await 的问题。去除了所有测试的 log。
我看看…
我其实刚接触koishi开发不到两个月,很多东西都还没用过2333
只能说是机制吧,首先每一轮都有固定移速,加上 滞留buff 是允许叠加的。而且部分 buff 还挺长…
所以你看到的飞到终点,可能是:
固定移速 + buff + buff + buff + 事件奖励 = 实际本回合移动
3+2+2+2 + 5 = 14
特殊移动事件,也是会相继叠加的。
喵大大好认真的回复!小奶茶明白惹 ~
这个得实际反馈才知道,因为没有测试环境。你那边是怎么解决的? 看代码你是在指令加了
[text:text]
这个吗?
其实之前就怕有人一夜暴富,这个本来会后期做自定义配置;自己改就行
嗯,改完就可以用惹,其实具体为什么我也不是很清楚的说…
因为之前发送 使用道具 总是检测不到道具名称。
所以我就把 替换‘使用道具’ 那一句代码删掉惹。
就是参考这里的代码改的:指令开发 | Koishi
麻烦惹…等等,我也去 console.log 一下!
对不起大大,之前代码给你复制错了…您试试下面这个可不可以 @smmcat
上面那个代码,我刚才去试了一下,使用失败了,才发现复制错了。
下面的刚刚测试过,没问题。
ctx.command('使用道具 [text:text]', '对🐎宝具').userFields(['id']).action(async ({ session }, text) => {
const temp = getguildData(session.guild);
if (!temp.isPlay) {
await session.send('似乎还没开始赛马...');
return;
}
if (!temp.propTime[session.userId]) {
temp.propTime[session.userId] = 0;
}
if (+new Date() - temp.propTime[session.userId] < 10000) {
await session.send('您使用道具太频繁了,请等待一会');
return;
}
temp.propTime[session.userId] = +new Date();
const msg = text.replace(/<at id="[^"]+"\/>/, '');
const regex = /(\d+)|(\D+)/g;
let match;
let values = [];
let texts = [];
while ((match = regex.exec(msg)) !== null) {
if (match[1]) {
values.push(parseInt(match[1]));
} else {
texts.push(match[2].trim());
}
}
if (!texts[0]) {
await session.send('似乎还没有选择道具,目前存在的道具有:\n\n' + propList.map(item => item.name).join('\n'));
return;
}
const info = propList.find(item => texts[0].trim() === item.name);
if (!info) {
await session.send('道具不存在。目前存在的道具有:\n\n' + propList.map(item => item.name).join('\n'));
return;
}
try {
await ctx.monetary.cost(session.user.id, info.money);
await session.send('您花费了' + info.money);
} catch (error) {
await session.send(`下注失败,可能原因:额度不够`);
return;
}
const success = Math.random() <= info.prob;
if (!success) {
await session.send(`您尝试使用了${info.name},似乎失败了...`);
return;
}
if (info.trackFun) {
const index = info.trackFun(temp.track);
await session.send(`您的${info.name}选中了${index - 1}号🐎;\n${info.msg}`);
return;
}
if (info.statusFun) {
if (values[0] && values[0] > 0 && values[0] <= 6) {
info.statusFun(temp.strandedState, values[0] - 1);
await session.send(`您对${values[0]}号🐎使用了道具 ${info.name};\n${info.msg}`);
return;
} else {
await session.send('您对空气使用了道具,似乎没有选中目标,请确认目标!\n格式为:\n\n/使用道具 道具名 目标下标');
return;
}
}
// 目标数值操作
if (values[0] && values[0] > 0 && values[0] <= 6) {
temp.track[values[0] - 1] += info.value;
await session.send(`你对${values[0]}号马使用了${info.name};\n${msg}`);
}
});