Zemyna atua como uma espécie de proxy, faz com que o cliente se conecte a um servidor local especial que encaminha todos os pacotes do cliente para o servidor real. Dessa forma, ele é capaz de ler cada pacote enviado ou recebido. Esses pacotes podem então ser passados para outras aplicações, para que possam trabalhar com eles, por exemplo, loggers como o PaleTree.
Para que o Zemyna consiga ler pacotes, ele precisa de controle sobre o processo de inicialização, pois ajusta temporariamente seu cliente, para encapsular sua conexão. Isso é feito fazendo um backup do seu client.xml, que contém informações sobre onde se conectar, e cria um novo. Essa alteração é revertida assim que o Zemyna fecha, dessa forma você não precisa mexer em nenhum arquivo.
Para informar ao Zemyna onde conectar o cliente, você usa parâmetros de linha de comando. Por exemplo, digamos que você queira registrar pacotes no servidor internacional Laima, basta iniciá-lo assim na linha de comando, após mover Zemyna para a pasta do jogo:
Zemyna.exe host:54.88.25.242 port:2000
O IP e a porta são do servidor de login do Laima. Você pode procurar o host e a porta do seu servidor de destino na lista oficial de servidores. A URL para ele pode ser encontrada em client.xml.
Para facilitar a reutilização, você deve criar um link ou arquivo bat. Zemyna então tomará as medidas necessárias para poder ler os pacotes da rede e iniciar o cliente. Uma pequena janela no canto superior esquerdo mostrará que o Zemyna está rodando, ela fecha automaticamente quando o cliente é fechado. Você também pode clicar duas vezes nele para fechar rapidamente o Zemyna e o cliente.
Como desta forma você só pode ter um servidor na lista de servidores, aquele que você especifica nos parâmetros, você pode criar vários links/morcegos, um para cada servidor.
Se você quiser usar o Zemyna em um servidor que não usa o login automático do Steam, você precisa fornecer ao Zemyna um static__Conf.txt, onde o valor UseSteamClient
está definido como NO
.
ServiceNation=GLOBAL
Dictionary=YES
UseNexonSSO=NO
UseNexonGLM=NO
UseHackshield=NO
UseSteamClient=NO
UseXigncode=NO
UseNISMS_TESTURL=NO
UseNISMS_ONLY_OFFER=YES
Se o arquivo estiver em seu servidor web local, em "/toslive/patch", você faria Zemyna usá-lo assim:
Zemyna.exe host:127.0.0.1 port:2000 staticconfig:http://127.0.0.1/toslive/patch/
Observe que o cliente acessa o arquivo via SSL (HTTPS), portanto configure seu servidor web adequadamente.
Zemyna usa a mesma API da ferramenta que o inspirou, "Alissa". Ele usa mensagens WM_COPY para comunicação entre a janela de Zemyna e a janela do assinante. Para assinar o Zemyna, para receber pacotes, você envia o "op" (dwData) 100
para a janela do Zemyna (nome da janela: "mod_Tossa"), para cancelar, você envia 101
. Enquanto estiver inscrito, você receberá todos os pacotes de entrada (op 0x10101012
) e de saída (op 0x10101011
) pelo mesmo método.
Para obter um exemplo real de como isso funciona, sugiro dar uma olhada nas funções correspondentes no Pale. Alternativamente, você também pode criar um plug-in para Pale, o que será mais fácil.
Se você verificar os lançamentos, encontrará várias versões, sendo uma delas para kTOS (observe o prefixo "k"). Escolha esse se quiser registrar pacotes no servidor coreano.
Devido ao kTOS usar um login na web, tivemos que fazer as coisas de maneira um pouco diferente para a versão coreana do Zemyna. Você precisa de um argumento adicional, "kr", que ativa certas opções somente de KR. Exemplo:
Zemyna.exe host:54.88.25.242 port:2000 kr nosteam
Depois de iniciar o Zemyna dessa forma, o cliente não iniciará automaticamente, mas ainda modificará os arquivos do cliente, então quando você finalmente iniciar o cliente através do login da web, a conexão ainda passará pelo Zemyna, permitindo que você registre pacotes usando PaleTree.