trigger: { global: ["useCard","respond"], }, superCharlotte: true, filter: function(event,player){ if(player.name!="szq") return false; return event.player.name!="szq"; }, prompt(event,player,card) { return "令" + get.translation(event.player) + "的" +


根据你的需求,要让AI在只有敌方角色触发的时候才会使用,已经有一个 `filter` 函数来进行筛选,不过代码里存在一些语法错误,下面是修正和改进后的代码: ```javascript // 定义一个技能配置对象 const skillConfig = { // 定义全局触发条件 trigger: { global: ["useCard", "respond"] }, // superCharlotte 标志位 superCharlotte: true, // 过滤函数,用于判断是否满足触发条件 filter: function(event, player) { // 这里假设 "szq" 是我方角色名称,只有我方角色才能触发该技能 // 并且事件的触发玩家不是我方角色(即敌方触发事件) return player.name === "szq" && event.player.name!== "szq"; }, // 提示信息函数,返回提示文本 prompt: function(event, player, card) { return "令" + get.translation(event.player) + "的" + get.translation(event.card) + "失效"; }, // 技能生效时执行的内容 content: function() { // 这里假设 trigger 是一个全局对象,将 card 方法置为空函数 trigger.card = function() {}; // 取消触发 trigger.untrigger(); // 完成触发流程 trigger.finish(); // 完成事件流程 event.finish(); } }; ``` 需要小心的地方: 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. `get.translation` 函数必须存在且能够正确处理传入的参数,否则会导致 `prompt` 函数出错。 2. `trigger` 和 `event` 对象在 `content` 函数中使用时,要确保它们已经被正确定义和初始化,不然会引发 `undefined` 错误。 3. `filter` 函数里的角色名称判断依赖硬编码的字符串 `"szq"`,如果后续角色名称发生变化,需要同步修改代码。 [2025-08-24 05:31:45 | AI写代码神器 | 476点数解答]
- trigger: { global: ["useCard","respond"], }, superCharlotte: true, filter: function(event,player){ if(player.name!="szq") return false; return event.player.name!="szq"; }, prompt(event,player,card) { return "令" + get.translation(event.player) + "的" + (476点数解答 | 2025-08-24 05:31:45)51
- skill={ trigger:{ global:"useCard1", }, audio:2, forced:true, firstDo:true, filter:function(event,player,card){ if(get.color(event.card)!='black') return false; return event.card.name=='nanman'&&player!=event.player||event.card.name=='wanjian'&&player!=event.player||event.card.name=='taoyuan'&&player.hp<player.maxHp||event.card.name=='wugu'; }, content:function(){}, mod:{ targetEnabled:function(card){ if((get.type(ca(211点数解答 | 2025-02-01 13:23:26)204
- 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)94
- jingyu: { audio: 2, trigger: { global: ["useskill", "logskillbegin", "usecard", "respond"], }, filter(event, player) { if (["global", "equip"].includes(event.type)) return false; let skill = event.sourceskill || event.skill; if (!skill || skill === "jingyu") return false; let info = get.info(skill); while (true) { if (!info || info.charlotte || info.equipskill) return false; if (info && !info.sourceskill) break; skill = info.sourceskill; info = get.info((15点数解答 | 2024-06-06 17:40:23)285
- if (card) { trigger.cancel(); trigger.result = { card: card, judge: trigger.judge(card), node: node, number: get.number(card), suit: get.suit(card), color: get.color(card), }; if (trigger.result.judge > 0) { trigger.result.bool = true; trigger.player.popup('洗具'); } if (trigger.result.judge < 0) { (793点数解答 | 2025-09-24 00:09:00)12
- 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)99
- { "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)17
- "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)18
- 这是无名杀的一个技能,如何让他去除不可声明限定技、觉醒技、隐匿技、使命技、主公技等特殊技能的限制skill={ unique: true, audio: 2, trigger: { global: "phaseBefore", player: ["enterGame","phaseBegin","phaseEnd"], }, filter(event, player, name) { if (event.name != "phase") return true; if (name == "phaseBefore") return game.phaseNumber == 0; return player.storage.rehuashen?.character?.length > 0; }, async cost(event, trigger, player) { if (trigger.name !== "phase" || event.triggername === "phaseBefore") { event.result = { bool: true, cost_data: ["(556点数解答 | 2025-06-29 08:59:58)109
- { trigger: { global: "useCardToBegin", }, audio: true, filter: function (event, player) { var card = player.getEquip(5); if (card) { var name = card.name; if ( name && name.indexOf("monkey") != -1 && event.name == "tao" && event.player != player && event.cards.filterInD().length > 0 ) return true; } return fals(613点数解答 | 2025-08-10 12:52:52)59
- { trigger: { global: "useCardToBegin", }, audio: true, filter: function (event, player) { var card = player.getEquip(5); if (card) { var name = card.name; if ( name && name.indexOf("monkey") != -1 && event.name == "tao" && event.player != player && event.cards.filterInD().length > 0 ) return true; } return fals(346点数解答 | 2025-08-10 12:54:50)59
- 这是无名杀的一个技能,如何让AI积极的更频繁使用这个技能 skill={ mod:{ targetInRange:function (card, player, target) { if (player.countCards("j") && player.inRange(target)) { return true; } }, cardUsableTarget:function (card, player, target) { if (player.countCards("j") && player.inRange(target)) return true; }, aiOrder(player, card, num) { if (get.type(card, "delay") && player.canUse(card, player) && player.canAddJu(571点数解答 | 2025-05-24 12:45:13)191