Configuración del GameServer
Este documento explica cómo se configura el juego en IGK Emulator: los siete archivos GameServerInfo - *.dat de cada GameServer y los archivos generales de MuServer\Data (experiencia, drop, mapas, monstruos, tiendas, items, skills, etc.). También explica cómo recargar sin reiniciar y qué tiene de especial el GameServerCS (Castle Siege).
No se detallan aquí:
- Los eventos (Blood Castle, Devil Square, Castle Siege, invasiones...): ver
04_EVENTOS.md. - Los comandos (
Command.txt, /reset, /post...): ver05_COMANDOS.md. - Los sistemas custom de
MuServer\Data\Customy los scripts Lua: ver06_SISTEMAS_CUSTOM.md.
Recuerda: las opciones que terminan en _AL0 a _AL3 tienen un valor por nivel de cuenta (0 Free, 1 Bronze, 2 Silver, 3 Gold). Ver 01_INTRODUCCION_Y_REQUISITOS.md.
Dónde están los archivos
| Ruta | Qué es | Lo usan |
|---|---|---|
MuServer\GameServer\Data\GameServerInfo - Common.dat | Opciones generales: rates, PK, party, guild, duel, helper, día y noche, clima... | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - Character.dat | Daño, defensa, velocidad y recuperación por clase | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - ChaosMix.dat | Porcentaje de éxito de las mezclas del Chaos Machine | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - Command.dat | Opciones de los comandos (reset, master reset, baúl...) | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - Custom.dat | Interruptores y opciones de los sistemas custom | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - Event.dat | Encender y apagar eventos | Solo ese GameServer |
MuServer\GameServer\Data\GameServerInfo - Skill.dat | Fórmulas de las skills de buff y debuff | Solo ese GameServer |
MuServer\GameServer\GHRS.txt y Reset.ini | Límite global de resets | Solo ese GameServer |
MuServer\Data\... | Mapas, monstruos, items, tiendas, drops, mensajes... | Todos los GameServer |
Cada GameServer (incluido GameServerCS y cada subservidor) tiene su propia copia de los GameServerInfo - *.dat. Si quieres el mismo cambio en todos, cámbialo en cada uno.
Formato de los .dat: Clave = Valor. Lo que va después de ; o // es un comentario. Si borras una clave, el servidor usa su valor por defecto (casi siempre 0, es decir, apagado).
Recargar sin reiniciar: /reload
Un administrador puede recargar los archivos con el comando /reload <tipo> dentro del juego (en Command.txt el comando está reservado a administradores: columna GameMaster = 2). También se puede desde el menú Reload de la ventana del GameServer.
Si el tipo no existe, el juego responde Command: [/reload type | Ex: /reload common]. Si funcionó: Reload executed successfully!.
| Comando | Qué vuelve a leer |
|---|---|
/reload common | GameServerInfo - Common.dat, ConnectMember.txt, Effect.txt, MapManager.txt, MapServerInfo.dat, Message.txt, Mining.txt. Además manda a todos el día y la noche nuevos. |
/reload character | GameServerInfo - Character.dat y Character\DefaultClassInfo.txt |
/reload chaosmix | GameServerInfo - ChaosMix.dat |
/reload command | Command.txt y GameServerInfo - Command.dat |
/reload custom | GameServerInfo - Custom.dat y los archivos de Data\Custom |
/reload lua | Solo los scripts Lua de Data\Script (ver 16_LUA.md) |
/reload event | GameServerInfo - Event.dat y los archivos de Data\Event |
/reload eventitembag | EventItemBagManager.txt y la carpeta EventItemBag |
/reload hack | Opciones de hack de Common.dat y los archivos de Data\Hack |
/reload item | Los archivos de Data\Item |
/reload monster | Data\Monster y Data\MonsterSetBase: borra los monstruos y NPC del mapa y los vuelve a crear |
/reload move | Gate.txt, Move.txt, MoveSummon.txt, RespawnLocation.txt y Custom\CustomMove.txt |
/reload quest | Data\Quest y Data\QuestWorld |
/reload shop | ShopManager.txt, la carpeta Shop e Item\ItemValue.txt |
/reload skill | GameServerInfo - Skill.dat y Data\Skill |
/reload util | Data\Util (experiencia, filtro, GMs, avisos, tablas de reset) |
/reload cashshop | Opciones de Cash Shop de Common.dat y Data\CashShop |
/reload bots | Los bots de Data\Custom\BotSystem |
/reload all | Todo lo anterior menos los items (Data\Item) |
Necesitan reiniciar el GameServer:
ServerCode,ServerPort,ServerName,ServerVersion,ServerSerial, las direcciones y puertos del JoinServer, DataServer y ConnectServer,TcpNoDelayy las opcionesWrite...Log(se leen solo al arrancar).- Los terrenos (
Data\Terrain). GHRS.txtyReset.ini.- Para los items, aunque existe
/reload item,/reload allno los incluye a propósito; lo más seguro es reiniciar el GameServer después de cambiarData\Item.
IGK StartUp también puede mandar recargas desde su ventana (ver 11_IGK_HOST_STARTUP_CONNECT.md).
GameServerInfo - Common.dat
Servidor y conexión
Las claves ServerName, ServerCode, ServerPort, ServerVersion, ServerSerial, DataServerAddress, JoinServerAddress, ConnectServerAddress y sus puertos se explican en 02_INSTALACION_SERVIDOR.md. La sección "Customer Settings" (LicenseID, CustomerName, CustomerHardwareId) son datos de tu licencia: no los cambies.
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
TcpNoDelay | 1 = cada paquete sale al instante (menos retraso en combate). 0 = Windows agrupa los paquetes pequeños. Sin la clave vale 1. | 1 |
ServerMaxUserNumber | Jugadores a la vez en este GameServer (máximo 1000) | 1000 |
Quién puede entrar
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
ServerLock | Nivel de cuenta mínimo para entrar (0 = todos; 1 = solo Bronze o más; etc.) | 0 |
AccountLevelLock_AL0 a _AL3 | 1 = ese nivel de cuenta puede entrar; 0 = no puede | 1 |
ServerCheckConnectMember | 1 = modo mantenimiento: solo entran las cuentas de Data\ConnectMember.txt | 0 |
ServerMinLevel / ServerMaxLevel | Nivel mínimo / máximo del personaje para estar en este GameServer (0 = sin límite) | 0 / 0 |
ServerMinReset / ServerMaxReset | Resets mínimos / máximos (0 = sin límite) | 0 / 0 |
ServerMinMasterReset / ServerMaxMasterReset | Master resets mínimos / máximos (0 = sin límite) | 0 / 0 |
MaxLevelCharacter | Nivel máximo normal del personaje | 400 |
Data\ConnectMember.txt lleva una cuenta por línea, entre comillas, y termina en end:
"cuenta1"
"cuenta2"
end
Conexiones y login
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
MaxIpConnection | Cuentas a la vez desde una misma IP en este GameServer | 5 |
MaxHWIDConnection | Ventanas del juego a la vez desde una misma PC | 2 |
LoginTimeout | Segundos que tiene el jugador para iniciar sesión después de elegir el servidor; pasado ese tiempo el GameServer cierra la conexión. Sin la clave vale 90. | 90 |
DisconnectOnlineAccount | 1 = si alguien entra con una cuenta que ya está conectada, se desconecta la sesión anterior | 1 |
PersonalCodeCheck | 1 = pide el código secreto de 7 dígitos de la cuenta donde el juego lo usa (por ejemplo al borrar un personaje); 0 = no lo comprueba | 0 |
Logs
WriteChatLog, WriteCommandLog, WriteTradeLog, WriteConnectLog, WriteHackLog, WriteCashShopLog, WriteChaosMixLog: 1 = guarda ese registro en la carpeta LOGS del GameServer. En los archivos de IGK están encendidos WriteCommandLog y WriteChaosMixLog. Se leen al arrancar.
Protección contra hacks
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
CheckSpeedHack / CheckSpeedHackTolerance | Detecta velocidad de ataque mayor a la real; tolerancia permitida | 1 / 0 |
CheckLatencyHack / CheckLatencyHackTolerance | Detecta diferencias de reloj entre cliente y servidor | 0 / 0 |
CheckAutoPotionHack / CheckAutoPotionHackTolerance | Detecta pociones demasiado seguidas; tolerancia en milisegundos (1000 = 1 segundo) | 1 / 300 |
CheckAutoComboHack / CheckAutoComboHackTolerance | Detecta combos automáticos; tolerancia en milisegundos | 1 / 1000 |
SpeedHackSkillEnable | Control de velocidad por skill con Data\Hack\HackSkillCheck.txt | 0 |
SpeedHackSkillType | Qué hacer al detectar: 0 solo log, 1 desconectar, 2 bloquear el ataque, 3 bloquear el ataque por SpeedHackSkillPenalty milisegundos, 4 desconectar y bloquear la cuenta | 1 |
SpeedHackSkillPenalty | Milisegundos de castigo para el tipo 3 | 5000 |
DeleteDupeItem / DisconectDupeItem | Borra items duplicados (mismo serial) y desconecta a quien los tiene. No los apagues. Si un jugador pierde un item por esto, era un item duplicado o con serial repetido. | 1 / 1 |
TimeGiuBoss, TimeGiuBossTopClear, TimeGiuBossParty | Milisegundos que un jugador sigue contando en la lista de daño de un jefe después de su último golpe | 15000 |
Experiencia
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
AddExperienceRate_ALx | Rate de experiencia normal (multiplicador: 100 = x100) | 9999 |
AddMasterExperienceRate_ALx | Rate de experiencia Master (después del nivel 400) | 1000 |
MinMasterExperienceMonsterLevel_ALx | Nivel mínimo del monstruo para dar experiencia Master | 95 |
AddEventExperienceRate_ALx | Rate de experiencia de los premios de eventos (Blood Castle, Devil Square, Chaos Castle...) | 1000 |
AddQuestExperienceRate_ALx | Rate de experiencia de las quests | 1000 |
OffAttackExperienceRate_ALx | Rate cuando el personaje ataca en modo offline (OffAttack) | 1000 |
AutoResetExperienceRate_ALx | Rate cuando el personaje tiene el reset automático activado | 1000 |
MaxLevelUp | Niveles máximos que se pueden subir con un solo monstruo | 1 |
MaxLevelUpEvent / MaxLevelUpQuest | Lo mismo para los premios de eventos y quests | 1 / 1 |
La experiencia final se multiplica además por:
ExperienceRatedel mapa enData\MapManager.txt(100 = normal).Data\Util\ExperienceTable.txt(rate según nivel, resets o master resets; vacío en los archivos de IGK = 100 %).- Los bonus de
Data\Event\BonusManager.dat(horas de experiencia doble, ver04_EVENTOS.md) y los monstruos custom (06_SISTEMAS_CUSTOM.md). - La experiencia de party (ver "Party").
Drop de items y zen
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
ItemDropRate_ALx | Rate de drop de items normales de los monstruos. Se compara con el ItemRate de cada monstruo en Monster.txt: con ItemDropRate = 5 y un monstruo con ItemRate = 130, cae un item más o menos 5 de cada 130 muertes. | 5 |
ItemDropTime | Segundos que un item queda en el suelo. Durante la primera mitad de ese tiempo solo lo puede recoger quien lo hizo caer (o su party). | 20 |
MoneyDropTime | Segundos que el zen queda en el suelo | 5 |
MoneyAmountDropRate_ALx | Porcentaje del zen que suelta cada monstruo (100 = normal) | 50 |
MoneyValue_ALx | Si es mayor que 0, el zen que cae es MoneyValue × nivel del monstruo en vez del normal | 0 |
MaxItemOption | Opción máxima de Jewel of Life en los items que caen (7 = +28) | 7 |
SetItemAcceptHarmonySwitch | 1 = los items Ancient (Set) aceptan opciones de Jewel of Harmony | 1 |
El drop de cada mapa se ajusta en Data\MapManager.txt (drop normal, excelente y ancient por mapa). Los drops especiales (joyas, cajas, items de eventos) van en Data\Item\ItemDrop.txt. Las cajas y jefes en EventItemBag (más abajo).
Durabilidad
WeaponDurabilityRate, ArmorDurabilityRate, WingDurabilityRate, GuardianDurabilityRate, PendantDurabilityRate, RingDurabilityRate, PetDurabilityRate: velocidad con que se gasta cada tipo de item (100 = normal; menos = se gasta más lento). En los archivos de IGK, todos en 100.
Puntos por nivel y stats
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
DWLevelUpPoint, DKLevelUpPoint, FELevelUpPoint, MGLevelUpPoint, DLLevelUpPoint, SULevelUpPoint, RFLevelUpPoint | Puntos por nivel de cada clase (DW Dark Wizard, DK Dark Knight, FE Elfa, MG Magic Gladiator, DL Dark Lord, SU Summoner, RF Rage Fighter) | 5, 5, 5, 7, 7, 7, 0 |
PlusStatPoint | Puntos extra por nivel después del 220, para quien terminó la quest de tercera clase | 0 |
MaxStatPoint_ALx | Máximo de cada stat (fuerza, agilidad, vitalidad, energía) | 65000 |
MaxStatPointCMD_ALx | Máximo de Command (Dark Lord) | 32767 |
Frutas: FruitAddPointMin/FruitAddPointMax (puntos que da cada fruta), FruitAddPointSuccessRate_ALx (éxito en %; -1 = el normal del juego), FruitSubPointMin/Max y FruitSubPointSuccessRate_ALx (frutas que quitan puntos), FruitMaxAddPointXX (máximo de puntos por frutas por clase; 0 = el normal según el nivel) y FruitAddPointBonusXX (puntos extra sobre ese máximo).
Revisa también RFLevelUpPoint: en los archivos de IGK está en 0 (ver "Preguntas frecuentes").
Creación de personajes
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
CharacterCreateSwitch | 1 = se pueden crear personajes; 0 = no | 1 |
MGCreateType, DLCreateType, SUCreateType, RFCreateType | 0 = la clase se desbloquea cuando algún personaje de la cuenta llega al nivel / resets / master resets de abajo (otros valores: por confirmar) | 0 |
MGCreateLevel_ALx, DLCreateLevel_ALx, SUCreateLevel_ALx, RFCreateLevel_ALx | Nivel necesario para desbloquear MG, DL, SU y RF | 220, 250, 300, 300 |
...CreateReset_ALx / ...CreateMasterReset_ALx | Resets / master resets necesarios | 0 |
Los stats iniciales de cada clase están en Data\Character\DefaultClassInfo.txt.
PK
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
NonPK | 1 = nadie puede matar a otros jugadores en el servidor (salvo duelos y eventos). Cada mapa puede cambiarlo en MapManager.txt. | 0 |
PKLimitFree | 1 = los asesinos (PK) pueden entrar a eventos, guilds, etc. sin restricción | 0 |
PKDownTime1 / PKDownTime2 | Tiempo (en segundos) para bajar el estado de PK | 3600 / 3600 |
PKTimePenaltyForKill | Tiempo de castigo por cada asesinato, en segundos | 10800 |
PKDisableShop | 1 = un asesino no puede comprar en los NPC | 0 |
PKDisableTrade | 1 = un asesino no puede comerciar | 0 |
PkCanEnterBC, PkCanEnterCC, PkCanEnterDS | 1 = un asesino puede entrar a Blood Castle, Chaos Castle, Devil Square | 1 |
PartyDisablePK | 1 = los miembros de una party no se pueden atacar entre ellos | 0 |
PkItemDropSwitch | 1 = el asesino pierde items al morir | 0 |
PkItemDropRate, PkItemDropMinLevel, PkItemDropMaxLevel, PkItemDropEnable_ALx | Probabilidad, nivel de item mínimo/máximo que puede perder y por nivel de cuenta | 100, 0, 15, 1 |
PkItemDropExecellent, PkItemDropSocketItem, PkItemDropSetItem, PkItemDropHarmony, PkItemDropRaven, PkItemDropHorse, PkItemDropFenrir | 1 = ese tipo de item también se puede perder | 1 |
El PK entre miembros de una misma guild y el PK en Chaos Castle se configuran en Custom.dat (TatCungGuildPK y PKCC, más abajo).
Avisos de muerte y conexión
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
DieUserSwitch | Aviso cuando un jugador mata a otro (0 = no) | 2 |
DieMonsterSwitch | Aviso cuando un monstruo mata a un jugador | 0 |
PK_ColorMessPVP / PK_ColorMessPVM | Color del aviso (código de color) | 4FDCFFFF |
PK_DelayMess | Segundos que se muestra el aviso | 3 |
OnlineGmSwitch / OnlineUserSwitch | Aviso cuando se conecta un GM / un jugador | 1 / 1 |
DisableExpMessage | 1 = no muestra la experiencia ganada por cada monstruo (solo al subir de nivel) | 0 |
Comercio y tienda personal
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
TradeSwitch | 1 = se puede comerciar entre jugadores | 1 |
PersonalShopSwitch | 1 = se puede abrir tienda personal | 1 |
TradeItemBlock | 1 = bloquea el comercio de items en general | 0 |
TradeItemBlockExc, TradeItemBlockSet, TradeItemBlockHarmony | 1 = no se pueden comerciar items excelentes / ancient / con Harmony | 0 |
TradeItemBlockSell | 1 = bloquea la venta de esos items | 0 |
TradeItemBlockLucky | 1 = los items Lucky no se pueden comerciar | 1 |
En qué mapas se puede comerciar (y si solo en zona segura) se configura en MapManager.txt (AllowTrade, AllowTradeSafe). Qué items se pueden tirar, vender, comerciar o guardar en el baúl va en Data\Item\ItemMove.txt.
Duelo
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
DuelSwitch | 1 = se permiten duelos | 1 |
DuelArenaAnnounceSwitch | 1 = anuncia a todos el comienzo y el ganador del duelo | 1 |
DuelArenaDisableRestoreHP / DuelArenaDisableRestoreSD | 1 = no se recupera vida / SD en la arena de duelo | 0 / 0 |
DuelMaxScore | Puntos para ganar el duelo | 10 |
DuelBet | 1 = duelo con apuesta (al terminar se entrega lo apostado) | 1 |
El daño en duelo se ajusta con DuelDamageRate de Character.dat.
Guild
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
GuildCreateSwitch / GuildDeleteSwitch | 1 = se pueden crear / borrar guilds | 1 / 1 |
GuildCreateMinLevel | Nivel mínimo para crear guild | 100 |
GuildInsertMaxUser1 | Máximo de miembros si el dueño no es Dark Lord (sin resets: nivel ÷ 10, hasta este tope) | 40 |
GuildInsertMaxUser2 | Máximo de miembros si el dueño es Dark Lord (sin resets: nivel ÷ 10 + Command ÷ 10, hasta este tope) | 80 |
GuildAllianceMinUser | Miembros mínimos para formar alianza | 1 |
GuildAllianceMaxCount | Máximo de guilds en una alianza | 5 |
GuildOwnerDestroyLimit | Límite para que el dueño disuelva la guild (por confirmar el detalle) | 1 |
Party
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
PartyMaxMembers | Miembros máximos de una party | 10 |
PartyReconnectTime | Segundos que se guarda el lugar en la party de quien se desconecta | 300 |
PartyGeneralExperience1 a 10 | % de experiencia según cuántos hay en la party (1 a 10) | 100, 80, 75, 65, 60... |
PartySpecialExperience1 a 10 | Lo mismo cuando en la party hay 3 o más clases distintas | 100, 80, 75, 65, 60... |
Si una party está activa o no en cada mapa: columna PartyEnable de MapManager.txt.
Elf Buffer y buff del NPC
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
ElfBufferMaxLevel_ALx / ElfBufferMaxReset_ALx | Nivel / resets máximos para recibir el buff del Elf Soldier | 400 / 10000 |
ElfBufferDamageConstA/B, ElfBufferDefenseConstA/B | Fórmula del ataque y defensa que da ese buff | 50, 5, 45, 3 |
TimeBuf | Minutos que dura el buff del NPC Buffer | 60 |
Buff_DW_MNS, Buff_DK_GM, Buff_ELF_Thu, Buff_ELF_Dame, Buff_DL_ChiMang, Buff_SUM_PhanDame, Buff_RF_ThuLuc, Buff_RF_PhongThu | Valor de cada buff que da el NPC (Mana Shield, Greater Life, defensa y daño de Elfa, crítico del DL, reflejo del SU, vitalidad y defensa del RF) | ver archivo |
SD (Shield Gauge)
ShieldGaugeRate (90), ShieldGaugeConstA (10), ShieldGaugeConstB (1000), ShieldGaugeAttackRate (2), ShieldGaugeAttackComboMiss (0). Fórmula del SD según el comentario del archivo: SD = (puntos × ConstA ÷ 10) + (nivel + master) ÷ ConstB + (defensa ÷ 2).
Árbol Master
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
MasterSkillTree | 1 = árbol Master activo | 1 |
MasterSkillTreePoint | Puntos Master por cada nivel Master | 1 |
MasterSkillTreeMaxLevel | Nivel Master máximo | 400 |
Gens
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
GensSystemSwitch | 1 = Gens activo | 1 |
GensSystemGuildLock / GensSystemPartyLock | 1 = obliga a que la guild / party sea de la misma familia Gens | 0 / 0 |
GensSystemInsertMinLevel | Nivel mínimo para entrar a un Gens | 50 |
GensSystemContributionFloodTime | Segundos mínimos entre dos asesinatos al mismo jugador para que cuenten | 30 |
GensSystemVictimContributionDecrease / GensSystemKillerContributionIncrease | Contribución que pierde la víctima / gana el asesino | 3 / 500 |
GensSystemVictimMin/MaxContributionDecrease, GensSystemKillerMin/MaxContributionIncrease | Topes de esos valores | 1, 15, 1, 15 |
GensSystemStartRewardDay / GensSystemFinalRewardDay | Días del mes en que se pueden cobrar los premios | 1 / 7 |
Los mapas de batalla de Gens: columna GensBattle de MapManager.txt. El daño en batalla de Gens: GensDamageRate de Character.dat.
MU Helper
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
HelperSwitch | 1 = el MU Helper (ayudante automático) está activo | 1 |
HelperActiveLevel | Nivel mínimo para usarlo | 1 |
HelperActiveDelay | Cada cuántos minutos cobra | 5 |
HelperActiveMoney1 a 5 | Zen que cobra cada vez, por etapa: (nivel + nivel master) × valor | 20, 50, 80, 100, 120 |
En qué mapas se puede usar: columna HelperEnable de MapManager.txt. El Helper offline (seguir jugando con el juego cerrado) se configura en Custom.dat (MuOffHelper...).
Cash Shop
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
CashShopSwitch | 1 = tienda X (Cash Shop) activa | 1 |
CashShopScriptVersion1/2/3 | Versión de la lista de productos. Tiene que coincidir con la carpeta del cliente Data\InGameShopScript\512.2011.006 | 512 / 2011 / 6 |
CashShopBannerVersion1/2/3 | Versión del banner. Coincide con Data\InGameShopBanner\583.2010.005 del cliente | 583 / 2010 / 5 |
Los productos y paquetes van en Data\CashShop (más abajo).
Pociones y anillos de transformación
ApplePotionRate,SmallLifePotionRate,MidleLifePotionRate,LargeLifePotionRate,...ManaPotionRate,...ShieldPotionRate,...CompoundPotionRate1/2,EliteLifePotionRate,EliteManaPotionRate,EliteShieldPotionRate: % de vida, maná o SD que recupera cada poción.TransformationRing1a6: monstruo en el que transforma cada anillo de transformación (número deMonster.txt).
Joyas
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
BlessSoulRingPenAllow | 1 = se puede usar Bless y Soul en anillos y collares | 0 |
BlessSuccessRate_ALx | % de éxito de Jewel of Bless | 100 |
SoulSuccessRate_ALx | % de éxito de Jewel of Soul | 100 |
LifeSuccessRate_ALx | % de éxito de Jewel of Life | 50 |
HarmonySuccessRate_ALx | % de éxito de Jewel of Harmony | 50 |
SmeltStoneSuccessRate1_ALx / 2_ALx | % de éxito de Lower / Higher Refining Stone | 50 / 70 |
AddLuckSuccessRate1_ALx | % extra de éxito al usar joyas en un item con Luck | 25 |
AddLuckSuccessRate2_ALx | % extra de éxito en el Chaos Machine con un item con Luck | 20 |
Las joyas custom se configuran en Data\Custom\CustomJewel.txt (ver 06_SISTEMAS_CUSTOM.md).
Monedas, premios por tiempo y vida extra
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
MaxCoin1Value_ALx, MaxCoin2Value_ALx, MaxCoin3Value_ALx | Tope de WCoinC (Coin1), WCoinP (Coin2) y Goblin Points (Coin3) por nivel de cuenta (0 = sin tope) | 0 |
OnlineRewardCoin1Delay, OnlineRewardCoin2Delay, OnlineRewardCoin3Delay | Cada cuántos minutos conectado se da el premio de cada moneda | 60 |
OnlineRewardCoinXValue_ALx | Cantidad que se da (0 = nada) | 0 |
OnlineRewardOfflineSystems | 1 = los personajes en modo offline (ataque o tienda offline) también reciben el premio por tiempo | 1 |
HpBonus_ALx | Vida extra por cada master reset | 1 |
HpBonus_MAX | Tope de esa vida extra | 10000 |
Otras opciones del juego
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
MonsterLifeRate | % de vida de todos los monstruos (100 = la de Monster.txt) | 100 |
MonsterHealthBarSwitch / UserHealthBarSwitch | 1 = barra de vida sobre monstruos / jugadores | 1 / 1 |
DisableLightningEffect, DisableCycloneEffect, DisableTwistEffect, DisableLungEffect, DisableFallingEffect, DisableUpperCutEffect | 1 = esa skill ya no empuja al objetivo | 0 |
DisableWingMixDL, DisableWingMixSU, DisableWingMixRF | 1 = esa clase no puede crear sus alas en el Chaos Machine | 0, 0, 1 |
EnableCsSkillsAllMaps | 1 = las skills de Castle Siege se pueden usar en todos los mapas | 1 |
EnableComboToAllSwitch | 1 = todas las clases pueden hacer combo | 0 |
BatTatBloodVIP / MocKillQuaiBloodVIP / LevelBloodVIP | Blood Castle VIP: encendido, monstruos a matar para que caiga una joya, nivel de Blood Castle (0 = todos) | 1 / 1 / 8 |
BatTatDevilVIP / MocKillQuaiDevilVIP / LevelDevilVIP | Lo mismo para Devil Square (0 = todos) | 1 / 1 / 7 |
Día y noche (DayNight)
Solo cambia la imagen del cliente; no cambia nada del juego (monstruos, drops, etc.).
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
DayNightSwitch | 1 = ciclo de día y noche encendido (cada jugador puede apagarlo en Opciones, pestaña Imagen). 0 o sin la clave = siempre de día | 1 |
DayNightTimeZone | Horas respecto a UTC del reloj del juego (Perú: -5; admite decimales, p. ej. 5.5). Vacío = la zona horaria de la PC del servidor, la misma que usan los eventos | -5 |
DayNightMinutesPerHour | Minutos reales por cada hora del juego: 60 = la hora real; 10 = un día cada 4 horas; 5 = cada 2 horas | 10 |
DayNightSunrise / DayNightSunset | Hora del amanecer y del atardecer (0-23). La luz cambia desde una hora antes hasta una después | 6 / 19 |
DayNightNightLight | Luz de la noche, en % de la del día (100 = sin cambio) | 45 |
/reload common manda el ciclo nuevo a todos los jugadores conectados.
Clima: lluvia, tormenta y nieve (Weather)
Solo cambia la imagen y el sonido del cliente. Cada jugador elige en Opciones, pestaña Gráficos: Clima No / Clásico / Mejorado.
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
WeatherSwitch | 1 = el servidor manda el clima a los mapas de las listas. 0 o sin la clave = no manda nada, y los mapas de nieve nievan siempre, como en el juego original | 1 |
WeatherCheckMinutes | Cada cuántos minutos se sortea, en cada mapa sin clima, si empieza a llover o a nevar | 10 |
WeatherRainMaps | Mapas con lluvia, separados por comas | 0,3,33,34,37,38,51,56,79,80,81 |
WeatherRainChance | % de que empiece a llover en cada sorteo | 15 |
WeatherRainMinMinutes / WeatherRainMaxMinutes | Duración de cada lluvia (y tormenta), en minutos | 5 / 15 |
WeatherRainMinIntensity / WeatherRainMaxIntensity | Intensidad de la lluvia (1 a 9) | 1 / 5 |
WeatherStormChance | % de que una lluvia sea tormenta (rayos y truenos) | 25 |
WeatherStormMinIntensity / WeatherStormMaxIntensity | Intensidad de la tormenta | 6 / 9 |
WeatherSnowMaps | Mapas con nieve (en ellos no llueve) | 2,57,58,62 |
WeatherSnowChance, WeatherSnowMinMinutes, WeatherSnowMaxMinutes, WeatherSnowMinIntensity, WeatherSnowMaxIntensity | Lo mismo para la nieve | 20, 10, 30, 2, 6 |
Los mapas con clima propio (Devil Square, Chaos Castle, Icarus, Empire Guardian, la lluvia de Crywolf y la de Loren Market) lo siguen teniendo como siempre; el de estas listas se suma.
GameServerInfo - Character.dat
Ajusta el balance de daño entre clases y las fórmulas de cada clase. La mayoría son constantes de fórmulas del juego original: cámbialas solo si sabes lo que haces.
Daño por situación
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
GeneralDamageRatePvP | % del daño entre jugadores (100 = normal) | 100 |
GeneralDamageRatePvM | % del daño de los jugadores a los monstruos | 9999 |
DuelDamageRate | % del daño en duelo | 60 |
GensDamageRate | % del daño en batalla de Gens | 60 |
CustomArenaDamageRate | % del daño en la arena custom | 50 |
ChaosCastleDamageRate, IllusionTempleDamageRate | % del daño en esos eventos | 50, 50 |
CastleSiegeDamageRate1 | % del daño entre jugadores de bandos distintos durante el asedio | 40 |
CastleSiegeDamageRate2 | % del daño entre jugadores del mismo bando durante el asedio (0 = no se dañan) | 0 |
CastleSiegeDamageRate3 | % del daño a la puerta del castillo y a las estatuas guardianas | 5 |
ReflectDamageRatePvP / ReflectDamageRatePvM | % del daño reflejado | 100 / 100 |
Daño por clase
DWDamageRatePvP...RFDamageRatePvP: % del daño de cada clase contra jugadores.DWDamageRatePvM...RFDamageRatePvM: % del daño de cada clase contra monstruos.XXDamageRateToYY(por ejemploDWDamageRateToDK = 140): % del daño de la clase XX contra la clase YY. Es la tabla principal para balancear el PvP.DWDamageStuckRate...RFDamageStuckRate: % de "aturdimiento" por clase (0 en los archivos de IGK).TyLeRaComboDW...TyLeRaComboRF: probabilidad de que salga el combo de una skill (necesita apagar antes el combo de una sola skill).
Límites de daño (cuidado)
GioiHanGiamSatThuong (reducción de daño), GioiHanSatThuongX2 (daño doble), GioiHanSatThuongX3 (daño triple), GioiHanSatThuongChiMang (crítico), GioiHanSatThuongHoanHao (excelente), GioiHanLoaiBoPhongThu (ignorar defensa). Es la escala con la que se comparan esas probabilidades. El valor normal es 100 y nunca debe ser 0.
Recuperación y fórmulas
XXHPRecoveryRate,XXMPRecoveryRate,XXBPRecoveryRate,XXSDRecoveryRate: recuperación automática de vida, maná, AG y SD por clase....DamageMultiplier...,DarkSpirit...,...IncDamageConstA,...DecDamageConstA,Combo...,Earthquake...,ElectricSpark...,DLSkill...,Nova...,...PlasmaStorm...,...PhysiDamage...,...MagicDamage...,...AttackSuccessRate...,...PhysiSpeed...,...MagicSpeed...,...DefenseSuccessRate...,...DefenseConstA: constantes de las fórmulas de daño, velocidad, defensa, mascotas y skills.
/reload character aplica los cambios.
GameServerInfo - ChaosMix.dat
Porcentaje de éxito de cada mezcla del Chaos Machine, por nivel de cuenta.
-1= usa la fórmula normal del juego (según el valor en zen de los items que pones).- Un número de 0 a 100 = porcentaje fijo.
- El éxito final suma además la Luck y los talismanes, según el comentario del archivo.
| Claves | Mezcla | En los archivos de IGK |
|---|---|---|
UseZenRateReal | 1 = el cliente muestra el % de éxito y el zen reales antes de mezclar | 1 |
ChaosItemMixRate_ALx | Armas Chaos | -1 |
DevilSquareMixRate1..7_ALx | Invitaciones de Devil Square (por nivel) | 80 / 70 |
BloodCastleMixRate1..8_ALx | Capas de Blood Castle | 80 |
IllusionTempleMixRate1..6_ALx | Pergaminos de Illusion Temple | 70 |
MaxLevelPlusItem | Nivel máximo al que se puede subir un item con el Chaos Machine | 15 |
PlusItemLevelMixRate1..6_ALx | Subir item a +10, +11, +12, +13, +14, +15 | 100 |
Wing1MixRate_ALx | Alas de primer nivel | -1 |
TatBatWing2 / Wing2MixRate_ALx | Alas de segundo nivel (1 = mezcla activa) | 1 / 100 |
TatBatMonsterWing / MonsterWingMixRate_ALx | Alas 2.5 | 1 / 100 |
TatBatWing3 / Wing3MixRate_ALx | Alas de tercer nivel | 1 / 100 |
TatBatCondor / FeatherOfCondorMixRate_ALx | Feather of Condor | 1 / 100 |
DinorantMixRate_ALx | Dinorant | 70 |
FruitMixRate_ALx | Frutas | 90 |
PetMixRate_ALx | Dark Horse y Dark Raven | 60 |
PieceOfHornMixRate_ALx, BrokenHornMixRate_ALx, HornOfFenrirMixRate_ALx | Pasos de Fenrir | 70, 50, 30 |
HornOfFenrirUpgradeMixRate_ALx | Fenrir de ataque o defensa | -1 |
TatBatSoiVIP / HornOfFenrirGoldMixRate_ALx | Fenrir dorado | 1 / 100 |
ShieldPotionMixRate1..3_ALx | Pociones de SD | 50, 30, 30 |
JewelOfHarmonyItemPurityMixRate_ALx, ...SmeltMixRate1/2_ALx, ...RestoreMixRate_ALx | Harmony: purificar, refinar, restaurar | 100, 50/100, 100 |
Item380MixRate1/2_ALx | Items 380 | 50 / 70 |
SocketItemCreateSeedMixRate_ALx / SocketItemCreateSeedSphereMixRate_ALx | Semillas y esferas de socket | 100 / -1 |
TiLeTraSocket_ALx | Éxito al montar una Seed Sphere en un item de socket (-1 = fórmula normal) | 100 |
LuckyItemRefineMixRate1/2_ALx | Refinar items Lucky | 60 / 10 |
El anuncio a todos cuando alguien sube un item (AnnounceChaosMix) y las mezclas custom van en Custom.dat y Data\Custom (ver 06_SISTEMAS_CUSTOM.md). /reload chaosmix aplica los cambios.
GameServerInfo - Command.dat
Opciones de los comandos de los jugadores. El detalle de cada comando está en 05_COMANDOS.md. Las más usadas:
| Claves | Qué hace | En los archivos de IGK |
|---|---|---|
CommandPostType | /post: 0 apagado, 1 encendido, 2 global | 2 |
CommandWareNumber_ALx | Cantidad de baúles por nivel de cuenta | 5, 2, 3, 4 |
CommandWareBuy... | Comprar baúles extra con /bau buy (máximo, precio en monedas o items) | ver archivo |
CommandResetType | Tipo de reset: 0 conserva los puntos; 1 según la tabla de puntos de reset; 2 según la tabla de puntos que se conservan | 2 |
CommandResetLevel_ALx, CommandResetMoney_ALx | Nivel y zen para resetear | 400 / 20.000.000... |
CommandResetLimit_ALx, ...LimitDay, ...LimitWek, ...LimitMon | Máximo de resets total, por día, semana y mes | 10000 |
CommandResetRewardCoin1/2/3Value_ALx | Monedas de premio por reset | 10 (GameServer) / 0 (GameServerCS) |
CommandMasterReset... | Lo mismo para el master reset | ver archivo |
CommandMarry... | Casamiento (nivel, costo, solo GM) | ver archivo |
CommandChangeClassToXX | Clases a las que se puede cambiar con el comando de cambio de clase | 1 |
GameServerInfo - Custom.dat
Interruptores y opciones de los sistemas custom. El detalle de cada sistema está en 06_SISTEMAS_CUSTOM.md. Resumen de lo que más se cambia:
| Claves | Sistema | En los archivos de IGK |
|---|---|---|
CheckOptionDrop, VKExcOption1..6, TrangBiExcOption1..6 | Probabilidad de cada opción excelente al caer un arma/collar (VK) o una armadura/escudo/anillo (TrangBi) | 1, ver archivo |
GremoryCaseEnable, GremoryCaseExpireDays | Gremory Case (almacén de premios); días hasta que vence cada item (0 = no vence) | 1 / 30 |
CustomDailyRewardSwitch y siguientes | Premio diario | 1 |
SeasonPassSwitch | Season Pass (necesita Update28 - Season Pass.sql) | 1 |
DeathScreenSwitch | Pantalla de muerte (mundo gris, quién te mató, cuenta atrás) | 1 |
ReviveHereVipLevel, ReviveHereTalisman | Revivir donde moriste: nivel de cuenta mínimo; o con Talisman of Resurrection. Lugares en Data\Move\MoveSummon.txt | 1 / 1 |
ResetWindowSwitch, MasterResetWindowSwitch | Botones de Reset y Master Reset en el cliente | 1 / 1 (solo en el GameServer) |
CustomItemBankSwitch y siguientes | Banco de ítems (se abre desde el menú F4) | 1 |
TatCungGuildPK | 1 = los miembros de la misma guild no se pueden atacar | 1 |
PKCC | 1 = se puede atacar a otros jugadores en Chaos Castle | 1 |
MuOffHelperEnabled_ALx, MuOffHelperTime_ALx, MuOffHelperPickUpEnabled_ALx | Helper offline: activo, minutos máximos, recoger items | 1 / 9999 / 1 |
CustomAttack... | Ataque offline (OffAttack) | ver archivo |
CustomStore... | Tienda offline y tiendas por monedas | ver archivo |
AnnounceChaosMix, AnnounceChaosMixLevel, textos | Anuncio de mezclas exitosas o fallidas | 1 |
DelayBuyShop, DelayBuyXShop, ThoiGianMuaHang | Milisegundos mínimos entre dos compras | 5000 / 3000 / 0 |
SwitchBuyInventoryExt, PriceInventoryExt1..4 | Comprar ampliación de inventario | 1 / 100 |
EnableAntiSpam, TimeBlockedChat, LimitMaxMessage, LimitMaxTimeMessageCheck | Anti-spam del chat | 1 / 1 / 3 / 60 |
/reload custom aplica los cambios.
GameServerInfo - Event.dat
Enciende y apaga cada evento (BloodCastleEvent, DevilSquareEvent, ChaosCastleEvent, CastleSiegeEvent, InvasionManagerSwitch, etc.) y sus límites de entrada por día. Todo se explica en 04_EVENTOS.md.
Importante: Castle Siege solo lo hace el GameServerCS (CastleSiegeEvent = 1 en GameServerCS, 0 en el GameServer normal). Ver "GameServerCS" más abajo.
GameServerInfo - Skill.dat
Fórmulas de las skills de buff y debuff. Las claves ...ConstA/B/C son constantes de la fórmula y ...TimeConstA/B de la duración.
| Clave | Qué hace | En los archivos de IGK |
|---|---|---|
ElfNoBoltArrow | 1 = la Elfa no gasta flechas ni saetas | 1 |
SkillDocDW | Ajuste del daño del veneno del DW: cuanto más alto, menos daño. No lo pongas en 0. | 200 |
ManaShield... | Mana Shield (incluye ManaShieldRateXX por clase y ManaShieldMaxRate) | ver archivo |
GreaterDefense..., GreaterDamage..., GreaterLife... | Buffs de la Elfa y del DK (con % por clase y tope) | ver archivo |
SummonMonster1 a 8 | Monstruo que invoca cada nivel de la skill de invocación de la Elfa (número de Monster.txt) | 26, 32, 21, 20, 10, 150, 151, 353 |
InfinityArrowTimeConstA, MagicCircleTimeConstA | Duración de Infinity Arrow y Magic Circle, en segundos | 1800 |
Sleep..., LesserDefense..., LesserDamage..., Blind..., IronDefense..., BloodHowling... | Resto de skills | ver archivo |
Los datos de cada skill (daño, maná, rango, clases) están en Data\Skill\Skill.txt. /reload skill aplica los cambios.
GHRS.txt y Reset.ini: límite global de resets
Cada GameServer tiene un límite global de resets que sube solo cada día.
GameServer\GHRS.txt, sección[GHRSSV], claveGioiHanRS: el límite actual. Nadie puede pasar de ese número de resets. El juego avisa al jugador cuando llegó ([Reset] You have reached the reset limit (x/y)!).GameServer\Reset.ini, sección[CONFIG]:ResetNgay: cuánto sube el límite cada día (5 en los archivos de IGK).ResetGio,ResetPhut,ResetGiay: hora, minuto y segundo en que sube (23:59:00 en los archivos de IGK).
Cuando llega esa hora, el GameServer suma ResetNgay al límite, avisa a todos ([Server] The daily reset limit has been increased to: N!) y reescribe GHRS.txt con el número nuevo. Si quieres fijar otro límite, cierra el GameServer, cambia GioiHanRS y vuelve a abrirlo.
Cada GameServer lleva su propio GHRS.txt: si quieres el mismo límite en todos, ponlo igual en cada carpeta.
Archivos generales de MuServer\Data
Estos archivos los usan todos los GameServer. Formato general: columnas separadas por espacios o tabulaciones, * = "cualquiera" o "sin límite", // = comentario, y cada lista termina en end. Algunos archivos tienen varias secciones que empiezan con un número suelto (0, 1, ...).
MapManager.txt: opciones por mapa
MuServer\Data\MapManager.txt, una línea por mapa. * = usa el valor general.
| Columna | Qué hace |
|---|---|
Index | Número de mapa (0 Lorencia, 1 Dungeon, 2 Devias, 3 Noria...) |
NonPK | * = el NonPK de Common.dat; 0 = PK permitido; 1 = sin PK; 2 = se puede matar sin volverse asesino |
ViewRange | Distancia de visión en el mapa (* = 15) |
ExperienceRate | % de experiencia en el mapa (100 = normal) |
ItemDropRate | % del drop normal en el mapa (100 = normal) |
ExcItemDropRate | Probabilidad de item excelente, sobre 1.000.000 (1000 = 0,1 %) |
SetItemDropRate | Probabilidad de item ancient, sobre 1.000.000 |
SocketItemDrop | 1 = pueden caer items de socket |
HelperEnable | 1 = se puede usar el MU Helper |
GensBattle | 1 = mapa de batalla de Gens |
CustomAttack, CustomStore, CustomPick | 1 = se puede usar el ataque offline, la tienda offline y el auto-recoger |
PkDropItem | 1 = el asesino puede perder items aquí (con PkItemDropSwitch = 1) |
DeathGate | Número de puerta (Gate.txt) donde revive quien muere en el mapa |
AllowTrade | 1 = se puede comerciar en el mapa |
AllowTradeSafe | 1 = se puede comerciar en cualquier lugar del mapa; 0 = solo en zona segura |
PartyEnable | 1 = se puede hacer party |
Comment | Nombre del mapa (solo de referencia) |
Monster\Monster.txt: los monstruos
MuServer\Data\Monster\Monster.txt, una línea por monstruo o NPC.
| Columna | Qué hace |
|---|---|
Index | Número del monstruo (lo usan MonsterSetBase, eventos, bolsas...) |
Name | Nombre |
Level | Nivel (decide experiencia y qué items suelta) |
MaxLife, MaxMana | Vida y maná |
DamageMin, DamageMax, Defense, MagicDefense, AttackRate, DefenseRate | Combate |
MoveRange, AttackType, AttackRange, ViewRange, MoveSpeed, AttackSpeed | Movimiento y ataque |
RegenTime | Segundos para reaparecer después de morir |
Attribute | Atributo |
ItemRate | Divisor del drop: cuanto más alto, menos items suelta (ver ItemDropRate de Common.dat) |
MoneyRate | Divisor del zen: suelta zen más o menos 10 de cada MoneyRate veces que no suelta item |
MaxItemLevel | Nivel máximo (+) de los items que suelta |
MonsterSkill | Skill especial del monstruo |
Resistance1..4 | Resistencias a los elementos |
Para subir o bajar la vida de todos los monstruos a la vez usa MonsterLifeRate de Common.dat. Los monstruos con premios, experiencia o drop propios se configuran en Data\Custom\CustomMonster.txt (ver 06_SISTEMAS_CUSTOM.md). /reload monster aplica los cambios.
Los demás archivos de Monster\ (MonsterAI*.txt, MonsterSkill*.txt, KanturuMonsterSetBase.txt, MovePath) son la inteligencia de los jefes y eventos: no hace falta tocarlos.
MonsterSetBase: dónde aparecen monstruos y NPC
Carpeta MuServer\Data\MonsterSetBase, un archivo por mapa con el nombre NNN - Nombre.txt (por ejemplo 000 - Lorencia.txt). El número del nombre es el mapa: manda sobre la columna MapNumber. La subcarpeta Event\ tiene los monstruos de los eventos e Invasion\InvasionSetBase.txt los de las invasiones (ver 04_EVENTOS.md).
Cada GameServer solo carga los archivos de los mapas que atiende (según MapServerInfo.dat).
Cada archivo tiene secciones:
| Sección | Qué es | Columnas |
|---|---|---|
0 | NPC y monstruos en un lugar fijo | Monster MapNumber Range PositionX PositionY Direction |
1 | Grupos de monstruos en una zona | Monster MapNumber Range BeginPosX BeginPosY EndPosX EndPosY Direction Quantity |
2 | Un monstruo cerca de un punto (aparece hasta 3 casillas alrededor) | Monster MapNumber Range PositionX PositionY Direction |
3 | Monstruos de invasiones (zona + grupo) | ... Quantity Value |
4 | Monstruos de eventos en lugar fijo | como la sección 0 |
Monster: número deMonster.txt.Direction: hacia dónde mira (0 a 7; -1 = al azar).Quantity: cuántos aparecen en la zona.
Ejemplo (8 Bull Fighter en una zona de Lorencia):
1
//Monster MapNumber Range BeginPosX BeginPosY EndPosX EndPosY Direction Quantity
0 0 3 169 89 169 89 -1 8
end
Move: puertas, /move y revivir
| Archivo | Qué es | Columnas importantes |
|---|---|---|
Move\Gate.txt | Las puertas y puntos de llegada de cada mapa | Index, Flag (0 punto de reaparición, 1 entrada, 2 salida), Map, X Y TX TY (zona), TargetGate, TargetDir, MinLevel, MaxLevel, MinReset, MaxReset, AccountLevel |
Move\Move.txt | Los destinos del comando /move y la ventana M | Index, Name, RequireMoney (zen), MinLevel, MaxLevel, MinReset, MaxReset, AccountLevel, Gate (número de Gate.txt) |
Move\MoveSummon.txt | Mapas donde se puede usar el Talisman of Resurrection, invocar y revivir en el lugar | Map, zona X Y TX TY, MinLevel, MaxLevel, MinReset, MaxReset, AccountLevel, PkMove |
Move\RespawnLocation.txt | Dónde revive quien muere en cada mapa | Map, MoveGate, Gate |
Ejemplo de Move.txt: 2 "Lorencia" "Lorencia" 2000 10 * * * 0 17 = /move Lorencia cuesta 2000 zen, nivel 10 o más, cualquier cuenta, lleva a la puerta 17.
/reload move aplica los cambios.
Shop y ShopManager.txt: tiendas de los NPC
MuServer\Data\ShopManager.txt: qué tienda abre cada NPC. ColumnasIndex(número de tienda),Npc(número del NPC enMonster.txt),Map,X,Y(*= en cualquier lugar).MuServer\Data\Shop\NNN - Nombre.txt: el contenido de la tienda númeroNNN(el número del nombre del archivo es elIndexdeShopManager.txt).
Columnas de cada tienda:
| Columna | Qué es |
|---|---|
Group | Grupo del item (0 espadas, 1 hachas, ... 12 alas y joyas, 13 anillos y mascotas, 14 pociones y joyas, 15 pergaminos) |
Index | Número del item dentro del grupo |
Level | Nivel (+) |
Dur | Durabilidad (0 = la normal) |
Skill, Luck | 1 = con skill / con luck |
Opt | Opción adicional (Jewel of Life) |
ExeOpt | Opciones excelentes |
Acc | Opción ancient |
JoH, Oex | Opción Harmony y opción extra |
Sck[1..5] | Sockets (255 = sin socket) |
El precio sale de Item\ItemValue.txt (o del valor del item). /reload shop aplica los cambios.
EventItemBag: lo que sueltan cajas, jefes y eventos
MuServer\Data\EventItemBagManager.txt: qué bolsa abre cada caja, monstruo o evento.MuServer\Data\EventItemBag\NNN - Nombre.txt: el contenido de la bolsaNNN.
Columnas de EventItemBagManager.txt (explicadas también en su encabezado):
| Columna | Qué es |
|---|---|
Index | Número de la bolsa (el NNN del archivo) |
ItemIndex, ItemLevel | Item que abre la bolsa al tirarlo al piso (* = ninguno / cualquier nivel) |
MonsterClass | Monstruo que suelta la bolsa al morir (* = ninguno) |
SpecialValue | Número que usan los eventos y sistemas |
DropInventory | 1 = los items van directo al inventario en vez del piso |
G_Type | Premio al Gremory Case: 0 no, 1 el de la cuenta, 2 el del personaje |
G_Num | Texto de origen que muestra el Gremory Case |
Coin1, Coin2, Coin3 | Premio en WCoinC, WCoinP y Goblin Points |
Cada archivo de bolsa tiene:
- Sección 0 (configuración):
EventName,DropZen(zen si no sale item),ItemDropRate(% de que salga item en vez de zen),ItemDropCount(cuántos items),SetItemDropRate(probabilidad de ancient, sobre 10.000),ItemDropType,Fireworks(1 = fuegos artificiales). - Sección 1 (items):
Section(grupo),Type(número del item),MinLevel,MaxLevel,Skill,Luck,Option,Excellent,ItemTime,Rate.
/reload eventitembag aplica los cambios.
Carpeta Item: lista y opciones de items
| Archivo | Qué es |
|---|---|
Item\Item.txt | La lista de items (antes Item.xml): por grupo, tamaño, si cae y desde qué nivel, daño, defensa, durabilidad, requisitos y clases. Su encabezado explica cada columna. |
Item\ItemDrop.txt | Drops especiales: un item con su nivel y opciones que cae en un mapa, de un monstruo o de un rango de nivel de monstruos. DropRate sobre 1.000.000 (1000 = 0,1 %). Columnas: Index, Level, Grade, Option0..6, Duration, MapNumber, MonsterClass, MonsterLevelMin, MonsterLevelMax, DropRate. |
Item\ItemValue.txt | Precio de items en zen o monedas (Zen Value, Coin1, Coin2, Coin3, SellValue) |
Item\ItemValueTrade.txt | Valores para el comercio con monedas |
Item\ItemMove.txt | Qué items se pueden tirar, vender, comerciar y guardar en el baúl (AllowDrop, AllowSell, AllowTrade, AllowVault) |
Item\ItemStack.txt | Items apilables (MaxStack). Tiene que coincidir con MainInfo\Local\CustomStack.txt del cliente. |
Item\ItemOptionRate.txt | Probabilidades de nivel y opciones de los items que caen (sobre 10.000) |
Item\ItemOption.txt, ItemOptionBEx.txt | Opciones de los items |
Item\SetItemOption.txt, SetItemType.txt | Items ancient |
Item\SocketItemOption.txt, SocketItemType.txt | Items de socket |
Item\JewelOfHarmonyOption.txt, JewelOfHarmonyType.txt | Opciones de Harmony |
Item\380ItemOption.txt, 380ItemType.txt | Items 380 |
Item\LuckyItem.txt | Items Lucky |
Item\PetItemOption.txt, FlagItemOption.txt, RuneItemOption.txt, EarringItemOption.txt, JewelOfStore.txt | Mascotas, banderas, runas, aretes y almacén de joyas |
Si agregas o cambias items en Item.txt, el cliente también tiene que tener esos items (con el Encoder). Reinicia el GameServer después de cambiar esta carpeta.
Carpeta Skill
| Archivo | Qué es |
|---|---|
Skill\Skill.txt | Las skills: Damage, MP (maná), BP (AG), Range, Radio, Delay, Type, Effect, requisitos (ReqLevel, ReqEnergy, ReqLeadership, ReqKillCount, ReqGuildStatus) y clases (DW DK FE MG DL SU RF: 0 no, 1 clase base, 2 segunda clase, 3 tercera) |
Skill\MasterSkillTree.txt | Árbol Master |
Skill\SkillDamage.txt | Subir o bajar el daño de una skill contra jugadores (DamageRateUser) y contra monstruos (DamageRateMonster). Vacío en los archivos de IGK. |
Skill\SkillMapDisable.txt | Desactivar una skill en un mapa, contra monstruos (UsePvM) y jugadores (UsePvP) por separado. * = todas las skills o todos los mapas. Ejemplo: 51 6 1 0 = Ice Arrow funciona contra monstruos en Arena (mapa 6) pero no contra jugadores. |
Skill\SkillElect.hit | Datos internos de alcance de skills: no tocar |
Carpeta Terrain
MuServer\Data\Terrain\TerrainN.att: el terreno de cada mapa (zonas seguras, paredes, zonas donde no se puede caminar). Terrain1.att es el mapa 0 (Lorencia), Terrain2.att el mapa 1, etc. Los archivos _PEACE, _OCCUPIED, _WAR (Crywolf) y _CLOSE, _OPEN (Kanturu) son los estados de esos eventos.
Tienen que ser los mismos que los del cliente: si no coinciden, los jugadores ven que caminan por un lugar y el servidor los devuelve atrás, o los monstruos aparecen dentro de paredes. Se leen al arrancar: reinicia el GameServer.
Message.txt: mensajes del servidor
MuServer\Data\Message.txt: los mensajes que manda el servidor (eventos, comandos, errores). Formato: Número "Texto". Los %d y %s se reemplazan por números y nombres: no los borres ni cambies su orden. Se puede traducir libremente. /reload common lo vuelve a leer.
Los nombres de los niveles de cuenta salen de aquí: 32 Free, 33 Bronze, 34 Silver, 35 Gold.
Quest y QuestWorld
Quest\Quest.txt,QuestObjective.txt,QuestReward.txt: las quests de cambio de clase (segunda y tercera clase, Marlon) con su NPC, nivel requerido y clases.QuestWorld\QuestWorld.txt,QuestWorldObjective.txt,QuestWorldReward.txt: las quests del sistema Quest World de Season 6 (quests de NPC por etapas): requisitos, objetivos (matar monstruos, conseguir items) y premios.
Las quests custom (/quest, panel de quests, quests de NPC) están en Data\Custom (ver 06_SISTEMAS_CUSTOM.md). /reload quest aplica los cambios.
Mining.txt: minería
MuServer\Data\Mining.txt. Columnas:
| Columna | Qué es |
|---|---|
Index | Número del objeto que se mina (605, 606, 607 en los archivos de IGK) |
Stage | Etapa (1 a 5) |
Value | Durabilidad del pico que se gasta |
ItemRate | Probabilidad de éxito, sobre 10.000 (4750 = 47,5 %) |
ItemIndex, ItemCount | Item y cantidad que se gana |
BonusItemRate, BonusItemIndex, BonusItemCount | Premio extra en la última etapa (probabilidad sobre 10.000) |
Carpeta Hack
| Archivo | Qué es |
|---|---|
Hack\HackSkillCheck.txt | Límites de velocidad por skill (SkillIndex, MinSpeed, MaxSpeed, MaxDelay, MaxCount). Se usa con SpeedHackSkillEnable = 1 en Common.dat. |
Hack\HackPacketCheck.txt | Control de paquetes del cliente. No lo cambies. |
Hack\Enc2.dat, Hack\Dec1.dat, Hack\MHPServer.ini | Claves de comunicación con el cliente. No los cambies: el cliente deja de conectar. |
Carpeta Util
| Archivo | Qué es |
|---|---|
Util\GameMaster.txt | Los GM: "cuenta" "personaje" nivel. Tienen que coincidir la cuenta y el personaje. Nivel 1 = GM, 2 = administrador (los comandos piden un nivel mínimo en la columna GameMaster de Command.txt). |
Util\ExperienceTable.txt | % de experiencia según nivel, master nivel, resets y master resets (MinLevel MaxLevel MinMasterLevel MaxMasterLevel MinReset MaxReset MinMasterReset MaxMasterReset ExperienceRate). Vacío = 100 %. |
Util\ResetTable.txt | Requisitos de cada rango de resets (sección 0: nivel y zen por nivel de cuenta, joyas) y puntos que se reciben (sección 1). Lo usa CommandResetType 1 o 2. |
Util\MasterResetTable.txt | Lo mismo para el master reset. |
Util\Notice.txt | Avisos automáticos: texto, tipo, color (Red Green Blue), velocidad y RepeatTime (cada cuántos segundos). Vacío en los archivos de IGK. |
Util\Filter.txt | Palabras que se tapan en el chat. Vacío en los archivos de IGK. |
Util\FilterRename.txt | Nombres o partes de nombre prohibidos al usar el cambio de nombre (máx. 10 caracteres). |
/reload util aplica los cambios.
Carpeta CashShop
| Archivo | Qué es |
|---|---|
CashShop\CashShopProduct.txt | Productos: ID, Number, Value (precio), Item (número del item), Level, opciones, Qtd (cantidad), Duration (segundos; 0 = permanente) |
CashShop\CashShopPackage.txt | Paquetes que se ven en la tienda: Cat (categoría), ID, Coin (moneda), Price, PBase1..10 y PMain1..10 (productos que incluye) |
Los productos de la tienda también tienen que estar en los archivos del cliente (Data\InGameShopScript). /reload cashshop aplica los cambios.
Otros archivos
| Archivo | Qué es |
|---|---|
Character\DefaultClassInfo.txt | Stats iniciales de cada clase (Strength, Dexterity, Vitality, Energy, Leadership, MaxLife, MaxMana) y cuánta vida y maná dan el nivel, la vitalidad y la energía. Clase 0 DW, 1 DK, 2 Elfa, 3 MG, 4 DL, 5 SU, 6 RF. |
Effect.txt | Buffs y efectos (sellos, pergaminos, Halloween...): grupo, item que lo da, si se guarda al salir, duración (Count, en segundos) y valores. |
ConnectMember.txt | Cuentas que entran en modo mantenimiento (ServerCheckConnectMember = 1). |
Command.txt | Los comandos: ver 05_COMANDOS.md. |
GameServerCS (Castle Siege)
MuServer\GameServerCS es un GameServer preparado para Castle Siege. Usa los mismos archivos de MuServer\Data que el GameServer normal, y tiene sus propios GameServerInfo - *.dat.
Diferencias en los archivos que vienen con IGK:
| Opción | GameServer | GameServerCS |
|---|---|---|
ServerName / ServerCode / ServerPort | SV-01 / 0 / 55901 | SV-CS / 19 / 55919 |
En ServerList.dat | "SHOW" | "HIDE" (no sale en la lista) |
Mapas (MapServerInfo.dat) | Todos menos 30, 31, 34, 41, 42, 79 | Solo 30 (Castle Siege), 31 (Land of Trials), 34 (Crywolf), 41 (Barracks), 42 (Refuge), 79 (Loren Market) |
CastleSiegeEvent (Event.dat) | 0 | 1 |
CastleDeepEvent (Event.dat) | 0 | 1 |
| Blood Castle, Chaos Castle, Devil Square, Double Goer, Imperial Guardian, invasiones | Encendidos | Apagados |
- Los jugadores llegan al GameServerCS solos, al entrar a uno de sus mapas, y vuelven al GameServer normal al salir.
- Solo un GameServer debe tener
CastleSiegeEvent = 1: el GameServerCS. - El calendario del asedio, los NPC del castillo y las mejoras salen de
MuServer\Data\Event\MuCastleData.xml(si no está, deMuCastleData.dat). Las demás opciones (CastleSiegeCycleStart...,CastleSiegeSpecificState,CastleSiegeSeniorMixLimitType...) se explican en04_EVENTOS.md. - Crywolf (mapa 34) también se atiende en el GameServerCS.
Si cambias de máquina o de IP, recuerda poner la IP pública del GameServerCS en MapServerInfo.dat (con la letra S delante) y abrir su puerto en el firewall.
Preguntas frecuentes
P: ¿Dónde cambio la experiencia del servidor?
R: En GameServer\Data\GameServerInfo - Common.dat, AddExperienceRate_AL0 a _AL3 (uno por nivel de cuenta). La experiencia Master es AddMasterExperienceRate_ALx. Después usa /reload common. Hazlo en cada GameServer.
P: ¿Dónde cambio el drop?
R: ItemDropRate_ALx en Common.dat (drop normal), las columnas ItemDropRate, ExcItemDropRate y SetItemDropRate de Data\MapManager.txt (por mapa), Data\Item\ItemDrop.txt (joyas y drops especiales) y Data\EventItemBag (cajas y jefes).
P: ¿Cómo cambio los puntos que se ganan por nivel?
R: En Common.dat: DWLevelUpPoint, DKLevelUpPoint, FELevelUpPoint, MGLevelUpPoint, DLLevelUpPoint, SULevelUpPoint, RFLevelUpPoint. Luego /reload common.
P: El Rage Fighter no recibe puntos al subir de nivel.
R: En los archivos que vienen con IGK, RFLevelUpPoint = 0. Ponle el valor que quieras (por ejemplo 7) en Common.dat de cada GameServer y usa /reload common.
P: ¿Cómo pongo el servidor en mantenimiento para que solo entren los GM?
R: Pon las cuentas permitidas en Data\ConnectMember.txt (una por línea, entre comillas) y ServerCheckConnectMember = 1 en Common.dat. Luego /reload common.
P: ¿Cómo hago un servidor solo para VIP?
R: Con ServerLock (nivel de cuenta mínimo) o poniendo AccountLevelLock_AL0 = 0 en el Common.dat de ese GameServer.
P: Cambié un archivo y no pasa nada en el juego.
R: Usa /reload <tipo> (o /reload all). Los items, terrenos, puertos, códigos de servidor y GHRS.txt necesitan reiniciar el GameServer. Y recuerda que cada GameServer tiene su propia copia de los GameServerInfo - *.dat.
P: ¿Cómo quito el PK?
R: NonPK = 1 en Common.dat para todo el servidor, o la columna NonPK de MapManager.txt para mapas concretos (1 = sin PK; 2 = se puede matar sin volverse asesino).
P: ¿Cómo cambio la hora del día y la noche, o lo apago?
R: DayNightSwitch (0 = siempre de día), DayNightTimeZone, DayNightMinutesPerHour, DayNightSunrise, DayNightSunset y DayNightNightLight en Common.dat. /reload common lo manda a todos al instante.
P: ¿Cómo hago que llueva menos o que no nieve?
R: Baja WeatherRainChance o WeatherSnowChance, o quita mapas de WeatherRainMaps / WeatherSnowMaps en Common.dat. WeatherSwitch = 0 apaga el clima del servidor.
P: ¿Cómo agrego un GM?
R: En Data\Util\GameMaster.txt: "cuenta" "personaje" 2 (2 = administrador, 1 = GM). Tienen que coincidir la cuenta y el personaje. Luego /reload util o reinicia.
P: ¿Cómo cambio lo que vende un NPC?
R: Busca el número de tienda del NPC en Data\ShopManager.txt y edita Data\Shop\NNN - Nombre.txt con ese número. Luego /reload shop.
P: ¿Cómo agrego monstruos a un mapa?
R: En Data\MonsterSetBase\NNN - Mapa.txt, sección 1, agrega una línea con el número del monstruo, la zona y la cantidad. Luego /reload monster.
P: Los jugadores ya no pueden hacer reset y dice "You have reached the reset limit".
R: Llegaron al límite global de GameServer\GHRS.txt (GioiHanRS), que sube cada día según Reset.ini. Para cambiarlo, cierra el GameServer, edita GioiHanRS y ábrelo otra vez.
P: ¿Por qué los jugadores no pueden comerciar fuera de la ciudad?
R: Por la columna AllowTradeSafe de MapManager.txt: 0 = solo en zona segura. Ponla en 1 para permitir el comercio en todo el mapa.
P: El GameServerCS tiene Castle Siege y el GameServer normal también. ¿Está bien?
R: No. Solo el GameServerCS debe tener CastleSiegeEvent = 1 en su GameServerInfo - Event.dat; en los demás GameServer, 0.