Me propuse responder a esto ayer pero se me pasó ya que el foro me apareció como leído. Mil disculpas.
Voy a tratar de explicarme lo mejor que pueda:
El emulador se reserva las últimas 1000 IDs de monstruo disponibles para la creación de clones, esto es, mobs con sprites y habilidades de otro jugador, generalmente invocados con comandos de GM como
@clone,
@evilclone o
@slaveclone o a través del uso del comando de scripting
clone. Al generar un clon, el emulador le asigna una Mob ID libre en este rango (y cuando muere se la elimina).
¿Qué puedes hacer? Lo que ha dicho M45T3R tiene funcionamiento inmediato. Aunque para mí es mucho trabajo encontrar IDs libres.
Yo personalmente modificaría el código fuente. Abre el archivo
src/map/mob.h:
// Change this to increase the table size in your mob_db to accomodate a larger mob database.// Be sure to note that IDs 4001 to 4048 are reserved for advanced/baby/expanded classes.// Notice that the last 1000 entries are used for player clones, so always set this to desired value +1000#define MAX_MOB_DB 4000
Puedes aumentar la cantidad máxima de mobs que puedes tener en tu servidor, cambiando esta configuración con riesgo de que haya problemas con que el servidor utilice alguna ID ya en uso para un job en concreto. Puedes alterar este valor y poner la ID que quieras sin problemas. Recuerda que el cliente solo lee Mob IDs hasta cierto rango de mobs, así que no pongas un valor máximo ridículamente grande, porque puedes recibir otros errores. Desconozco si esto provocará errores en el servidor aunque tras mirar un poco en el código original, parece que no.
Si la anterior manera no te convence, hay otra forma de hacer esto. Veamos, ¿cuántos clones necesitas usar a la vez en tu servidor? Yo jamás he necesitado más de 100 (es más, creo que no he usado más de 10 a la vez, pero utilicemos un margen de seguridad razonable. También puedes reducir el número de espacios reservados para clones en el servidor. Eso se encuentra también en el mismo archivo, aquí:
// These define the range of available IDs for clones. [Valaris]#define MOB_CLONE_START (MAX_MOB_DB-999)#define MOB_CLONE_END MAX_MOB_DB
Simplemente cambia el valor de MOB_CLONE_START. A ese valor le tienes que restar el número de valores que quieres reservar para monstruos, menos uno. Es decir, ahí en ese código se reservan 1000 mobs pero se resta 999, pues igualmente si quieres reservar 100 valores hay que restar 99, y así si prefieres reservar otra cantidad. Esto solo causará problemas si se invocan más clones de los reservados, aunque 100 clones son muchos clones. O si te preocupa mucho, deja la cantidad que quieras, haciendo el espacio que consideres oportuno para tus mobs.
Simplemente recuerda que, tras hacer cualquier cambio dentro de la carpeta
src, siempre hay que volver a compilar el servidor para que éstos surtan efecto.
Espero haber sido de ayuda.