📄 ct_raslashcmds.lua
字号:
tinsert(UISpecialFrames, "CT_RA_SlashCmdFrame");
function CT_RASlashCmd_DisplayDialog()
table.sort(CT_RA_SlashCmds, function(t1, t2)
return t1[2] < t2[2]
end);
-- Initialize dialog
local totalHeight = 0;
for i = 1, 30, 1 do
local obj = getglobal("CT_RA_SlashCmdFrameScrollFrameCmdsCmd" .. i);
if ( CT_RA_SlashCmds[i] ) then
obj.slashCommand = CT_RA_SlashCmds[i][2];
obj:Show();
getglobal(obj:GetName() .. "Text"):SetText(CT_RA_SlashCmds[i][2]);
getglobal(obj:GetName() .. "Description"):SetText(CT_RA_SlashCmds[i][3]);
if ( strlen(CT_RA_SlashCmds[i][4]) > 0 ) then
getglobal(obj:GetName() .. "Available"):SetText("快捷命令:|c00FFFFFF" .. CT_RA_SlashCmds[i][4] .. "|r");
obj:SetHeight(CT_RA_SlashCmds[i][1]+33);
else
getglobal(obj:GetName() .. "Available"):SetText("");
obj:SetHeight(CT_RA_SlashCmds[i][1]+25);
end
getglobal(obj:GetName() .. "Description"):SetHeight(CT_RA_SlashCmds[i][1]);
totalHeight = totalHeight + CT_RA_SlashCmds[i][1];
else
obj:Hide();
end
if ( i > 1 ) then
obj:SetPoint("TOPLEFT", "CT_RA_SlashCmdFrameScrollFrameCmdsCmd" .. (i-1), "BOTTOMLEFT");
end
end
CT_RA_SlashCmdFrameScrollFrameCmds:SetHeight(totalHeight);
ShowUIPanel(CT_RA_SlashCmdFrame);
CT_RA_SlashCmdFrameScrollFrame:UpdateScrollChildRect();
local minVal, maxVal = CT_RA_SlashCmdFrameScrollFrameScrollBar:GetMinMaxValues();
if ( maxVal == 0 ) then
CT_RA_SlashCmdFrameScrollFrameScrollBar:Hide();
else
CT_RA_SlashCmdFrameScrollFrameScrollBar:Show();
end
end
CT_RA_SlashCmds = { };
function CT_RA_RegisterSlashCmd(title, description, height, identifier, func, ...)
SlashCmdList[identifier] = func;
local otherCmds = "";
for i = 1, arg.n, 1 do
setglobal("SLASH_" .. identifier .. i, arg[i]);
if ( i > 1 ) then
if ( strlen(otherCmds) > 0 ) then
otherCmds = otherCmds .. ", ";
end
otherCmds = otherCmds .. arg[i];
end
end
local num = 0;
while ( string.find(description, "|b.-|eb") ) do
description = string.gsub(description, "^(.*)|b(.-)|eb(.*)$", "%1|c00FFD100%2|r%3");
num = num + 1;
if ( num > 10 ) then
break;
end
end
tinsert(CT_RA_SlashCmds, { height, title, description, otherCmds });
end
-- Functions used by slash commands
function CT_RA_CheckReady()
if ( CT_RA_Level >= 1 ) then
SendChatMessage("<团队助手> " .. UnitName("player") .. "开始进行准备检查。", "RAID");
CT_RA_AddMessage("CHECKREADY");
local numValid = 0;
for i = 1, GetNumRaidMembers(), 1 do
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(i);
if ( name ~= UnitName("player") and CT_RA_Stats[name] and CT_RA_Stats[name]["Reporting"] and online and CT_RA_Stats[name]["Version"] and CT_RA_Stats[name]["Version"] >= 1.097 ) then
numValid = numValid + 1;
CT_RA_Stats[name]["notready"] = 1;
end
end
CT_RA_Print("<团队助手> 正在检查|c00FFFFFF" .. numValid .. "|r 团队成员的准备状态。", 1, 1, 0);
CT_RA_UpdateFrame.readyTimer = 30;
CT_RA_UpdateRaidGroup(0);
else
CT_RA_Print("<团队助手> 你必须是团队领袖或助理才能那么做!", 1, 1, 0);
end
end
function CT_RA_CheckVote(question)
if ( CT_RA_Level >= 1 ) then
SendChatMessage("<团队助手> " .. UnitName("player") .. "发起了一次投票:" .. question, "RAID");
CT_RA_AddMessage("VOTE " .. question);
CT_RA_Print("<团队助手> 正在进行投票:|c00FFFFFF" .. question .. "|r", 1, 1, 0);
CT_RA_UpdateFrame.voteTimer = 30;
else
CT_RA_Print("<团队助手> 你必须是团队领袖或助理才能那么做!", 1, 1, 0);
end
end
function CT_RA_CheckRly()
if ( CT_RA_Level >= 1 ) then
CT_RA_AddMessage("CHECKRLY");
local numValid = 0;
for i = 1, GetNumRaidMembers(), 1 do
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(i);
if ( name ~= UnitName("player") and CT_RA_Stats[name] and CT_RA_Stats[name]["Reporting"] and online and CT_RA_Stats[name]["Version"] and CT_RA_Stats[name]["Version"] >= 1.097 ) then
numValid = numValid + 1;
CT_RA_Stats[name]["rly"] = 1;
end
end
if ( numValid == 1 ) then
CT_RA_Print("<团队助手> 在|c00FFFFFF" .. numValid .. "|r名团队成员中检查是否准备好。", 1, 1, 0);
else
CT_RA_Print("<团队助手> 在|c00FFFFFF" .. numValid .. "|r名团队成员中检查是否准备好。", 1, 1, 0);
end
CT_RA_UpdateFrame.rlyTimer = 30;
CT_RA_UpdateRaidGroup(0);
else
CT_RA_Print("<团队助手> 你必须是团队领袖或者助理才能那么做!", 1, 1, 0);
end
end
function CT_RA_Invite(msg)
if ( not GetGuildInfo("player") ) then
CT_RA_Print("<团队助手> 你必须在一个公会中才能批量邀请。");
return;
end
if ( ( not CT_RA_Level or CT_RA_Level == 0 ) and GetNumRaidMembers() > 0 ) then
CT_RA_Print("<团队助手> 你必须是团队领袖或助理才能批量邀请。", 1, 1, 0);
return;
end
local inZone = "";
if ( CT_RA_ZoneInvite ) then
inZone = " 在 " .. GetRealZoneText();
end
local useless, useless, min, max = string.find(msg, "^(%d+)-(%d+)$");
min = tonumber(min);
max = tonumber(max);
if ( min and max ) then
if ( min > max ) then
local temp = min;
min = max;
max = temp;
end
if ( min < 1 ) then min = 1; end
if ( max > 60 ) then max = 60; end
if ( min == max ) then
SendChatMessage("等级" .. min .. inZone .. " 的玩家将在10秒钟内收到团队邀请,请离开你当前的队伍。", "GUILD");
else
SendChatMessage("等级" .. min .. "到" .. max .. inZone .. " 的玩家将在10秒钟内收到团队邀请,请离开你当前的队伍。", "GUILD");
end
GuildRoster();
CT_RA_MinLevel = min;
CT_RA_MaxLevel = max;
CT_RA_UpdateFrame.startinviting = 10;
else
useless, useless, min = string.find(msg, "^(%d+)$");
min = tonumber(min);
if ( min ) then
if ( min < 1 ) then min = 1; end
if ( min > 60 ) then min = 60; end
GuildRoster();
SendChatMessage("等级" .. min .. inZone .. " 的玩家将在10秒钟内收到团队邀请,请离开你当前的队伍。", "GUILD");
CT_RA_MinLevel = min;
CT_RA_MaxLevel = min;
CT_RA_UpdateFrame.startinviting = 10;
else
if ( CT_RA_ZoneInvite ) then
CT_RA_Print("<团队助手> 语法错误。用法:|c00FFFFFF/razinvite 等级|r 或 |c00FFFFFF/rainvite 最低等级-最高等级|r.", 1, 0.5, 0);
CT_RA_Print("<团队助手> 这条命令可以批量邀请当前区域公会内的每一个符合等级要求的成员(如果最高等级一项留空,则只邀请指定等级的成员)。", 1, 0.5, 0);
else
CT_RA_Print("<团队助手> 语法错误。用法:|c00FFFFFF/rainvite 等级|r 或 |c00FFFFFF/rainvite 最低等级-最高等级|r.", 1, 0.5, 0);
CT_RA_Print("<团队助手> 这条命令可以批量邀请公会内的每一个符合等级要求的成员(如果最高等级一项留空,则只邀请指定等级的成员)。", 1, 0.5, 0);
end
end
end
end
-- Slash commands
-- /raslash
CT_RA_RegisterSlashCmd("/rahelp", "显示此对话框。", 15, "RAHELP", CT_RASlashCmd_DisplayDialog, "/rahelp");
-- /rares
CT_RA_RegisterSlashCmd("/rares", "|b/rares [show/hide]|eb,显示/隐藏复活监视器", 15, "RARES", function(msg)
if ( msg == "show" ) then
if ( GetNumRaidMembers() > 0 ) then
CT_RA_ResFrame:Show();
end
CT_RAMenu_Options["temp"]["ShowMonitor"] = 1;
elseif ( msg == "hide" ) then
CT_RA_ResFrame:Hide();
CT_RAMenu_Options["temp"]["ShowMonitor"] = nil;
else
CT_RA_Print("<团队助手> 用法:|c00FFFFFF/rares [show/hide]|r - 显示/隐藏复活监视器。", 1, 0.5, 0);
end
end, "/rares");
-- /rs
CT_RA_RegisterSlashCmd("/rs", "|b/rs [text]|eb, 对团队中的所有团队助手使用者发送一条信息,该信息将出现在屏幕中央(|b需要团队领袖或者助理权限|eb)。", 30, "RS", function(msg)
if ( CT_RA_Level >= 1 ) then
if ( CT_RAMenu_Options["temp"]["SendRARS"] ) then
SendChatMessage(msg, "RAID");
end
CT_RA_AddMessage("MS " .. string.gsub(msg, "%%[tT]", UnitName("target") or TARGET_TOKEN_NOT_FOUND));
else
CT_RA_Print("<团队助手> 你必须是团队领袖或助理才能那么做!", 1, 1, 0);
end
end, "/rs");
-- /raupdate
CT_RA_RegisterSlashCmd("/raupdate", "更新团队状态(|b需要团队领袖或者助理权限|eb)。", 15, "RAUPDATE", function()
if ( CT_RA_Level >= 1 ) then
CT_RA_AddMessage("SR");
CT_RA_Print("<团队助手> 团队状态已更新。", 1, 0.5, 0);
else
CT_RA_Print("<团队助手> 你必须是团队领袖或者助理才能那么做!", 1, 0.5, 0);
end
end, "/raupdate", "/raupd");
-- /rakeyword
CT_RA_RegisterSlashCmd("/rakeyword", "自动邀请对你发送了指定关键字的玩家。", 15, "RAKEYWORD", function(msg)
if ( msg == "off" ) then
CT_RAMenu_Options["temp"]["KeyWord"] = nil;
CT_RA_Print("<团队助手> 关键字邀请已被关闭。", 1, 0.5, 0);
elseif ( msg == "" ) then
local kw = CT_RAMenu_Options["temp"]["KeyWord"];
if ( kw ) then
CT_RA_Print("<团队助手> 邀请关键字被设定为 '|c00FFFFFF" .. kw .. "|r'。使用 |c00FFFFFF/rakeyword off|r 来关闭关键字邀请功能。", 1, 0.5, 0);
else
CT_RA_Print("<团队助手> 没有设置自动邀请的关键字。", 1, 0.5, 0);
end
else
CT_RAMenu_Options["temp"]["KeyWord"] = msg;
CT_RA_Print("<团队助手> 邀请关键字被设定为 '|c00FFFFFF" .. msg .. "|r'。使用 |c00FFFFFF/rakeyword off|r 来关闭关键字邀请功能。", 1, 0.5, 0);
end
end, "/rakeyword", "/rakw");
-- /radisband
CT_RA_RegisterSlashCmd("/radisband", "解散团队(|b需要团队领袖或者助理权限|eb)", 15, "RADISBAND", function(msg)
if ( CT_RA_Level and CT_RA_Level >= 1 ) then
CT_RA_Print("<团队助手> 正在解散团队……", 1, 0.5, 0);
SendChatMessage("<团队助手> 正在根据" .. UnitName("player") .. "的要求解散团队。", "RAID");
for i = 1, GetNumRaidMembers(), 1 do
local name, rank, subgroup, level, class, fileName, zone, online, isDead = GetRaidRosterInfo(i);
if ( online and rank <= CT_RA_Level and name ~= UnitName("player") ) then
UninviteByName(name);
end
end
CT_RA_AddMessage("DB");
LeaveParty();
else
CT_RA_Print("<团队助手> 你必须是团队领袖或助理才能那么做!", 1, 0.5, 0);
end
end, "/radisband");
-- /rashow
CT_RA_RegisterSlashCmd("/rashow", "|b/rashow|eb 或 |b/rashow all|eb, 显示隐藏的或全部的团队窗口。", 15, "RASHOW", function(msg)
if ( msg == "all" ) then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -