1361 lines
46 KiB
JavaScript
1361 lines
46 KiB
JavaScript
"use strict";
|
||
|
||
var PausedInfo = null; // 暂停面板
|
||
var KickAcceptStartTime = 0; //投票踢人确定界面状态
|
||
var hEventStartCard = null; //选择初始卡完成事件监听
|
||
var AiChooseData = null;
|
||
|
||
var IsRankCreated = false;
|
||
var IsTeamRankCreated = false;
|
||
var IsShowingMsg = false;
|
||
var RefreshRunning = false;
|
||
|
||
var TowerList = CustomNetTables.GetTableValue("CustomGameInfo", "thtd_tower_list");
|
||
|
||
GameUI.GameData = CustomNetTables.GetTableValue("CustomGameInfo", "GameData");
|
||
GameUI.PlayerData = CustomNetTables.GetTableValue("CustomGameInfo", "PlayerData_" + GetSteamID());
|
||
|
||
GameUI.Wave = 0;
|
||
|
||
var SpecialTowerList = {
|
||
"item_3011": {
|
||
"quality": 4,
|
||
"cardname": "item_3011"
|
||
},
|
||
"item_3012": {
|
||
"quality": 4,
|
||
"cardname": "item_3012"
|
||
},
|
||
"item_3013": {
|
||
"quality": 4,
|
||
"cardname": "item_3013"
|
||
},
|
||
"item_3014": {
|
||
"quality": 4,
|
||
"cardname": "item_3014"
|
||
},
|
||
"item_3015": {
|
||
"quality": 4,
|
||
"cardname": "item_3015"
|
||
},
|
||
"item_3016": {
|
||
"quality": 4,
|
||
"cardname": "item_3016"
|
||
},
|
||
"item_3017": {
|
||
"quality": 4,
|
||
"cardname": "item_3017"
|
||
},
|
||
"item_3018": {
|
||
"quality": 4,
|
||
"cardname": "item_3018"
|
||
},
|
||
"item_3019": {
|
||
"quality": 4,
|
||
"cardname": "item_3019"
|
||
},
|
||
"item_3020": {
|
||
"quality": 4,
|
||
"cardname": "item_3020"
|
||
},
|
||
"item_3021": {
|
||
"quality": 4,
|
||
"cardname": "item_3021"
|
||
},
|
||
"item_3022": {
|
||
"quality": 4,
|
||
"cardname": "item_3022"
|
||
},
|
||
"item_3023": {
|
||
"quality": 4,
|
||
"cardname": "item_3023"
|
||
},
|
||
"item_3024": {
|
||
"quality": 4,
|
||
"cardname": "item_3024"
|
||
},
|
||
"item_3025": {
|
||
"quality": 4,
|
||
"cardname": "item_3025"
|
||
},
|
||
"item_3026": {
|
||
"quality": 4,
|
||
"cardname": "item_3026"
|
||
},
|
||
"item_3027": {
|
||
"quality": 4,
|
||
"cardname": "item_3027"
|
||
},
|
||
"item_3028": {
|
||
"quality": 4,
|
||
"cardname": "item_3028"
|
||
},
|
||
"item_3029": {
|
||
"quality": 4,
|
||
"cardname": "item_3029"
|
||
},
|
||
"item_3030": {
|
||
"quality": 4,
|
||
"cardname": "item_3030"
|
||
},
|
||
"item_3031": {
|
||
"quality": 4,
|
||
"cardname": "item_3031"
|
||
},
|
||
"item_3032": {
|
||
"quality": 4,
|
||
"cardname": "item_3032"
|
||
},
|
||
"item_3033": {
|
||
"quality": 4,
|
||
"cardname": "item_3033"
|
||
},
|
||
"item_3034": {
|
||
"quality": 4,
|
||
"cardname": "item_3034"
|
||
},
|
||
"item_3035": {
|
||
"quality": 4,
|
||
"cardname": "item_3035"
|
||
},
|
||
"item_3050": {
|
||
"quality": 4,
|
||
"cardname": "item_3050"
|
||
},
|
||
"item_3150": {
|
||
"quality": 4,
|
||
"cardname": "item_3150"
|
||
},
|
||
"item_3151": {
|
||
"quality": 4,
|
||
"cardname": "item_3151"
|
||
},
|
||
"item_3152": {
|
||
"quality": 4,
|
||
"cardname": "item_3152"
|
||
},
|
||
"item_3149": {
|
||
"quality": 4,
|
||
"cardname": "item_3149"
|
||
}
|
||
}
|
||
|
||
// 获取steamid
|
||
var m_SteamID = null;
|
||
function GetSteamID() {
|
||
if (!m_SteamID) {
|
||
m_SteamID = Game.GetLocalPlayerInfo().player_steamid.toString();
|
||
// Game.GetLocalPlayerInfo():
|
||
// $.Msg(Game.GetPlayerInfo(0));
|
||
// {"player_id":0,"player_name":"倚楼听风137120760","player_connection_state":2,"player_steamid":"76561198097386488",
|
||
// "player_kills":0,"player_deaths":0,"player_assists":0,"player_selected_hero_id":25,"player_selected_hero":"npc_dota_hero_lina",
|
||
// "player_selected_hero_entity_index":-1,"possible_hero_selection":"","player_level":0,"player_respawn_seconds":0,
|
||
// "player_gold":4500,"player_team_id":2,"player_is_local":true,"player_has_host_privileges":true}
|
||
}
|
||
return m_SteamID;
|
||
}
|
||
|
||
function FindDotaHudElement(id){
|
||
var hudRoot;
|
||
for(var panel=$.GetContextPanel();panel!=null;panel=panel.GetParent()){
|
||
hudRoot = panel;
|
||
}
|
||
var comp = hudRoot.FindChildTraverse(id);
|
||
return comp;
|
||
}
|
||
|
||
function ShowMessage(text, duration, isError, marginTop) {
|
||
var label = $.CreatePanel("Label", $.GetContextPanel(), "");
|
||
label.style["background-color"] = isError ? "#A22C00" : "#000E";
|
||
label.style["color"] = isError ? "#fff" : "#F37702";
|
||
label.style["padding"] = "20px";
|
||
label.style["font-size"] = "30px";
|
||
if (marginTop && marginTop !== 0) label.style["margin-top"] = marginTop + "px";
|
||
label.style["horizontal-align"] = "center";
|
||
label.style["vertical-align"] = "center";
|
||
label.html = true;
|
||
label.text = text;
|
||
label.DeleteAsync(duration && duration > 0 ? duration : 3);
|
||
}
|
||
|
||
|
||
//加载网页
|
||
var videoPage = GameUI.CreateHtml(function(){/*
|
||
<root>
|
||
<styles>
|
||
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
|
||
<include src="s2r://panorama/styles/custom_game/info.vcss_c" />
|
||
</styles>
|
||
<script>
|
||
var PausedInfo = null;
|
||
function Close() {
|
||
$.GetContextPanel().AddClass('Hide');
|
||
$.GetContextPanel().RemoveAndDeleteChildren();
|
||
//PausedInfo.RemoveClass("Hide");
|
||
}
|
||
function SetPausedInfo(info) {
|
||
PausedInfo = info;
|
||
}
|
||
$.GetContextPanel().SetPausedInfo = SetPausedInfo;
|
||
</script>
|
||
<Panel hittest="false" class="HTMLPanel" >
|
||
<DOTAHTMLPanel id="Video1" class="Video" url="${url}" ></DOTAHTMLPanel>
|
||
<Button id="CloseButtonBig" onactivate="Close()" />
|
||
</Panel>
|
||
</root>
|
||
*/});
|
||
|
||
// 永久暂停
|
||
function PauseGame() {
|
||
// if (Game.IsGamePaused()) {
|
||
// return
|
||
// }
|
||
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) {
|
||
return;
|
||
}
|
||
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) {
|
||
return;
|
||
}
|
||
|
||
GameEvents.SendCustomGameEventToServer("custom_game_pause_game", {});
|
||
}
|
||
|
||
/*===============更新波数漏怪信息====================*/
|
||
|
||
function UpdateCreepInfo(table) {
|
||
// {"creature_kill_count":0,"creep_count":0,"creep_count_max":0,"food_count":0}
|
||
if (!table) return;
|
||
var CreepCount = $("#CreepCount");
|
||
CreepCount.SetDialogVariableInt("count", table["creep_count"]);
|
||
CreepCount.SetDialogVariableInt("max_count", table["creep_count_max"]);
|
||
|
||
var CreepCountPercentage = ((table["creep_count"]/table["creep_count_max"])*100 || 0);
|
||
$("#CreepCountProcessBarPCT").style.width = CreepCountPercentage + "%";
|
||
}
|
||
|
||
function UpdateAttackingInfo(table) {
|
||
if (!table) return;
|
||
|
||
var RemainingTime = Math.floor(table["RemainingTime"] || 0);
|
||
if (RemainingTime <= 0) RemainingTime = 0;
|
||
GameUI.Wave = table["Wave"];
|
||
$("#WaveText").SetDialogVariableInt("wave", table["Wave"] > 50 ? (table["Wave"] - 50) : (table["Wave"] > 0 ? table["Wave"] : 0));
|
||
$("#AttackingProcessTime").text = RemainingTime;
|
||
$("#AttackingProcessTime").SetHasClass("soon", RemainingTime <= 5);
|
||
}
|
||
|
||
|
||
// 少女之抵抗伤害计于统计
|
||
GameUI.DpsFix = function (dps, wave) {
|
||
if (wave < 280 + 50) return dps;
|
||
var unlimitedResist = 0.0;
|
||
if (wave <= 50 + 3220) {
|
||
unlimitedResist = Math.floor((wave - 50 - 250)/30);
|
||
} else {
|
||
unlimitedResist = 99 + Math.min(0.999, 0.001 * Math.floor((wave - 50 - 3220) / 2));
|
||
}
|
||
return Math.floor(dps/(1 - unlimitedResist/100));
|
||
}
|
||
|
||
/*===============选择初始卡====================*/
|
||
|
||
function SelectStartCard( item_name ) {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_select_start_card", {'ItemName':item_name});
|
||
}
|
||
|
||
function OnSelectStartCardFinish(data) {
|
||
$("#SelectStartCard").SetHasClass("Hidden", true);
|
||
$("#SelectStartCard").DeleteAsync(0.6);
|
||
GameEvents.Unsubscribe(hEventStartCard);
|
||
SelectStartBonusCard();
|
||
}
|
||
|
||
//开局SSR奖励卡选择,共用。
|
||
function SelectStartBonusCard() {
|
||
if (Entities.GetLevel(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer())) >= 9) return;
|
||
var list = {};
|
||
var keys = Object.keys(TowerList);
|
||
for (var i = 0; i < keys.length; i++) {
|
||
var itemname = keys[i];
|
||
var quality = TowerList[itemname].quality;
|
||
var unitname = TowerList[itemname].cardname;
|
||
if (quality === 4 && unitname.substr(0, 4) !== "item" && unitname !== "BonusEgg") list[itemname] = itemname;
|
||
}
|
||
SelectCardShowCards(list, true, false);
|
||
}
|
||
|
||
|
||
/*===============选择卡牌(御币)====================*/
|
||
|
||
function OnSelectCardShow(data) {
|
||
if (typeof data.cards === "object") {
|
||
SelectCardShowCards(data.cards, false, false);
|
||
}
|
||
}
|
||
|
||
function OnSelectBonusCardShow(data) {
|
||
if (typeof data.cards === "object") {
|
||
SelectCardShowCards(data.cards, false, true);
|
||
}
|
||
}
|
||
|
||
|
||
function SelectCardClose() {
|
||
$("#SelectCardPanel").SetHasClass("Hide", true);
|
||
}
|
||
|
||
function SelectCardShowCards(cards, isStartBonus, isSpecialBonus) {
|
||
var CardPoolContent = $("#SelectCardPoolContent");
|
||
var index = 0;
|
||
|
||
var itemNameList = Object.keys(cards);
|
||
itemNameList.sort();
|
||
if (isStartBonus && (GameUI.GameData.is_open_day === 1 || GameUI.LuckCardName === "all")) {
|
||
itemNameList = ["item_3150","item_3151","item_3152"].concat(itemNameList);
|
||
cards["item_3150"] = "item_3150";
|
||
cards["item_3151"] = "item_3151";
|
||
cards["item_3152"] = "item_3152";
|
||
if (GameUI.LuckCardName === "all") {
|
||
itemNameList = ["item_3149"].concat(itemNameList);
|
||
cards["item_3149"] = "item_3149";
|
||
}
|
||
}
|
||
for (var i = 0; i < itemNameList.length; i++) {
|
||
// for(var i in cards) {
|
||
var itemname = cards[itemNameList[i]];
|
||
var data = TowerList[itemname];
|
||
if (!data) data = SpecialTowerList[itemname];
|
||
if (!data) {
|
||
$.Msg("---- card data not exist : ", itemname);
|
||
continue;
|
||
}
|
||
var panel = CardPoolContent.GetChild(index++);
|
||
if (!panel) {
|
||
panel = $.CreatePanel("Panel", CardPoolContent, "");
|
||
panel.BLoadLayoutSnippet("CardPoolCard");
|
||
}
|
||
SetCardEvent(panel, true, isStartBonus, isSpecialBonus);
|
||
panel.SetHasClass("SSR", false);
|
||
panel.SetHasClass("SR", false);
|
||
panel.SetHasClass("R", false);
|
||
panel.SetHasClass(GetQualityText(data.quality), true);
|
||
|
||
panel.SetAttributeString("itemname", itemname);
|
||
panel.SetHasClass(GetQualityText(data.quality), true);
|
||
panel.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
|
||
panel.visible = true;
|
||
}
|
||
|
||
var max = CardPoolContent.GetChildCount();
|
||
for (var i = index; i < max; i++) {
|
||
CardPoolContent.GetChild(i).visible = false;
|
||
}
|
||
$("#SelectCardPanel").SetHasClass("Hide", false);
|
||
$("#SelectCardHeaderText").text = isStartBonus ? $.Localize("#td_select_bonus_card_vip") : (isSpecialBonus ? $.Localize("#td_select_battle_bonus_card") : $.Localize("#td_select_card"));
|
||
}
|
||
|
||
// 与排行榜明细的共用
|
||
function SetCardEvent(card, can_activate, isStartBonus, isSpecialBonus) {
|
||
card.SetPanelEvent("onmouseover", function () {
|
||
var name = card.GetAttributeString("itemname", "");
|
||
$.DispatchEvent("DOTAShowAbilityTooltip", card, name);
|
||
});
|
||
card.SetPanelEvent("onmouseout", function () {
|
||
$.DispatchEvent("DOTAHideAbilityTooltip");
|
||
});
|
||
|
||
if (can_activate)
|
||
card.SetPanelEvent("onactivate", function () {
|
||
var name = card.GetAttributeString("itemname", "");
|
||
if (name === "item_3050") return;
|
||
SelectCardClose();
|
||
if (isStartBonus)
|
||
GameEvents.SendCustomGameEventToServer("custom_game_select_bonus_card", {ItemName:name});
|
||
else if (isSpecialBonus)
|
||
GameEvents.SendCustomGameEventToServer("select_battle_bonus_card", {itemname:name});
|
||
else
|
||
GameEvents.SendCustomGameEventToServer("select_card", {itemname:name});
|
||
});
|
||
}
|
||
|
||
|
||
/*===============更新卡池====================*/
|
||
|
||
function CardPoolSetTowerTooltip( panel ) {
|
||
panel.SetPanelEvent("onmouseover", function () {
|
||
var text = $.Localize("DOTA_Tooltip_ability_" + panel.GetAttributeString("itemName", ""));
|
||
$.DispatchEvent("DOTAShowTextTooltip", panel, text)
|
||
});
|
||
panel.SetPanelEvent("onmouseout", function () {
|
||
$.DispatchEvent("DOTAHideTextTooltip")
|
||
});
|
||
}
|
||
|
||
function CardPoolUpdate(table) {
|
||
if (!table) return;
|
||
|
||
// {"1":{"itemName":"item_2008","quality":2,"count":4},"2":{"itemName":"item_0002","quality":2,"count":3},"3":{"itemName":"item_0080","quality":4,"count":1},"4":{"itemName":"item_0092","quality":2,"count":2},"5":{"itemName":"item_0004","quality":1,"count":10},"6":{"itemName":"item_0057","quality":2,"count":1},"7":{"itemName":"item_2004","quality":2,"count":4},"8":{"itemName":"item_2019","quality":2,"count":4},"9":{"itemName":"item_2020","quality":4,"count":4},"10":{"itemName":"item_0058","quality":2,"count":2},"11":{"itemName":"item_2017","quality":3,"count":4},"12":{"itemName":"item_0036","quality":4,"count":2},"13":{"itemName":"item_2007","quality":2,"count":4},"14":{"itemName":"item_0052","quality":4,"count":2},"15":{"itemName":"item_2015","quality":3,"count":4},"16":{"itemName":"item_2024","quality":3,"count":1},"17":{"itemName":"item_2001","quality":3,"count":4},"18":{"itemName":"item_2006","quality":2,"count":4},"19":{"itemName":"item_0088","quality":2,"count":5},"20":{"itemName":"item_2023","quality":3,"count":1},"21":{"itemName":"item_0007","quality":1,"count":7},"22":{"itemName":"item_2016","quality":3,"count":4},"23":{"itemName":"item_0006","quality":1,"count":8},"24":{"itemName":"item_0097","quality":2,"count":3},"25":{"itemName":"item_0034","quality":2,"count":1},"26":{"itemName":"item_0096","quality":3,"count":2},"27":{"itemName":"item_2002","quality":4,"count":1},"28":{"itemName":"item_0016","quality":2,"count":2},"29":{"itemName":"item_0041","quality":3,"count":2}}
|
||
|
||
var CardPoolContent = $("#CardPoolContent");
|
||
var index = 0;
|
||
|
||
var keys = Object.keys(table);
|
||
keys.sort(function (a,b) {
|
||
var ad = table[a];
|
||
var bd = table[b];
|
||
if (ad.quality < bd.quality) return 1;
|
||
if (ad.quality == bd.quality) return 0;
|
||
if (ad.quality > bd.quality) return -1;
|
||
})
|
||
var len = keys.length;
|
||
for (var i = 0; i < len; i++) {
|
||
var data = table[keys[i]];
|
||
if (data.count <= 0) continue;
|
||
|
||
var panel = CardPoolContent.GetChild(index++);
|
||
if (!panel) {
|
||
panel = $.CreatePanel("Panel", CardPoolContent, "");
|
||
panel.BLoadLayoutSnippet("Tower");
|
||
CardPoolSetTowerTooltip(panel);
|
||
}
|
||
|
||
panel.FindChild("Item").itemname = data.itemName;
|
||
panel.FindChild("Count").text = data.count;
|
||
panel.SetAttributeString("itemName", data.itemName)
|
||
panel.visible = true;
|
||
}
|
||
|
||
var max = CardPoolContent.GetChildCount();
|
||
for (var i = index; i < max; i++) {
|
||
CardPoolContent.GetChild(i).visible = false;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/*===============刷新符卡精华和宠物等级====================*/
|
||
|
||
function UpdateGamePoint() {
|
||
if (!RefreshRunning) {
|
||
RefreshRunning = true;
|
||
GameEvents.SendCustomGameEventToServer("custom_game_update_data", {});
|
||
}
|
||
}
|
||
|
||
|
||
/*===============开始处理====================*/
|
||
|
||
;(function(){
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_BAR_BACKGROUND, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_HEROES, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_SHOP, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_QUICKBUY, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_COURIER, false );
|
||
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_QUICK_STATS, false );
|
||
|
||
// FindDotaHudElement('UnitNameLabel').text = "";
|
||
// FindDotaHudElement('ToggleScoreboardButton').style['opacity'] = '0';
|
||
// FindDotaHudElement('Main').style['margin-right'] = '230px;';
|
||
// FindDotaHudElement('shop_launcher_block').style['opacity'] = '0';
|
||
// FindDotaHudElement('shop').style['margin-bottom'] = '0px';
|
||
// FindDotaHudElement('HeightLimiter').style['opacity'] = '0';
|
||
// FindDotaHudElement('GuideFlyout').style['opacity'] = '0';
|
||
// FindDotaHudElement('Main').style['vertical-align'] = 'bottom';
|
||
// FindDotaHudElement('Main').style['height'] = '100px';
|
||
// FindDotaHudElement('Main').style['background-color'] = '#00000000';
|
||
// FindDotaHudElement('ItemCombines').style['background-image'] = 'none';
|
||
// FindDotaHudElement('ItemCombines').style['background-color'] = 'rgba(0,0,0,0.8)';
|
||
// FindDotaHudElement('ItemCombines').style['border-radius'] = '5px';
|
||
// FindDotaHudElement('inventory_tpscroll_container').style['opacity'] = '0';
|
||
FindDotaHudElement('RadarButton').style['opacity'] = '0';
|
||
FindDotaHudElement('GlyphScanContainer').style['opacity'] = '0';
|
||
|
||
$("#WaveText").SetDialogVariableInt("wave", 0);
|
||
$("#AttackingProcessTime").text = "";
|
||
$("#CreepCount").SetDialogVariableInt("count", 0);
|
||
$("#CreepCount").SetDialogVariableInt("max_count", 30 * Game.GetPlayerIDsOnTeam(DOTATeam_t.DOTA_TEAM_GOODGUYS).length);
|
||
$("#Difficulty").text = $.Localize("#difficulty_text_" + Game.GetCustomGameDifficulty());
|
||
$("#AccountID").text = GameUI.PlayerData.userid;
|
||
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) {
|
||
$("#SelectStartCard").visible = false;
|
||
return;
|
||
}
|
||
|
||
var testPanel = $.GetContextPanel();
|
||
do
|
||
{
|
||
if (testPanel.GetParent()) {
|
||
testPanel = testPanel.GetParent();
|
||
} else {
|
||
break
|
||
}
|
||
}while(true);
|
||
var HUD = testPanel.GetChild(0);
|
||
PausedInfo = HUD.FindChild("PausedInfo");
|
||
|
||
InitVideoPanel();
|
||
|
||
GameEvents.Subscribe("kick_player", OnKickPlayer);
|
||
GameEvents.Subscribe("show_select_card_panel", OnSelectCardShow);
|
||
GameEvents.Subscribe("show_select_bonus_card_panel", OnSelectBonusCardShow);
|
||
GameEvents.Subscribe("ai_skill_enable", OnAiSkillEnable);
|
||
GameEvents.Subscribe("thtd_command", OnThtdCommand);
|
||
GameEvents.Subscribe("thtd_rank_detail", RankShowCards);
|
||
GameEvents.Subscribe("thtd_reset_rank", RankResetComplete);
|
||
GameEvents.Subscribe("thtd_team_rank_detail", TeamRankShowCards);
|
||
GameEvents.Subscribe("thtd_reset_team_rank", TeamRankResetComplete);
|
||
GameEvents.Subscribe("thtd_game_over_detail", GameOverShowCards);
|
||
GameEvents.Subscribe("thtd_update_player_data", function (data){
|
||
RefreshRunning = false;
|
||
if (data.code === "0000") {
|
||
Game.EmitSound("Quest.Completed");
|
||
GameUI.SetGamePoint(data.point);
|
||
GameUI.PlayerData = CustomNetTables.GetTableValue("CustomGameInfo", "PlayerData_" + GetSteamID());
|
||
}
|
||
if (data.hide !== 1) ShowMessage(data.msg === "OK" ? "成功" : data.msg, data.code !== "0000" ? 10 : 3, data.code !== "0000", -100);
|
||
});
|
||
GameEvents.Subscribe("thtd_update_game_point", function (data){
|
||
GameUI.SetGamePoint(data.point);
|
||
GameUI.PlayerData.point = data.point;
|
||
});
|
||
GameEvents.Subscribe("thtd_server_msg", function (data){
|
||
ShowMessage(data.msg, data.duration, data.code !== "0000", data.pos);
|
||
Game.EmitSound(data.code !== "0000" ? "Sound_THTD.thtd_star_up_fail" : "Quest.Completed");
|
||
});
|
||
|
||
CustomNetTables.SubscribeNetTableListener("TowerListInfo", OnNetTableTowerListInfo);
|
||
CustomNetTables.SubscribeNetTableListener("CustomGameInfo", OnNetTableCustomGameInfo);
|
||
|
||
CardPoolUpdate(CustomNetTables.GetTableValue("TowerListInfo", "cardList" + GetSteamID()));
|
||
|
||
// 选择初始卡
|
||
$.Schedule(3, function () {
|
||
if (Entities.GetLevel(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer())) >= 6) {
|
||
SelectStartBonusCard();
|
||
return;
|
||
}
|
||
|
||
hEventStartCard = GameEvents.Subscribe("select_start_card_finish", OnSelectStartCardFinish);
|
||
GameEvents.Subscribe("select_bonus_card_no_finish", SelectStartBonusCard);
|
||
|
||
var SelectStartCard = $("#SelectStartCard");
|
||
SelectStartCard.SetDialogVariable("item1", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0001"));
|
||
SelectStartCard.SetDialogVariable("item2", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0002"));
|
||
SelectStartCard.SetDialogVariable("item3", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0003"));
|
||
SelectStartCard.SetHasClass("Spawn", true);
|
||
|
||
function renderText( panel, text ) {
|
||
var ary = text.split("\n");
|
||
for (var i = 0; i < ary.length; i++) {
|
||
var label = $.CreatePanel("Label", panel, "")
|
||
label.text = ary[i];
|
||
label.SetHasClass("block", i>0);
|
||
}
|
||
}
|
||
|
||
renderText($("#Item1Description"), $.Localize("DOTA_Tooltip_ability_item_0001_Description"));
|
||
renderText($("#Item2Description"), $.Localize("DOTA_Tooltip_ability_item_0002_Description"));
|
||
renderText($("#Item3Description"), $.Localize("DOTA_Tooltip_ability_item_0003_Description"));
|
||
});
|
||
|
||
// 断线重连
|
||
var rankdata = CustomNetTables.GetTableValue("CustomGameInfo", "PlayersRank");
|
||
if (rankdata) {
|
||
CreadRankItems(rankdata);
|
||
}
|
||
var teamrankdata = CustomNetTables.GetTableValue("CustomGameInfo", "PlayersTeamRank");
|
||
if (teamrankdata) {
|
||
CreadTeamRankItems(teamrankdata);
|
||
}
|
||
|
||
$("#PatronStore").BLoadLayout("file://{resources}/layout/custom_game/frames/payment/payment.xml", false, false);
|
||
$("#PatronStore").OnClose(function () {$("#PatronStore").AddClass('Hide');});
|
||
})();
|
||
|
||
function OnThtdCommand(data) {
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
|
||
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
|
||
if (GetSteamID() === GameUI.GameData.admin) {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_command", data);
|
||
if (data.cmd === "skey") $.Msg(data.param);
|
||
}
|
||
}
|
||
|
||
function OnNetTableTowerListInfo(table_name, key, data) {
|
||
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
|
||
|
||
if (key === "cardlist" + GetSteamID()) {
|
||
CardPoolUpdate(data);
|
||
return;
|
||
}
|
||
}
|
||
|
||
function OnNetTableCustomGameInfo(table_name, key, data) {
|
||
// $.Msg( "---------- Table: ", table_name, ", changed: '", key, "' = ", data );
|
||
|
||
if (key === "game_info" + GetSteamID()) {
|
||
UpdateCreepInfo(data);
|
||
return;
|
||
}
|
||
|
||
if (key === "attacking_process") {
|
||
UpdateAttackingInfo(data);
|
||
return;
|
||
}
|
||
|
||
if (key === "PlayersRank") {
|
||
CreadRankItems(data);
|
||
return;
|
||
}
|
||
|
||
if (key === "PlayersTeamRank") {
|
||
CreadTeamRankItems(data);
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
/*===============攻略函数====================*/
|
||
|
||
function InitVideoPanel() {
|
||
var ContentPanel = $("#URLList");
|
||
var i = 0;
|
||
var maintitle = ""; //如果main title为空则退出
|
||
while (true) {
|
||
maintitle = $.Localize("#td_strategy_" + i + "_main_title");
|
||
// $.Localize 无对应的值时返回名称,不带#
|
||
if (maintitle === "" || maintitle === "td_strategy_" + i + "_main_title") break;
|
||
var panel = $.CreatePanel("Panel", ContentPanel, "");
|
||
panel.BLoadLayoutSnippet("StrategyListItem");
|
||
panel.GetChild(0).text = $.Localize("#td_strategy_" + i + "_left_title");
|
||
panel.GetChild(1).GetChild(0).text = maintitle;
|
||
panel.GetChild(1).GetChild(1).text = $.Localize("#td_strategy_" + i + "_sub_title");
|
||
var url = $.Localize("#td_strategy_" + i + "_url");
|
||
if (url === "") {
|
||
panel.SetPanelEvent("onactivate", "setStrategy(" + i + ")");
|
||
} else {
|
||
panel.SetPanelEvent("onactivate", "setVideo('" + url + "')");
|
||
}
|
||
i++;
|
||
}
|
||
}
|
||
|
||
function VideosPanelOpen() {
|
||
$("#VideosPanel").SetHasClass("Hide", false);
|
||
$("#VideoListWindow").SetHasClass("Hide", false);
|
||
$("#StrategyWindow").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
}
|
||
|
||
function VideosPanelClose() {
|
||
$("#VideosPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function CloseStrategyWindow() {
|
||
$("#StrategyWindow").SetHasClass("Hide", true);
|
||
$("#VideoListWindow").SetHasClass("Hide", false);
|
||
}
|
||
|
||
|
||
function setVideo(url) {
|
||
var xml = videoPage.replace('${url}', url)
|
||
var panel = $.CreatePanel("Panel", $.GetContextPanel(), "");
|
||
panel.BLoadLayoutFromString(xml, false, false)
|
||
panel.SetPausedInfo(PausedInfo);
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
}
|
||
|
||
function setStrategy(index) {
|
||
var StrategyWindow = $("#StrategyWindow");
|
||
StrategyWindow.SetDialogVariable("StrategyTitle1", $.Localize("#td_strategy_" + index + "_title1"));
|
||
StrategyWindow.SetDialogVariable("StrategyText1", $.Localize("#td_strategy_" + index + "_text1"));
|
||
StrategyWindow.SetDialogVariable("StrategyTitle2", $.Localize("#td_strategy_" + index + "_title2"));
|
||
StrategyWindow.SetDialogVariable("StrategyText2", $.Localize("#td_strategy_" + index + "_text2"));
|
||
StrategyWindow.SetDialogVariable("StrategyTitle3", $.Localize("#td_strategy_" + index + "_title3"));
|
||
StrategyWindow.SetDialogVariable("StrategyText3", $.Localize("#td_strategy_" + index + "_text3"));
|
||
StrategyWindow.SetDialogVariable("StrategyTitle4", $.Localize("#td_strategy_" + index + "_title4"));
|
||
StrategyWindow.SetDialogVariable("StrategyText4", $.Localize("#td_strategy_" + index + "_text4"));
|
||
var img = $.Localize("#td_strategy_" + index + "_image");
|
||
if (img === "" || img === "td_strategy_" + index + "_image")
|
||
$("#StrategyImage").SetImage("");
|
||
else
|
||
$("#StrategyImage").SetImage("s2r://panorama/images/custom_game/" + img + ".vtex");
|
||
|
||
$("#VideoListWindow").SetHasClass("Hide", true);
|
||
$("#StrategyWindow").SetHasClass("Hide", false);
|
||
}
|
||
|
||
|
||
/*===============投票踢人函数====================*/
|
||
|
||
// 加入额外的处理,初始化如下
|
||
// var OnOpenHandle = null;
|
||
// var OnCloseHandle = null;
|
||
// $.GetContextPanel().OnOpen = function (fn) {
|
||
// OnOpenHandle = fn;
|
||
// };
|
||
// $.GetContextPanel().OnClose = function (fn) {
|
||
// OnCloseHandle = fn;
|
||
// };
|
||
|
||
// 调用方如下
|
||
// var CardStore = $("#CardStore");
|
||
// CardStore.BLoadLayout("file://{resources}/layout/custom_game/frames/cards_store/cards_store.xml", false, false);
|
||
// CardStore.OnOpen(function () {
|
||
// $.GetContextPanel().AddClass("Locking");
|
||
// })
|
||
// CardStore.OnClose(function (HasConsumeItem) {
|
||
// $.GetContextPanel().RemoveClass("Locking");
|
||
// if (HasConsumeItem) PullCardPool();
|
||
// })
|
||
|
||
function SetButtons() {
|
||
var main = $("#KickVoteMain");
|
||
var playerIDs = Game.GetPlayerIDsOnTeam(DOTATeam_t.DOTA_TEAM_GOODGUYS);
|
||
var i = 0;
|
||
for (; i < playerIDs.length; i++) {
|
||
main.SetDialogVariable("PlayerName" + (i+1), "<font color='" + GameUI.DotaColorToHtml(Players.GetPlayerColor(playerIDs[i])) + "'>" + Players.GetPlayerName(playerIDs[i]) + "</font>");
|
||
if (Entities.IsStunned( Players.GetPlayerHeroEntityIndex( playerIDs[i] ) ))
|
||
main.GetChild(i).enabled = false;
|
||
else
|
||
main.GetChild(i).enabled = true;
|
||
}
|
||
for (; i < 4; i++) {
|
||
main.SetDialogVariable("PlayerName" + (i+1), "");
|
||
main.GetChild(i).enabled = false;
|
||
}
|
||
}
|
||
|
||
function KickVoteOpen() {
|
||
// GameUI.PlayMovie($("#MoviePanel"), "intro", 3);
|
||
// return;
|
||
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) {
|
||
return;
|
||
}
|
||
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) {
|
||
ShowMessage($.Localize("#kick_player_unauth"), 3);
|
||
return;
|
||
}
|
||
|
||
$("#KickVotePanel").SetHasClass("Hide", false);
|
||
// if (OnOpenHandle) OnOpenHandle();
|
||
SetButtons()
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
}
|
||
|
||
function KickVoteClose() {
|
||
$("#KickVotePanel").SetHasClass("Hide", true);
|
||
// if (OnCloseHandle) OnCloseHandle(HasConsumeItem);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function KickVoteAccept() {
|
||
KickAccept(1)
|
||
$("#KickAcceptPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function KickVoteUnAccept() {
|
||
KickAccept(0)
|
||
$("#KickAcceptPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function KickAccept( data ) {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_kick_accept", {'accept':data});
|
||
}
|
||
|
||
function KickVote( index ) {
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) {
|
||
return;
|
||
}
|
||
GameEvents.SendCustomGameEventToServer("custom_game_kick_vote", {'line_index':index});
|
||
KickVoteClose()
|
||
}
|
||
|
||
function OnKickPlayer( data ) {
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
|
||
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
|
||
if (Players.GetLocalPlayer() == data.kicked_player && data.kicked_player != data.vote_player) return;
|
||
var KickAcceptPanel = $("#KickAcceptPanel");
|
||
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#kick_player_" + data.kicked_line));
|
||
KickAcceptPanel.SetHasClass("Hide", false);
|
||
$("#KickVotePanel").SetHasClass("Hide", true);
|
||
$("#KickYesButton").SetPanelEvent("onactivate", "KickVoteAccept()");
|
||
$("#KickNoButton").SetPanelEvent("onactivate", "KickVoteUnAccept()");
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
|
||
KickAcceptStartTime = Game.GetGameTime();
|
||
OnKickPlayerThink(KickVoteAccept);
|
||
}
|
||
|
||
function OnKickPlayerThink(func) {
|
||
if (KickAcceptStartTime === -1) return;
|
||
|
||
var remaingTime = 60 - Math.ceil(Game.GetGameTime() - KickAcceptStartTime);
|
||
$("#KickAcceptPanel").SetDialogVariableInt("remaing_time", remaingTime);
|
||
|
||
if (remaingTime <= 0) {
|
||
if (typeof func === "function") func();
|
||
KickAcceptStartTime = -1;
|
||
return;
|
||
}
|
||
|
||
$.Schedule(0.2, OnKickPlayerThink);
|
||
}
|
||
|
||
|
||
// AI选择复用
|
||
function OnAiSkillEnable(data) {
|
||
if (Players.IsSpectator(Players.GetLocalPlayer())) return;
|
||
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
|
||
|
||
var KickAcceptPanel = $("#KickAcceptPanel");
|
||
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#th_ai_choose") + $.Localize(data.name) + " " + data.skill + " " + $.Localize("#skill") + ": " + $.Localize("DOTA_Tooltip_ability_thtd_" + data.name + "_0" + data.skill));
|
||
KickAcceptPanel.SetHasClass("Hide", false);
|
||
$("#KickVotePanel").SetHasClass("Hide", true);
|
||
$("#KickYesButton").SetPanelEvent("onactivate", "AiChooseAccept()");
|
||
$("#KickNoButton").SetPanelEvent("onactivate", "AiChooseUnAccept()");
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
AiChooseData = data;
|
||
KickAcceptStartTime = Game.GetGameTime();
|
||
OnKickPlayerThink(AiChooseAccept);
|
||
}
|
||
|
||
function AiChooseAccept() {
|
||
AiChooseResult(true)
|
||
$("#KickAcceptPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function AiChooseUnAccept() {
|
||
AiChooseResult(false)
|
||
$("#KickAcceptPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
|
||
function AiChooseResult(result) {
|
||
if (AiChooseData == null) return;
|
||
GameEvents.SendCustomGameEventToServer("custom_game_choose_ai", {'entity':AiChooseData.entity,'name': AiChooseData.name, 'skill':AiChooseData.skill,'result':result});
|
||
}
|
||
|
||
|
||
/*===============排行榜====================*/
|
||
|
||
function GetRankBonus(index) {
|
||
if (index <= 4)
|
||
return 500 - (index - 1) * 100;
|
||
else if (index <= 9)
|
||
return 170 - (index - 5) * 10;
|
||
else if (index <= 15)
|
||
return 125 - (index - 10) * 5;
|
||
else if (index <= 25)
|
||
return 96 - (index - 16) * 4;
|
||
else if (index <= 50)
|
||
return 58 - (index - 26) * 2;
|
||
else
|
||
return 10;
|
||
}
|
||
|
||
function CreadRankItems(datas) {
|
||
if (IsRankCreated) return;
|
||
var ContentPanel = $("#RankList");
|
||
var elements = $("#PlayerAvatarElements");
|
||
for(var i = 1; i <= Object.keys(datas).length; i++) {
|
||
var s = i.toString();
|
||
var panel = $.CreatePanel("Panel", ContentPanel, "");
|
||
panel.BLoadLayoutSnippet("RankListItem");
|
||
var listPanel = panel.FindChildTraverse("PlayerList");
|
||
var avatar = elements.GetChild(0);
|
||
avatar.SetParent(listPanel);
|
||
avatar.steamid = datas[s].steamid;
|
||
panel.GetChild(0).text = s;
|
||
panel.GetChild(2).GetChild(0).text = "<font color='#6429ec'>[" + datas[s].userid + "] " + datas[s].username;
|
||
panel.GetChild(2).GetChild(1).text = "波数:<font color='#e2bd43'>" + datas[s].wave + "</font>;伤害总量:" + Math.round(100 * GameUI.DpsFix(datas[s].damage, datas[s].wave + 50))/100 + "亿;上榜时间:" + datas[s].updatetime + ";赛季:" + datas[s].version;
|
||
panel.SetPanelEvent("onactivate", "RankDetail(" + s + ", '" + datas[s].steamid + "')");
|
||
// panel.SetAttributeString("steamid", datas[s].steamid);
|
||
// panel.GetAttributeString("steamid", "");
|
||
|
||
if (GetSteamID() !== GameUI.GameData.admin) panel.visible = datas[s].wave > 70;
|
||
}
|
||
IsRankCreated = true;
|
||
}
|
||
|
||
function RankDetail(index, steamid) {
|
||
if (GetSteamID() !== steamid && GetSteamID() !== GameUI.GameData.admin && GameUI.PlayerData.vip !== 1) {
|
||
ShowMessage("阵容明细只能在贡献者特别奖励期间查看或者在群相册里查看", 3);
|
||
return;
|
||
}
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_detail", {"index": index, "type": 1});
|
||
}
|
||
|
||
function RankShowCards(rankdata) {
|
||
$("#RankListWindow").SetHasClass("Hide", true);
|
||
$("#RankDetailWindow").SetHasClass("Hide", false);
|
||
$("#ResetRank").visible = false;
|
||
$("#ResetRankAll").visible = false;
|
||
$("#ResetRank").SetPanelEvent("onactivate", "RankReset(" + rankdata.index + ")");
|
||
|
||
var CardContent = $("#RankDetail");
|
||
var index = 0;
|
||
$("#ResetRank").visible = GetSteamID() === GameUI.GameData.admin;
|
||
$("#ResetRankAll").visible = GetSteamID() === GameUI.GameData.admin;
|
||
|
||
if(!rankdata["card0"]) {
|
||
rankdata["card0"] = {};
|
||
rankdata["card0"]["itemname"] = "item_0028";
|
||
rankdata["card0"]["star"] = 0;
|
||
rankdata["card0"]["damage"] = 0; // 难度
|
||
rankdata["card0"]["power"] = 0; //爆弹数量
|
||
rankdata["card0"]["attack"] = 0; //核心数
|
||
rankdata["card0"]["equip"] = {};
|
||
}
|
||
var damageCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
damageCount += card.damage;
|
||
}
|
||
}
|
||
var damageTopCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
if (i === 1 && card.damage/damageCount >= 0.6){
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
damageTopCount += card.damage;
|
||
if (damageTopCount/damageCount >= 0.8) {
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
for(var i = 0; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
var itemname = card.itemname;
|
||
var data = TowerList[itemname];
|
||
var panel = CardContent.GetChild(i);
|
||
var panelCard = null;
|
||
if (!panel) {
|
||
panel = $.CreatePanel("Panel", CardContent, "");
|
||
panel.BLoadLayoutSnippet("RankDetailCard");
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
panelCard.BLoadLayoutSnippet("CardPoolCard");
|
||
} else {
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
}
|
||
|
||
panelCard.SetHasClass("SSR", false);
|
||
panelCard.SetHasClass("SR", false);
|
||
panelCard.SetHasClass("R", false);
|
||
panelCard.SetHasClass("N", false);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
|
||
panelCard.SetAttributeString("itemname", itemname);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
|
||
SetCardEvent(panelCard, false);
|
||
var damagetext = "";
|
||
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
|
||
if (card.damage < 10000) {
|
||
damagetext = card.damage + "万";
|
||
} else {
|
||
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
|
||
}
|
||
|
||
if (i === 0)
|
||
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS:" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
|
||
else
|
||
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
|
||
|
||
panel.visible = true;
|
||
|
||
var Content = panel.FindChild("StarContent");
|
||
for (var j = 0; j < 5; j++) {
|
||
Content.GetChild(j).visible = j < card.star;
|
||
}
|
||
|
||
Content = panel.FindChild("EquipContent");
|
||
for (var j = 0; j < 6; j++) {
|
||
if (card.equip && j < Object.keys(card.equip).length)
|
||
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
|
||
else
|
||
Content.GetChild(j).itemname = "";
|
||
}
|
||
} else {
|
||
var panel = CardContent.GetChild(i);
|
||
if (panel != null) panel.visible = false;
|
||
}
|
||
}
|
||
}
|
||
|
||
function ShowRankButtonTip(index) {
|
||
if (index === 1)
|
||
$.DispatchEvent("DOTAShowTextTooltip", $("#RankButton").GetChild(0), $.Localize("#td_rank_list_100_tip"));
|
||
else
|
||
$.DispatchEvent("DOTAShowTextTooltip", $("#TeamRankButton").GetChild(0), $.Localize("#td_rank_list_100_tip"));
|
||
}
|
||
|
||
function HideRankButtonTip() {
|
||
$.DispatchEvent("DOTAHideTextTooltip")
|
||
}
|
||
|
||
function RankPanelOpen() {
|
||
$("#RankPanel").SetHasClass("Hide", false);
|
||
$("#RankListWindow").SetHasClass("Hide", false);
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
}
|
||
|
||
function RankPanelClose() {
|
||
$("#RankListWindow").SetHasClass("Hide", true);
|
||
$("#RankPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function RankReset(index) {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": index, "type": 1});
|
||
}
|
||
|
||
function RankResetAll() {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": 0, "type": 1});
|
||
}
|
||
|
||
function RankResetComplete(data) {
|
||
if (data.msg === "") {
|
||
ShowMessage("重置成功!", 1);
|
||
Game.EmitSound("Quest.Completed");
|
||
$("#RankList").GetChild(data.index - 1).visible = false;
|
||
} else {
|
||
ShowMessage(data.msg, 5, true);
|
||
}
|
||
}
|
||
|
||
function RankDetailClose() {
|
||
$("#RankDetailWindow").SetHasClass("Hide", true);
|
||
$("#RankListWindow").SetHasClass("Hide", false);
|
||
}
|
||
|
||
|
||
function GetQualityText(a) {
|
||
switch(a) {
|
||
case 1:
|
||
return "N";
|
||
case 2:
|
||
return "R";
|
||
case 3:
|
||
return "SR";
|
||
case 4:
|
||
return "SSR";
|
||
}
|
||
}
|
||
|
||
|
||
function GameOverShowCards(rankdata) {
|
||
RankPanelOpen();
|
||
|
||
$("#RankListWindow").SetHasClass("Hide", true);
|
||
$("#RankDetailWindow").SetHasClass("Hide", false);
|
||
$("#ResetRank").visible = false;
|
||
$("#ResetRankAll").visible = false;
|
||
|
||
var CardContent = $("#RankDetail");
|
||
|
||
var damageCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
damageCount += card.damage;
|
||
}
|
||
}
|
||
var damageTopCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
if (i === 1 && card.damage/damageCount >= 0.6){
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
damageTopCount += card.damage;
|
||
if (damageTopCount/damageCount >= 0.8) {
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// {"card1":{"itemname":"item_0003","star":2,"power":1,"attack":0,"damage":0,"equip":{"1":"item_2024"}},"card2":...}
|
||
for(var i = 0; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
var itemname = card.itemname;
|
||
var data = TowerList[itemname];
|
||
var panel = CardContent.GetChild(i);
|
||
var panelCard = null;
|
||
if (!panel) {
|
||
panel = $.CreatePanel("Panel", CardContent, "");
|
||
panel.BLoadLayoutSnippet("RankDetailCard");
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
panelCard.BLoadLayoutSnippet("CardPoolCard");
|
||
} else {
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
}
|
||
|
||
panelCard.SetHasClass("SSR", false);
|
||
panelCard.SetHasClass("SR", false);
|
||
panelCard.SetHasClass("R", false);
|
||
panelCard.SetHasClass("N", false);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
|
||
panelCard.SetAttributeString("itemname", itemname);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
|
||
SetCardEvent(panelCard, false);
|
||
var damagetext = "";
|
||
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
|
||
if (card.damage < 10000) {
|
||
damagetext = card.damage + "万";
|
||
} else {
|
||
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
|
||
}
|
||
|
||
if (i === 0)
|
||
panel.FindChild("TextContent").GetChild(0).text = "Bombs:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS:" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
|
||
else
|
||
panel.FindChild("TextContent").GetChild(0).text = "Power:"+ card.power + "<br/>Attack:"+ card.attack + "<br/>Damage:"+ damagetext;
|
||
|
||
panel.visible = true;
|
||
|
||
var Content = panel.FindChild("StarContent");
|
||
for (var j = 0; j < 5; j++) {
|
||
Content.GetChild(j).visible = j < card.star;
|
||
}
|
||
|
||
Content = panel.FindChild("EquipContent");
|
||
for (var j = 0; j < 6; j++) {
|
||
if (card.equip && j < Object.keys(card.equip).length)
|
||
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
|
||
else
|
||
Content.GetChild(j).itemname = "";
|
||
}
|
||
} else {
|
||
var panel = CardContent.GetChild(i);
|
||
if (panel != null) panel.visible = false;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
function TeamRankPanelOpen() {
|
||
$("#TeamRankPanel").SetHasClass("Hide", false);
|
||
$("#TeamRankListWindow").SetHasClass("Hide", false);
|
||
PausedInfo.SetHasClass("Hide", true);
|
||
}
|
||
|
||
function TeamRankPanelClose() {
|
||
$("#TeamRankListWindow").SetHasClass("Hide", true);
|
||
$("#TeamRankPanel").SetHasClass("Hide", true);
|
||
PausedInfo.SetHasClass("Hide", false);
|
||
}
|
||
|
||
function TeamRankDetailClose() {
|
||
$("#TeamRankDetailWindow").SetHasClass("Hide", true);
|
||
$("#TeamRankListWindow").SetHasClass("Hide", false);
|
||
}
|
||
|
||
function CreadTeamRankItems(datas) {
|
||
if (IsTeamRankCreated) return;
|
||
var ContentPanel = $("#TeamRankList");
|
||
var elements = $("#TeamPlayerAvatarElements");
|
||
for(var i = 1; i <= Object.keys(datas).length; i++) {
|
||
var s = i.toString();
|
||
var panel = $.CreatePanel("Panel", ContentPanel, "");
|
||
panel.BLoadLayoutSnippet("RankListItem");
|
||
var listPanel = panel.FindChildTraverse("PlayerList");
|
||
var avatar = elements.GetChild(0);
|
||
avatar.SetParent(listPanel);
|
||
avatar.steamid = datas[s].steamid;
|
||
panel.GetChild(0).text = s;
|
||
panel.GetChild(2).GetChild(0).text = "<font color='#6429ec'>[" + datas[s].userid + "] " + datas[s].username + "</font>";
|
||
panel.GetChild(2).GetChild(1).text = "Wave:<font color='#e2bd43'>" + datas[s].wave + "</font>;Damage:" + Math.round(100 * GameUI.DpsFix(datas[s].damage, datas[s].wave + 50))/100 + "亿;Date Added:" + datas[s].updatetime + ";Season:" + datas[s].version;
|
||
panel.SetPanelEvent("onactivate", "TeamRankDetail(" + s + ", '" + datas[s].steamid + "')");
|
||
// panel.SetAttributeString("steamid", datas[s].steamid);
|
||
// panel.GetAttributeString("steamid", "");
|
||
if (GetSteamID() !== GameUI.GameData.admin) panel.visible = datas[s].wave > 70;
|
||
}
|
||
IsTeamRankCreated = true;
|
||
}
|
||
|
||
function TeamRankDetail(index, steamid) {
|
||
if (GetSteamID() !== steamid && GetSteamID() !== GameUI.GameData.admin && GameUI.PlayerData.vip !== 1) {
|
||
ShowMessage("Lineup details can only be viewed as VIP", 3);
|
||
return;
|
||
}
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_detail", {"index": index, "type": 2});
|
||
}
|
||
|
||
function TeamRankShowCards(rankdata) {
|
||
$("#TeamRankListWindow").SetHasClass("Hide", true);
|
||
$("#TeamRankDetailWindow").SetHasClass("Hide", false);
|
||
$("#TeamResetRank").visible = false;
|
||
$("#TeamResetRankAll").visible = false;
|
||
$("#TeamResetRank").SetPanelEvent("onactivate", "TeamRankReset(" + rankdata.index + ")");
|
||
|
||
var CardContent = $("#TeamRankDetail");
|
||
var index = 0;
|
||
$("#TeamResetRank").visible = GetSteamID() === GameUI.GameData.admin;
|
||
$("#TeamResetRankAll").visible = GetSteamID() === GameUI.GameData.admin;
|
||
// {"index":9,"is_local_player":0,"card1":{"itemname":"item_0003","star":2,"power":1,"attack":0,"damage":0,"equip":{"1":"item_2024"}},"card2":...}
|
||
|
||
// var card0 = {};
|
||
// if(!rankdata["card0"]) {
|
||
// card0["itemname"] = "item_0028";
|
||
// card0["star"] = 0;
|
||
// card0["damage"] = 0; // 难度
|
||
// card0["power"] = 0; //爆弹数量
|
||
// card0["attack"] = 0; //核心数
|
||
// card0["equip"] = {};
|
||
|
||
// var damageCount = 0;
|
||
// for(var i = 1; i <= 12; i++) {
|
||
// var card = rankdata["card" + i];
|
||
// if (card) {
|
||
// damageCount += card.damage;
|
||
// }
|
||
// }
|
||
// var damageTopCount = 0;
|
||
// for(var i = 1; i <= 12; i++) {
|
||
// var card = rankdata["card" + i];
|
||
// if (card) {
|
||
// if (i === 1 && card.damage/damageCount >= 0.6){
|
||
// card0["attack"] = i;
|
||
// break;
|
||
// }
|
||
// damageTopCount += card.damage;
|
||
// if (damageTopCount/damageCount >= 0.8) {
|
||
// card0["attack"] = i;
|
||
// break;
|
||
// }
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
if(!rankdata["card0"]) {
|
||
rankdata["card0"] = {};
|
||
rankdata["card0"]["itemname"] = "item_0028";
|
||
rankdata["card0"]["star"] = 0;
|
||
rankdata["card0"]["damage"] = 0; // 难度
|
||
rankdata["card0"]["power"] = 0; //爆弹数量
|
||
rankdata["card0"]["attack"] = 0; //核心数
|
||
rankdata["card0"]["equip"] = {};
|
||
}
|
||
var damageCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
damageCount += card.damage;
|
||
}
|
||
}
|
||
var damageTopCount = 0;
|
||
for(var i = 1; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
if (card) {
|
||
if (i === 1 && card.damage/damageCount >= 0.6){
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
damageTopCount += card.damage;
|
||
if (damageTopCount/damageCount >= 0.8) {
|
||
rankdata["card0"]["attack"] = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
for(var i = 0; i <= 12; i++) {
|
||
var card = rankdata["card" + i];
|
||
// if (!card) card = card0;
|
||
if (card) {
|
||
var itemname = card.itemname;
|
||
var data = TowerList[itemname];
|
||
var panel = CardContent.GetChild(i);
|
||
var panelCard = null;
|
||
if (!panel) {
|
||
panel = $.CreatePanel("Panel", CardContent, "");
|
||
panel.BLoadLayoutSnippet("RankDetailCard");
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
panelCard.BLoadLayoutSnippet("CardPoolCard");
|
||
} else {
|
||
panelCard = panel.FindChild("CardRankContent");
|
||
}
|
||
|
||
panelCard.SetHasClass("SSR", false);
|
||
panelCard.SetHasClass("SR", false);
|
||
panelCard.SetHasClass("R", false);
|
||
panelCard.SetHasClass("N", false);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
|
||
panelCard.SetAttributeString("itemname", itemname);
|
||
panelCard.SetHasClass(GetQualityText(data.quality), true);
|
||
panelCard.FindChild("CardImage").SetImage("s2r://panorama/images/custom_game/cards/" + data.cardname + "_png.vtex");
|
||
SetCardEvent(panelCard, false);
|
||
var damagetext = "";
|
||
if (i > 0) card.damage = GameUI.DpsFix(card.damage, rankdata["wave"] + 50);
|
||
if (card.damage < 10000) {
|
||
damagetext = card.damage + "万";
|
||
} else {
|
||
damagetext = Math.floor(card.damage/10000) + "亿" + card.damage%10000 + "万";
|
||
}
|
||
|
||
if (i === 0)
|
||
panel.FindChild("TextContent").GetChild(0).text = "Bombs:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS:" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
|
||
else
|
||
panel.FindChild("TextContent").GetChild(0).text = "Power:"+ card.power + "<br/>Attack:"+ card.attack + "<br/>Damage:"+ damagetext;
|
||
|
||
panel.visible = true;
|
||
|
||
var Content = panel.FindChild("StarContent");
|
||
for (var j = 0; j < 5; j++) {
|
||
Content.GetChild(j).visible = j < card.star;
|
||
}
|
||
|
||
Content = panel.FindChild("EquipContent");
|
||
for (var j = 0; j < 6; j++) {
|
||
if (card.equip && j < Object.keys(card.equip).length)
|
||
Content.GetChild(j).itemname = card.equip[(j+1).toString()];
|
||
else
|
||
Content.GetChild(j).itemname = "";
|
||
}
|
||
} else {
|
||
var panel = CardContent.GetChild(i);
|
||
if (panel != null) panel.visible = false;
|
||
}
|
||
}
|
||
}
|
||
|
||
function TeamRankReset(index) {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": index, "type": 2});
|
||
}
|
||
|
||
function TeamRankResetAll() {
|
||
GameEvents.SendCustomGameEventToServer("custom_game_rank_reset", {"index": 0, "type": 2});
|
||
}
|
||
|
||
function TeamRankResetComplete(data) {
|
||
if (data.msg === "") {
|
||
ShowMessage("Reset successful!", 1);
|
||
Game.EmitSound("Quest.Completed");
|
||
$("#TeamRankList").GetChild(data.index - 1).visible = false;
|
||
} else {
|
||
ShowMessage(data.msg, 5, true);
|
||
}
|
||
} |