JS里满足多个条件,如何让它执行其中一个后就无法执行另外的

Chris_R233 2019-09-02 07:12:05
小弟最近在研究游戏脚本,在设置某个每日奖励领取中出了一点小问题,,就是如这张图所示,当我满足以下条件后可以选取奖励领取,但是我现在想的是让他领取一项后就无法领取另外一项,这个逻辑写法目前想不明白,请大佬指教一下,附上代码
var tt = "#fEffect/CharacterEff/1082565/0/0#"; //饼干兔子
// 每个阶段礼包所需的充值数
var condition = new Array(100, 500, 1000, 2000, 3500, 5000, 7500, 10000,12500,15000,20000,30000,35000);
// 礼包内容
var reward = new Array(
Array(01, 4000463, 10),
Array(02, 4000463, 30),
Array(03, 4000463, 50),
Array(04, 4000463, 80),
Array(05, 4000463, 100),
Array(06, 4000463, 120),
Array(07, 4000463, 150),
Array(08, 4000463, 200),
Array(09, 4000463, 250),
Array(10, 4000463, 300),
Array(11, 4000463, 350),
Array(12, 4000463, 400),
Array(13, 4000463, 450)
);


var sel;
var status = -1;
var text;
var ljname;
var curlevel = -1;;
function start() {
action(1, 0, 0);
}

function action(mode, type, selection) {
if (status == 0 && mode == 0) {
cm.dispose();
cm.openNpc(0,"充值中心");
return;
}
if (mode == 1) {
status++;
} else {
status--;
}

if (status == 0) {
var revenue = cm.getRMB().toString();
text = "\t\t\t\t #e#d#fs13#赞助礼包每日发放出#k#n \r\n\r\n";
text += "#e#d当前总资助数量: #r" + cm.getRMB().toString() + " #d点\r\n#e";//
//text += "#k礼包箱子介绍:#v2431468#---140级女皇防具\r\n\t\t\t #v2430893#---银河副手自选\r\n\t\t\t #v2432206#---X卷自选\r\n\t\t\t #v2439919#---究极黑暗卷自选\r\n\t\t\t #v2431509#---法弗纳防具自选\r\n\t\t\t #v2432069#---暴君防具自选\r\n\t\t\t #v2437739#---神秘之影防具\r\n\t\t\t #v2435087#---神秘武器\r\n#e\r\n";
for (var i = 1; i <= condition.length; i++) {
if (cm.getEventCount("赞助每日福利" + i, 0) == 1) {
text += "#r#L" + i + "# [#r已完成#g]每日赞助福利 #r\t\t\t" + condition[i - 1] + "#l\r\n";
curlevel = curlevel == -1 ? i : curlevel;
} else {
text += "#k#L" + i + "#r[未完成]每日赞助福利 \t\t\t" + condition[i - 1] + "#l\r\n";
}
}
text += "#k";
cm.sendSimpleN(text, 8, 2400010);
} else if (status == 1) {
sel = selection;
text = "\t\t\t#e#r- 累计资助" + condition[selection - 1] + "点福利 -#k#n\r\n\r\n";
for (var i = 0; i < reward.length; i++) {
if (reward[i][0] == selection) {
text += "\t\t\t#i" + reward[i][1] + "# #z" + reward[i][1] + "#[" + reward[i][2] + "个]\r\n";
}
}
cm.sendYesNo(text);
} else if (status == 2) {
if (cm.getEventCount("赞助每日福利" + sel, 1) == 1) {
cm.sendOk("#e#r\r\n\r\n\t\t这个礼包您已经领取过了");
status = -1;
//cm.dispose();
return;
}
if (cm.getRMB().toString() < condition[sel - 1]) {
cm.playerMessage(1, "累计资助未达标!");
cm.dispose();
return;
}

var rewardlist = new Array();
for (var i = 0; i < reward.length; i++) {
if (reward[i][0] == sel) {
if (reward[i][3] == null)
reward[i][3] = -1;
rewardlist.push(new Array(reward[i][1], reward[i][2], reward[i][3]));
}
}
if (!cm.canHoldSlots(rewardlist.length)) {
cm.sendOk("包裹空间不足,请确保包裹每个栏位有至少 " + rewardlist.length + " 格空间");
cm.dispose();
return;
}
for (var i = 0; i < rewardlist.length; i++) {
if (rewardlist[i][0] == 2430865) {
cm.gainItem(rewardlist[i][0], rewardlist[i][1], rewardlist[i][2]);
} else {
cm.gainItem(rewardlist[i][0], rewardlist[i][1]);
}
}
cm.setEventCount("赞助每日福利" + sel, 1);
cm.playerMessage(1, "领取成功");
cm.worldSpouseMessage(0x25, "≡累计资助≡  恭喜玩家 " + cm.getChar().getName() + " 领取了每日累计资助 " + condition[sel - 1] + " 点的福利礼包!!!");
cm.dispose();
}
}

Number.prototype.formatMoney = function (places, symbol, thousand, decimal) {
places = !isNaN(places = Math.abs(places)) ? places : 2;
symbol = symbol !== undefined ? symbol : " ";
thousand = thousand || ",";
decimal = decimal || ".";
var number = this,
negative = number < 0 ? "-" : "",
i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
j = (j = i.length) > 3 ? j % 3 : 0;
return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
};
...全文
528 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Salted-fish 2019-09-03
  • 打赏
  • 举报
回复
不行。这个好像刷新下就不行了。还是要跟数据库连上。
Salted-fish 2019-09-03
  • 打赏
  • 举报
回复
渣渣 新手提供下思路。设置个全局flag,刚开始为true.每次触发点击领取事件,判断flag如果flag为true就执行当前代码,并把flag设置为false;判断为false时,直接反馈以领取。 这样可以吗。
oh_Maxy 版主 2019-09-02
  • 打赏
  • 举报
回复
这代码不全,大概思路:
每一行“每日赞助”都有一个领取的事件,
你给每一行加个id,
领取的事件触发函数的时候,顺带按id,把所有的id对应的事件改掉,改成你需要的新的事件。
Chris_R233 2019-09-02
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
领取完一个,就将其它项设置为不可选。或者将所有项的领取事件删掉。
这个设置为不可选要咋弄啊,不能删掉,我想着的是领取完一个,再点其他项就会反馈已领取过,但是这个逻辑不知道咋写
oh_Maxy 版主 2019-09-02
  • 打赏
  • 举报
回复
领取完一个,就将其它项设置为不可选。或者将所有项的领取事件删掉。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧