antiblock
diamwall

Owsap

Membro
  • Content Count

    231
  • Joined

  • Last visited

  • Days Won

    9

Owsap last won the day on June 12 2021

Owsap had the most liked content!

About Owsap

  • Rank
    Quite
  • Birthday 09/02/1997

Métodos de contato

  • Website URL
    https://owsap-productions.com/

Informação do Perfil

  • Localizaçao
    Macaronésia
  • Sexo
    Cyberiano
  • Sobre mim
    I'm not your friend.

Recent Profile Visitors

3,436 profile views
  1. Bom dia meu amigo , esse seu sistema de painel de gm é excelente porem to com 1 probleminha !!

    tipo o sistema de dia e noite automatico nao estao funcionando !! e quando eu instalo essa quest de painel de gm meu sistema de pets e de montorias buga !! Consegui me ajudar ??


    desde já agradeço !!

  2. pkg install -y openssl compat8x-amd64
  3. Aqui tens um exemplo, espero que te ajude. # # Title: Expanded Window # Date: 2021.03.16 # Author: Owsap import app import ui BUTTON_COUNT = 4 class TestWindow(ui.BoardWithTitleBar): def __init__(self): ui.BoardWithTitleBar.__init__(self) self.isLoaded = False self.btnExpanded = False self.btnList = [] if not self.isLoaded: self.__LoadBoard() def __del__(self): ui.BoardWithTitleBar.__del__(self) def __LoadBoard(self): self.SetSize(95, 210) self.SetCenterPosition() self.AddFlag('movable') self.SetTitleName("Test") self.SetCloseEvent(self.Close) textLineGuide = ui.TextLine() textLineGuide.SetParent(self) textLineGuide.SetPosition(45, 185) textLineGuide.SetText(".") textLineGuide.Show() self.textLineGuide = textLineGuide btnExpand = ui.Button() btnExpand.SetParent(self) btnExpand.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub") btnExpand.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub") btnExpand.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub") btnExpand.SetText("+") btnExpand.SetPosition(25, 160) btnExpand.SetEvent(self.__OnClickExpand) btnExpand.Show() self.btnExpand = btnExpand (xLocal, yLocal) = self.btnExpand.GetLocalPosition() btnGroup = ui.Window() btnGroup.SetParent(self) btnGroup.SetPosition(xLocal, yLocal - 0 - (30 * BUTTON_COUNT)) btnGroup.SetSize(40, 30 * BUTTON_COUNT) btnGroup.Hide() self.btnGroup = btnGroup for btnIdx in xrange(BUTTON_COUNT): btn = ui.Button() btn.SetParent(self.btnGroup) btn.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub") btn.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub") btn.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub") btn.SetText("{}".format(btnIdx)) btn.SetPosition(0, (30 * btnIdx)) btn.SetEvent(lambda arg = btnIdx: self.__OnClickExpandedBtn(arg)) btn.Show() self.btnList.append(btn) def __OnClickExpand(self): if not self.btnExpanded: self.btnExpanded = True self.btnGroup.Show() if self.btnExpand: self.btnExpand.SetText("-") else: self.btnExpanded = False self.btnGroup.Hide() if self.btnExpand: self.btnExpand.SetText("+") if self.textLineGuide: self.textLineGuide.SetText(".") def __OnClickExpandedBtn(self, arg): if self.textLineGuide: self.textLineGuide.SetText("{}".format(arg)) def Open(self): self.Show() def Close(self): self.Hide() def OnPressEscapeKey(self): self.Close() return True def OnPressExitKey(self): self.Close() return True
  4. 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.
  5. Imagens: https://imgur.com/a/4DLTdc6 Link (MEGA) : https://mega.nz/file/HIhWFADJ#lXIzfDHcbiQll7OGVm0FolUNmSMlWndurv-YsT8natY
  6. Owsap

    PEDIDO

    Depende onde tens o boss mas em geral, se o boss for "padrão" e estiver no seu mapa official é da seguinte forma, Nos ficheiros do teu servidor, localizado no mapa que contém o boss, no ficheiro boss.txt ou regen.txt, depende onde possa estar. Resumindo, ../share/locale/x/map/(nome_do_mapa)/boss.txt ou ../share/locale/x/map/(nome_do_mapa)/regen.txt Irás encontrar o boss pelo ID no ficheiros de texto. Exemplo: Vou alterar o tempo de respawn da Tartaruga no deserto. 1. ../share/locale/master/map/metin2_map_n_desert_01/boss.txt Irás encontrar uma linha separada por vários valores. m 869 658 100 100 0 0 7200s 100 1 2191 Como podes reparar tens um valor com "s", neste caso 7200s. Então tens aí o valor do respawn do boss em segundos. Depois de mudares o valor, reinicia o servidor.
  7. Provalvalemnte não tens a função "ThinBoardClosed" no "ui.py". import ui import wndMgr class AllenTeste(ui.Window): def __init__(self): ui.Window.__init__(self) self.__LoadMainBoards() def __del__(self): ui.Window.__del__(self) def __LoadMainBoards(self): self.FunctionalBoard = ui.ThinBoard() self.FunctionalBoard.SetParent(self) self.FunctionalBoard.SetSize(100, 300) self.FunctionalBoard.SetPosition(0, 0) self.FunctionalBoard.Show() start = AllenTeste() start.Show()
  8. Antes de tudo, eu sei que isso é um pouco inútil, mas para ativar e desativar o efeito a piscar nos botões, decidi usar a função de flash padrão, porque não conhecia uma maneira mais fácil. Como um exemplo, aqui está uma demonstração do efeito do flash.
  9. Em char_item.cpp // Procura em "case ITEM_METIN:" // ¼® È®·ü if (number(1, 100) <= 30) // Substitui por // ¼® È®·ü if (number(1, 100) <= 100)
  10. Ocultar arma ao atuar emoções Repositório Git common/service.h game/char.cpp game/char.h game/cmd_emotion.cpp
  11. Correção de código de cor no quadro de avisos e de dicas (notice / big_notice) Antes: Depois: root/constInfo.py root/uiTip.py
  12. Comando de GM para derrotar todos os jogadores à sua volta. game/src/cmd.cpp game/src/cmd_gm.cpp
  13. O 1º com um fundo mais escuro dava aquele extra toque.
  14. locale\ui\webwindow.py