📄 titanpvpinfo.lua
字号:
TITAN_PVPINFO_ID = "PVPinfo";
TITAN_PVPINFO_STATE = TITAN_PVPINFO_STATE_INACTIVE;
TITAN_PVPINFO_STATE_TEXT = TITAN_PVPINFO_STATE_INACTIVE;
TITAN_PVPINFO_PVP_FLAG = TITAN_PVPINFO_FLAG_OFF;
TITAN_PVPINFO_JUSTACTIVE = nil;
TITAN_PVPINFO_PVP_FLAG_TIME = 0;
TITAN_PVPINFO_COOLDOWN_TIME = 300;
TITAN_PVPINFO_REMAINING_TIME = 0;
TITAN_PVPINFO_ELAPSED_TIME = 0;
TITAN_PVPINFO_SESSION_TIME = 0;
TITAN_PVPINFO_ACTIVATE_TIME = 0;
TITAN_PVPINFO_FREQUENCY = 1;
TITAN_PVPINFO_STATE_ACTIVERED = TitanUtils_GetRedText(TITAN_PVPINFO_STATE_ACTIVE)
TITAN_PVPINFO_STATE_ACTIVEGREEN = TitanUtils_GetGreenText(TITAN_PVPINFO_STATE_ACTIVE)
TITAN_PVPINFO_STATE_ACTIVEWHITE = TitanUtils_GetHighlightText(TITAN_PVPINFO_STATE_ACTIVE)
TITAN_PVPINFO_STATE_INACTIVERED = TitanUtils_GetRedText(TITAN_PVPINFO_STATE_INACTIVE)
TITAN_PVPINFO_STATE_INACTIVEGREEN = TitanUtils_GetGreenText(TITAN_PVPINFO_STATE_INACTIVE)
TITAN_PVPINFO_STATE_INACTIVEWHITE = TitanUtils_GetHighlightText(TITAN_PVPINFO_STATE_INACTIVE)
TITAN_PVPINFO_STATE_INACTIVEYELLOW = TitanUtils_GetNormalText(TITAN_PVPINFO_STATE_INACTIVE)
TITAN_PVPINFO_STATE_ONRED = TitanUtils_GetRedText(TITAN_PVPINFO_STATE_ON)
TITAN_PVPINFO_STATE_ONGREEN = TitanUtils_GetGreenText(TITAN_PVPINFO_STATE_ON)
TITAN_PVPINFO_STATE_ONWHITE = TitanUtils_GetHighlightText(TITAN_PVPINFO_STATE_ON)
TITAN_PVPINFO_STATE_OFFRED = TitanUtils_GetRedText(TITAN_PVPINFO_STATE_OFF)
TITAN_PVPINFO_STATE_OFFGREEN = TitanUtils_GetGreenText(TITAN_PVPINFO_STATE_OFF)
TITAN_PVPINFO_STATE_OFFWHITE = TitanUtils_GetHighlightText(TITAN_PVPINFO_STATE_OFF)
TITAN_PVPINFO_STATE_OFFYELLOW = TitanUtils_GetNormalText(TITAN_PVPINFO_STATE_OFF)
TITAN_PVPINFO_DEBUGCOUNT = 1;
function TitanPanelPVPinfoButton_OnLoad()
this.registry = {
id = TITAN_PVPINFO_ID,
builtIn_c = 1,
menuText = TITAN_PVPINFO_MENU_TEXT,
buttonTextFunction = "TitanPanelPVPinfoButton_GetButtonText",
tooltipTitle = TITAN_PVPINFO_TOOLTIP,
tooltipTextFunction = "TitanPanelPVPinfoButton_GetTooltipText",
frequency = TITAN_PVPINFO_FREQUENCY,
savedVariables = {
PVPActivateTime = 0,
PVPInCooldown = 0,
PVPTimerColour = TITAN_NIL,
PVPStateColour = TITAN_NIL,
PVPShortTxt = TITAN_NIL,
PVPCollapse = TITAN_NIL,
PVPShiftClick = TITAN_NIL,
ShowLabelText = 1,
}
};
this:RegisterEvent("UNIT_PVP_UPDATE");
this:RegisterEvent("CHAT_MSG_SYSTEM");
if (UnitIsPVP("player")==1) then
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_ACTIVE;
end
end
function TitanPanelPVPinfoButton_OnEvent(event)
if (event == "UNIT_PVP_UPDATE") then
if (arg1 == "player") then
if UnitIsPVP("player") then
TitanPanelPVPinfoButton_PVPActivate();
if ((UnitIsPVP("target")) and (UnitFactionGroup("target")~=UnitFactionGroup("player"))) then
TitanPanelPVPinfoButton_PVPCooldownStart();
end
else
TitanPanelPVPinfoButton_PVPDeactivate();
end
end
elseif ((event == "CHAT_MSG_SYSTEM") and (string.find(arg1, TITAN_PVPINFO_OFF_SEARCH))) then
TitanPanelPVPinfoButton_PVPCooldownStart();
elseif ((event == "CHAT_MSG_SYSTEM") and (string.find(arg1, TITAN_PVPINFO_ON_SEARCH))) then
TitanPanelPVPinfoButton_PVPRestart();
end
end
function TitanPanelPVPinfoButton_PVPActivate()
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_ACTIVE;
TITAN_PVPINFO_PVP_FLAG=TITAN_PVPINFO_FLAG_OFF;
TITAN_PVPINFO_REMAINING_TIME = 0;
TITAN_PVPINFO_ELAPSED_TIME = 0;
TITAN_PVPINFO_ACTIVATE_TIME = TitanUtils_GetTotalTime();
if (TITAN_PVPINFO_ACTIVATE_TIME) then
TitanSetVar(TITAN_PVPINFO_ID, "PVPActivateTime", TITAN_PVPINFO_ACTIVATE_TIME);
end
end
function TitanPanelPVPinfoButton_PVPCooldownStart()
if (TITAN_PVPINFO_STATE == TITAN_PVPINFO_STATE_ACTIVE) then
TITAN_PVPINFO_PVP_FLAG = TITAN_PVPINFO_FLAG_ON;
TITAN_PVPINFO_REMAINING_TIME = TITAN_PVPINFO_COOLDOWN_TIME;
TITAN_PVPINFO_PVP_FLAG_TIME = TitanUtils_GetTotalTime();
TitanSetVar(TITAN_PVPINFO_ID, "PVPInCooldown", TITAN_PVPINFO_PVP_FLAG_TIME);
TitanSetVar(TITAN_PVPINFO_ID, "PVPActivateTime", TITAN_PVPINFO_ACTIVATE_TIME);
end
end
function TitanPanelPVPinfoButton_PVPRestart()
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_ACTIVE;
TITAN_PVPINFO_PVP_FLAG=TITAN_PVPINFO_FLAG_OFF;
TITAN_PVPINFO_REMAINING_TIME = 0;
TitanSetVar(TITAN_PVPINFO_ID, "PVPInCooldown", nil);
end
function TitanPanelPVPinfoButton_PVPDeactivate()
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_INACTIVE;
TITAN_PVPINFO_PVP_FLAG=TITAN_PVPINFO_FLAG_OFF;
TITAN_PVPINFO_REMAINING_TIME = 0;
TITAN_PVPINFO_SESSION_TIME = TITAN_PVPINFO_SESSION_TIME + TITAN_PVPINFO_ELAPSED_TIME;
TITAN_PVPINFO_ELAPSED_TIME = 0;
TITAN_PVPINFO_ACTIVATE_TIME = 0;
TitanSetVar(TITAN_PVPINFO_ID, "PVPActivateTime", nil);
TitanSetVar(TITAN_PVPINFO_ID, "PVPInCooldown", nil);
end
function TitanPanelPVPinfoButton_OnUpdate()
if (UnitIsPVP("player")==1) then
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_ACTIVE;
end
if TitanGetVar(TITAN_PVPINFO_ID, "PVPInCooldown") then
TITAN_PVPINFO_PVP_FLAG_TIME = TitanGetVar(TITAN_PVPINFO_ID, "PVPInCooldown");
TITAN_PVPINFO_PVP_FLAG = TITAN_PVPINFO_FLAG_ON;
TITAN_PVPINFO_ACTIVATE_TIME = TitanGetVar(TITAN_PVPINFO_ID, "PVPActivateTime");
end
if (TitanUtils_GetTotalTime() and TitanGetVar(TITAN_PVPINFO_ID, "PVPActivateTime")) then
if (TITAN_PVPINFO_PVP_FLAG == TITAN_PVPINFO_FLAG_ON) then
TITAN_PVPINFO_REMAINING_TIME = TITAN_PVPINFO_COOLDOWN_TIME - (TitanUtils_GetTotalTime() - TITAN_PVPINFO_PVP_FLAG_TIME);
if (TITAN_PVPINFO_REMAINING_TIME < 0) then
TITAN_PVPINFO_REMAINING_TIME = 0;
end
end
if (TITAN_PVPINFO_STATE == TITAN_PVPINFO_STATE_ACTIVE) then
TITAN_PVPINFO_ELAPSED_TIME = TitanUtils_GetTotalTime() - TitanGetVar(TITAN_PVPINFO_ID, "PVPActivateTime");
end
end
end
function TitanPanelPVPinfoButton_OnLeftClick(button)
if TitanGetVar(TITAN_PVPINFO_ID, "PVPShiftClick") then
if (IsShiftKeyDown()) then
TogglePVP();
end
else
TogglePVP();
end
end
function TitanPanelPVPinfoButton_debug(msg)
DEFAULT_CHAT_FRAME:AddMessage("Titan[PVPinfo]debug-------> ".. msg);
end
function TitanPanelPVPinfoButton_ConvertTime(time)
local hTemp = 0;
local mTemp = 0;
local sTemp = 0;
if (time > 3599) then
hTemp = floor(time/3600);
mTemp = floor((time/60) - (hTemp*60))
sTemp = (time - (hTemp*3600) - (mTemp*60));
if (mTemp < 10) then
mTemp = "0"..mTemp;
end
if (sTemp < 10) then
sTemp = "0"..sTemp;
end
return hTemp..":"..mTemp..":"..sTemp;
else
mTemp = floor(time/60);
sTemp = (time - (mTemp*60));
if (sTemp < 10) then
sTemp = "0"..sTemp;
end
return mTemp..":"..sTemp;
end
end
function TitanPanelPVPinfoButton_GetButtonText(id)
local button, id = TitanUtils_GetButton(id, true);
local buttonRichText;
if (TITAN_PVPINFO_PVP_FLAG == TITAN_PVPINFO_FLAG_ON) then
PVPINFO_TIME=TitanPanelPVPinfoButton_ConvertTime(ceil(TITAN_PVPINFO_REMAINING_TIME));
if (TitanGetVar(TITAN_PVPINFO_ID, "PVPTimerColour")=="Green") then
buttonRichText = TitanUtils_GetGreenText(PVPINFO_TIME);
elseif (TitanGetVar(TITAN_PVPINFO_ID, "PVPTimerColour")=="White") then
buttonRichText = TitanUtils_GetHighlightText(PVPINFO_TIME);
elseif (TitanGetVar(TITAN_PVPINFO_ID, "PVPTimerColour")=="Yellow") then
buttonRichText = TitanUtils_GetNormalText(PVPINFO_TIME);
else
buttonRichText = TitanUtils_GetRedText(PVPINFO_TIME);
end
else
if (UnitIsPVP("player")==1) then
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_ACTIVE;
if TitanGetVar(TITAN_PVPINFO_ID, "PVPShortTxt") then
TITAN_PVPINFO_STATE_TEXT=TITAN_PVPINFO_STATE_ON;
else
TITAN_PVPINFO_STATE_TEXT=TITAN_PVPINFO_STATE_ACTIVE;
end
if (TitanGetVar(TITAN_PVPINFO_ID, "PVPStateColour")=="greenyellow") then
buttonRichText = TitanUtils_GetGreenText(TITAN_PVPINFO_STATE_TEXT);
elseif (TitanGetVar(TITAN_PVPINFO_ID, "PVPStateColour")=="redgreen") then
buttonRichText = TitanUtils_GetRedText(TITAN_PVPINFO_STATE_TEXT);
else -- TitanGetVar(TITAN_PVPINFO_ID, "PVPStateColour")=="whitegreen" or "whitewhite"
buttonRichText = TitanUtils_GetHighlightText(TITAN_PVPINFO_STATE_TEXT);
end
else
TITAN_PVPINFO_STATE=TITAN_PVPINFO_STATE_INACTIVE;
TitanSetVar(TITAN_PVPINFO_ID, "PVPInCooldown", nil);
if TitanGetVar(TITAN_PVPINFO_ID, "PVPCollapse") then
return "o";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -