{ audio:"guanxing", trigger:{ player:"phaseZhunbeiBegin", }, frequent:true, preHidden:true, content:function () { "step 0"; var num = 5; var cards = get.cards(num); game.cardsGotoOrdering(cards); var next = player.chooseToMove(); next.set("list", [["牌堆顶", cards], ["牌堆底"]]); next.set("prompt", "观星:点击将牌移动到牌堆顶或牌堆底"); next.processAI = function (list) { var cards = list[0][1], p
{ audio:"guanxing", trigger:{ player:"phaseZhunbeiBegin", }, frequent:true, preHidden:true, content:function () { "step 0"; var num = 5; var cards = get.cards(num); game.cardsGotoOrdering(cards); var next = player.chooseToMove(); next.set("list", [["牌堆顶", cards], ["手牌区"]]); next.set("prompt", "观星:点击将牌移动到牌堆顶或手牌区"); next.processAI = function (list) { var cards = list[0][1], player = _status.event.player; var top = []; var judges = player.getCards("j"); var stopped = false; if (!player.hasWuxie()) { for (var i = 0; i < judges.length; i++) { var judge = get.judge(judges[i]); cards.sort(function (a, b) { return judge(b) - judge(a); }); if (judge(cards[0]) < 0) { stopped = true; break; } else { top.unshift(cards.shift()); } } } var hand; if (!stopped) { cards.sort(function (a, b) { return get.value(b, player) - get.value(a, player); }); while (cards.length) { if (get.value(cards[0], player) <= 5) break; top.unshift(cards.shift()); } } hand = cards; return [top, hand]; }; "step 1"; var top = result.moved[0]; var hand = result.moved[1]; top.reverse(); for (var i = 0; i < top.length; i++) { ui.cardPile.insertBefore(top[i], ui.cardPile.firstChild); } for (i = 0; i < hand.length; i++) { player.addToHand(hand[i]); } player.popup(get.cnNumber(top.length) + "上" + get.cnNumber(hand.length) + "手牌"); game.log(player, "将" + get.cnNumber(top.length) + "张牌置于牌堆顶," + get.cnNumber(hand.length) + "张牌加入手牌"); game.updateRoundNumber(); game.delayx(); }, ai:{ threaten:1.2, }, "_priority":0, } 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 修改移动目标时确保所有相关变量和函数调用同步更新,避免引用错误。 - 处理手牌添加逻辑时检查玩家对象的方法是否存在,防止运行时错误。 - 调整AI决策逻辑以适应新的移动选项,保持游戏平衡性。 [2025-11-16 13:44:17 | AI写代码神器 | 628点数解答]
- [DeepSeek] { audio:"guanxing", trigger:{ player:"phaseZhunbeiBegin", }, frequent:true, preHidden:true, content:function () { "step 0"; var num = 5; var cards = get.cards(num); game.cardsGotoOrdering(cards); var next = player.chooseToMove(); next.set("list", [["牌堆顶", cards], ["牌堆底"]]); next.set("prompt", "观星:点击将牌移动到牌堆顶或牌堆底"); next.processAI = function (list) { var cards = list[0][1], p(628点数解答 | 2025-11-16 13:44:17)16
- [字节豆包] { audio:"guanxing", trigger:{ player:"phaseZhunbeiBegin", }, frequent:true, preHidden:true, content:function () { "step 0"; var num = 5; var cards = get.cards(num); game.cardsGotoOrdering(cards); var next = player.chooseToMove(); next.set("list", [["牌堆顶", cards], ["牌堆底"]]); next.set("prompt", "观星:点击将牌移动到牌堆顶或牌堆底"); next.processAI = function (list) { var cards = list[0][1], p(1017点数解答 | 2025-11-16 13:52:31)16
- [DeepSeek] trigger: { player: ["phaseZhunbeiBegin","phaseJieshuBegin"], }, usable: 2, async content(event, trigger, player) { var num = player.maxHp - player.hp; const cards = get.cards(num+1,7); game.cardsGotoOrdering(cards); const { result } = await player.chooseButton(["天灯:将一张牌交给一名其他角色",cards], true); if (result.bool) { const { result: result2 } = await player.chooseTarget(`将${get.translation(result.links)}交给一名角色`, true).set("ai", t(405点数解答 | 2025-03-28 12:15:20)155
- [字节豆包] { "trigger": { "player": "judgeBefore" }, "direct": true, "priority": 1, "unique": true, "content": function() { "step 0" event.cards = get.cards(7); player.chooseCardButton(true, event.cards, '改命:选择一张牌作为你的' + trigger.judgestr + '判定结果').ai = function(button) { if (get.attitude(player, trigger.player) > 0) { return 1 + trigger.judge(button.link); } if (get.attitude(player, trigger.player) <(1113点数解答 | 2025-09-23 23:08:45)36
- [字节豆包] "trigger": { "player": "judgeBefore" }, "direct": true, "priority": 1, "unique": true, "content": function() { "step 0" event.cards = get.cards(7); player.chooseCardButton(true, event.cards, '改命:选择一张牌作为你的' + trigger.judgestr + '判定结果').ai = function(button) { if (get.attitude(player, trigger.player) > 0) { return 1 + trigger.judge(button.link); } if (get.attitude(player, trigger.player) < 0) { (925点数解答 | 2025-09-24 00:15:05)36
- [字节豆包] skill = { audio:2, trigger:{ player:"phaseDrawBegin1", }, direct:true, filter:function(event,player){ return !event.numFixed; }, content:function(){ "step 0" var check; var i,num=game.countPlayer(function(current){ return current!=player&¤t.countCards('h')&&get.attitude(player,current)<=0; }); check=(num>=2); player.chooseTarget(get.prompt('tuxi'),'获得其他一至两名角色的各一张手牌',[1,2],function(card,p(927点数解答 | 2025-08-24 12:30:01)90
- [讯飞星火] skill={ trigger:{ player:"shaBegin", }, direct:true, filter:function (event,player){ return event.target.hp>0&&event.target.countCards('he')>0; }, audio:2, logTarget:"target", content:function (){ 'step 0' player.choosePlayerCard(trigger.target,'he', [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('pojun',trigger.target)); 'step 1' if(result.bool&&result.links.length){ player.logSkill('xinpojun'); if(trigger.target.storage.xinpojun2){ trigger.target.storage.xinpojun2=t(288点数解答 | 2025-07-06 23:39:34)138
- [讯飞星火] skill={ audio:2, trigger:{ player:"useCard", }, frequent:true, filter:function (event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; if(!player.storage.jianying) return false; return get.suit(player.storage.jianying)==get.suit(event.cards[0])|| player.storage.jianying.number==event.cards[0].number; }, content:function (){ player.draw(); }, (713点数解答 | 2025-07-05 23:27:14)125
- [DeepSeek] content() { "step 0"; player.loseHp(); event.target = trigger.player; "step 1"; event.addIndex = 0; var list = [], num = target.countCards("h") - player.countCards("h"); event.num = num; if (num > 0 && target.countCards("h") > 0) list.push("令其弃置" + get.cnNumber(num) + "张手牌"); else event.addIndex++; if (target.hp > player.hp) list.push("令其失去" + get.cnNumber(target.hp - player.hp) + "点体力"); if (!lis(313点数解答 | 2025-05-28 16:03:47)158
- [字节豆包] { audio:2, audioname:["re_liufeng"], trigger:{ player:"phaseZhunbeiBegin", }, direct:true, content:function () { "step 0"; player.chooseTarget( get.prompt2(event.name), [1, 2], function (card, player, target) { return target.countCards("he") > 0; }, function (target) { return -get.attitude(_status.event.player, target); } ); "step 1"; if (result.bool) { result.targets.sortBySeat(); player.logSkill(event.name, result.targets); event.targets = result.targets; } else { event.finish(); } "step 2"; i(2075点数解答 | 2025-11-16 13:40:21)19
- [讯飞星火] skill={ trigger:{ player:"shaBegin", }, direct:true, filter:function (event,player){ return event.target.hp>0&&event.target.countCards('he')>0; }, audio:2, logTarget:"target", content:function (){ 'step 0' player.choosePlayerCard(trigger.target,'he', [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('pojun',trigger.target)); 'step 1' if(result.bool&&result.links.length){ (286点数解答 | 2025-07-06 23:35:52)144
- [字节豆包] skill={ audio:2, mod:{ aiOrder(player, card, num) { if (num <= 0 || !player.isPhaseUsing() || player.needsToDiscard() < 2) return num; let suit = get.suit(card, player); if (suit === "heart") return num - 3.6; }, aiValue(player, card, num) { if (num <= 0) return num; let suit = get.suit(card, player); if (suit === "heart") return num + 3.6; if (suit === "club") return num + 1; (199点数解答 | 2025-05-07 17:49:43)209