@Metin2 22 Posted March 13, 2021 Olá uma duvida há uma possibilidade de um client 40k de ter uma licença aonde o mesmo é expirado e pode fazer com que o client pare de funcionar ? Share this post Link to post Share on other sites
0 Theji 12 Posted March 14, 2021 bom dia, client penso que não pelo menos nunca vi tal agora na source do game podes o fazer e tem já feito licença da ymir Share this post Link to post Share on other sites
0 Dynamic Things 963 Posted March 16, 2021 podes fazer com que o cliente force a verificação da versão do game core e fazer com que o cliente feche em caso de diferenças 1 @Metin2 reacted to this Share this post Link to post Share on other sites
0 Owsap 201 Posted March 16, 2021 Por padrão já existe uma função em que verifique a versão do cliente com a versão do servidor, funciona por tempo, ou seja, se a data de execução for maior que a data limite que está configurada no servidor, o jogador será desconectado do servidor. Agora fica como queres verificar esta "chave" ou data de limite da versão / "licença". /// 1. @ Server/Game/input_login.cpp // Procura if (g_bCheckClientVersion) { [ ... ] } // Altere tudo por (verificar por data limite) if (g_bCheckClientVersion) { sys_log(0, "VERSION CHECK %s %s", g_stClientVersion.c_str(), d->GetClientVersion()); if (!d->GetClientVersion()) { d->DelayedDisconnect(10); } else { if (d->GetClientVersion() >= g_stClientVersion) { ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ¶óÀ̾ðÆ® ¹öÀüÀÌ Æ²·Á ·Î±×¾Æ¿ô µË´Ï´Ù. Á¤»óÀûÀ¸·Î ÆÐÄ¡ ÈÄ Á¢¼ÓÇϼ¼¿ä.")); d->DelayedDisconnect(0); LogManager::instance().HackLog("VERSION_CONFLICT", ch); sys_log(0, "VERSION : WRONG VERSION USER : account:%s name:%s hostName:%s server_version:%s client_version:%s", d->GetAccountTable().login, ch->GetName(), d->GetHostName(), g_stClientVersion.c_str(), d->GetClientVersion()); } } } else { sys_log(0, "VERSION : NO CHECK"); } // Ou altere por (verificar um valor fixo) if (g_bCheckClientVersion) { sys_log(0, "VERSION CHECK %s %s", g_stClientVersion.c_str(), d->GetClientVersion()); if (!d->GetClientVersion()) { d->DelayedDisconnect(10); } else { if (0 != g_stClientVersion.compare(d->GetClientVersion())) { ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ¶óÀ̾ðÆ® ¹öÀüÀÌ Æ²·Á ·Î±×¾Æ¿ô µË´Ï´Ù. Á¤»óÀûÀ¸·Î ÆÐÄ¡ ÈÄ Á¢¼ÓÇϼ¼¿ä.")); d->DelayedDisconnect(0); LogManager::instance().HackLog("VERSION_CONFLICT", ch); sys_log(0, "VERSION : WRONG VERSION USER : account:%s name:%s hostName:%s server_version:%s client_version:%s", d->GetAccountTable().login, ch->GetName(), d->GetHostName(), g_stClientVersion.c_str(), d->GetClientVersion()); } } } else { sys_log(0, "VERSION : NO CHECK"); } Eis algumas coisas que tens que considerar também; no ficheiro Server/Game /config.cpp tens que ativar esta verificação e também tens que alterar a "chave" ou data limite da versão / "licença". /// 1. @ Server/Game/config.cpp // Procura e confirme, altere g_stClientVersion conforme as tuas preferências. bool g_bCheckClientVersion = true; // true = verificar | false = não verificar std::string g_stClientVersion = "1640998800"; // Sat Jan 01 2022 01:00:00 GMT+0000 Também podes criar um ficheiro "VERSION" junto a ficheiro "CONFIG" no diretório dos teus canais e adicionar o valor lá em vez de modificares o código fonte sempre que queres alterar a "chave" ou data limite da versão / "licença". Para isso também deves confirmar que essa função seja chamada. /// 1. @ Server/Game/config.cpp // Procura LoadValidCRCList(); LoadStateUserCount(); // Adiciona abaixo LoadClientVersion(); Finalmente na source do teu cliente terás que fazer algumas alterações também. /// 1. @ Client/UserInterface/PythonNetworkPhaseGame.cpp // Procura strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp) - 1); // # python time.time ¾ÕÀÚ¸® // Altere para (verificar por data limite) strncpy(kVersionPacket.timestamp, static_cast<std::time_t>(std::time(0)), sizeof(kVersionPacket.timestamp) - 1); // Ou altere para (verificar um valor fixo) strncpy(kVersionPacket.timestamp, "1234567890", sizeof(kVersionPacket.timestamp) - 1); O que deves saber sobre essas alterações. 1. Nem todos os clientes em que toca o código fonte são iguais, por isso deves-te guiar pela semelhança do código. 2. Este método apenas desconecta o jogador após entrar no jogo caso haja conflito entre a "chave" ou data limite da versão / "licença". 3. Há melhores formas de verificares o que pretendes, este é apenas o mais semelhante à tua pergunta e o mais simples que já existe no código fonte. Cumprimentos, Owsap. 1 @Metin2 reacted to this Share this post Link to post Share on other sites
0 @Metin2 22 Posted March 17, 2021 Muito obg. essas resposta pode ajudar muito outras pessoas também ! Share this post Link to post Share on other sites
Olá uma duvida há uma possibilidade de um client 40k de ter uma licença aonde o mesmo é expirado e pode fazer com que o client pare de funcionar ?
Share this post
Link to post
Share on other sites