Sistemas custom
Este archivo explica los sistemas propios (custom) del servidor: qué hace cada uno, dónde se configura y qué significa cada opción. Casi todos están en MuServer\Data\Custom\ y en MuServer\GameServer\Data\GameServerInfo - Custom.dat.
Otros archivos de esta documentación:
- Eventos custom (Arena, Quiz, Lotería online, Drop de evento y demás): ver
04_EVENTOS.md. - Comandos (
CustomCommandDescription.txt,CustomNpcCommand.txt,CustomMove.txty la lista de comandos): ver05_COMANDOS.md. - Opciones del cliente (
MainInfo.ini, archivos deMainInfo\y el Encoder): ver08_CLIENTE_PC_Y_ENCODER.md. - Modo MOBA League of Masters: ver
07_LEAGUE_OF_MASTERS.md.
Conceptos comunes
Niveles de cuenta (VIP 0 a 3)
El VIP es el nivel de cuenta (AccountLevel). Hay 4 niveles:
| Nivel | Nombre que ve el jugador | Sufijo en los archivos |
|---|---|---|
| 0 | Free (sin VIP) | _AL0, Vip0, RateAL0, Rate0 |
| 1 | Bronze | _AL1, Vip1, RateAL1, Rate1 |
| 2 | Silver | _AL2, Vip2, RateAL2, Rate2 |
| 3 | Gold | _AL3, Vip3, RateAL3, Rate3 |
Casi todas las opciones del servidor tienen una versión por nivel de cuenta. Por ejemplo, en GameServerInfo - Common.dat, AddExperienceRate_AL2 es la experiencia de los VIP Silver. Así se da a cada VIP su ventaja.
Monedas: WCoinC, WCoinP y Goblin Points
El servidor tiene 3 monedas de cuenta. Cambian de nombre según el archivo:
| Moneda | Otros nombres en los archivos | Columna en la base de datos |
|---|---|---|
| WCoinC | Coin1, WC, Cash, Wcoin | CashShopData.WCoinC |
| WCoinP | Coin2, WP, WCP, Gold | CashShopData.WCoinP |
| Goblin Points | Coin3, GP, GBP, PcPoint, WCG | CashShopData.GoblinPoint |
- Las monedas son por cuenta (las comparten todos los personajes de la cuenta). Se guardan en la tabla
CashShopDatade la base de datos. - Cómo se dan: con el comando de GM
/setcoin <personaje> <moneda 1|2|3> <cantidad>, editando la tablaCashShopData, o como premio de muchos sistemas (reset, quests, Season Pass, ruleta, colector, jefes, League of Masters, premio por tiempo conectado...). - Tope de monedas por VIP:
MuServer\GameServer\Data\GameServerInfo - Common.dat, clavesMaxCoin1Value_AL0aMaxCoin3Value_AL3(0 = sin tope). Lo que se suma no pasa del tope; gastar no se limita. En los archivos que vienen con IGK: todas en 0 (sin tope). - Premio por tiempo conectado:
GameServerInfo - Common.dat, clavesOnlineRewardCoin1Delay(minutos) yOnlineRewardCoin1Value_AL0..3(igual para Coin2 y Coin3). En los archivos que vienen con IGK: cada 60 minutos, cantidad 0 (apagado).
Número de ítem "plano" (ItemIndex)
Muchos archivos nuevos piden el ítem como un solo número: grupo × 512 + número del ítem (grupo y número de MuServer\Data\Item\Item.txt).
| Ítem | Grupo, número | Número plano |
|---|---|---|
| Jewel of Bless | 14, 13 | 7181 |
| Jewel of Soul | 14, 14 | 7182 |
| Jewel of Life | 14, 16 | 7184 |
| Jewel of Creation | 14, 22 | 7190 |
| Jewel of Guardian | 14, 31 | 7199 |
| Gemstone | 14, 41 | 7209 |
| Jewel of Harmony | 14, 42 | 7210 |
| Jewel of Chaos | 12, 15 | 6159 |
| Box of Kundun (+1 a +5 = nivel 8 a 12) | 14, 11 | 7179 |
Otros archivos (los más viejos) piden el ítem en dos columnas: Cat/Section/Type (grupo) e Index/Item (número).
Valores especiales en las tablas
*= sin límite, cualquiera o "no se usa" (el servidor lo lee como -1).255en sockets = sin socket.- Cada sección empieza con su número (
0,1,2...) en una línea sola y termina conend. - Las líneas que empiezan con
//son comentarios.
Cómo aplicar los cambios
- Archivos de
Data\Custom\yGameServerInfo - Custom.dat: comando de GM/reload customo reiniciar el GameServer. - Bots (
Data\Custom\BotSystem\):/reload bots. GameServerInfo - Common.dat:/reload common.GameServerInfo - Command.dat:/reload command.Data\CashShop\:/reload cashshop. Tablas deData\Util\(ResetTable, MasterResetTable):/reload util.- Si un sistema también tiene archivo en el cliente (
MainInfo\...), hay que correr el Encoder y entregar el cliente nuevo (ver08_CLIENTE_PC_Y_ENCODER.md).
Menú del sistema (tecla F4)
El jugador abre muchos sistemas desde el menú F4 ("Menú del sistema"). Los botones que aparecen dependen del cliente y del servidor:
| Botón | Qué abre | Se muestra si... |
|---|---|---|
| Eventos | Horarios de eventos (también tecla H) | MainInfo.ini EnableEventTimeButton = 1 |
| Tienda Premium | Comprar VIP (CustomBuyVip.txt) | MainInfo.ini EnableVipShopButton = 1 |
| Ranking | Ranking del juego (CustomRanking.txt) | MainInfo.ini EnableRankingButton = 1 |
| Comandos | Lista de comandos | MainInfo.ini EnableCommandButton = 1 |
| Opciones | Ventana de opciones del juego | MainInfo.ini EnableOptionButton = 1 |
| Ruleta de la suerte | Systems\CustomLuckyWheel.txt | MainInfo.ini EnableOptionVongQuay = 1 |
| Quitar opción excelente | Systems\RemoveExcOption.txt | MainInfo.ini EnableOptionHuyExl = 1 |
| Banco de ítems | CustomItemBank.txt | MainInfo.ini EnableJewelOfInventory = 1 |
| Recompensa diaria | CustomDailyReward.txt | el servidor lo tiene prendido para esa cuenta |
| Gremory Case (con la cantidad que espera) | Almacén de premios | GremoryCaseEnable = 1 en el servidor |
| Misiones | Panel de misiones | el servidor tiene prendidas las quests |
| Pase de temporada | SeasonPass.txt | SeasonPassSwitch = 1 en el servidor |
El menú F4 entero se prende con MainInfo.ini CustomMenuSwitch = 1 (ver 08_CLIENTE_PC_Y_ENCODER.md).
En el borde derecho de la pantalla hay además íconos de Reset, Master Reset, Season Pass y Quests (en el celular, una fila arriba de la columna derecha). Solo aparecen los que están prendidos.
Reset y Master Reset
Reset: GameServerInfo - Command.dat y Data\Util\ResetTable.txt
El reset vuelve al personaje a un nivel bajo a cambio de puntos y premios. El jugador lo hace con /reset (o /reset auto), o con el ícono Reset del costado derecho de la pantalla, que abre un panel con los requisitos, las joyas y el premio.
Opciones generales en MuServer\GameServer\Data\GameServerInfo - Command.dat:
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CommandResetType | 0 = conserva los puntos; 1 = reinicia los stats y da los puntos de la tabla × número de resets; 2 = suma los puntos de la tabla (sección 1) a los que ya tiene | 2 |
CommandResetAutoEnable_AL0..3 | Permite /reset auto | 1 |
DisableResetAutoOutGame | 1 = el reset automático se apaga al salir del juego | 1 |
CommandResetCheckItem_AL0..3 | 1 = revisa el equipo puesto antes del reset | 0 |
CommandResetMove_AL0..3 | 1 = lleva al personaje a la ciudad | 0 |
CommandResetQuest_AL0..3 | 1 = borra las quests de clase | 0 |
CommandResetSkill_AL0..3 | 1 = borra skills y árbol master | 0 |
CommandResetLevel_AL0..3 | Nivel pedido si el reset no está en la tabla | 400 |
CommandResetMoney_AL0..3 | Zen pedido si el reset no está en la tabla | 20.000.000 / 15.000.000 / 10.000.000 / 10.000.000 |
CommandResetRewardCoin1Value_AL0..3 (y Coin2, Coin3) | Monedas de premio por reset | 10 de cada moneda |
CommandResetCount_AL0..3 | Resets que suma cada /reset | 1 |
CommandResetLimit_AL0..3 | Máximo de resets | 10000 |
CommandResetLimitDay_AL0..3, ...LimitWek..., ...LimitMon... | Máximo por día, semana y mes | 10000 |
CommandResetStartLevel_AL0..3 | Nivel después del reset | 10 |
CommandResetPoint_AL0..3 | Puntos si el reset no está en la tabla | 0 |
CommandResetPointRateDW ... RF | % de los puntos por clase (con tipo 1) | 100 |
Tabla por rango de resets en MuServer\Data\Util\ResetTable.txt:
Sección 0 (requisitos), una fila por rango:
| Columna | Significado |
|---|---|
Index | Número de la fila (enlaza con la sección 1) |
MinReset, MaxReset | Rango de resets al que se aplica (se mira el reset que va a hacer) |
Level_AL0..3 | Nivel pedido por VIP (* = el de Command.dat) |
Money_AL0..3 | Zen pedido por VIP |
Bless Soul Life Creation Guardian Gemstone Harmony Chaos LowerStone HigherStone | Cantidad de cada joya que se cobra (* = ninguna). Las joyas son fijas en ese orden |
Sección 1 (premio), una fila por Index:
| Columna | Significado |
|---|---|
Point_AL0..3 | Puntos de stats del reset |
ItemBag_AL0..3 | Bolsa de premio (número de bolsa de EventItemBagManager.txt; * = nada) |
En los archivos que vienen con IGK: 14 rangos (0-5 resets a 401-516), nivel 225 a 395, zen gratis hasta el reset 20 y luego de 20 a 150 millones; puntos de 350 a 65 por reset.
Límite global de resets: GameServer\GHRS.txt y GameServer\Reset.ini
Además del límite por personaje, hay un tope de resets para todo el servidor que sube solo cada día:
MuServer\GameServer\GHRS.txt,[GHRSSV] GioiHanRS: el tope actual. En los archivos que vienen con IGK: 105.MuServer\GameServer\Reset.ini,[CONFIG]:
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
ResetNgay | Cuánto sube el tope cada día | 5 |
ResetGio, ResetPhut, ResetGiay | Hora, minuto y segundo en que sube | 23:59:00 |
- A esa hora el servidor suma
ResetNgayal tope, avisa a todos ("The daily reset limit has been increased to: N") y reescribe GHRS.txt. - Quien llegó al tope recibe "[Reset] You have reached the reset limit (X/Y)!".
- Para quitar el tope: poner un número muy alto en
GioiHanRS(por ejemplo 99999) con el GameServer cerrado. - Estos dos archivos se leen al iniciar el GameServer.
Master Reset: GameServerInfo - Command.dat y Data\Util\MasterResetTable.txt
El jugador lo hace con /mreset o con el ícono Master Reset.
Clave (en Command.dat) | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CommandMasterResetType | 0 = conserva los puntos; 1 = da puntos de la tabla | 0 |
CommandMasterResetCheckItem_AL0..3 | Revisa el equipo puesto | 0 |
CommandMasterResetMove_AL0..3 | Lleva a la ciudad | 1 |
CommandMasterResetQuest_AL0..3 | Borra quests | 0 |
CommandMasterResetSkill_AL0..3 | Borra skills | 1 |
CommandMasterResetLevel_AL0..3 | Nivel pedido | 400 |
CommandMasterResetReset_AL0..3 | Resets pedidos | 0 |
CommandMasterResetMoney_AL0..3 | Zen pedido | 0 |
CommandMasterResetRewardCoin1Value_AL0..3 (Coin2, Coin3) | Monedas de premio | 0 |
CommandMasterResetCount_AL0..3 | Master resets por uso | 1 |
CommandMasterResetLimit_AL0..3 | Máximo total | 10000 |
CommandMasterResetLimitDay/Wek/Mon_AL0..3 | Máximo por día / semana / mes | Free: 1000/1000/30; VIP: 1/7/30 |
CommandMasterResetStartLevel_AL0..3 | Nivel después | 400 |
CommandMasterResetStartReset_AL0..3 | Resets después | 1 |
CommandMasterResetPoint_AL0..3, ...PointRateDW..RF | Puntos y % por clase | 400 / 400 |
CommandMasterResetRemoveReset_AL0..3 | Resets que se quitan | 0 |
MuServer\Data\Util\MasterResetTable.txt funciona como ResetTable.txt: sección 0 con MinMReset, MaxMReset, Reset_AL0..3 (resets pedidos), Level_AL0..3, Money_AL0..3 y las 10 joyas; sección 1 con Point_AL0..3 e ItemBag_AL0..3. En los archivos que vienen con IGK: una fila (0 a 4000 master resets) que pide 400 resets, nivel 400, 2.030.630 de zen y 10 Bless, Soul, Life y Creation.
Botones de Reset y Master Reset: GameServerInfo - Custom.dat
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
ResetWindowSwitch | 1 = el cliente muestra el ícono Reset con su panel | 1 |
MasterResetWindowSwitch | 1 = el ícono Master Reset | 1 |
El panel manda /reset o /mreset, así que respeta todo lo de arriba.
Bono de vida por master reset: GameServerInfo - Common.dat, HpBonus_AL0..3 (vida extra por cada master reset) y HpBonus_MAX (tope). En los archivos que vienen con IGK: 1 y 10000.
VIP (niveles de cuenta)
Cómo se da el VIP
- Comando de GM:
/setvip <cuenta> <nivel 1-3> <días>. - Compra en el juego: menú F4 > Tienda Premium (archivo
CustomBuyVip.txt, abajo). - Base de datos: el nivel y el vencimiento se guardan por cuenta y los leen los procedimientos
WZ_GetAccountLevel/WZ_SetAccountLevel.
Al entrar, el jugador ve "Account Tier: Bronze (fecha)" con la fecha de vencimiento. Cuando el VIP vence, la cuenta vuelve a Free (lo controla la base de datos al leer el nivel de la cuenta).
Qué da el VIP
El VIP da lo que el dueño ponga en cada opción _AL1, _AL2, _AL3 de los archivos. Las más usadas:
| Archivo | Claves |
|---|---|
GameServerInfo - Common.dat | AddExperienceRate_AL, AddMasterExperienceRate_AL, ItemDropRate_AL, MoneyAmountDropRate_AL, MaxStatPoint_AL, éxito de joyas (BlessSuccessRate_AL...), MaxCoin..Value_AL |
GameServerInfo - Command.dat | Requisitos y límites de /reset y /mreset |
GameServerInfo - Custom.dat | CustomAttackTime_AL, CustomStoreTime_AL, MuOffHelperTime_AL, CustomPick..._AL, CustomItemBankAutoDeposit_AL... |
| Tablas | ResetTable.txt, CustomMix.txt (RateAL1..3), MixExpansion.txt (Rate1..3), CustomJewel.txt (SuccessRate_AL1..3), Command.txt (EnableVip, MoneyVip...) |
Comprar VIP en el juego: Data\Custom\CustomBuyVip.txt
El jugador abre F4 > Tienda Premium, elige un plan y paga con monedas.
| Columna | Significado |
|---|---|
Index | Número del plan (desde 1) |
Exp+, Drop+ | Solo se muestran en la ventana. El bono real va en Common.dat (AddExperienceRate_AL, ItemDropRate_AL) |
Days | Días que dura |
AccLevel | Nivel de cuenta que da (1 Bronze, 2 Silver, 3 Gold) |
Coin1, Coin2, Coin3 | Precio en WCoinC, WCoinP y Goblin Points |
VipName | Nombre del plan en el aviso de compra |
En los archivos que vienen con IGK: 9 planes (Bronze, Plata y Gold de 7, 15 y 30 días, a 10, 15 y 20 WCoinC).
Necesita el cliente: la ventana lee su propia copia en MainInfo\Common\CustomBuyVip.txt. Las dos deben tener los mismos planes y precios (ver 08_CLIENTE_PC_Y_ENCODER.md).
Problemas comunes
- "The selected plan is lower than your current plan!": no se puede comprar un plan de nivel igual o menor al VIP que ya tiene (tampoco renovar el mismo nivel). Hay que esperar a que venza o darlo con
/setvip. - "You do not have enough funds to purchase!": le faltan monedas.
Cash Shop (tienda de monedas, tecla X)
Data\CashShop\CashShopPackage.txt y CashShopProduct.txt
La tienda del juego de Season 6 (tecla X). Se paga con WCoinC, WCoinP o Goblin Points.
GameServerInfo - Common.dat:CashShopSwitch = 1la prende.CashShopScriptVersion1..3yCashShopBannerVersion1..3deben coincidir con las carpetas del clienteData\InGameShopScript\512.2011.006yData\InGameShopBanner\583.2010.005(en los archivos que vienen con IGK: 512/2011/6 y 583/2010/5).
CashShopPackage.txt (lo que se ve en la tienda):
| Columna | Significado |
|---|---|
Cat | Categoría (pestaña) |
ID, Main | Número del paquete (deben coincidir con el script del cliente) |
Item | Ítem del paquete |
Coin | Moneda: 508 = WCoinC, 509 = WCoinP, 0 = Goblin Points |
Price | Precio |
Bonus | Goblin Points de regalo al comprar |
PBase1..10, PMain1..10 | Productos del paquete (de CashShopProduct.txt) |
CashShopProduct.txt (el ítem que se entrega): ID, Number, Value (precio), Item (número plano), Level, Skill, Luck, Option, ExOpt, AncOp, JOH, Oexe, Socket1..5, Qtd (cantidad), Duration (segundos; 0 = permanente).
Necesita el cliente: los scripts IBSCategory.txt, IBSPackage.txt, IBSProduct.txt de Data\InGameShopScript\<versión>\ deben tener los mismos números. Si cambias la tienda, sube la versión en el servidor y en el nombre de la carpeta del cliente.
Otras opciones de compra en GameServerInfo - Custom.dat: DelayBuyShop (ms entre compras; 5000), DelayBuyXShop (ms entre compras en la tienda X; 3000), CustomShopMessageBox (0 sin confirmación, 1 solo compras con monedas, 2 todas).
Cambio de monedas: Data\Custom\CustomExchangeCoin.txt
Crea comandos para cambiar una moneda por otra.
| Columna | Significado |
|---|---|
Index | Número |
Command | Comando que escribe el jugador |
RequireCoin1..3 | WCoinC, WCoinP, Goblin Points que cuesta (* = nada) |
RewardCoin1..3 | Lo que recibe |
En los archivos que vienen con IGK:
/trocargoldxcash: cuesta 2 WCoinC y da 4 Goblin Points./trocarcashxgold: cuesta 10 WCoinC y da 1000 WCoinP.
Banco de ítems: Data\Custom\CustomItemBank.txt
Banco por cuenta para joyas y otros ítems apilables (reemplaza al viejo Jewel Bank). No hay tecla propia: se abre desde F4 > Banco de ítems.
- Depositar: Shift + clic derecho sobre el ítem en el inventario (deposita todos los de ese ítem y nivel). En el celular: tocar +.
- Retirar: desde la ventana, 1, 10, 20, 30 o "All" (todo lo que entre).
- Máximo 64 tipos de ítem.
Sección 0, ítems que se pueden guardar:
| Columna | Significado |
|---|---|
ItemIndex | Número plano |
ItemLevel | Nivel exacto (Box of Kundun +1 = nivel 8) |
ItemPos | Ajuste vertical del dibujo en la ventana (px) |
ItemSize | Tamaño del dibujo: 9 normal, menos = más grande |
Sección 1, paquetes (bundles): BundleIndex y ItemIndex. Un paquete de nivel L vale 10 × (L + 1) unidades; al retirar 10, 20 o 30 sale un paquete.
Opciones en GameServerInfo - Custom.dat:
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomItemBankSwitch | 1 = prendido | 1 |
CustomItemBankAutoDeposit_AL0..3 | 1 = lo que recoge del suelo y está en la lista va directo al banco | 0 |
CustomItemBankMaxWithdraw | Máximo por clic en "All" | 100 |
Base de datos: tabla CustomItemBank (script MuServer\DataBase\SQL\Update23 - Custom Systems.sql; también pasa los saldos del viejo Jewel Bank).
Gremory Case (almacén de premios)
Un almacén donde llegan premios que el jugador retira cuando quiere. Se abre desde F4 > Gremory Case (muestra cuántos ítems esperan).
Llegan ahí: los ítems de /gremory y /gremoryall (GM), la Recompensa diaria con el inventario lleno, los premios del Season Pass que no entran, los premios de League of Masters y los scripts Lua.
Clave (GameServerInfo - Custom.dat) | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
GremoryCaseEnable | 1 = prendido | 1 |
GremoryCaseExpireDays | Días hasta que vence cada ítem (0 = no vence) | 30 |
- Guarda como máximo 50 ítems entre la cuenta y el personaje; con más, se borran los más viejos.
- Base de datos:
MuServer\DataBase\SQL\Update24 - Gremory Case.sql. - Necesita el cliente: el texto del origen de cada ítem está en
MainInfo\Common\CustomMessageGremory.txt.
Recompensa diaria: Data\Custom\CustomDailyReward.txt
Un premio por cada día del calendario. Se abre en F4 > Recompensa diaria. Solo se cobra el premio de hoy, una vez por cuenta. Los días no cobrados se pierden.
- Una sección por mes (1 a 12) y una fila por día (1 a 31). Un día sin fila no tiene premio.
- Columnas:
Day,ItemPosX,ItemPosY(ajuste del dibujo),ItemSize(8 normal, menos = más grande),ItemIndex(número plano),Level,Dur,Skill,Luck,Option,ExcOp,SetOp,JoH,OEx,Socket1..5,BonusSocket(255 = sin socket),Duration(segundos; 0 = permanente).
Clave (GameServerInfo - Custom.dat) | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomDailyRewardSwitch | 1 = prendido | 1 |
CustomDailyRewardEnable_AL0..3 | 1 = disponible para ese VIP | 1 |
CustomDailyRewardLevel, ...Reset, ...MasterReset | Mínimos para cobrar | 0 |
Si el inventario está lleno, el premio va al Gremory Case. Base de datos: tabla CustomDailyReward (Update23 - Custom Systems.sql).
Season Pass (pase de temporada): Data\Custom\SeasonPass.txt
Pase por cuenta: las misiones dan puntos de pase; cada cierta cantidad de puntos se sube un nivel y cada nivel tiene un premio gratis y uno premium. Se abre en F4 > Pase de temporada o con su ícono.
GameServerInfo - Custom.dat:SeasonPassSwitch(1 = prendido; en los archivos que vienen con IGK: 1).- Base de datos: obligatorio correr
MuServer\DataBase\SQL\Update28 - Season Pass.sql. - Los premios se reclaman a mano. Lo que no entra en el inventario va al Gremory Case.
- Fechas y días con la hora del servidor.
Sección 0, la temporada (una fila):
| Columna | Significado | Valor en los archivos que vienen con IGK |
|---|---|---|
Season | Número de temporada. Cambiarlo empieza todo de cero | 1 |
StartDate | Día de inicio, AAAAMMDD (mejor un lunes: cada semana abre ese día a las 00:00) | 20261012 |
Weeks | Semanas (1 a 12). Después no se ganan puntos, pero se sigue reclamando | 8 |
MaxLevel | Niveles (1 a 60) | 50 |
LevelPoints | Puntos por nivel | 500 |
PremiumPrice | Precio del premium (0 = no se vende) | 1500 |
PremiumCoin | 1 WCoinC, 2 WCoinP, 3 Goblin Points | 1 |
PremiumVip | Nivel de cuenta desde el que el premium viene incluido (0 = ninguno) | 0 |
Name | Nombre en la ventana (hasta 31 letras) | "Season 1" |
Sección 1, premios por nivel: Level (0 = premio cada LevelPoints después del último nivel), Track (0 gratis, 1 premium), ItemIndex (-1 = solo monedas), datos del ítem como en los demás archivos, Duration, Count (copias), CoinType (0 nada, 1 WCoinC, 2 WCoinP, 3 GP) y CoinAmount. Varias filas del mismo nivel y pista = varios premios juntos.
Sección 2, misiones:
| Columna | Significado |
|---|---|
Index | Número único (0 a 199). El avance se guarda con este número |
Week | Semana en que abre (las pasadas siguen abiertas). 0 = diaria (se renueva a las 00:00) |
Type | 1 matar monstruos (Param1 = monstruo, Param2 = mapa; -1 cualquiera); 2 terminar Blood Castle (Param1 1 = solo ganando); 3 Devil Square (1 = solo primer puesto); 4 Chaos Castle (1 = solo ganando); 5 completar una quest de /quest; 6 completar una quest de NPC (Param1 = número o -1); 7 cobrar la Recompensa diaria; 8 minutos conectado; 9 hacer un reset; 10 hacer un master reset |
Count | Cuántas veces |
Points | Puntos de pase |
Name | Texto (hasta 39 letras) |
Misiones: /quest (CustomQuest) y quests de NPC (CustomNpcQuest)
Hay dos tipos de misiones y un panel para verlas: F4 > Misiones (o el ícono Quests). El panel tiene dos pestañas:
- En cadena (/quest): las de
CustomQuest.txt, una a la vez y en orden. Cuando está lista, el botón Entregar del panel la entrega (igual que escribir/quest). - Misiones de NPC: las de
CustomNpcQuest.txt. Se empiezan y se entregan hablando con el NPC.
El panel muestra requisitos, cacería, ítems y premios, y la opción Seguir para verla en pantalla.
Opciones (GameServerInfo - Custom.dat)
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomQuestSwitch | 1 = prende /quest | 1 |
CustomNpcQuestSwitch | 1 = prende las quests de NPC | 1 |
Base de datos: Update 3 - CustomQuestSQL.sql, Update13 - CustomNpcQuest Table.sql y Update27 - Custom Quest Panel.sql (sin el Update27 todo funciona, pero las muertes de la quest de /quest vuelven a cero al reconectar).
Data\Custom\CustomQuest.txt (cadena de /quest)
| Sección | Qué tiene | Columnas |
|---|---|---|
| 0 | Requisitos (1 fila por quest) | Quest Level Reset MReset Zen WC WP GP VipLvl RankUser Kills (* = sin requisito; zen y monedas se cobran al entregar) |
| 1 | Ítems que pide (se quitan al entregar) | Quest Cat Item Level Luck Skill Qtd (Luck/Skill: 0 sin, 1 con, * cualquiera) |
| 2 | Monstruo a matar (1 tipo por quest) | Quest Monster Qtd |
| 3 | Premio en monedas | Quest WC WP GP |
| 4 | Premio en ítems | Quest Section Type Level Dur Skill Luck Option ExcOp SetOp JoH OEx Socket1..5 Time Class (Class * = todas; 0 DW ... 6 RF) |
| 5 | Premio en buff | Quest Effect Power1 Power2 Time |
| 6 | Premio en experiencia | Quest Experience |
| 7 | Nombre en el panel (hasta 31 letras) | Quest Name |
Data\Custom\CustomNpcQuest.txt (quests de NPC)
Igual que la anterior, con una sección 0 extra para el NPC:
| Sección | Columnas |
|---|---|
| 0 NPC | Quest NpcIndex NpcMap NpcX NpcY MaxQuest OpenNpc (MaxQuest = veces que se puede hacer, 0 = sin límite; OpenNpc 1 = después abre el NPC normal: tienda, movimiento...) |
| 1 Requisitos | Quest Level Reset MReset Zen WC WP GP VipLvl RankUser Kills |
| 2 Ítems | Quest Cat Item Level Luck Skill Qtd |
| 3 Monstruo | Quest Monster Qtd |
| 4 Monedas | Quest Cash Gold PcPoint (WCoinC, WCoinP, GP) |
| 5 Ítems de premio | como la sección 4 de CustomQuest |
| 6 Buff | Quest Effect Power1 Power2 Time |
| 7 Experiencia | Quest Experience |
| 8 Nombre | Quest Name |
En los archivos que vienen con IGK: 2 quests con el NPC 254 (Pasi the Mage) en Lorencia.
Ruleta de la suerte: Data\Custom\Systems\CustomLuckyWheel.txt
Se gira desde F4 > Ruleta de la suerte. Cada giro cuesta monedas o un ítem y da un premio al azar.
| Sección | Qué tiene |
|---|---|
| 0 | Enable (1 prendida), Firework (fuegos al ganar), Notice (aviso a todos al ganar). En los archivos que vienen con IGK: 1, 0, 1 |
| 1 | Mensajes del sistema (Index y texto) |
| 2 | Ruedas, numeradas desde 1 sin saltos: Wheel Name ReqType ReqIndex WC WP GP Count (ReqType ReqIndex = ítem que pide cada giro, Count unidades; 0 = no pide ítem) |
| 3 | Premios (máximo 12 por rueda): Wheel SizeBMD Type Index Level Dur Skill Luck Opt Exc Anc SK1..SK5 SKBonus HSD Rate (SizeBMD = tamaño del dibujo, HSD = minutos que dura, 0 permanente; Rate = peso en el sorteo) |
En los archivos que vienen con IGK: una rueda que cuesta 50.000 WCoinC por giro, con 12 premios (paquetes de joyas y alas de 1ª).
Quitar opción excelente: Data\Custom\Systems\RemoveExcOption.txt
Quita una opción excelente elegida de un ítem. Se abre en F4 > Quitar opción excelente.
| Sección | Qué tiene |
|---|---|
| 0 | Enabled (1 prendido; en los archivos que vienen con IGK: 1) |
| 1 | Mensajes del sistema |
| 2 | Requisitos: ReqResets (-1 = sin requisito), MinLevel, MaxLevel (nivel +N del ítem), Skill y Luck (-1 no se mira, 1 debe tenerlo, 0 no debe tenerlo) |
| 3 | Costo y éxito por opción: ExcOpt (0 a 5), WC, WCP, GBP, Rate (%) |
Opciones (armas / armaduras): 0 zen +30 % / mana al matar; 1 tasa de defensa +10 % / HP al matar; 2 refleja daño / velocidad de ataque; 3 reduce daño / daño +%; 4 mana máx / daño por nivel; 5 HP máx / daño excelente. En los archivos que vienen con IGK: cada opción cuesta 100.000 WCoinC con 50 % de éxito; si falla, se pierde lo pagado.
Cambio de ítems en NPC: Data\Custom\Systems\ChangeItem.txt
Un NPC cambia un ítem por otro de una lista (por ejemplo un arma de una clase por la de otra clase).
| Sección | Qué tiene |
|---|---|
| 0 | Enable (1 prendido) |
| 1 | Mensajes |
| 2 | NPC: NpcClass Map X Y Dir. No hace falta ponerlo en MonsterSetBase. En los archivos que vienen con IGK: NPC 243 en Lorencia 130,125 |
| 3 | Un grupo por fila: Notice (0 no, 1 en el subservidor, 2 en todos), Name, WCoin (costo), Type Index Level Skill Luck Option Exc (ítem que se entrega; Level = mínimo; Skill/Luck/Option/Exc en 1 = debe tenerlo), R0Type R0Index ... R5Type R5Index (hasta 6 ítems que se pueden recibir) |
Rankings y títulos
Ranking del juego (F4 > Ranking): Data\Custom\CustomRanking.txt
Define las pestañas del ranking y el nombre de sus 3 columnas.
| Columna | Significado |
|---|---|
TabIndex | Pestaña: 0 Reset, 1 Nivel/puntos, 2 Master, 3 Monedas, 4 Eventos, 5 Top jefes |
Colum1..3 | Títulos de las columnas |
GameServerInfo - Custom.dat:CustomRankingSwitch = 1.- Se actualiza cada 3 minutos y muestra los 20 primeros, con filtro por clase.
- Base de datos: correr
MuServer\DataBase\SQL\Update25 - Custom Ranking.sql. Sin él, SQL Server da "Procedure or function WZ_CustomRanking has too many arguments specified" y las listas salen vacías. También crea la tabla de puntos de jefes (pestaña Top jefes).
Top por comando: Data\Custom\CustomTop.txt
/top <comando> muestra un top en el chat. Columnas: Index (número del tipo, el que usa el procedimiento WZ_CustomTop de la base), Command y Title. En los archivos que vienen con IGK: /top rr (TOP RR) y /top mr (TOP MR). Base de datos: Update 3 - CustomTop.sql.
Títulos por resets o nivel: Data\Custom\CustomRankUser.txt
Da un título (rango) según los resets, master resets o nivel, y un premio al subir de rango.
| Columna | Significado |
|---|---|
RankIndex | Número del rango |
Name | Título |
ResetMin, ResetMax | Rango de valores (el último debe tener ResetMax = -1) |
Cash, Gold, PcPoint | Premio en WCoinC, WCoinP, GP al llegar |
Clave (GameServerInfo - Custom.dat) | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomRankUserSwitch | 1 = prendido | 1 |
CustomRankUserType | Qué se mide: 0 resets, 1 master resets, 2 nivel + nivel master | 2 |
CustomRankUserRewardSwitch | 1 = da el premio | 1 |
CustomRankUserNoticeToAll, ...ToUser | Avisos al subir | 1 |
El título se ve sobre la cabeza. Cómo se ve lo decide el cliente: MainInfo.ini RankUserSwitch y las opciones del jugador (ver 08_CLIENTE_PC_Y_ENCODER.md). Los rangos de requisito (RankUser) que piden otros archivos son el RankIndex de esta tabla.
Puntos por matar jefes: Data\Custom\Systems\BossKillPoints.txt
Da puntos al personaje que mata un jefe. Los puntos salen en F4 > Ranking > Top jefes.
Columnas: Monster (número de Monster.txt), Points, Notice (1 = aviso a todo el servidor). En los archivos que vienen con IGK: dorados 1 punto (Golden Iron Knight y Great Golden Dragon 10), Kundun 50, otros jefes 20.
Jefes y monstruos custom
Barra de vida de jefes y ranking de daño: Data\Custom\CustomBossHealthBar.txt
Una barra de vida grande arriba de la pantalla para los jefes, y un panel con quién hizo más daño.
| Columna | Significado |
|---|---|
MonsterIndex | Número de Monster.txt |
MapNumber | Mapa (* = todos) |
HealthBar | 1 = barra grande para quien ve al jefe |
DamageRanking | 1 = panel de daño para quien le pega |
MaxUserRank | Jugadores en el ranking, 1 a 40 (* = 10). El panel muestra 15 filas y se desplaza con la rueda |
- Vale la primera fila que coincide. Con varios jefes, el jugador ve el último que golpeó; si no, el más cercano.
- Un jugador sale de la lista tras
TimeGiuBossms sin pegar (GameServerInfo - Common.dat; 15000), al cambiar de mapa o a más de 20 casillas. Un jugador muerto por otro jugador pierde su daño. - Al morir el jefe, la tabla final queda unos segundos en pantalla.
- En los archivos que vienen con IGK: Kundun, Erohim, Balram, Death Spirit, Soram y Golden Iron Knight, top 5.
Monstruos más fuertes y premios: Data\Custom\CustomMonster.txt
Cambia los valores de un monstruo (en %) y da premios al que más daño le hizo.
| Columna | Significado |
|---|---|
Index, Map | Monstruo y mapa (* = todos) |
MaxLife, DamageMin, DamageMax, Defense, AttackRate, DefenseRate | % del valor normal (100 = igual, 200 = el doble) |
ExperienceRate | % de experiencia |
KillMessage | Número de Message.txt que se anuncia a todos al matarlo (* = nada) |
InfoMessage | Distinto de * = avisa al ganador las monedas que recibió |
RewardValue1..3 | WCoinC, WCoinP, GP para el que más daño hizo |
SummonMonster, SummonMonterCount, SummonMonsterRate | Monstruo que aparece al morir, cuántos y % de probabilidad |
Ojo: no confundir con MainInfo\Monster\CustomMonster.txt del cliente, que es otro archivo (los modelos de monstruos nuevos).
Mensaje del monstruo al matar: Data\Custom\CustomDeathMessage.txt
Cuando un monstruo mata a un jugador, el monstruo "dice" un texto. Columnas: index (número del monstruo) y el texto. GameServerInfo - Custom.dat: CustomDeathMessageSwitch = 1.
Avisos de muerte en el chat (otro sistema), en GameServerInfo - Common.dat: DieUserSwitch (al morir por un jugador; 2 en los archivos que vienen con IGK), DieMonsterSwitch (por un monstruo; 0), PK_ColorMessPVP, PK_ColorMessPVM (color) y PK_DelayMess (segundos en pantalla).
Muerte y reaparición
Pantalla de muerte y revivir en el lugar: GameServerInfo - Custom.dat
Al morir en un mapa abierto, el mundo se pone gris, dice quién te mató y cuenta lo que falta para revivir. No aparece en eventos, duelos, guerras de guild, la batalla de Crywolf ni los jefes de Kanturu y Raklion.
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
DeathScreenSwitch | 0 = como el MU original, 1 = con la pantalla | 1 |
ReviveHereVipLevel | VIP mínimo (1 a 3) para el botón Revivir aquí sin talismán (0 = ningún VIP) | 1 |
ReviveHereTalisman | 1 = quien tiene un Talisman of Resurrection (13,69) en el inventario también puede, y se gasta uno | 1 |
Revivir en el lugar solo funciona en los lugares de MuServer\Data\Move\MoveSummon.txt (los mismos del Talisman of Resurrection), con su AccountLevel y PkMove. Columnas de ese archivo: Map X Y TX TY MinLevel MaxLevel MinReset MaxReset AccountLevel PkMove.
Dónde revive cada mapa: Data\Move\RespawnLocation.txt
| Columna | Significado |
|---|---|
Map | Mapa donde murió |
MoveGate | 1 = usa la puerta de la columna Gate; 0 = reaparición normal |
Gate | Puerta de Gate.txt (* = reaparición normal) |
Ejemplo de los archivos que vienen con IGK: 63 1 294 → quien muere en Vulcanus revive en Vulcanus.
Ataque, tienda y recogida automáticos
/attack y /offattack: GameServerInfo - Custom.dat y Data\Custom\CustomAttackSkill.txt
/attack ataca solo con una skill; /offattack sigue atacando con el juego cerrado (ver la sintaxis en 05_COMANDOS.md).
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomAttackTime_AL0..3 | Minutos que dura (0 = sin límite) | 0 |
CustomAttackDelay | ms mínimos entre golpes | 0 |
CustomAttackAutoPotionDelay | ms entre pociones automáticas (usa poción con menos de 50 % de vida o mana) | 0 |
CustomAttackAutoBuff_AL0..3 | 1 = se pone los buffs solo | 1 |
CustomAttackAutoBuffDelay | ms entre buffs | 10000 |
CustomAttackAutoResume_AL0..3 | 1 = el ataque offline vuelve tras un reinicio del servidor | 1 |
OffAttackExperienceRate_AL0..3 en Common.dat: experiencia con /offattack (1000 en los archivos que vienen con IGK). En MuServer\Data\MapManager.txt, la columna CustomAttack (1/0) permite o no el sistema en cada mapa. Base de datos: Update11 - CustomAttack Table.sql.
CustomAttackSkill.txt: cómo se lanza cada skill. Sin fila, el servidor lo decide solo. Columnas: Skill (número de Skill.txt), Type (1 un objetivo, 2 área con lista de objetivos, 3 sobre la posición del objetivo, 4 skill de Rage Fighter), Delay (ms base; se le resta la velocidad de ataque × 5) y MinDelay (mínimo). En los archivos que vienen con IGK: vacío.
Ayudante offline (MU Helper offline): GameServerInfo - Custom.dat
| Clave | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
MuOffHelperEnabled_AL0..3 | 1 = permite dejar el ayudante offline | 1 |
MuOffHelperTime_AL0..3 | Minutos que dura | 9999 |
MuOffHelperPickUpEnabled_AL0..3 | 1 = recoge ítems mientras está offline | 1 |
Tienda personal con joyas y monedas (/store, /offstore): GameServerInfo - Custom.dat
| Clave | Qué hace |
|---|---|
CustomStoreTime_AL0..3 | Minutos que dura la tienda offline (0 = sin límite) |
CustomStoreCommandJoBSyntax... WCGSyntax | Palabra para cada tipo de tienda: bless, soul, chaos, wcc, wcp, wcg |
CustomStoreJoBName... WCGName | Nombre que se pone a la tienda |
La columna CustomStore de MapManager.txt la permite por mapa.
Recogida automática (/pick): Data\Custom\CustomPick.txt
/pick <nombre> prende o apaga la recogida automática de ese ítem. También existen /pick exc, /pick socket y /pick setitem.
Columnas: ID, String (el nombre del comando), Cat y Item (el ítem). Máximo 20. En los archivos que vienen con IGK: soul, bless, chaos, zen y life.
Clave (GameServerInfo - Custom.dat) | Qué hace | Valor en los archivos que vienen con IGK |
|---|---|---|
CustomPickSwitch | 1 = prendido | 1 |
CustomPickEnable_AL0..3 | Por VIP | 1 |
CustomPickRequireLevel_AL0..3, ...Reset... | Mínimos | 0 |
CustomPickRequireMoney_AL0..3 | Zen que cuesta | 0, 0, 0, 200000 |
La columna CustomPick de MapManager.txt lo permite por mapa.
Combate
Combos para todas las clases: Data\Custom\CustomCombo.txt
Permite combos a todas las clases (en el MU original solo el Dark Knight).
- Se prende en
GameServerInfo - Common.datconEnableComboToAllSwitch = 1. En los archivos que vienen con IGK: 0 (apagado). - Sección 0: skills de primer golpe (Energy Ball, Falling Slash, Lunge, Uppercut, Cyclone, Slash, Teleport, Mana Glaive, Drain Life).
- Sección 1: skills de segundo y tercer golpe (Lightning, Ice, Aqua Beam, Inferno, Twisting Slash, Rageful Blow, Death Stab, Frozen Stab, Chain Lightning, Red Storm).
- Un número de skill por línea (de
Skill.txt). - En Android, la ayuda de combos del celular usa esta lista.
Espera entre skills (anti-hack de velocidad): Data\Custom\Systems\SkillDelayConfig.txt
Tiempo mínimo entre dos usos de una skill. Tres formatos por línea:
| Formato | Columnas |
|---|---|
| Normal (3 valores) | SkillID ClassID BaseDelay |
| Con agilidad (5 valores) | SkillID ClassID BaseDelay MinDelay AgiRatio (cada AgiRatio puntos de agilidad baja 1 ms, hasta MinDelay) |
| Especial (6 valores) | SkillID ClassID BaseDelay 1 TickDelay Cooldown (skills de golpes repetidos: ms entre golpes y espera al terminar) |
ClassID -1 = todas las clases. En los archivos que vienen con IGK: Teleport, Falling Slash y Uppercut 3000 ms; Large Ring Blower 1000 ms; Fire Scream y Evil Spirit especiales (golpe cada 100/150 ms, espera 10 s); la mayoría de skills de ataque 200 ms bajando con la agilidad hasta 50 ms.
Otras opciones anti-hack (en Common.dat): CheckSpeedHack, CheckAutoPotionHack, CheckAutoComboHack, SpeedHackSkillEnable...
Skills desactivadas por mapa: Data\Skill\SkillMapDisable.txt
Apaga una skill en un mapa, por separado contra monstruos (PvM) y contra jugadores (PvP).
| Columna | Significado |
|---|---|
SkillIndex | Número de Skill.txt (* = todas). Las mejoras del árbol master siguen la fila de su skill base |
MapNumber | Mapa (* = todos) |
UsePvM | 1 = se puede usar contra monstruos, 0 = no |
UsePvP | 1 = contra jugadores, 0 = no |
- Gana la fila más específica: skill + mapa, luego skill +
*, luego*+ mapa, luego*+*. - Los buffs y skills sobre un jugador (uno mismo o un aliado) siguen
UsePvP. - Las skills sin objetivo (Teleport) solo se bloquean con
0 0. - Ejemplo:
51 6 1 0→ Ice Arrow sirve contra monstruos en Arena pero no contra jugadores. - En los archivos que vienen con IGK: vacío.
Buffs con /buff: Data\Custom\Systems\AddBuff.txt
/buff le pone al jugador la lista de buffs de este archivo (un uso cada 5 segundos).
Sección 0, hasta 16 filas: EffectID (número de Effect.txt), Timer (segundos), Power1..4 (valores). En los archivos que vienen con IGK: 8 buffs de 3600 s (1 hora).
Formato estricto: el 0 y el end deben estar solos en su línea, sin espacios.
Buff del NPC de buffs (otro sistema) en Common.dat: TimeBuf (minutos; 60) y Buff_DW_MNS, Buff_DK_GM, Buff_ELF_Thu, Buff_ELF_Dame, Buff_DL_ChiMang, Buff_SUM_PhanDame, Buff_RF_ThuLuc, Buff_RF_PhongThu.
Mapas, zonas y NPC
Zonas PK dentro de un mapa: Data\Custom\CustomPkZone.txt
Una zona rectangular con su propia regla de PK, que manda sobre la del mapa.
| Columna | Significado |
|---|---|
MapNumber | Mapa |
BeginPosX, BeginPosY, EndPosX, EndPosY | Esquinas (en cualquier orden) |
PkType | 0 = se permite PK (aunque sea ciudad); 1 = no se permite; 2 = PK sin volverse asesino |
Dentro de una ciudad, dos jugadores pelean solo si los dos están en una zona 0 o 2. En los archivos que vienen con IGK: vacío (hay ejemplos comentados).
Requisitos y cobro por estar en un mapa: Data\Custom\CustomMapRequirement.txt
Se revisa cada segundo, así vale para cualquier forma de llegar (puerta, /move, NPC, reaparición). Al llegar se cobra la entrada. Los GM no pagan.
| Columna | Significado |
|---|---|
Map | Mapa |
Money | Zen |
Coin1..3 | WCoinC, WCoinP, Goblin Points |
ItemIndex, ItemLevel, ItemCount | Ítem que se cobra (número plano; * = ninguno / cualquier nivel) |
RenewTime | Minutos que dura la entrada; al terminar se cobra otra vez (0 = una vez por visita) |
MinLevel, MaxLevel, MinReset, MaxReset, MinMReset, MaxMReset | Requisitos |
PartyCount | Mínimo de miembros de party |
MoveGate | Puerta de Gate.txt a la que se manda a quien no cumple o no puede pagar |
TimerSend | 1 = avisa cuando faltan 5 y 1 minutos, 30 y 10 segundos |
Ejemplo: 8 10000 0 0 0 * 0 1 10 100 * * * * * * 17 1 → Tarkan cuesta 10.000 de zen cada 10 minutos desde el nivel 100. En los archivos que vienen con IGK: vacío.
Requisitos para hablar con un NPC: Data\Custom\CustomNpcRequirement.txt
Si el jugador no cumple, el NPC no se abre y le dice el motivo. Si cumple, se cobra cada vez que habla con el NPC.
| Sección | Columnas |
|---|---|
| 0 NPC | Index Npc NpcMap NpcX NpcY NpcTalk WarnMessage (NpcTalk 1 = después funciona normal, 0 = solo cobra; WarnMessage = número de Message.txt, 0 = el motivo exacto) |
| 1 Personaje | Index MinLevel MaxLevel MinReset MaxReset MinMReset MaxMReset AccountLevel PK RankUser Gens PartyCount UserGuildLevel (PK 0 = los asesinos no pueden; Gens 0 sin familia, 1 Vanert, 2 Duprian, 3 cualquiera; UserGuildLevel 0 nada, 32 Battle Master o más, 64 asistente o más, 128 solo el maestro) |
| 2 Ítems | Index Cat Item Level Luck Skill Qtd Delete (Delete 1 = se cobran) |
| 3 Clases | Index DW DK ELF MG DL SU RF (0 no puede, 1 cualquier evolución, 2 segunda clase o más, 3 tercera clase) |
| 4 Monedas | Index Coin1 Coin2 Coin3 |
En los archivos que vienen con IGK: vacío (hay ejemplos comentados).
NPC que teletransporta: Data\Custom\CustomNpcMove.txt
Hablar con el NPC lleva a otro lugar si cumple los requisitos.
Columnas: Index Npc NpcMap NpcX NpcY MoveMap MoveX MoveY MinLevel MaxLevel MinReset MaxReset MinMReset MaxMReset AccountLevel PKMove (PKMove 1 = los asesinos también pueden).
Comandos desde NPC y mover por comando
CustomNpcCommand.txt y CustomMove.txt: ver 05_COMANDOS.md.
Ítems custom
Joyas custom: Data\Custom\CustomJewel.txt
Joyas nuevas que suben o ponen opciones a un ítem.
Sección 0 (las joyas):
| Columna | Significado |
|---|---|
Index | Número de la joya (enlaza con las secciones 1 y 2) |
ItemIndex | Número plano del ítem joya |
MinItemLevel, MaxItemLevel | Nivel del ítem en que se puede usar |
MaxItemOption1 (skill), MaxItemOption2 (luck), MinItemOption3/MaxItemOption3 (opción de vida), MinItemNewOption/MaxItemNewOption (cantidad de excelentes), MaxItemSetOption (ancient), MinItemSocketOption/MaxItemSocketOption | Condiciones del ítem destino (* = sin condición) |
EnableSlotWeapon, EnableSlotArmor, EnableSlotWing | 0 = no sirve en armas / armaduras / alas (* = sí) |
SuccessRate_AL0..3 | % de éxito por VIP |
SalePrice | Precio de venta |
ModelName | Modelo 3D (en Data\Item\ del cliente) |
Sección 1: lo que suma al tener éxito (Index Level Option1 Option2 Option3 NewOption SetOption SocketOption). Sección 2: lo que quita al fallar (mismas columnas; vacía = no pasa nada).
En los archivos que vienen con IGK: 9 joyas (7468 a 7476): Level (+15), Skill, Luck, Adicional (+7), Excellent (+1 opción), Socket, Ancient 1, Ancient 2 y Full (+15 con skill, luck, +7 y 6 excelentes).
Necesita el cliente: MainInfo\Item\CustomJewel.txt (sección 0 igual que la del servidor) y el ítem en el cliente (ver 08_CLIENTE_PC_Y_ENCODER.md).
Alas custom: Data\Custom\CustomWing.txt
Alas nuevas con sus valores. Columnas: grupo (#), Index, DefA (defensa), IncDmgA/IncDmgB (aumento de daño), DecDmgA/DecDmgB (reducción de daño), Opt1..3/Val1..3 (opciones normales) y NewOpt1..4/NewVal1..4 (opciones excelentes), ModelType y ModelName.
Códigos de opción: 80 daño, 81 daño mágico, 82 tasa de defensa, 83 defensa, 84 luck, 85 recuperación de HP, 102 ignorar defensa, 109 reflejar daño, 110 recuperar vida, 111 recuperar mana, 113 daño de maldición.
En los archivos que vienen con IGK: 4 alas (12,262 a 12,265).
Necesita el cliente: MainInfo\Item\CustomWing.txt con las mismas filas (ver 08_CLIENTE_PC_Y_ENCODER.md).
Alas custom en la mezcla de 3ª: Data\Custom\CustomWingMix.txt
Agrega alas a los resultados de la mezcla de alas de 3er nivel del Chaos Goblin. Sección 0: Category Index. En los archivos que vienen con IGK: vacío.
Mezclas custom de la Chaos Machine: Data\Custom\CustomMix.txt
Mezclas nuevas en la Chaos Machine.
Sección 0, la mezcla:
| Columna | Significado |
|---|---|
Index | Número de la mezcla. Debe existir una receta con ese número en el cliente (Data\Local\Mix.bmd) |
Money | Zen base. El costo real es Money × tasa de éxito (100.000 con 100 % = 10.000.000) |
RateAL0..3 | % de éxito por VIP (fuera de 0-100 = 90) |
CGroup | Cuántos grupos de ingredientes alternativos tiene (sección 2) |
CItem | Cuántos ítems en total debe tener la Chaos Machine |
ExeRand | 0 = el resultado tiene las excelentes de la sección 3; 1 = la sección 3 dice cuántas y salen al azar (6 = todas) |
KeepItem | 1 = si falla, el ítem principal no se pierde (se pierden los demás ingredientes); 0 = se pierde todo |
KeepOption | 1 = el resultado conserva las opciones (skill, luck, opción, excelentes, ancient, sockets) del ítem principal |
Name, Name Fail | Mensajes de éxito y fallo |
Sección 1, ingredientes fijos: Index ItemMix level Count. Sección 2, ítems por grupo: Index Group Count ItemMin ItemMax MinLvl Skill Luck MinOpc ExeOpc SetOpc. Sección 3, resultados: Index Group ItemMin ItemMax ItemLvl Skill Luck AddOpc ExeOpc SetOpc Socket1..5 (-1 = al azar).
En los archivos que vienen con IGK: alas de 4ª, armas Dragon, Archangel Hammer, equipos Tier 5 a 8, refinado, anillos/colgantes y mascotas.
Mezclas extra del Goblin: Data\Custom\MixExpansion.txt
Una ventana de mezclas extra en un NPC.
| Sección | Columnas |
|---|---|
| 0 NPC | Npc Map X Y. En los archivos que vienen con IGK: 238 (Chaos Goblin), Noria 189,107 |
| 1 Mezclas | Key Name Rate0..Rate3 Money ReqMoney Main TalismanOfChaos TalismanOfLuck LuckRate TalismanCnt |
| 2 Ingredientes | Key Main MinIndex MaxIndex MinLevel MaxLevel MinDur MaxDur Skill Luck MinOpt MaxOpt Exc Anc MinCnt MaxCnt |
| 3 Resultados | Key MinIndex MaxIndex Level Skill Luck Opt Exc Anc |
Rate0..3: % de éxito por VIP.Money: moneda (0 zen, 1 WCoinC, 2 WCoinP, 3 GoblinPoint) yReqMoneyla cantidad.Main(sección 1) es una marca: el ingrediente de la sección 2 con la misma marca en su columnaMaines el ítem principal, el que se mejora conservando sus opciones. ConMain = 0el resultado es un ítem nuevo. En los archivos que vienen con IGK la marca es 3 (el Kris).TalismanOfChaos: ítem que evita que se rompa el ítem.TalismanOfLuck: sube el éxitoLuckRate% por cada uno, hastaTalismanCnt.- En los resultados, -1 = conserva el valor del ítem principal.
- Ítems con número plano (grupo × 512 + número).
- En los archivos que vienen con IGK: "Level +10" y "Level +11" para el Kris (70 %, 10.000.000 de zen).
Las claves GoblinMixNpc, GoblinMixNpcX, GoblinMixNpcY, GoblinMixNpcMap de Custom.dat ya no se usan: el NPC sale de la sección 0 de este archivo.
Ítems y buff al crear el personaje: Data\Custom\CustomStartItem.txt
Da ítems y buffs una sola vez a cada personaje nuevo, en su primera entrada.
- Sección 0, ítems:
Class(0 DW, 1 DK, 2 FE, 3 MG, 4 DL, 5 SU, 6 RF),SectionyType(grupo y número del ítem),Level,Dur,Skill,Luck,Option,ExcOp,SetOp,JoH,OEx,Socket1..5,Time(segundos que dura; 0 = permanente). - Sección 1, buff:
Class Effect Power1 Power2 Time(Time en minutos). - En los archivos que vienen con IGK: set +7 para DW y DK por 80.000 segundos (unas 22 horas) y un buff al DW.
- Base de datos:
Update14 - Add Item Start column.sql(marca los personajes que ya recibieron; el script marca a todos los existentes).
Colector de joyas: Data\Custom\CustomNpcCollector.txt
El NPC 236 (Golden Archer) cambia un inventario lleno (64 casillas) de la misma joya por monedas.
Columnas: Category, ItemIndex (la joya), Cash, Gold, PcPoint (WCoinC, WCoinP, GP que da). GameServerInfo - Custom.dat: CustomNpcCollectorSwitch = 1. En los archivos que vienen con IGK: Chaos y Harmony 6 WCoinC; Bless, Soul, Life, Creation, Gemstone y Rena 2 WCoinC.
Runas (Rune Effect): Data\Item\RuneItemOption.txt
La runa es un ítem que se equipa en su casilla (debajo de la bandera, slot 241 de Item.txt). Suma opciones como las banderas y dibuja un círculo en el suelo.
- Servidor:
MuServer\Data\Item\RuneItemOption.txt, una fila por runa:Type Index Opt1 Val1 Opt2 Val2 Opt3 Val3 Opt4 Val4. Códigos de opción: 80 daño, 81 daño mágico, 82 tasa de defensa, 83 defensa, 84 crítico, 85 recuperación de HP, 91 HP %, 94 daño %, 97 velocidad, 102 ignorar defensa, 119 HP, 120 MP (lista completa en el encabezado del archivo). - En los archivos que vienen con IGK: la runa 12,400 "Rune [V1]" sin opciones.
- Necesita el cliente:
MainInfo.iniRenderEquipmentRune = 1(muestra la casilla) yMainInfo\Item\CustomRuneEffect.txt(el círculo: tamaño, color, giro y textura deData\IGK\RuneEffect). Ver08_CLIENTE_PC_Y_ENCODER.md.
Mensaje de mezclas en el chat: GameServerInfo - Custom.dat
AnnounceChaosMix (1 prendido), AnnounceChaosMixLevel (desde qué nivel), AnnounceChaosMixSuccess y AnnounceChaosMixFailure (textos).
Minería: Data\Mining.txt
Vetas de mineral en el mapa que el jugador pica con el Pandora Pick (ítem 0,41) en la mano derecha. Cada golpe gasta durabilidad del pico. Hay 5 etapas: en cada una se puede seguir (con riesgo de perder) o cobrar.
| Columna | Significado |
|---|---|
Index | Monstruo de la veta: 605 Mining Area (Small), 606 (Medium), 607 (Large) |
Stage | Etapa (1 a 5) |
Value | Durabilidad del pico que gasta |
ItemRate | Éxito sobre 10.000 (4750 = 47,5 %) |
ItemIndex, ItemCount | Premio (número plano) y cantidad; se entrega en paquetes de joyas cuando se puede |
BonusItemRate, BonusItemIndex, BonusItemCount | Premio extra (sobre 10.000) con aviso a todos (* = ninguno) |
En los archivos que vienen con IGK: Jewel of Bless, de 1 a 125 según veta y etapa, con premio extra en la etapa 5. Las vetas están en MonsterSetBase de Lost Tower, Tarkan, Aida, Swamp of Calmness y Raklion.
Bots de servicio: Data\Custom\BotSystem\
Personajes falsos que dan servicios. Se recargan con /reload bots.
Clases (Class): 0-2 DW/SM/GM, 16-18 DK/BK/BM, 32-34 Elfa/ME/HE, 48-50 MG/DM, 64-66 DL/LE, 80-82 SU/BS/DS, 97-98 RF/FM. ColorName = color del nombre (0 a 6). Equipo del bot: BotIndex Slot Type Index Level Opt con slot 0 arma, 1 escudo, 2 casco, 3 armadura, 4 pantalón, 5 guantes, 6 botas, 7 alas, 8 mascota.
Bot de buffs: BotBuffer.txt
| Sección | Columnas |
|---|---|
| 1 Bots | BotIndex Class Enabled ColorName Zen PCPoint MaxLvl Name Map X Y Dir (Zen/PCPoint = costo; MaxLvl = nivel máximo del jugador; nombre de hasta 10 letras) |
| 2 Requisitos | BotIndex Only_AL ReqGens GensContribution GensFamily (Only_AL = solo VIP; familia 1 Vanert, 2 Duprian) |
| 3 Equipo | Index Slot Type Index Level Opt |
| 4 Buffs | BotIndex Skill MinusTime %Power (máximo 5 por bot: 28 Greater Damage, 27 Greater Defense, 16 Mana Shield, 64 Critical Damage, 48 Greater Life, 217 Reflect, 82 Magic Circle, 129 Ignore Defense, 130 Fitness) |
- En los archivos que vienen con IGK, todos los bots de
BotBuffer.txtestán comentados: no aparece ningún bot de buffs. BotBuffer 100 2x2.txtyBotBuffer 80 1x1.txtson plantillas listas (100 u 80 bots);Default_BotBuffer.txtes la plantilla vacía. El servidor solo leeBotBuffer.txt: para usar una plantilla, copiarla con ese nombre.
Bot alquimista: BotAlchemist.txt
El jugador comercia (trade) con el bot poniendo dos ítems: el bot pasa las opciones (nivel, luck, skill, opción, excelentes) del segundo ítem al primero.
| Sección | Columnas |
|---|---|
| 1 Bot | BotIndex Class Enabled ColorName SucessRateBot NameBot IDMap CoordX CoordY Dir |
| 2 Equipo | BotIndex Slot Type Index Level Opt |
| 3 Qué pasa | BotIndex AllowLevel AllowOpt AllowLuck AllowSkill AllowExc AllowFFFFItems |
| 4 Costo y reglas | BotIndex OnlyVip WcoinC Zen WcoinP AcceptOnlySameType OnlyIfDestinyLower AcceptAncient MaxItemLevel MaxItemExcCount |
En los archivos que vienen con IGK: un bot en Lorencia 138,140; cuesta 100.000 WCoinC; solo mismo tipo de ítem, diferencia de nivel ±10, sin ancient, máximo 5 excelentes.
Bot comprador de excelentes: BotExcBuyer.txt
El jugador vende ítems excelentes al bot por comercio y recibe monedas.
| Sección | Columnas |
|---|---|
| 1 Bot | BotIndex Class Enabled ColorName SucessRateBot NameBot IDMap CoordX CoordY Dir |
| 2 Equipo | BotIndex Slot Type Index Level Opt |
| 3 Qué acepta | BotIndex AllowLevel AllowOpt AllowLuck AllowSkill AllowExc |
| 4 Pago por ítem | BotIndex OnlyVip WCoinMin WCoinMax WCP GP (WCoinC al azar entre mínimo y máximo, más WCP y GP fijos) |
En los archivos que vienen con IGK: un bot en Noria 171,109 que paga de 1 a 200 WCoinC por ítem.
Bot comerciante de mezclas: BotTrader.txt
El jugador da ingredientes al bot por comercio y recibe un resultado (por ejemplo, paquetes de joyas).
| Sección | Columnas |
|---|---|
| 0 Bots (máximo 10) | BotIndex Class Name Map X Y Dir OnlyVip EnableBot |
| 1 Equipo | BotIndex Slot Type Index Level Opt |
| 2 Mezclas | MixIndex Name SuccessRate PriceType PriceCount (PriceType 0 zen, 1 WC, 2 WP, 3 GP) |
| 3 Ítem que se conserva si falla | MixIndex Type Index LevelMax OptionMax Luck Skill Exc Ancient |
| 4 Ingredientes | BotIndex MixIndex Type Index LevelMax OptionMax Luck Skill Exc Ancient |
| 5 Resultados | MixIndex Type Index LevelMin LevelMax OptionMin OptionMax Luck Skill Exc Ancient |
| 6 Mezclas de cada bot | BotIndex MixIndex |
En los archivos que vienen con IGK: 4 bots en Lorencia con EnableBot = 0 (apagados).
Sistemas que están en otros archivos de la documentación
| Sistema | Archivo de configuración | Documentado en |
|---|---|---|
| Arena custom | Data\Custom\CustomArena.txt | 04_EVENTOS.md |
| Quiz | Data\Custom\CustomQuiz.txt | 04_EVENTOS.md |
| Lotería online | Data\Custom\CustomOnlineLottery.txt | 04_EVENTOS.md |
| Drop de evento | Data\Custom\CustomEventDrop.txt | 04_EVENTOS.md |
| Descripción de comandos | Data\Custom\CustomCommandDescription.txt | 05_COMANDOS.md |
| Comandos desde NPC | Data\Custom\CustomNpcCommand.txt | 05_COMANDOS.md |
/move | Data\Custom\CustomMove.txt | 05_COMANDOS.md |
| League of Masters | Data\Custom\Moba\ | 07_LEAGUE_OF_MASTERS.md |
Preguntas frecuentes
P: ¿Cómo doy VIP a un jugador?
R: Con el comando de GM /setvip <cuenta> <nivel 1-3> <días>. El jugador también puede comprarlo en F4 > Tienda Premium (CustomBuyVip.txt). Lo que da cada nivel se configura en las claves _AL1, _AL2, _AL3 de los archivos .dat.
P: ¿Cómo doy WCoin a un jugador?
R: Con /setcoin <personaje> <1|2|3> <cantidad> (1 WCoinC, 2 WCoinP, 3 Goblin Points), o editando la tabla CashShopData de la base de datos. Si no llega todo, revisa el tope MaxCoin..Value_AL de Common.dat.
P: El jugador compró VIP en la Tienda Premium pero recibe más experiencia de la que dice el plan (o menos).
R: Las columnas Exp+ y Drop+ de CustomBuyVip.txt solo se muestran. La experiencia y el drop reales del VIP salen de Common.dat (AddExperienceRate_AL1..3, ItemDropRate_AL1..3). Ajusta esos valores para que coincidan con lo que anuncias.
P: Un jugador no puede renovar su VIP.
R: El sistema de compra no deja comprar un plan de nivel igual o menor al que ya tiene. Debe esperar a que venza, o el GM se lo da con /setvip.
P: Nadie puede hacer más resets y sale "You have reached the reset limit (105/105)".
R: Es el tope global de MuServer\GameServer\GHRS.txt (GioiHanRS), que sube ResetNgay cada día a la hora de Reset.ini. Para quitarlo, cierra el GameServer y pon un número alto en GioiHanRS.
P: ¿Dónde cambio el zen y el nivel que pide el reset?
R: En MuServer\Data\Util\ResetTable.txt, por rango de resets y por VIP. Los valores de Command.dat (CommandResetLevel_AL, CommandResetMoney_AL) solo se usan para resets que no están en la tabla.
P: El ranking del F4 sale vacío.
R: Corre MuServer\DataBase\SQL\Update25 - Custom Ranking.sql. Las versiones viejas del procedimiento WZ_CustomRanking reciben un solo parámetro y SQL Server las rechaza. El ranking se actualiza cada 3 minutos.
P: El Season Pass no aparece en el F4.
R: Revisa SeasonPassSwitch = 1 en GameServerInfo - Custom.dat y que corriste Update28 - Season Pass.sql. También que StartDate de SeasonPass.txt ya llegó.
P: ¿Cómo empiezo una temporada nueva del Season Pass?
R: Cambia Season (por ejemplo de 1 a 2) y StartDate en la sección 0 de SeasonPass.txt. Todo empieza de cero; lo viejo queda guardado como historial.
P: ¿Con qué tecla se abre el banco de joyas? R: No tiene tecla propia: se abre desde F4 > Banco de ítems. Se deposita con Shift + clic derecho en el inventario.
P: Los combos no funcionan para el Dark Wizard ni la Elfa.
R: El combo para todas las clases está apagado en los archivos que vienen con IGK. Pon EnableComboToAllSwitch = 1 en GameServerInfo - Common.dat y ajusta las skills en CustomCombo.txt.
P: No aparecen los bots de buffs.
R: En BotBuffer.txt todas las filas de bots vienen comentadas (con //). Quita las // de las filas que quieras, o copia una plantilla (BotBuffer 80 1x1.txt o BotBuffer 100 2x2.txt) con el nombre BotBuffer.txt, y usa /reload bots.
P: ¿Cómo hago que un mapa cueste zen o pida nivel?
R: Agrega una fila en CustomMapRequirement.txt con el mapa, el costo, los requisitos, RenewTime y la puerta MoveGate a donde mandar a quien no cumple.
P: ¿Cómo hago una arena con PK dentro de Lorencia?
R: En CustomPkZone.txt, una fila con el mapa 0, las dos esquinas del rectángulo y PkType 0 (PK normal) o 2 (PK sin volverse asesino).
P: El botón "Revivir aquí" no sale.
R: Necesita DeathScreenSwitch = 1, que el jugador tenga el VIP de ReviveHereVipLevel o un Talisman of Resurrection (con ReviveHereTalisman = 1), y que el mapa esté en MoveSummon.txt.
P: Cambié una mezcla custom pero el cliente no la muestra.
R: El número Index de CustomMix.txt debe existir como receta en el cliente (Data\Local\Mix.bmd). Una mezcla sin receta en el cliente no se puede hacer.