大逃杀
下载原图 PNG

原文件来自:未分类/大逃杀.png

chara_card_v3 · v3.0

大逃杀

类别:未分类

开场白

序章-谁在制造恐慌?{ 飞机坠机到一个岛屿上 广播: 0.开始大逃杀 1.活到最后,才能回家 }

世界书大逃杀

  • 出口

    <%_ if (getvar('stat_data.x')<-30 || getvar('stat_data.x')>43 || getvar('stat_data.y')<-30 || getvar('stat_data.y')>-46) { _%> 结束任务: 岛屿消失了,现在在一片海域上 <%_ } _%>

  • [Initvar](已禁用)

    { "天数":0.3, "人口":97, "混乱度":60, "势力":{ "$meta":{ "extensible":true, "recursiveExtensible":true, "template":{ "描述":"", "营地":[0,0], //x,y "人口":0 } } }, "角色":{ "$meta":{ "extensible":true, "template":{ "性别":"", "关系":"" } } }, "营地":[], "天气":"", "剧情物品":[], "x":2.61, "y":13.82 }

  • 变量更新

    <Variables> {{get_message_variable::stat_data}} </Variables> <Variables_Description> when 新增势力 and 受到影响: _.assign('势力','名称',{ "描述":"描述势力行为", "营地":"位置", "人口":5 }) when 新增角色 and 是羁绊关系: _.assign('角色','名称',{ "性别":"", "关系":"与{{user}}的关系" }); when died; _.remove('角色.名称'); </Variables_Description> <UpdateVariable_format> 0.format output at the end. <UpdateVariable> <Analysis> 0.Check '天数','x','y',Calculating time and moving distance. 1.Check the relevant variables, do they need to be updated? Output`${path}:Y or N`. </Analysis> javascript api: _.add('${path}','${number}'); _.set('${path}','${value}'); _.remove('${path}'); when type of [] , and operate value: _.assign('${path}','${object}'); _.remove('${path}','${value}'); </UpdateVariable> </UpdateVariable_format>

  • 胜利

    <%_ if (getvar('stat_data.人口')==1) { _%> 结束任务{ 0.打开一个传送门(通往大陆) } <%_ } _%>

  • 地图

    <岛屿地图> 🌊🌊🌊🌊🌊🌊🌊🏖⛱️🏖⛱️🏖🌊🌊 🌊🌊🌊🌊🌊🏖⛱️🟩🌿🟩🌳🟩🏖🌊 🌊🌊🌊🏖⛱️🟩🌳🌳🌳💦🌳🌿🟩🏖 🌊🌊🏖⛱️🟩🌳🌳🌲🌲💧🌲🌳🟩🏖 🌊🏖🟩🌿🌳🌲🌲🪵🌲🌲🌳🌿🟩⛱️ 🌊⛱️🟩🌳🌲🪵🌲🌲🪵🌲🌲🌳🟩🏖 🏖🟩🌲🌲🪵🌲🌲🌲🌲🪵🌲🌲🟩⛱️ 🏖🟩🌲🪵🌲🌲🌲🪨🌲🌲🌲🌲🟩🏖 🏖🟩🌲🌲🌲🌲🌲🌲🌲🪵🌲🌳🟩⛱️ 🌊⛱️🟩🌳🌲🪵🌲🌲🌲🌲🌲🌳🟩🏖 🌊🏖🟩🌿🌳🌲🌲🌲🌲🌲🌳🌿🟩⛱️ 🌊🏖⛱️🟩🌳🌳🌲🪵🌳🌳🟩🟩⛰️🏖 🌊🌊🏖🏖🟩🟩🌳🌳🟩🌿⛰️⛰️⛰️🏖 🌊🌊✈️🏖⛱️🟩🟩🟩⛰️⛰️🪨⛰️🪨⛱️ 🌊🌊🌊🌊🏖🏖⛱️⛰️⛰️🪨🪨🪨🏖🌊 🌊🌊🌊🌊🌊🌊🏖⛱️🏖🪨🪨🏖🌊🌊 ✈️ = 飞机残骸 🌊 = 海洋 🏖⛱️ = 沙滩 🟩 = 平原草地 🌿 = 草丛 💦💧 = 湖泊与水源 🌳 = 阔叶林木 🌲 = 针叶森林 🪵 = 倒木与枯枝 ⛰️ = 山脉 🪨 = 岩石区域 </岛屿地图>

  • 天气_vm

    <% (function(){ // 岛屿天气生成器(优化版) class IslandWeatherGenerator { constructor(seed, dayOfYear) { this.seed = seed; this.day = dayOfYear; // 初始化参数 this.initParameters(); // 生成第一天的天气 this.generateWeather(); } initParameters() { // 使用种子初始化确定性参数 const rng = this.mulberry32(this.seed); // 基础气候参数(基于岛屿特性) this.baseTemp = 22 + (rng() * 6 - 3); // 22°C ±3°C 基础温度 this.tempRange = 8 + (rng() * 4); // 8-12°C 季节温差 this.windBase = 3 + (rng() * 4); // 3-7 m/s 基础风速 // 平滑变化参数 this.tempTrend = 0; this.weatherPattern = 0; // 天气模式,影响持续晴天或雨天的概率 this.prevTemp = this.baseTemp; this.prevWeather = '晴朗'; // 天气状态持续时间 this.sameWeatherCount = 0; this.currentPattern = rng() > 0.5 ? 'dry' : 'wet'; // 当前是干燥期还是湿润期 this.patternDuration = Math.floor(5 + rng() * 10); // 模式持续时间 } // 32位随机数生成器(轻量级) mulberry32(a) { return function() { a |= 0; a = a + 0x6D2B79F5 | 0; let t = Math.imul(a ^ a >>> 15, 1 | a); t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t; return ((t ^ t >>> 14) >>> 0) / 4294967296; }; } // 季节影响函数 getSeasonalFactor(day) { // 将一年映射到0-2π的周期 const yearProgress = (day % 365) / 365 * 2 * Math.PI; return { temperature: Math.cos(yearProgress - Math.PI), // 夏季高,冬季低 dryness: Math.abs(Math.cos(yearProgress * 2)) // 干湿季交替 }; } // 平滑噪声函数 smoothNoise(day, frequency, amplitude) { const rng = this.mulberry32(this.seed + Math.floor(day * frequency)); return (rng() * 2 - 1) * amplitude; } // 获取温度描述 getTemperatureDesc(temp) { if (temp < 15) return '寒冷'; if (temp < 20) return '凉爽'; if (temp < 25) return '舒适'; if (temp < 30) return '温暖'; return '炎热'; } // 获取风力描述 getWindDesc(windSpeed) { if (windSpeed < 2) return '无风'; if (windSpeed < 5) return '微风'; if (windSpeed < 8) return '和风'; if (windSpeed < 12) return '强风'; return '狂风'; } // 获取天气状况描述(优化版,增加晴天概率) getWeatherDesc(precipitation, cloudCover, humidity, currentPattern) { // 基于降水和云量决定天气 if (precipitation > 0.7) return '暴雨'; if (precipitation > 0.4) return '大雨'; if (precipitation > 0.1) return '小雨'; // 晴天概率增加,特别是在干燥模式 if (currentPattern === 'dry' && cloudCover < 0.4) { return '晴朗'; } if (cloudCover > 0.8) return '阴天'; if (cloudCover > 0.5) return '多云'; if (cloudCover > 0.2) return '少云'; return '晴朗'; } // 生成天气(优化云量和降水计算) generateWeather() { const seasonal = this.getSeasonalFactor(this.day); const rng = this.mulberry32(this.seed + this.day); // 检查是否需要切换天气模式 this.sameWeatherCount++; if (this.sameWeatherCount > this.patternDuration) { this.currentPattern = this.currentPattern === 'dry' ? 'wet' : 'dry'; this.patternDuration = Math.floor(5 + rng() * 15); // 5-20天的模式周期 this.sameWeatherCount = 0; } // 温度计算 const seasonalTemp = this.baseTemp + seasonal.temperature * this.tempRange / 2; const noiseTemp = this.smoothNoise(this.day, 0.1, 2); const trendInfluence = this.tempTrend * 0.7; const temperature = seasonalTemp + noiseTemp + trendInfluence; // 风速计算 const windNoise = this.smoothNoise(this.day, 0.2, this.windBase * 0.5); const windSpeed = Math.max(1, this.windBase + windNoise); // 优化云量和降水计算 let cloudCover, precipitation; if (this.currentPattern === 'dry') { // 干燥期:低云量,低降水概率 cloudCover = 0.1 + rng() * 0.4 + seasonal.dryness * 0.2; precipitation = rng() < 0.1 ? rng() * 0.2 : 0; // 只有10%的概率有少量降水 } else { // 湿润期:高云量,高降水概率 cloudCover = 0.4 + rng() * 0.5 + (1 - seasonal.dryness) * 0.3; const rainChance = 0.3 + (1 - seasonal.dryness) * 0.4; precipitation = rng() < rainChance ? rng() * 0.8 : 0; } // 确保云量在合理范围内 cloudCover = Math.max(0.05, Math.min(0.95, cloudCover)); // 生成描述性天气 this.weatherDesc = this.getTemperatureDesc(temperature)+" "+this.getWindDesc(windSpeed)+" "+this.getWeatherDesc(precipitation, cloudCover, 0, this.currentPattern); // 更新趋势 this.tempTrend = (temperature - this.prevTemp) * 0.3; this.prevTemp = temperature; this.prevWeather = this.weatherDesc.weather; } // 获取当前天气并推进到下一天 getWeatherAndAdvance() { // 推进到下一天 this.day++; this.generateWeather(); return this.weatherDesc; } // 直接获取当前天气(不推进) getCurrentWeather() { return this.weatherDesc; } } let day=Number(getvar('stat_data.天数')).toFixed(); let cday=getvar('vm_day'); if(day!=cday){ const weatherGen = new IslandWeatherGenerator(12345, 99+day); const todayWeather = weatherGen.getWeatherAndAdvance(); // 获取今天天气并更新到明天 setvar('vm_day',day); setvar('stat_data.天气',todayWeather); print("天气.更新()\n"); } })() %>

  • 空投位置(已禁用)

    <% (function(){ // 地图区域划分配置 - 考虑活动区域权重调整 const MAP_CONFIG = { width: 14, height: 16, regions: [ { name: "左上海域", bounds: { x1: 0, y1: 0, x2: 6, y2: 7 }, baseWeight: 2, activityAreas: [ { x1: 5, y1: 0, x2: 6, y2: 2, type: "海滩", weightModifier: -1 } ], color: "#1E90FF" }, { name: "左下海域", bounds: { x1: 0, y1: 8, x2: 6, y2: 15 }, baseWeight: 2, activityAreas: [ { x1: 0, y1: 13, x2: 2, y2: 15, type: "飞机", weightModifier: -2 }, { x1: 3, y1: 12, x2: 5, y2: 14, type: "海滩", weightModifier: -1 } ], color: "#4169E1" }, { name: "森林", bounds: { x1: 7, y1: 0, x2: 13, y2: 7 }, baseWeight: 4, activityAreas: [ { x1: 8, y1: 2, x2: 10, y2: 4, type: "湖泊", weightModifier: -2 }, { x1: 11, y1: 1, x2: 13, y2: 3, type: "稀疏森林", weightModifier: -1 } ], color: "#228B22" }, { name: "山地", bounds: { x1: 7, y1: 8, x2: 13, y2: 15 }, baseWeight: 5, activityAreas: [ { x1: 11, y1: 13, x2: 13, y2: 15, type: "岩石区", weightModifier: -1 }, { x1: 8, y1: 10, x2: 10, y2: 12, type: "小路", weightModifier: -2 } ], color: "#8B4513" } ] }; // 更新空投物品配置 - 调整物品数量和平衡性 const AIRDROP_ITEMS = { // 近战武器 meleeWeapons: [ { name: "砍刀", damage: 60, speed: 1.2, range: 1.5, rarity: 2 }, { name: "斧头", damage: 75, speed: 0.8, range: 1.2, rarity: 2 }, { name: "棒球棍", damage: 45, speed: 1.5, range: 1.8, rarity: 1 }, { name: "匕首", damage: 40, speed: 2.0, range: 1.0, rarity: 1 }, { name: "长矛", damage: 55, speed: 1.0, range: 2.5, rarity: 3 } ], // 远程武器 rangedWeapons: [ { name: "复合弓", damage: 85, range: 30, ammo: "箭矢", ammoCount: 20, rarity: 4 }, { name: "十字弩", damage: 95, range: 25, ammo: "弩箭", ammoCount: 15, rarity: 4 }, { name: "投石索", damage: 35, range: 20, ammo: "石块", ammoCount: 30, rarity: 2 }, { name: "飞镖", damage: 25, range: 15, ammo: "毒镖", ammoCount: 25, rarity: 3 } ], // 弱火力枪械 lightFirearms: [ { name: "手枪", damage: 25, fireRate: 2, ammo: "9mm", ammoCount: 30, accuracy: 0.7, rarity: 5 }, { name: "冲锋枪", damage: 20, fireRate: 5, ammo: "9mm", ammoCount: 60, accuracy: 0.6, rarity: 5 }, { name: "霰弹枪", damage: 80, fireRate: 0.8, ammo: "12号霰弹", ammoCount: 16, accuracy: 0.4, rarity: 6 }, { name: "猎枪", damage: 65, fireRate: 1, ammo: "猎枪弹", ammoCount: 20, accuracy: 0.8, rarity: 5 } ], // 医疗物资 medical: [ { name: "急救包", heal: 80, useTime: 5, weight: 2, rarity: 3 }, { name: "绷带", heal: 25, useTime: 3, weight: 0.5, rarity: 1 }, { name: "止血粉", heal: 40, useTime: 2, weight: 0.3, rarity: 2 }, { name: "抗生素", heal: 60, useTime: 4, weight: 0.2, rarity: 3 }, { name: "止痛药", heal: 30, useTime: 2, weight: 0.1, rarity: 1 } ], // 防具 armor: [ { name: "战术背心", defense: 40, durability: 100, weight: 3, rarity: 4 }, { name: "防弹头盔", defense: 35, durability: 80, weight: 2, rarity: 3 }, { name: "护膝", defense: 15, durability: 60, weight: 1, rarity: 2 }, { name: "战术手套", defense: 10, durability: 50, weight: 0.5, rarity: 1 }, { name: "防爆盾", defense: 70, durability: 150, weight: 8, rarity: 6 } ] }; // 根据稀有度筛选物品 function getItemsByRarity(itemArray, maxRarity) { return itemArray.filter(item => item.rarity <= maxRarity); } // 根据位置难度调整空投物品质量 - 优化版本 function getAirdropItemsBasedOnDifficulty(difficulty) { const items = []; let itemCount = 0; // 根据难度决定物品数量和类型 if (difficulty <= 2) { // 低难度区域 - 1-2个物品 itemCount = Math.floor(Math.random() * 2) + 1; const itemTypes = []; // 70%概率获得近战武器 if (Math.random() < 0.7) itemTypes.push("melee"); // 保证至少有一个医疗物品 itemTypes.push("medical"); // 30%概率获得基础防具 if (Math.random() < 0.3) itemTypes.push("armor"); // 随机选择指定数量的物品类型 for (let i = 0; i < itemCount && i < itemTypes.length; i++) { const type = itemTypes[i]; let availableItems; switch(type) { case "melee": availableItems = getItemsByRarity(AIRDROP_ITEMS.meleeWeapons, 2); break; case "medical": availableItems = getItemsByRarity(AIRDROP_ITEMS.medical, 2); break; case "armor": availableItems = getItemsByRarity(AIRDROP_ITEMS.armor, 2); break; } if (availableItems && availableItems.length > 0) { const selectedItem = availableItems[Math.floor(Math.random() * availableItems.length)]; items.push({ ...selectedItem, type: type }); } } } else if (difficulty <= 3) { // 中等难度区域 - 2-3个物品 itemCount = Math.floor(Math.random() * 2) + 2; const itemTypes = []; // 武器选择更丰富 if (Math.random() < 0.5) itemTypes.push("melee"); if (Math.random() < 0.4) itemTypes.push("ranged"); // 医疗物品 itemTypes.push("medical"); // 防具概率提高 if (Math.random() < 0.6) itemTypes.push("armor"); // 随机选择物品,不超过itemCount const selectedTypes = []; while (selectedTypes.length < itemCount && itemTypes.length > 0) { const randomIndex = Math.floor(Math.random() * itemTypes.length); selectedTypes.push(itemTypes[randomIndex]); itemTypes.splice(randomIndex, 1); } selectedTypes.forEach(type => { let availableItems; let maxRarity = 4; switch(type) { case "melee": availableItems = getItemsByRarity(AIRDROP_ITEMS.meleeWeapons, maxRarity); break; case "ranged": availableItems = getItemsByRarity(AIRDROP_ITEMS.rangedWeapons, maxRarity); break; case "medical": availableItems = getItemsByRarity(AIRDROP_ITEMS.medical, maxRarity); break; case "armor": availableItems = getItemsByRarity(AIRDROP_ITEMS.armor, maxRarity); break; } if (availableItems && availableItems.length > 0) { const selectedItem = availableItems[Math.floor(Math.random() * availableItems.length)]; items.push({ ...selectedItem, type: type }); } }); } else { // 高难度区域 - 2-4个物品,质量更高 itemCount = Math.floor(Math.random() * 3) + 2; const itemTypes = []; // 武器种类更丰富 if (Math.random() < 0.3) itemTypes.push("melee"); if (Math.random() < 0.6) itemTypes.push("ranged"); if (Math.random() < 0.5) itemTypes.push("firearm"); // 医疗物品 itemTypes.push("medical"); // 防具概率很高 if (Math.random() < 0.8) itemTypes.push("armor"); // 随机选择物品 const selectedTypes = []; while (selectedTypes.length < itemCount && itemTypes.length > 0) { const randomIndex = Math.floor(Math.random() * itemTypes.length); selectedTypes.push(itemTypes[randomIndex]); itemTypes.splice(randomIndex, 1); } selectedTypes.forEach(type => { let availableItems; switch(type) { case "melee": availableItems = AIRDROP_ITEMS.meleeWeapons; break; case "ranged": availableItems = AIRDROP_ITEMS.rangedWeapons; break; case "firearm": availableItems = AIRDROP_ITEMS.lightFirearms; break; case "medical": availableItems = AIRDROP_ITEMS.medical; break; case "armor": availableItems = AIRDROP_ITEMS.armor; break; } if (availableItems && availableItems.length > 0) { const selectedItem = availableItems[Math.floor(Math.random() * availableItems.length)]; items.push({ ...selectedItem, type: type }); } }); } return items; } // 计算区域的有效权重(考虑活动区域) function calculateEffectiveWeight(region, x, y) { let effectiveWeight = region.baseWeight; // 检查是否在活动区域内 for (const activity of region.activityAreas) { if (x >= activity.x1 && x <= activity.x2 && y >= activity.y1 && y <= activity.y2) { effectiveWeight += activity.weightModifier; } } // 确保权重至少为1 return Math.max(1, effectiveWeight); } // 根据权重随机选择区域 function getRandomRegion() { // 计算每个区域的平均有效权重 const regionWeights = MAP_CONFIG.regions.map(region => { // 计算区域中心点的权重作为代表 const centerX = (region.bounds.x1 + region.bounds.x2) / 2; const centerY = (region.bounds.y1 + region.bounds.y2) / 2; return calculateEffectiveWeight(region, centerX, centerY); }); const totalWeight = regionWeights.reduce((sum, weight) => sum + weight, 0); let random = Math.random() * totalWeight; for (let i = 0; i < MAP_CONFIG.regions.length; i++) { random -= regionWeights[i]; if (random <= 0) { return MAP_CONFIG.regions[i]; } } return MAP_CONFIG.regions[MAP_CONFIG.regions.length - 1]; } // 在区域内随机生成坐标(包含小数部分) function getRandomPositionInRegion(region) { const bounds = region.bounds; let bestPosition = null; let bestWeight = -1; // 尝试多个随机位置,选择权重最高的 for (let attempt = 0; attempt < 15; attempt++) { // 生成包含小数的坐标 const x = (Math.random() * (bounds.x2 - bounds.x1)) + bounds.x1; const y = (Math.random() * (bounds.y2 - bounds.y1)) + bounds.y1; const weight = calculateEffectiveWeight(region, Math.floor(x), Math.floor(y)); if (weight > bestWeight) { bestWeight = weight; bestPosition = { x: parseFloat(x.toFixed(2)), y: parseFloat(y.toFixed(2)) }; } } return bestPosition; } // 生成空投 function generateAirdrop() { const region = getRandomRegion(); const position = getRandomPositionInRegion(region); const difficulty = calculateEffectiveWeight(region, Math.floor(position.x), Math.floor(position.y)); const items = getAirdropItemsBasedOnDifficulty(difficulty); // 确定空投所在的具体活动区域类型 let activityType = "普通区域"; for (const activity of region.activityAreas) { if (position.x >= activity.x1 && position.x <= activity.x2 && position.y >= activity.y1 && position.y <= activity.y2) { activityType = activity.type; break; } } return { region: region.name, position: position, activityType: activityType, items: items, difficulty: difficulty, color: region.color, timestamp: new Date().toISOString() }; } // 生成多个空投 function generateMultipleAirdrops(count = 3) { const airdrops = []; for (let i = 0; i < count; i++) { airdrops.push(generateAirdrop()); } return airdrops; } let day=Number(getvar('stat_data.天数')); let cday=Number(getvar('stat_data.vm_day2')||0); if(day-cday>3){ setvar('vm_day2',day); var list=[],items=[]; const airdrops = generateMultipleAirdrops(); airdrops.forEach(airdrop => { airdrop.items.forEach(item => { let itemInfo = `${item.name}`; switch(item.type) { case "ranged": case "firearm": itemInfo += " "+item.ammo+":"+item.ammoCount; break; } items.push(itemInfo); }); print("空投:x:"+airdrop.position.x+" y:"+airdrop.position.y+"\n"+items.join("\n")); print("\n"); }); } })() %>

  • 图块_vm

    <% (function(){function getNearbyTiles(x, y) { // 手动定义每个地图行的正确格子数组 const map2D = [ ["🌊","🌊","🌊","🌊","🌊","🌊","🌊","🏖","⛱️","🏖","⛱️","🏖","🌊","🌊"], ["🌊","🌊","🌊","🌊","🌊","🏖","⛱️","🟩","🌿","🟩","🌳","🟩","🏖","🌊"], ["🌊","🌊","🌊","🏖","⛱️","🟩","🌳","🌳","🌳","💦","🌳","🌿","🟩","🏖"], ["🌊","🌊","🏖","⛱️","🟩","🌳","🌳","🌲","🌲","💧","🌲","🌳","🟩","🏖"], ["🌊","🏖","🟩","🌿","🌳","🌲","🌲","🪵","🌲","🌲","🌳","🌿","🟩","⛱️"], ["🌊","⛱️","🟩","🌳","🌲","🪵","🌲","🌲","🪵","🌲","🌲","🌳","🟩","🏖"], ["🏖","🟩","🌲","🌲","🪵","🌲","🌲","🌲","🌲","🪵","🌲","🌲","🟩","⛱️"], ["🏖","🟩","🌲","🪵","🌲","🌲","🌲","🪨","🌲","🌲","🌲","🌲","🟩","🏖"], ["🏖","🟩","🌲","🌲","🌲","🌲","🌲","🌲","🌲","🪵","🌲","🌳","🟩","⛱️"], ["🌊","⛱️","🟩","🌳","🌲","🪵","🌲","🌲","🌲","🌲","🌲","🌳","🟩","🏖"], ["🌊","🏖","🟩","🌿","🌳","🌲","🌲","🌲","🌲","🌲","🌳","🌿","🟩","⛱️"], ["🌊","🏖","⛱️","🟩","🌳","🌳","🌲","🪵","🌳","🌳","🟩","🟩","⛰️","🏖"], ["🌊","🌊","🏖","🏖","🟩","🟩","🌳","🌳","🟩","🌿","⛰️","⛰️","⛰️","🏖"], ["🌊","🌊","✈️","🏖","⛱️","🟩","🟩","🟩","⛰️","⛰️","🪨","⛰️","🪨","⛱️"], ["🌊","🌊","🌊","🌊","🏖","🏖","⛱️","⛰️","⛰️","🪨","🪨","🪨","🏖","🌊"], ["🌊","🌊","🌊","🌊","🌊","🌊","🏖","⛱️","🏖","🪨","🪨","🏖","🌊","🌊"] ]; const result = []; // 获取3x3区域 for (let dy = -1; dy <= 1; dy++) { const row = []; for (let dx = -1; dx <= 1; dx++) { const newX = x + dx; const newY = y + dy; // 检查边界 if (newY >= 0 && newY < map2D.length && newX >= 0 && newX < map2D[newY].length) { row.push(map2D[newY][newX]); } else { row.push('🌊'); // 超出边界默认为海洋 } } result.push(row); } // 转换为字符串输出 let output = ""; for (let i = 0; i < result.length; i++) { output += result[i].join('') + '\n'; } return output.trim(); } print("附近的图块:\n"+getNearbyTiles(Math.round(Number(getvar('stat_data.x'))-0.5),Math.round(Number(getvar('stat_data.y')-0.5)))); })() %>

相关角色卡推荐