29/05/2024

JASS – Cuadros de Votaciones

0

Para crear un sistema de diálogos de cuadros de votación en JASS que se inicie cuando el mapa se carga y permita a los jugadores elegir entre dos opciones (“Ganar estadísticas por la noche” o “No ganar estadísticas por la noche”), puedes utilizar el siguiente código como punto de partida:

globals
    integer dialog
    integer dialogButton1
    integer dialogButton2
    boolean shouldGainStats = true // Por defecto, ganar estadísticas por la noche
endglobals

function CreateDialog takes nothing returns nothing
    set dialog = DialogCreate()
    call DialogSetMessage(dialog, "¿Deseas que tu héroe gane estadísticas por la noche?")
    set dialogButton1 = DialogAddButton(dialog, "Ganar estadísticas por la noche")
    set dialogButton2 = DialogAddButton(dialog, "No ganar estadísticas por la noche")
    call DialogDisplay(Player(0), dialog, true)
endfunction

function DialogResponse takes nothing returns nothing
    local integer response = GetClickedButton()
    if response == dialogButton1 then
        set shouldGainStats = true
    elseif response == dialogButton2 then
        set shouldGainStats = false
    endif
    call DialogClear(dialog)
endfunction

function InitTriggers takes nothing returns nothing
    call CreateDialog()
    call TimerStart(CreateTimer(), 1.0, false, function CheckDialogStatus)
endfunction

function CheckDialogStatus takes nothing returns nothing
    if not DialogIsVisible(dialog) then
        call DestroyTimer(GetExpiredTimer())
        call InitMapConfig()
    end
endfunction

function InitMapConfig takes nothing returns nothing
    // Realiza la configuración inicial del mapa aquí, basada en 'shouldGainStats'.
    if shouldGainStats then
        // Configuración para ganar estadísticas por la noche
        // Por ejemplo, puedes llamar a la función que habíamos definido previamente para ganar estadísticas por la noche.
    else
        // Configuración para no ganar estadísticas por la noche
    endif
endfunction

function CreateTriggers takes nothing returns nothing
    call InitTriggers()
endfunction

//===========================================================================
function Init takes nothing returns nothing
    call CreateTriggers()
endfunction

En este código:

  1. Creamos un cuadro de diálogo con dos botones (“Ganar estadísticas por la noche” y “No ganar estadísticas por la noche”) utilizando la función CreateDialog.
  2. El jugador puede elegir una de las opciones en el cuadro de diálogo. El resultado se almacena en la variable global shouldGainStats en la función DialogResponse.
  3. Usamos un temporizador en la función CheckDialogStatus para verificar si el cuadro de diálogo ya no está visible. Una vez que el jugador elige una opción, el cuadro de diálogo se cierra, y el temporizador se inicia para ejecutar la función InitMapConfig.
  4. La función InitMapConfig es donde debes realizar la configuración inicial del mapa basada en la elección del jugador. Puedes personalizar esta parte según tus necesidades.

Asegúrate de asociar el activador que llama a CreateTriggers al evento de inicio del mapa en el Editor de Mapas de Warcraft 3.

Deja un comentario

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