29/05/2024

JASS – Mostrar HP y MP de personajes

0

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:

  1. Usamos un temporizador (statDisplayTimer) para periódicamente llamar a la función ShowStats, que muestra las estadísticas de HP y MP en forma de porcentaje sobre la unidad.
  2. 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 utilizando DisplayTextToPlayer.
  3. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *