Кто шарит с Js

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Сделал healthbar и manabar он реагируют как обычный то есть может переключатся между героями и показывать хп и ману, но при выборе любого юнита у которого нет маны код перестаёт работать, ругается на
Код:
$("#ManaBar").style.width = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(unit)) * 100 + "%";
и в консоле пишет Failed to set property value (property=width)(value=NaN%), походу что не видит его и поэтому весь код крашится и все бары замирают. В Api лазил по js пробовал через Players.GetPlayerSelectedHero и Players.GetLocalPlayer() не удалось.
Код:
(function () 
{
  /* Выбор изменен на npc, которым управляет игрок. */
  function onUpdateSelectedUnit(event) {
    var unit = Players.GetLocalPlayerPortraitUnit(); 	/* Players.GetPlayerSelectedHero() Players.GetLocalPlayerPortraitUnit() */
	currentUnit = unit;
  }


  function onUpdate() {

    $("#HealthBar").style.width = (Entities.GetHealth(currentUnit) / Entities.GetMaxHealth(currentUnit)) * 100 + "%";
    $("#ManaBar").style.width = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(currentUnit)) * 100 + "%";
	$("#Healths").text = (Entities.GetHealth(currentUnit) / Entities.GetMaxHealth(currentUnit)) * 100 + "/100";
	$("#cold").text = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(currentUnit)) * 110 + "/110";

    $.Schedule(0.005, onUpdate);
  }

  GameEvents.Subscribe("dota_player_update_selected_unit", onUpdateSelectedUnit);

  unit = Players.GetLocalPlayer();
  currentUnit = unit;
  onUpdate();
})();
 
Последнее редактирование модератором:
[quote author=den4iccc link=topic=1378.msg8769#msg8769 date=1489185277]
Сделал healthbar и manabar он реагируют как обычный то есть может переключатся между героями и показывать хп и ману, но при выборе любого юнита у которого нет маны код перестаёт работать, ругается на
Код:
$("#ManaBar").style.width = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(unit)) * 100 + "%";
и в консоле пишет Failed to set property value (property=width)(value=NaN%), походу что не видит его и поэтому весь код крашится и все бары замирают.
[/quote]
Очевидно же - деление на ноль. NaN - Not a Number, выпадает когда какой то сверхразум разделил на нуль, а компу разбирать последствия.
Код:
if(Entities.GetMaxMana(unit) != 0)
{
	$("#ManaBar").style.width = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(unit)) * 100 + "%";
}
 
Последнее редактирование модератором:
А использовать ProgressBar от вольво запрещено?
 
Код:
(function () 
{
  function onUpdate() {
    var currentUnit = Players.GetLocalPlayerPortraitUnit();

    $("#HealthBar").style.width = (Entities.GetHealth(currentUnit) / Entities.GetMaxHealth(currentUnit)) * 100 + "%";
    $("#ManaBar").style.width = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(currentUnit)) * 100 + "%";
	$("#Healths").text = (Entities.GetHealth(currentUnit) / Entities.GetMaxHealth(currentUnit)) * 100 + "/100";
	$("#cold").text = (Entities.GetMana(currentUnit) / Entities.GetMaxMana(currentUnit)) * 110 + "/110";

    $.Schedule(0.005, onUpdate);
  }

  onUpdate();
})();

Тот же самый эффект хд
 
Последнее редактирование модератором:
Реклама: