!!"Good morning Vietnam"!!
quiero aportar unas configuraciones, mas alla de las que ya ahi en el server.
Configuracion:
1-Conectserver:
conectserver.iniTCP_PORT = 44405(acceso Publico) (puerto para salida internet/online)en este puerto se debe dar acceso en firewall y router, como tcp para el ingreso de usuarios, fuera de la coneccion lan.UDP_PORT = 55667(Interno)(Puerto de comunicacion entre aplicaciones y programas del servidor) este puerto debe estar cerrado para acceso publico.MaxConnectionsPerIP = 1 (esta configuracion limita la cantidad de clientes que pueden conectarse al CS desde una misma ip) ya que el CS tiene su propio servidor.ejemplo: MaxConnectionsPerIP = 3 ( maximo 3 clientes de una misma ip)obviando que con una maquina virtual igual va a poder ingresar con una cuenta mas.MaxPacketsPerSecond = 300 ( maximo paquetes recibido por segundo de una misma ip)LauncherProxyWhiteListIP = 127.0.0.1 (bueno esto ya es tema de launcher en caso de que se requiera)
Version = 1.06.15 ( configuracion del launcher tambien) version del mismo
VersionFile = version.dat
HostURL =
http://my.domain.com/patches/ (ejemplo de la carpeta donde almacenar los archivos para actualizar el cliente) el launcher conectara a esta direccion para bajar los archivos. no dar acceso en una web, dejen al launcher realizar el trabajo XD.
FTPLogin = USER_NAME (esta entrada no se modificca) acceso de verificacion del launcher
FTPPasswd = PASSWORD ( esta entrada no se modifica) acceso de verificacion del launcher
FTPPort = 21
(TCP)(Puerto de la ubicacion host de los archivos) abrir este puerto solo en caso de usar launcher
Serverlist:
Server Code="?" :
(esto debido al crecimiento de un servidor se dispone de una gama de codigos, para crear distintos servidores) cada servidor necesita un codigo unico para comunicacion entre sus archivos y para no mesclarse con otros.
ejemplos:
ServerCode="0" (Regular server)
ServerCode="1" (CS server)ServerCode="2" (VIP server) ETC:IP="xxx.xxx.x.xx":(Configuracion de la ip para que el cliente conecte con las aplicaciones)NOTA: la ip para conectar con la base de dato y poder ingresar a la cuenta de usuario es mediante "MAPSERVERINFO".si la ip de dicho archivo esta mal configurada podras ver los servidores pero no podras ingresar con tu cuenta.( por que no tiene coneccion con la base de dato) "cliente" | "Conectserver" | |"Mapserver" "Mapserver" | |"Gameserver" "Gamserver" | |"Dataserver "Dataserver" Servidor | Conectserver | | Dataserver Dataserver | | Mapserver Mapserverun humilde esquema jajaja !Port="56900" (puerto individual de comunicacion entre conectserver, dataserver, gameserver,etc.)Cada servidor necesita un puerto de comunicacion entre sus archivos. que no este en uso ( si otra aplicacion usa este puerto la aplicacion no funcionara).les recuerdo que en cada dataserver vas a tener que usar un puerto distinto !ejemplo:Conectserver:Puerto/56900 (servidor regular)->Dataserver:Puerto/56900(sevidor regular)->Mapserver:Puerto/56900(servidor regular)->"gamserver":Puerto/56900(sevidor regular)Visible="1" (0/1 activa o desactiva la visibilidad del servidor ) en caso del Castle siege y el Arca bar estan desactivado ya que el ingreso es mediante el Dataserver regular.Y por ultimo el.Name="Regular" (esta configuracion solo es descriptiva no tiene ninguna funcion)esto quedaria asi:<ServerList><Server Code="0" IP="xxx.xxx.x.xx" Port="56900" Visible="1" Name="Regular" />
</ServerList>2.DataServer:
Dataserver.ini:
MAX_SERVER = 10 (esta configuracion limita el acceso de Gameserver a este Dataserver, pero aumento el uso de memoria)
un ejemplo de como funciona.
en el Dataserver Regular, tenemos 3 Gameserver conectados:
1-Gamserver Regular
2-Castle Siege
3-ArcaWar
El BattleCore tinee su propio Gameserver y Dataserver asi que no usa el Dataserver Regular, esto debido a que tiene su propia "base de datos".
Estos son modulos de funcion para el Dataserver:el funcionamiento de cada modulo queda para otro dia
-UseJoinServer = 1 (0/1) 0=desactivado 1=activado
-UseDataServer = 1
-UseExDataServer = 1
por el momento que queden activos jajaja
Estos son los puertos internos de cada modulo para comunicacion.
JoinServerPort = 56970
DataServerPort = 56960
ExDataServerPort = 56906
Estos puertos deben estar cerradopara acceso PUBLICO !!!ya que son puertos de comunicacion interna.
MachineIDConnectionLimitPerGroup = 3 ( aca es algo parecido a las conecciones por ip del dataserver, con la diferencia que esta es por grupo)
ejemplo:
tenemos en el mapserver y serverlist grupos de servidores
<Server Code="0" Group="1" Initiation="1" IP="xxx.xxx.x.xx" Port="56900" Name="Regular" />
<Server Code="1" Group="1" Initiation="1" IP="
xxx.xxx.x.xx" Port="56901" Name="Vip" />
<Server Code="13" Group="1" Initiation="0" IP="
xxx.xxx.x.xx" Port="56913" Name="Arca" />
<Server Code="14" Group="1" Initiation="0" IP="
xxx.xxx.x.xx" Port="56914" Name="Siege" />
<Server Code="120" Group="6" Initiation="1" IP="
xxx.xxx.x.xx" Port="56120" Name="BattleCore" />
como veran en la configuracion Group="1" tenemos varios server relacionados a un mismo grupo
aca la limitacion seria mas general que el ejemplo del dataserver, ya que el dataserver permitia uno por servidor, aca limitamos a 1 por grupo de servidor, espero me hallan entendido.
PasswordEncryptType = 0 (esto es por si queremos tener un uso de encriptacion de password en el sql)es un poco mas extenso.
0-desabilitado
1-WZ_MD5 - binary(16)
2-IGC_MD5 - varchar(32)
estos son los accesos a las base de datos del servidor desde las aplicaciones:
MuOnlineDB = MuOnlineS12S
MeMuOnlineDB = MuOnlineS12S
EventDB = EventsS12S
RankingDB = RankingS12S
es donde cada aplicacion sea Dataserver,Gameserver etc. van a guardar y extraer continuamente la informacion del servidor.
User = TuServerMu (usuario con acceso a la base de datos SQL)
Pass = 12345678 (Pasword del usuario con acceso a la base de datos SQL)
SQLServerName = TuServerMu (aca no va el nombre de usuario, si no el nombre del "SERVIDOR" SQL)
3.GameServer:
GameServer.ini:
ServerCode = 0
(bueno esto ya lo explique:o ,pero tener en cuenta que tiene que tener el mismo digito que el conectserver y el dataserver)
ServerType = 0
(esta configuracinon trabaja directamente con el Gameserver)habiendo varios tipos de servidores. aca tenemos una configuracion mas extensa como para entrar en detalles. ya que funcionan de diferente manera.
; [Type=0 - Regular GameServer]
; [
Type=1 - Castle Siege GameServer]
; [
Type=2 - Arca War GameServer]
; [
Type=3 - BattleCore GameServer]
GameServerPort = 56900
Aca tenemos el puerto de una configuracion anterior, como les dije las aplicaciones se comunican entre si intercambiando informacion y guardando en la base de datos. por eso es que necesitan un puerto individual i libre para dicha funcion.
aca como veremos tenemos los mismos puertos internos que en el DataServer, no debe haber ni la mas minima diferencia entre ambos.
JoinServerPort = 56970
DataServerPort = 56960
ExDBPort = 56906
ConnectServerPort = 55667
Puerto interno que conecta el Conectserver con el DataServer
IpLocal para coneccion entre aplicaciones no se cambian, dejen el "127.0.0.1"
JoinServerIP = "127.0.0.1"
DataServerIP = "127.0.0.1"
ExDBIP = "127.0.0.1"
ConnectServerIP = "127.0.0.1"
MachineIDConnectionLimitCount = 3
( configuracion para maximo de conecciones a este Gameserver de forma individual)
4.Configuraciones de un Shop
<Shop>
ejemplo:
<Item Cat="0" Index="9" Level="7" Durability="0" Skill="1" Luck="1" Option="0" Exc="-1" SetItem="0" SocketCount="0" Elemental="0" Serial="0" />
<Item comando de indentificacion para que el gameserver reconosca la instancia
Cat="0" /Categoria de un item en el archivo Itemlist.xml
Index="9" /index de el item dentro de la categoria ya asignada
Level="7" /Level de incremento en el item asignado al shop(+1+2+3+4+5+6 etc)
Durability="0" /Durabilidad o cantidad del item asignado
Skill="1" /activar o desactivar skill en el item a la venta 0/1(1 activado)
Luck="1" /activar o desactivar luck en el item a la venta 0/1
(1 activado)Option="0" /level option en un item, ejemplo= "1" = a opcion +4Exc="-1" /opcion exelent en un item "-1"desactiva la opcion, Exc="1;2;3"/poniendo en aumento el digito primario despues de un punto y coma(;) agregamos opciones esto varia segun el item.SetItem="0" /define si el item corresponde a un settype. para esto ya debemos buscar el id del setitem ya sea ancient o lucky etc.por que no podemos poner cualquier item.golpes osea no podemos agregar esta opcion a un item que no sea del grupo ancient o lucky.SocketCount="0" /Aca definimos la cantidad slot socket, ya sea (1,2,3,4,5) y como la configuracion de set es lo mismo no podemos ponerle a cualquier item, tenemos que agregar un item de la categoria socketElemental="0" /opciones elementales para esto tenemos 5 tipos de opciones, Elemental Attribute, 1 ~ Fire, 2 ~ Water, 3 ~ Earth, 4 ~ Wind, 5 ~ Darkness, esta opcion no funciona en equipamiento, es mas que nada para errtel, pentagram, e item que usen esta funcionSerial="0" /con esta configuracion al comprar un item generaremos un serial, no lo recomiendo. !ya que la base de datos genera codigos para los item al guardar la informacion de una cuenta.</Shop>