JASS – Oro por segundo

Para lograr la generación de oro por segundo en el World Editor de Warcraft 3 utilizando el lenguaje JASS (Just Another Scripting Syntax) en lugar de GUI, sigue estos pasos:
- Abre tu mapa en el World Editor de Warcraft 3.
- En el Editor de Datos, crea una variable global para rastrear la cantidad de oro que se generará por segundo. Nombra esta variable, por ejemplo,
goldPerSecond
, y define su tipo como entero (integer). - A continuación, ve al Editor de Objetos y crea una unidad que actuará como el “centro de recursos” desde el cual los jugadores obtendrán oro por segundo. Puedes usar una Mina de Oro u otro edificio apropiado.
- En el Editor de Habilidades, crea una nueva habilidad personalizada que representará la generación de oro. Nómbrala “Generar Oro” o cualquier otro nombre que prefieras. Define un icono y sonido para la habilidad si lo deseas.
- En la pestaña de Datos de esta nueva habilidad, asigna un valor a “Cantidad de Oro” (por ejemplo, 1) para determinar cuánto oro se generará por segundo.
- En el Editor de Objetos, selecciona la unidad que actúa como el centro de recursos y agrega la habilidad personalizada “Generar Oro” a la lista de habilidades de la unidad.
- Ahora, ve al Editor de JASS y crea un nuevo script para controlar la generación de oro por segundo. Puedes hacerlo de la siguiente manera:
globals
private timer timer = CreateTimer()
endglobals
function GenerateGoldPerSecond takes nothing returns nothing
local player p
local integer i
local integer goldGenerated = 0
// Recorre todos los jugadores
loop
set p = Player(i)
exitwhen p == null
// Verifica si el jugador controla el centro de recursos
if GetOwningPlayer(GetTriggerUnit()) == p then
// Agrega la cantidad de oro por segundo a la variable global
set goldGenerated = GetGoldGenerated(p) + GetUnitAbilityLevel(GetTriggerUnit(), 'A00B') // Cambia 'A00B' por el ID de la habilidad "Generar Oro"
call SetGoldGenerated(p, goldGenerated)
call SetPlayerState(p, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(p, PLAYER_STATE_RESOURCE_GOLD) + GetAbilityIntegerLevel('A00B', 'Abilities') // Cambia 'A00B' por el ID de la habilidad "Generar Oro"
endif
set i = i + 1
endloop
endfunction
function GetGoldGenerated takes player p returns integer
return goldGenerated[p]
endfunction
function SetGoldGenerated takes player p, integer gold returns nothing
set goldGenerated[p] = gold
endfunction
// Inicializa las variables globales
function InitGlobals takes nothing returns nothing
local integer i
for i = 0 to bj_MAX_PLAYERS - 1 do
set goldGenerated[i] = 0
endfor
endfunction
// Activa el disparador para generar oro por segundo
function Trig_GenerateGoldPerSecond_Actions takes nothing returns nothing
call TimerStart(timer, 1.00, true, function GenerateGoldPerSecond)
endfunction
//===========================================================================
function InitTrig_GenerateGoldPerSecond takes nothing returns nothing
set gg_trg_GenerateGoldPerSecond = CreateTrigger()
call TriggerRegisterTimerEventSingle(gg_trg_GenerateGoldPerSecond, 1.00)
call TriggerAddAction(gg_trg_GenerateGoldPerSecond, function Trig_GenerateGoldPerSecond_Actions)
endfunction
Este script JASS establece un temporizador que se ejecuta cada segundo para verificar si un jugador controla el centro de recursos y, en caso afirmativo, agrega la cantidad especificada de oro por segundo al jugador.
- Asegúrate de ajustar los valores y detalles según tus necesidades específicas de mapa. Asegúrate de reemplazar
'A00B'
con el ID de la habilidad “Generar Oro” en tu mapa. - Finalmente, inicia la función
InitTrig_GenerateGoldPerSecond
en el editor de JASS para activar el disparador y comenzar a generar oro por segundo.
Estos pasos te permitirán crear un sistema de generación de oro por segundo en Warcraft 3 utilizando JASS en el World Editor. Ten en cuenta que el código JASS es más avanzado y requiere un buen conocimiento de programación en Warcraft 3. Asegúrate de guardar y compilar tu mapa después de realizar estos cambios.