JASS – Mostrar HP y MP de personajes
En Warcraft III, obtener información detallada de la vida (HP) y el maná (MP) de los héroes o unidades controladas por otros jugadores (como tus oponentes) puede ser un desafío debido a las limitaciones del juego. El juego no proporciona una forma directa de acceder a esa información para unidades controladas por otros jugadores.
Sin embargo, puedes utilizar enfoques indirectos para mostrar estadísticas en forma de porcentaje por encima de las unidades de otros jugadores. Un enfoque común es usar etiquetas de texto flotantes para representar estas estadísticas en forma de porcentaje. A continuación, te muestro un ejemplo básico de cómo hacerlo en JASS:
globals
timer statDisplayTimer
real statDisplayInterval = 1.0 // Intervalo de actualización de las estadísticas
endglobals
function ShowStats takes nothing returns nothing
local unit target = GetTriggerUnit()
local player targetOwner = GetOwningPlayer(target)
if UnitAlive(target) then
local real currentHP = GetWidgetLife(target)
local real maxHP = BlzGetUnitMaxHP(target)
local real hpPercentage = (currentHP / maxHP) * 100.0
local real currentMP = GetUnitState(target, UNIT_STATE_MANA)
local real maxMP = BlzGetUnitMaxMana(target)
local real mpPercentage = (currentMP / maxMP) * 100.0
local string hpText = "HP: " + R2S(hpPercentage) + "%"
local string mpText = "MP: " + R2S(mpPercentage) + "%"
// Muestra el texto flotante sobre la unidad
call DisplayTextToPlayer(targetOwner, GetPlayerId(targetOwner), GetUnitX(target), GetUnitY(target), hpText)
call DisplayTextToPlayer(targetOwner, GetPlayerId(targetOwner), GetUnitX(target), GetUnitY(target) - 0.03, mpText)
end
endfunction
function InitTriggers takes nothing returns nothing
set statDisplayTimer = CreateTimer()
call TimerStart(statDisplayTimer, statDisplayInterval, true, function ShowStats)
endfunction
function CreateTriggers takes nothing returns nothing
// Configura los activadores necesarios aquí (por ejemplo, activadores que detectan unidades enemigas cercanas).
// Luego, cuando se cumplan ciertas condiciones, llama a ShowStats para mostrar las estadísticas.
endfunction
//===========================================================================
function Init takes nothing returns nothing
call CreateTriggers()
call InitTriggers()
endfunction
En este código:
- Usamos un temporizador (
statDisplayTimer
) para periódicamente llamar a la funciónShowStats
, que muestra las estadísticas de HP y MP en forma de porcentaje sobre la unidad. - Dentro de
ShowStats
, calculamos el porcentaje de HP y MP en relación a los valores máximos de la unidad y mostramos estos valores como texto flotante utilizandoDisplayTextToPlayer
. - Debes configurar los activadores necesarios (por ejemplo, detectores de unidades enemigas cercanas) en
CreateTriggers
para determinar cuándo mostrar las estadísticas.
Recuerda que este es un enfoque básico y que la precisión de las estadísticas mostradas podría verse afectada por las limitaciones del juego. Además, debes considerar la legibilidad y la estética al mostrar texto flotante en el juego.