O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Servidor

Como criar eventos customizados no servidor de MU Online

Crie eventos customizados no servidor de MU Online — eventos GM via comandos, Happy Hour, Golden Invasion, eventos de boss especial via SQL, e sistema de pontuação de evento no banco.

EQ Equipe ViciadosMU · Atualizado em 1 jul 2026 · ⏱ 20 min de leitura
Resposta rápida

Eventos customizados são um dos maiores diferenciais entre servidores privados de MU Online — eles mantêm a comunidade engajada e criam momentos especiais. A maioria dos eventos pode ser criada sem modificar o código do GameServer, usando configurações e comandos existentes.

Eventos customizados são um dos maiores diferenciais entre servidores privados de MU Online — eles mantêm a comunidade engajada e criam momentos especiais. A maioria dos eventos pode ser criada sem modificar o código do GameServer, usando configurações e comandos existentes.

Tipos de eventos customizados possíveis

TipoComo implementarComplexidade
Happy Hour (EXP/Drop 2x)Comando GM / GameServer.iniBaixa
Boss de Evento (spawn especial)MonsterSetBase.txt temporárioBaixa
Golden InvasionMonsterSetBase.txt + Drop.txtMédia
PVP ArenaUsar mapas existentes com PK liberadoMédia
Evento de EXP por tempo onlineSQL Server Agent + SPMédia
Torneio de Castle Siege especialConfiguração CS + SQLAlta
Drop de item raro temporárioDrop.txt modificado + reinícioBaixa

Happy Hour — dobrar EXP e Drop

O Happy Hour é o evento mais simples e mais popular. Dobra a EXP e/ou taxa de drop por um período.

Via comando GM (durante o jogo)

; Comandos GM para ativar Happy Hour (varia por distribuição)
/happyhour 60              ← ativar por 60 minutos
/expevent 2 60             ← 2x EXP por 60 minutos
/dropevent 200 60          ← 200% drop por 60 minutos

; Anunciar para os jogadores
/notice 🎉 HAPPY HOUR ATIVADO! EXP e DROP 2x por 60 minutos! Aproveitem!
/announce Happy Hour - EXP 2x por 1 hora começando agora!

Via GameServer.ini (para horários fixos)

; GameServer.ini — Happy Hour em horários fixos

[HAPPY_HOUR]
HappyHourEnable=1
HappyHour1=20:00          ; Happy Hour às 20h
HappyHour2=22:00          ; outro às 22h
HappyHourDuration=60      ; duração: 60 minutos
HappyHourExpMultiplier=2.0
HappyHourDropMultiplier=2.0
HappyHourAnnounce=1       ; anunciar automaticamente
HappyHourAnnounceMessage=HAPPY HOUR! EXP e DROP dobrados por 60 minutos!

Golden Invasion — invasão de monstros dourados

O Golden Invasion spawna monstros raros com drops especiais em mapas normais:

Configurar monstros dourados no MonsterSetBase.txt

; MonsterSetBase.txt — Golden Invasion em Lorencia
; Tipo  ID   Mapa  X1  Y1  X2  Y2  Qtd  Respawn

; Golden Budge Dragon (se tiver na distribuição)
; Assumindo ID 500-510 são os monstros dourados
1  500  0   90  90  140  140  5  600    ; 5 Golden Budge Dragons em Lorencia, respawn 10 min
1  501  0   90  90  140  140  3  600    ; Golden Rabbit
1  502  2   180 30  220  60   3  600    ; Golden Titan em Devias

; Para eventos especiais com duração:
; Altere o MonsterSetBase.txt, reinicie o GameServer
; Ao terminar o evento, remova as linhas e reinicie novamente

Drop especial dos monstros dourados

; Drop.txt — drops especiais para monstros dourados
; Formato: MonsterID  ItemGroup  ItemID  ItemLevel  Chance%  EventOnly

; Golden Budge Dragon (ID 500) dropando itens raros
500  14  13  0  80   ; Jewel of Bless com 80% de chance
500  14  14  0  60   ; Jewel of Soul com 60% de chance
500  14  31  0  20   ; Jewel of Life com 20% de chance
500  12  0   9  5    ; Wing of Elf +9 com 5% de chance
500  7   15  0  2    ; Orb especial com 2%

; Golden Titan (ID 502) — drops melhores
502  14  13  0  100  ; Jewel of Bless 100%
502  14  14  0  100  ; Jewel of Soul 100%
502  14  31  0  50   ; Jewel of Life 50%
502  12  1   9  10   ; Wing of Heaven +9 com 10%

Automatizar via SQL Server Agent

-- Stored procedure para ativar Golden Invasion via registro no banco
-- (se o GameServer ler configurações do banco)

CREATE PROCEDURE sp_AtivarGoldenInvasion
    @durMinutos INT = 30
AS
BEGIN
    -- Registrar evento ativo
    INSERT INTO ActiveEvents (EventType, StartTime, EndTime, Description)
    VALUES (
        'GoldenInvasion',
        GETDATE(),
        DATEADD(MINUTE, @durMinutos, GETDATE()),
        'Golden Invasion ativa - drops especiais em Lorencia e Devias!'
    );
    
    -- Anunciar no log (se o GameServer lê essa tabela)
    INSERT INTO SystemMessages (Message, Priority, Created)
    VALUES ('🌟 GOLDEN INVASION! Monstros dourados aparecem em Lorencia e Devias!', 1, GETDATE());
END;
GO

-- Criar tabela de eventos ativos (para o site exibir e para o SQL Agent)
CREATE TABLE ActiveEvents (
    EventID    INT IDENTITY(1,1) PRIMARY KEY,
    EventType  VARCHAR(50) NOT NULL,
    StartTime  DATETIME NOT NULL,
    EndTime    DATETIME NOT NULL,
    Description VARCHAR(256),
    IsActive   AS CASE WHEN EndTime > GETDATE() THEN 1 ELSE 0 END  -- coluna calculada
);
GO

-- Job no SQL Agent para rodar Golden Invasion às 21h diariamente
-- (similar ao job de tempo online visto no tutorial de premiação)

Evento de Boss Especial

Um "Boss de Evento" é um monstro extremamente forte com drops raros, spawnado manualmente pelo GM:

Spawnar boss via comando GM

; Comandos de spawn de monstro (GM)
/create [ID] [mapa] [x] [y]    ← spawnar monstro específico

; Exemplo: spawnar Kundun (boss) em Lorencia
/create 56 0 130 130           ← Kundun ID=56 em Lorencia coord 130,130

; Anunciar
/notice 🐉 BOSS DE EVENTO: Kundun apareceu em Lorencia (130, 130)! Derrote-o para ganhar drops raros!

Boss de Evento via MonsterSetBase.txt temporário

Para um evento com duração definida, edite o MonsterSetBase.txt:

; Adicionar boss de evento (pode ser boss normal em mapa acessível)
; Kalima 7 Boss em Lorencia (Lordy → mapa 0)

; Kundun (ID 56) como boss de evento em Lorencia centro
0  56  0  135  125  135  125  1  0      ; 0 = não respawna (boss único)

Após o evento:

  1. Remova ou comente a linha;
  2. Reinicie o GameServer;
  3. O boss não aparecerá mais.

Evento de Pontuação (Kill Count)

Um evento onde o primeiro jogador a matar X monstros ou o jogador que mais matou ganha prêmio:

-- Tabela de pontuação de evento
CREATE TABLE EventKillScore (
    ScoreID   INT IDENTITY(1,1) PRIMARY KEY,
    EventName VARCHAR(50) NOT NULL,
    CharName  VARCHAR(16) NOT NULL,
    AccountID VARCHAR(10) NOT NULL,
    KillCount INT NOT NULL DEFAULT 0,
    EventDate DATE NOT NULL DEFAULT CAST(GETDATE() AS DATE),
    UNIQUE (EventName, CharName, EventDate)
);
GO

-- Quando o jogador mata um monstro do evento, o GameServer chama:
-- (implementar na stored procedure que o GameServer pode chamar)
CREATE PROCEDURE sp_AddKillScore
    @eventName VARCHAR(50),
    @charName  VARCHAR(16),
    @accountID VARCHAR(10)
AS
BEGIN
    MERGE EventKillScore AS target
    USING (SELECT @charName AS cn, @eventName AS en) AS source
    ON target.CharName = source.cn AND target.EventName = source.en
       AND target.EventDate = CAST(GETDATE() AS DATE)
    WHEN MATCHED THEN
        UPDATE SET KillCount = KillCount + 1
    WHEN NOT MATCHED THEN
        INSERT (EventName, CharName, AccountID, KillCount)
        VALUES (@eventName, @charName, @accountID, 1);
END;
GO

-- Ranking do evento
SELECT TOP 10
    CharName,
    KillCount,
    ROW_NUMBER() OVER (ORDER BY KillCount DESC) AS Pos
FROM EventKillScore
WHERE EventName = 'GoldenInvasion'
  AND EventDate = CAST(GETDATE() AS DATE)
ORDER BY KillCount DESC;

-- Dar prêmio ao vencedor ao final do evento
SELECT TOP 1 CharName, AccountID, KillCount
FROM EventKillScore
WHERE EventName = 'GoldenInvasion'
  AND EventDate = CAST(GETDATE() AS DATE)
ORDER BY KillCount DESC;
-- → Use o resultado para dar o prêmio via comando GM ou UPDATE no banco

Evento de Drop Especial Temporário

Aumentar temporariamente o drop de um item específico:

; Drop.txt — adicionar drop especial temporário

; Lorencia — monstros comuns dropam Jewel of Bless durante o evento
; (Budge Dragon ID=1, Dragon ID=2, etc.)
1   14  13  0  50    ; Budge Dragon dropa JoB com 50% (normalmente 0%)
2   14  13  0  50    ; Dragon dropa JoB com 50%
5   14  13  0  50    ; Ice Monster dropa JoB com 50%

; Quando o evento acabar:
; Remova essas linhas do Drop.txt e reinicie o GameServer

Script de anúncio automático

Para agendar anúncios em intervalos regulares durante o evento:

:: announce-event.bat — anunciar evento de 10 em 10 minutos
:: (Precisa de uma ferramenta de conexão ao GameServer ou usar SQL)

:loop
sqlcmd -S (local) -U mu_app -P "SenhaMuApp!" -d MuOnline -Q ^
    "INSERT INTO SystemMessages (Message, Created) VALUES ('🎉 Happy Hour ativo! EXP 2x por mais {minutos} minutos!', GETDATE())"

timeout /t 600
goto loop

Evento PVP Arena

Uma arena de PVP pode ser criada usando mapas existentes com configurações especiais:

; GameServer.ini — configuração de mapa PVP Arena

[PVP_ARENA]
PvPArenaMap=32              ; usar Icarus (mapa 32) como arena
PvPArenaEnable=1
PvPArenaSafeZone=0          ; sem zona segura
PvPArenaKillScore=10        ; pontos por kill
PvPArenaDuration=60         ; 60 minutos
PvPArenaMinLevel=200        ; nível mínimo para participar
PvPArenaTime=21:00          ; horário de início

; Recompensas do vencedor
PvPArenaWinnerZen=5000000
PvPArenaWinnerItem=14,13,0  ; Jewel of Bless

Cronograma de eventos semanal

Organize os eventos em um calendário para manter a comunidade engajada:

SEGUNDA    20:00 Happy Hour (1h, EXP/Drop 2x)
TERÇA      20:00 Evento de Boss (Kundun em Lorencia)
QUARTA     20:00 Happy Hour (1h)
QUINTA     20:00 Golden Invasion (1h, em Lorencia/Devias)
SEXTA      20:00 Happy Hour (2h, mais longo)
SÁBADO     15:00 Castle Siege especial
           20:00 PVP Arena (1h)
DOMINGO    15:00 Drop Especial (Jewels) (3h)
           20:00 Happy Hour (1h)

Anunciar eventos no site

<?php
// Para o site exibir o próximo evento, leia da tabela ActiveEvents

$conn = getMuDB();
$stmt = sqlsrv_query($conn, "
    SELECT EventType, Description, StartTime, EndTime,
           DATEDIFF(MINUTE, GETDATE(), EndTime) AS MinutosRestantes
    FROM ActiveEvents
    WHERE EndTime > GETDATE()
    ORDER BY StartTime
");

while ($evento = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo "<div class='evento-ativo'>";
    echo "<h3>🎉 " . htmlspecialchars($evento['Description']) . "</h3>";
    echo "<p>Termina em: <strong>" . $evento['MinutosRestantes'] . " minutos</strong></p>";
    echo "</div>";
}

Perguntas frequentes

Posso criar eventos totalmente novos (sem estar no MuServer original)?

Eventos que requerem mecânicas de jogo novas (novo tipo de mapa, nova mecânica de combate) não podem ser criados apenas com configuração — requerem modificação no código do GameServer. Mas eventos baseados em mecânicas existentes (spawn de boss especial, Happy Hour, drop especial) são possíveis via comandos e configuração.

Happy Hour funciona com comandos GM?

Sim — a maioria das distribuições de Season 6+ tem comandos /happyhour ou parâmetros de EXP temporária que o GM ativa via chat do jogo.

Como agendar eventos automáticos (sem GM presente)?

Use o SQL Server Agent ou Windows Task Scheduler para chamar stored procedures ou scripts que mudam parâmetros do servidor. Para eventos mais complexos, algumas distribuições têm configuração de horário de evento no GameServer.ini.

Golden Invasion é configurável?

Sim — o Golden Invasion (spawn de monstros dourados com drop especial) é configurado via MonsterSetBase.txt (spawn especial) e Drop.txt (loot especial dos monstros dourados).

EQ

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados