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.
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
| Tipo | Como implementar | Complexidade |
|---|---|---|
| Happy Hour (EXP/Drop 2x) | Comando GM / GameServer.ini | Baixa |
| Boss de Evento (spawn especial) | MonsterSetBase.txt temporário | Baixa |
| Golden Invasion | MonsterSetBase.txt + Drop.txt | Média |
| PVP Arena | Usar mapas existentes com PK liberado | Média |
| Evento de EXP por tempo online | SQL Server Agent + SP | Média |
| Torneio de Castle Siege especial | Configuração CS + SQL | Alta |
| Drop de item raro temporário | Drop.txt modificado + reinício | Baixa |
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:
- Remova ou comente a linha;
- Reinicie o GameServer;
- 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).