显示页面讨论过去修订反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== Bot MC_lsny2的用法和源代码 ====== ===== 用法 ===== * ''MC_lsny2'' 查询帮助和状态 * ''MC_lsny2 list'' 查询服务器在线玩家 * **''MC_lsny2 退服'' 让bot退服,如服务器准备开始维护时** * ''MC_lsny2 重连'' 让bot重连服务器,但mcc有概率崩溃 * ''MC_lsny2 reco次数'' 查询重连次数,从1开始数 * ''MC_lsny2 重生'' 让bot重生 * ''MC_lsny2 找床'' 让bot睡觉 * ''求睡'' 触发找床提示 * ''年余好'' 问好 ---- * ''MC_lsny2 过来'' 占有bot,并让bot传送到你的位置(除非别人占用了bot) * 占有bot后,别人无法用“MC_lsny2 过来”把bot传送过来,但能让bot回家 * ''MC_lsny2 回家'' 解除占有,并让bot回山映 * ''MC_lsny2 homelist'' 查看家列表 * ''/msg MC_lsny2 你的名字: #密码 密码2 密码3 密码4 指令'' 让bot执行指令 * ''MC_lsny2 res info'' 查看所在领地 ---- * ''MC_lsny2 锁定'' 锁定bot。但别人能让bot回家以解锁bot * ''MC_lsny2 解锁'' 解锁bot。 * ''老王好'' 发送老王好(每次启动只发1次) * ''生日快乐'' 发送生日快乐(每次启动只发1次) * ''&&指令''发送指令(只有在白名单才能用) ===== 源代码 ===== 大概率已过时\\ v3.4版本\\ 注意阅读//的注释,根据需要配置自己的bot\\ 建议把所有MC_lsny2查找替换为自己的bot ID \\ 如果代码混乱,请点击编辑,然后复制代码 \\ <code csharp> //using System; //using System.Collections.Generic; MCC.LoadBot(new SystemMessageQuitBot()); //MCCScript Extensions /* MCnnyy2留名,v3.4 (2025 0823 2203) */ class SystemMessageQuitBot : ChatBot { private bool hasSentBirthdayWish = false; // 标记是否已经发送过生日祝福 private bool hasSentLaoWangGreeting = false; // 标记是否已经发送过老王好问候 private Random random = new Random(); // 随机数生成器 private bool waitingForListResponse = false; // 标记是否正在等待/list的响应 private bool waitingForHomelistResponse = false; // 标记是否正在等待/homelist的响应 private bool botIsFree = true; // 标记bot是否空闲 private string currentUser = null; // 记录当前占用bot的使用者 private int recoCount = 0; //定义 重连次数 private bool waitingForResInfo = false; //标记是否等待领地信息 // 10条自创问候语 private string[] greetings = new string[] { "今天也是充满希望的一天!", "愿你的每一天都如彩虹般绚烂", "阳光正好,微风不燥,祝你心情美妙", "愿你眼中有光,心中有爱,一路春暖花开", "新的一天,新的开始,加油!", "生活就像一盒巧克力,你永远不知道下一颗是什么味道", "保持热爱,奔赴山海", "愿你被世界温柔以待", "每一天都是独一无二的礼物", "微笑面对生活,生活也会对你微笑" }; // 此方法在成功加入游戏后调用 public override void AfterGameJoined() { //SendText("mcc挂机,需我退服请发\"MC_lsny2 退服\""); //LogToConsole("已发送挂机通知消息"); hasSentBirthdayWish = false; // 重置标记 hasSentLaoWangGreeting = false; // 重置标记 waitingForListResponse = false; // 重置标记 waitingForHomelistResponse = false; // 重置标记 botIsFree = true; // 重置标记 recoCount++; //重连次数加一 waitingForResInfo = false; //重置Res Info 标记 } // 处理所有收到的文本消息(包括系统提示) public override void GetText(string text) { // 获取原始文本(去除格式代码) string rawText = GetVerbatim(text); // 处理/list响应 if (waitingForListResponse && rawText.StartsWith("default:")) { LogToConsole($"收到list响应: {rawText}"); SendText(rawText); waitingForListResponse = false; return; } // 处理res info 指令 if (waitingForResInfo && (rawText.StartsWith("领地: ") || rawText.StartsWith("无效的领地") )) { LogToConsole($"收到res info响应: {rawText}"); SendText(rawText); waitingForResInfo = false; return; } // 处理/homelist响应 if (waitingForHomelistResponse && rawText.StartsWith("MC_lsny2 的家:")) { LogToConsole($"收到homelist响应: {rawText}"); // 提取家名称列表 List<string> homeNames = new List<string>(); // 查找所有在方括号中的家名称 int startIndex = rawText.IndexOf('['); while (startIndex != -1) { int endIndex = rawText.IndexOf(']', startIndex); if (endIndex != -1) { string homeName = rawText.Substring(startIndex + 1, endIndex - startIndex - 1); homeNames.Add(homeName); startIndex = rawText.IndexOf('[', endIndex); } else { break; } } // 整理家名称列表并用顿号分隔 if (homeNames.Count > 0) { string formattedHomes = string.Join("、", homeNames); SendText($"MC_lsny2的家:{formattedHomes}"); } else { SendText("MC_lsny2的家:暂无家园"); } waitingForHomelistResponse = false; return; } // 检查是否是系统提示格式 [组织名]玩家ID:消息内容 if (rawText.Contains(":") && rawText.Contains("]")) { // 查找右括号和冒号位置 int bracketIndex = rawText.IndexOf(']'); int colonIndex = rawText.IndexOf(':'); if (bracketIndex > 0 && colonIndex > bracketIndex && colonIndex < rawText.Length - 1) { // 提取玩家ID部分(在]和:之间) string playerId = rawText.Substring(bracketIndex + 1, colonIndex - bracketIndex - 1).Trim(); // 提取消息内容部分(冒号后面的内容) string messageContent = rawText.Substring(colonIndex + 1).Trim(); // 检查是否是#q1w2e3指令(私信) if (messageContent.StartsWith("#q1w2e3 ") && playerId != GetUsername()) { string content = messageContent.Substring("#q1w2e3 ".Length); LogToConsole($"检测到#q1w2e3指令,来自: {playerId},内容: {content}"); // 发送内容 SendText(content); // 发送私信 SendText($"/msg {playerId} 执行.{content}"); } // 检查是否是 && 自定义执行指令(公屏) if (messageContent.StartsWith("&& ") && playerId != GetUsername() && (playerId =="MCnnyy2 年余")) //这里设置局部白名单 { string content = messageContent.Substring("&& ".Length); LogToConsole($"检测到&&自定义指令,来自: {playerId},内容: {content}"); // 发送内容 SendText(content); // 发送私信 SendText($"{playerId},收到执行.{content}"); } // 检查是否是homelist指令 else if (messageContent.Contains("MC_lsny2 homelist #password") && playerId != GetUsername()) { LogToConsole($"检测到homelist指令,来自: {playerId},正在获取家列表..."); // 发送/homelist命令 SendText("/homelist"); waitingForHomelistResponse = true; } // 检查是否是list指令 else if (messageContent.Contains("MC_lsny2 list") && playerId != GetUsername()) { LogToConsole($"检测到list指令,来自: {playerId}"); // 请求确认发送/list命令 SendText("此操作可能刷屏。确认请发“MC_lsny2 sure list”"); } else if (messageContent.Contains("MC_lsny2 sure list") && playerId != GetUsername()) { LogToConsole($"检测到list指令,来自: {playerId},正在获取在线列表..."); // 发送/list命令 SendText("/list"); waitingForListResponse = true; } // 检查消息内容是否包含退出指令,并且不是自己发送的消息 //messageContent.Trim() == "老王好" && playerId != GetUsername() && !hasSentLaoWangGreeting) else if (messageContent.Trim() == "MC_lsny2 退服" && playerId != GetUsername()) { LogToConsole($"检测到退出指令,来自: {playerId},正在退服..."); // 直接退出服务器 SendText("正在关闭机器并退服…"); PerformInternalCommand("quit"); } // 检查是否是重连指令 else if (messageContent.Contains("MC_lsny2 重连") && playerId != GetUsername()) { LogToConsole($"检测到重连指令,来自: {playerId},正在重连..."); // 发送重连命令 SendText("正在关闭机器并重连…"); PerformInternalCommand("reco"); } // 检查是否是重生指令 else if (messageContent.Contains("MC_lsny2 重生") && playerId != GetUsername()) { LogToConsole($"检测到重生指令,来自: {playerId},正在重生..."); // 发送重生命令 SendText("自动重生没成功吗?我再试试"); SendText("/respawn"); } // 检查是否是召唤指令 else if (messageContent.Contains("MC_lsny2 过来") && playerId != GetUsername()) { if (botIsFree) { LogToConsole($"检测到召唤指令,来自: {playerId},正在发送传送请求..."); // 记录当前使用者 currentUser = playerId; botIsFree = false; // 发送传送请求 SendText($"来了,{playerId} ovo"); SendText($"/tpa {playerId}"); SendText($"/etpa {playerId}"); } else { // 检查是否是当前使用者 if (playerId == currentUser) { LogToConsole($"当前使用者 {playerId} 再次发送召唤指令,重新发送传送请求..."); // 重新发送传送请求 SendText($"来了,{playerId} ovo"); SendText($"/tpa {playerId}"); SendText($"/etpa {playerId}"); } else { LogToConsole($"检测到召唤指令,但bot已被占用,来自: {playerId}"); // 发送占用提示 SendText($"bot被占用,使用者:{currentUser}。让bot回家可解除占用"); } } } // 检查是否是求睡指令 else if (messageContent.Contains("求睡") && playerId != GetUsername()) { LogToConsole($"检测到求睡指令,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText("发送MC_lsny2 找床→尝试睡觉"); } // 检查是否是找床指令 else if (messageContent.Contains("MC_lsny2 找床") && playerId != GetUsername()) { LogToConsole($"检测到找床指令,来自: {playerId},正在尝试找床..."); // 执行找床命令 SendText("尝试在半径20格内找床"); PerformInternalCommand("bed sleep 20"); } // 检查是否包含年余好问候 else if (messageContent.Contains("年余好") && playerId != GetUsername()) { LogToConsole($"检测到年余好问候,来自: {playerId},回复随机问候..."); // 随机选择一条问候语 int index = random.Next(greetings.Length); string greeting = greetings[index]; // 发送问候语 SendText($"{playerId} {greeting}"); } // 检查是否是生日祝福(精确匹配,且只发送一次) else if (messageContent.Trim() == "生日快乐" && playerId != GetUsername() && !hasSentBirthdayWish) { LogToConsole($"检测到生日祝福,来自: {playerId},回复祝福..."); // 发送生日祝福 SendText("生日快乐"); hasSentBirthdayWish = true; // 标记已发送 } // 检查是否是老王好问候(精确匹配,且只发送一次) else if (messageContent.Trim() == "老王好" && playerId != GetUsername() && !hasSentLaoWangGreeting) { LogToConsole($"检测到老王好问候,来自: {playerId},回复问候..."); // 发送老王好问候 SendText("老王好"); hasSentLaoWangGreeting = true; // 标记已发送 } // 检查是否是MC_lsny2指令(不含其他参数) else if (messageContent.Trim() == "MC_lsny2" && playerId != GetUsername()) { LogToConsole($"检测到MC_lsny2指令,来自: {playerId},发送提示信息..."); // 分情况发送提示信息 if (botIsFree) { SendText("bot空闲。使用教程:https://mcnnyy2.wuaze.com/wiki2/doku.php?id=playground:mccbot_mc_lsny"); } else { SendText($"bot被占用,使用者:{currentUser}。使用教程:https://mcnnyy2.wuaze.com/wiki2/doku.php?id=playground:mccbot_mc_lsny"); } } // 检查是否是MC_lsny2指令(不含其他参数) else if (messageContent.Contains("mcc挂机,需我退服请发\"MC_lsny2 退服\"") && playerId != GetUsername()) { LogToConsole($"检测到MC_lsny2退服复读指令,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText("mcc挂机中,你是复读机吗"); } // 检查是否是MC_lsny2指令(不含其他参数) else if (messageContent.Contains("mcc挂机中,你是复读机吗") && playerId != GetUsername()) { LogToConsole($"检测到MC_lsny2挂机复读指令2,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText(":)"); } // 检查是否是MC_lsny2指令:回家 else if (messageContent.Trim() == "MC_lsny2 回家" && playerId != GetUsername()) { LogToConsole($"检测到MC_lsny2指令回家,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText("回家咯!"); SendText("/home farm"); botIsFree = true; currentUser = null; } // 检查是否是MC_lsny2指令年余读错(不含其他参数) else if (messageContent.Contains("鲶鱼") && playerId != GetUsername()) { LogToConsole($"检测到年余被打错了,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText("鲶鱼?年余?"); } else if (messageContent.Contains("MC_lsny2 reco次数") && playerId != GetUsername()) { LogToConsole($"有人询问重连次数"); // 发送提示信息 SendText($"重连次数: {recoCount} "); } else if (messageContent.Contains("MC_lsny2 状态") && playerId != GetUsername()) { LogToConsole($"有人询问状态"); // 分情况发送提示信息 if (botIsFree) { SendText("bot空闲"); } else { SendText($"bot被占用。占用者:{currentUser}"); } } else if (messageContent.Contains("MC_lsny2 锁定") && playerId != GetUsername() ) { //分情况发送提示信息 if (playerId == "MCnnyy2 年余" || playerId == "MCnnyy2" || playerId == "_MCnnyy2" || playerId == ".MCnnyy2" ) //局部主人设置 { LogToConsole($"主人锁定"); SendText($"锁定。bIF = false. "); botIsFree = false; currentUser = playerId; } else { LogToConsole("非主人锁定"); SendText($"锁定错误:密码"); } } else if (messageContent.Contains("MC_lsny2 解锁") && playerId != GetUsername() ) { //分情况发送提示信息 if (playerId == "MCnnyy2 年余" || playerId == "MCnnyy2" || playerId == "_MCnnyy2" || playerId != ".MCnnyy2" ) { LogToConsole($"主人解锁"); SendText($"解定。bIF = true. "); botIsFree = true; } else { LogToConsole("非主人解锁"); SendText($" 解锁错误:密码"); } } // 检查是否是res info指令 else if (messageContent.Trim() == "MC_lsny2 res info" && playerId != GetUsername()) { LogToConsole($"检测到res info指令,来自: {playerId},发送提示信息..."); // 发送提示信息 SendText("/res info"); waitingForResInfo = true; } } } } } </code> /home/mcnnyy2/dokuwiki-2025-05-14b/data/pages/playground/mccbot_mc_lsny2.txt 最后更改: 2025/08/23 14:46由 127.0.0.1