269 lines
9.9 KiB
JavaScript
269 lines
9.9 KiB
JavaScript
var PowerLabelModifier;
|
|
var CritDamageLabelModifier;
|
|
var CritChanceLabelModifier;
|
|
var itemList = [];
|
|
|
|
function CustomPowerPanelRefresh() {
|
|
var mainSelected = Players.GetLocalPlayerPortraitUnit();
|
|
if(mainSelected != null && mainSelected != -1) {
|
|
if (Entities.GetTeamNumber(mainSelected) == DOTATeam_t.DOTA_TEAM_GOODGUYS) {
|
|
var basePower = Entities.GetDayTimeVisionRange(mainSelected) - 800;
|
|
var percentage = Entities.GetNightTimeVisionRange(mainSelected) - 800;
|
|
var bonusPower = Math.floor(basePower * percentage/100);
|
|
if (!Entities.IsRooted(mainSelected)) {
|
|
basePower = 0;
|
|
bonusPower = 0;
|
|
}
|
|
if (bonusPower > 0) {
|
|
PowerLabelModifier.text = basePower.toString() + "<font color='#2dc03a'>+" + bonusPower.toString() + "</font>";
|
|
} else if (bonusPower == 0) {
|
|
PowerLabelModifier.text = basePower.toString();
|
|
} else {
|
|
PowerLabelModifier.text = basePower.toString() + "<font color='red'>-" + Math.abs(bonusPower).toString() + "</font>";
|
|
}
|
|
|
|
var buffs = Entities.GetNumBuffs(mainSelected);
|
|
var isCritZero = true;
|
|
var isChanceZero = true;
|
|
var isCritFind = false;
|
|
var isChanceFind = false;
|
|
for (var i = 0; i < buffs; i++) {
|
|
var buff = Entities.GetBuff(mainSelected, i);
|
|
var buffname = Buffs.GetName( mainSelected, buff);
|
|
if (!isCritFind && buffname === "modifier_touhoutd_crit_damage") {
|
|
CritDamageLabelModifier.text = "<font color='yellow'>" + Buffs.GetStackCount(mainSelected, buff) + "%</font>";
|
|
isCritZero = false;
|
|
isCritFind = true;
|
|
if (isChanceFind) break;
|
|
} else if (!isChanceFind && buffname === "modifier_touhoutd_crit_chance") {
|
|
CritChanceLabelModifier.text = "<font color='#c9520d'>" + Buffs.GetStackCount(mainSelected, buff) + "%</font>";
|
|
isChanceZero = false;
|
|
isChanceFind = true;
|
|
if (isCritFind) break;
|
|
}
|
|
}
|
|
if (isCritZero) CritDamageLabelModifier.text = "<font color='yellow'>0%</font>";
|
|
if (isChanceZero) CritChanceLabelModifier.text = "<font color='#c9520d'>0%</font>";
|
|
} else {
|
|
PowerLabelModifier.text = "0";
|
|
CritDamageLabelModifier.text = "<font color='yellow'>0%</font>";
|
|
CritChanceLabelModifier.text = "<font color='#c9520d'>0%</font>";
|
|
}
|
|
}
|
|
}
|
|
|
|
function CustomStarPanelRefresh() {
|
|
var mainSelected = Players.GetLocalPlayerPortraitUnit();
|
|
if(mainSelected != null && mainSelected != -1) {
|
|
for (var i = 0; i <= 5; i++ ) {
|
|
var ent = Entities.GetItemInSlot(mainSelected, i);
|
|
if (ent != "-1" && ent != "32767") {
|
|
var star = 0;
|
|
var level = 0;
|
|
var itemName = Abilities.GetAbilityName(ent);
|
|
if (itemName.substr(0,6) === "item_0") {
|
|
var itemLevel = Abilities.GetLevel(ent);
|
|
star = Math.floor((itemLevel-1)/10) + 1;
|
|
level = itemLevel - (star-1) * 10;
|
|
} else {
|
|
if (itemName == "item_1003" || itemName == "item_1011") {
|
|
star = 1;
|
|
level = 10;
|
|
} else if (itemName == "item_1004" || itemName == "item_1012") {
|
|
star = 2;
|
|
level = 10;
|
|
} else if (itemName == "item_1005" || itemName == "item_1013") {
|
|
star = 3;
|
|
level = 10;
|
|
} else if (itemName == "item_1006" || itemName == "item_1014") {
|
|
star = 4;
|
|
level = 10;
|
|
}
|
|
}
|
|
|
|
for (var j = 1; j <= 5; j++) {
|
|
itemList[i][j].visible = j <= star;
|
|
}
|
|
itemList[i][6].visible = level > 0;
|
|
itemList[i][6].text = level > 0 ? level.toString() : "";
|
|
} else {
|
|
for ( var j = 1; j <= 6; j++ ) {
|
|
itemList[i][j].visible = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function CustomPanelRefresh () {
|
|
CustomPowerPanelRefresh();
|
|
CustomStarPanelRefresh();
|
|
return $.Schedule(0.15, CustomPanelRefresh);
|
|
}
|
|
|
|
|
|
;(function(){
|
|
// 能量显示
|
|
var root = $.GetContextPanel().GetParent().GetParent().GetParent();
|
|
var stats = root.FindChild("HUDElements").FindChild("lower_hud").FindChild("center_with_stats").FindChild("center_block").FindChild("stats_container");
|
|
stats.FindChildTraverse("stats").style["height"] = "110px";
|
|
stats.FindChildTraverse("stragiint").visible = false;
|
|
var statContainer = stats.FindChildTraverse("stats").FindChild("Aligner").FindChild("StatContainer");
|
|
if(statContainer.FindChildTraverse("power") == null)
|
|
{
|
|
var power = $.CreatePanel("Panel", statContainer, "power");
|
|
power.AddClass("StatIconLabel");
|
|
var column = $.CreatePanel("Panel", power, "column");
|
|
column.AddClass("LabelColumn");
|
|
var container = $.CreatePanel("Panel", column, "container");
|
|
container.AddClass("DamageLabelContainer");
|
|
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
|
|
labelmodifier.AddClass("MonoNumbersFont");
|
|
labelmodifier.AddClass("StatRegionLabel");
|
|
labelmodifier.AddClass("StatModifier");
|
|
labelmodifier.style["margin-top"] = "1px";
|
|
labelmodifier.html = true;
|
|
labelmodifier.text = "0";
|
|
PowerLabelModifier = labelmodifier;
|
|
var icon = $.CreatePanel("Panel", power, "DamageIcon");
|
|
icon.AddClass("StatIcon");
|
|
}
|
|
if(statContainer.FindChildTraverse("crit_damage") == null)
|
|
{
|
|
var power = $.CreatePanel("Panel", statContainer, "crit_damage");
|
|
power.AddClass("StatIconLabel");
|
|
var column = $.CreatePanel("Panel", power, "column");
|
|
column.AddClass("LabelColumn");
|
|
var container = $.CreatePanel("Panel", column, "container");
|
|
container.AddClass("DamageLabelContainer");
|
|
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
|
|
labelmodifier.AddClass("MonoNumbersFont");
|
|
labelmodifier.AddClass("StatRegionLabel");
|
|
labelmodifier.AddClass("StatModifier");
|
|
// labelmodifier.style["margin-top"] = "1px";
|
|
labelmodifier.html = true;
|
|
labelmodifier.text = "<font color='yellow'>0%</font>";
|
|
CritDamageLabelModifier = labelmodifier;
|
|
var icon = $.CreatePanel("Panel", power, "DamageIcon");
|
|
icon.AddClass("StatIcon");
|
|
}
|
|
if(statContainer.FindChildTraverse("crit_chance") == null)
|
|
{
|
|
var power = $.CreatePanel("Panel", statContainer, "crit_chance");
|
|
power.AddClass("StatIconLabel");
|
|
var column = $.CreatePanel("Panel", power, "column");
|
|
column.AddClass("LabelColumn");
|
|
var container = $.CreatePanel("Panel", column, "container");
|
|
container.AddClass("DamageLabelContainer");
|
|
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
|
|
labelmodifier.AddClass("MonoNumbersFont");
|
|
labelmodifier.AddClass("StatRegionLabel");
|
|
labelmodifier.AddClass("StatModifier");
|
|
// labelmodifier.style["margin-top"] = "1px";
|
|
labelmodifier.html = true;
|
|
labelmodifier.text = "<font color='#c9520d'>0%</font>";
|
|
CritChanceLabelModifier = labelmodifier;
|
|
var icon = $.CreatePanel("Panel", power, "DamageIcon");
|
|
icon.AddClass("StatIcon");
|
|
}
|
|
|
|
|
|
// 背包物品星级和等级
|
|
var centerBlock = root.FindChild("HUDElements").FindChild("lower_hud").FindChild("center_with_stats").FindChild("center_block");
|
|
var inventory = centerBlock.FindChild("inventory");
|
|
|
|
var list = inventory.FindChildTraverse("inventory_list");
|
|
for ( var i = 0; i <= 2; i++ ) {
|
|
var slot = list.FindChildTraverse("inventory_slot_" + i.toString());
|
|
var item = slot.FindChildTraverse("AbilityButton");
|
|
|
|
itemList[i] = item;
|
|
|
|
var labelmodifier = $.CreatePanel("Label", item, "labellevel");
|
|
itemList[i][6] = labelmodifier;
|
|
labelmodifier.style.width = "16px";
|
|
labelmodifier.style.height = "16px";
|
|
labelmodifier.style.color = "#FFCC33";
|
|
labelmodifier.style["horizontal-align"] = "right";
|
|
labelmodifier.style["vertical-align"] = "top";
|
|
labelmodifier.style["font-size"] = "16px";
|
|
labelmodifier.style["text-shadow"] = "0px 0px 4px 4 #000000";
|
|
labelmodifier.style["letter-spacing"] = "0 px";
|
|
labelmodifier.text = "";
|
|
|
|
for ( var j = 1; j <= 5; j++ )
|
|
{
|
|
var img = $.CreatePanel("Image", item, "Image_" + j.toString());
|
|
var imgNum = "Image_"+j.toString();
|
|
img.SetImage("s2r://panorama/images/custom_game/star_png.vtex");
|
|
img.style.width = "12px";
|
|
img.style.height = "12px";
|
|
img.style.x = (12* (j-1)).toString() + "px";
|
|
img.style["horizontal-align"] = "left";
|
|
img.style["vertical-align"] = "bottom";
|
|
itemList[i][j] = img;
|
|
img.visible = false;
|
|
}
|
|
}
|
|
list = inventory.FindChildTraverse("inventory_list2");
|
|
for ( var i = 3; i <= 5; i++ ) {
|
|
var slot = list.FindChildTraverse("inventory_slot_" + i.toString());
|
|
var item = slot.FindChildTraverse("AbilityButton");
|
|
|
|
itemList[i] = item;
|
|
|
|
var labelmodifier = $.CreatePanel("Label", item, "labellevel");
|
|
itemList[i][6] = labelmodifier;
|
|
labelmodifier.style.width = "16px";
|
|
labelmodifier.style.height = "16px";
|
|
labelmodifier.style.color = "#FFCC33";
|
|
labelmodifier.style["horizontal-align"] = "right";
|
|
labelmodifier.style["vertical-align"] = "top";
|
|
labelmodifier.style["font-size"] = "16px";
|
|
labelmodifier.style["text-shadow"] = "0px 0px 4px 4 #000000";
|
|
labelmodifier.style["letter-spacing"] = "0 px";
|
|
labelmodifier.text = "";
|
|
|
|
|
|
for ( var j = 1; j <= 5; j++ )
|
|
{
|
|
var img = $.CreatePanel("Image", item, "Image_" + j.toString());
|
|
var imgNum = "Image_"+j.toString();
|
|
img.SetImage("s2r://panorama/images/custom_game/star_png.vtex");
|
|
img.style.width = "12px";
|
|
img.style.height = "12px";
|
|
img.style.x = (12* (j-1)).toString() + "px";
|
|
img.style["horizontal-align"] = "left";
|
|
img.style["vertical-align"] = "bottom";
|
|
itemList[i][j] = img;
|
|
img.visible = false;
|
|
}
|
|
}
|
|
|
|
CustomPanelRefresh();
|
|
|
|
GameEvents.Subscribe("dota_inventory_changed", OnDotaInventoryChanged);
|
|
GameEvents.Subscribe("dota_inventory_item_changed", OnDotaInventoryChanged);
|
|
// GameEvents.Subscribe("dota_player_update_selected_unit", OnDotaPlayerUpdateSelectedUnit);
|
|
// GameEvents.Subscribe("dota_player_update_query_unit", OnDotaPlayerUpdateSelectedUnit); //点击单位
|
|
// GameEvents.Subscribe("thtd_power_update", CustomPowerPanelRefresh);
|
|
// GameEvents.Subscribe("dota_portrait_unit_modifiers_changed", OnDotaPortraitUnitModifiersChanged);
|
|
})();
|
|
|
|
|
|
function OnDotaInventoryChanged(data) {
|
|
// 背包有物品称动、入、出均可触发
|
|
CustomStarPanelRefresh();
|
|
}
|
|
|
|
// function OnDotaPlayerUpdateSelectedUnit(data) {
|
|
// CustomPowerPanelRefresh();
|
|
// CustomStarPanelRefresh();
|
|
// }
|
|
|
|
// function OnDotaPortraitUnitModifiersChanged(data) {
|
|
// CustomPowerPanelRefresh();
|
|
// }
|
|
|
|
|