Ir para conteúdo

Sammy

Campones
  • Total de itens

    97
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Histórico de Reputação

  1. Upvote
    Sammy recebeu reputação de raulcdj em [DXP] [Button] Autoloot Com Imagem ao pegar o Loot   
    Primeiramente baixe esta pasta: http://www.mediafire.com/file/4wt2jzpne0fz7gf/Autoloot.rar
    Scan: https://www.virustotal.com/#/file/32c61dd8d3411f9cf0584b9290a9755f7040cd5897acacddb964b8e5bd533dd2/detection
     
    (CASO JÁ TENHAM O AUTOLOOT, CREIO QUE PODEM PULAR ESTA PARTE, MAS CASO DÊ ERRADO USE O SISTEMA QUE DISPONIBILIZEI)
     
    1- Após ter baixado o arquivo, pegue o arquivo nomeado de "117 - autoloot" e jogue na pasta lib do teu servidor
     
    2- Recomendo adaptarem os itens de seu servidor no .lua do autoloot, deste jeito: (só um exemplo com um item do servidor)
    <item id="11445" article="a" name="Rock Stone">
    ["rock stone"] = {11445, raridade = {15, 35, "Medio"} , 10000},
     
    3- Em seguida vá na pasta de seu otclient: otclient/modules/, adicione a pasta "game_loot"
     
    4- Em seguida siga este caminho: otclient\data\images\topbuttons, em topbuttons adicione a imagem nomeada "loot", ou adicione algum ícone de autoloot de sua preferencia que tenha o tamanho 32x33
     
     
     
    (Este sistema estava em uma pasta de servidor que já tive no pendrive, portanto não tenho conhecimento do autor, caso ele se manifeste, avise por aqui mesmo para receber os devidos créditos)
     
    Já aviso que esse sistema foi testado no DXP
    Créditos para Snix servidor DarkPoke. 
  2. Upvote
    Sammy recebeu reputação de espedito 99 em [Resolvido] NTO   
    Testa essa base:
     
    Client+Servidor
    Site
    Database
     
    Scans:
    Database: https://www.virustotal.com/pt/file/5bcc4633e194e34a6664ae82378370d6a9b752cb9c454e9e96cae3ea086f15a9/analysis/1507788252/
    Htdocs: https://www.virustotal.com/pt/file/bf6c3f4a8ad0839bceaad16da1ca937cd00679ff75d1ca096744f93364a35ec3/analysis/1507788139/ (Aqui acusou um, mas no meu pc e no pc do Uploader não causou nenhum tipo de risco)
     
     
    Créditos(Essa base é de outro Fórum, os links não foram upados por min, recomendo baixar logo, única coisa que fiz foi passar o Scan):

    Madara Rinnegan - Servidor base
    cleitonbandeira - Por ter editado
    Wase Wiss - Por ter editado também
    kukas9 - Por ter feito o tópico e ter feito alguns ajustes na base
  3. Upvote
    Sammy recebeu reputação de raulcdj em [Tutorial] Como adicionar uma Mensagem Global(Automatica) ao seu Servidor   
    Olá Pessoal do Xtibia, como meu primeiro tutorial aqui no site, quis trazer algo bem simples, já que meu conhecimento sobre scripts não é lá essas coisas rsrs, e desculpe se o Post sair meio desorganizado :v, enfim, vamos ao tutorial:
     
    1- Vá em PASTADOSEUSERVIDOR\data\globalevents\scripts, feito isso crie um arquivo .lua com o nome de "msg" e cole isto dentro:
    Onde está localizado dentro das aspas você pode modificar, pelo texto de sua escolha.
     
    2- Depois vá em PASTADOSEUSERVIDOR\SERVER\data\globalevents e abra o arquivo globalevents.xml
     
    Em seguida adicione esta linha:
    Ficará assim:
    Pronto, a Mensagem Global foi adicionada =]
     
     
    LHE AJUDEI ? DEIXE SEU REP++ =]
     
  4. Upvote
    Sammy recebeu reputação de Kirito kirigaya em [DXP] [Button] Autoloot Com Imagem ao pegar o Loot   
    Primeiramente baixe esta pasta: http://www.mediafire.com/file/4wt2jzpne0fz7gf/Autoloot.rar
    Scan: https://www.virustotal.com/#/file/32c61dd8d3411f9cf0584b9290a9755f7040cd5897acacddb964b8e5bd533dd2/detection
     
    (CASO JÁ TENHAM O AUTOLOOT, CREIO QUE PODEM PULAR ESTA PARTE, MAS CASO DÊ ERRADO USE O SISTEMA QUE DISPONIBILIZEI)
     
    1- Após ter baixado o arquivo, pegue o arquivo nomeado de "117 - autoloot" e jogue na pasta lib do teu servidor
     
    2- Recomendo adaptarem os itens de seu servidor no .lua do autoloot, deste jeito: (só um exemplo com um item do servidor)
    <item id="11445" article="a" name="Rock Stone">
    ["rock stone"] = {11445, raridade = {15, 35, "Medio"} , 10000},
     
    3- Em seguida vá na pasta de seu otclient: otclient/modules/, adicione a pasta "game_loot"
     
    4- Em seguida siga este caminho: otclient\data\images\topbuttons, em topbuttons adicione a imagem nomeada "loot", ou adicione algum ícone de autoloot de sua preferencia que tenha o tamanho 32x33
     
     
     
    (Este sistema estava em uma pasta de servidor que já tive no pendrive, portanto não tenho conhecimento do autor, caso ele se manifeste, avise por aqui mesmo para receber os devidos créditos)
     
    Já aviso que esse sistema foi testado no DXP
    Créditos para Snix servidor DarkPoke. 
  5. Upvote
    Sammy recebeu reputação de Emo doidao em One Piece Sprites   
    Opa pessoal tranquilo ? acabei por vasculhar um pendrive que tinha e acabei achando essa pasta com algumas sprites interessantes sobre One Piece, caso alguém esteja interessado vou estar disponibilizando as mesmas.
     
    Alguns Prints das sprites:
     
    Download: One Piece Sprites.rar
     
    Não esqueça do seu Rep++ =]
  6. Upvote
    Sammy deu reputação a Gengo em [OtClient] Mensagem Personalizada   
    Hoje venho trazer um sistema que pode deixar seu servidor com um diferencial dos demais, espero que vocês possam aprender algo com esse sistema e criar outros tipos de personalização nas mensagens.
     
     
    O que seria essa personalização?
    Seria uma personalização da mensagem do broadcast, em vez de ficar aquela mensagem vermelha no meio da tela, você pode escolher sua própria cor para a mensagem, no fim do tópico demonstrarei com imagens para que você possa entender melhor.
     
     
    Script:
    Procure pela pasta no seu otclient em modules/game_textmessage e abra o arquivo textmessage.otui e substitua por esse:
     
    Agora na mesma pasta abra o arquivo textmessage.lua e procure pela função displayMessage e debaixo de:
    if msgtype == MessageSettings.none then return end Coloque o seguinte script:
     
     
     Feito essas alterações a personalização já deve estar funcionando, para testar você pode utilizar o seguinte comando:
     
    /bc green | O torneio mundial da Elite Four se iniciará em 15min. → Onde /bc é o comando broadcast 
    → green é a cor que deseja personalizar, pode ser tanto em hexa como o nome da cor 
    → mensagem qualquer
    → É necessário colocar o pipeline |  caso queira colocar uma outra cor, senão ele assumirá como padrão a cor vermelha do broadcast.
     
    Caso você não tenha o script do broadcast, porem é impossivel não ter já que é padrão nos servidores, vou deixar disponível aqui:
     
     
    Imagens de como fica in-game:
     
    Eai, vai ficar de fora? 
    Implemente já essa personalização e torne-se um servidor diferenciado dos demais.
  7. Upvote
    Sammy recebeu reputação de Before em One Piece Sprites   
    Opa pessoal tranquilo ? acabei por vasculhar um pendrive que tinha e acabei achando essa pasta com algumas sprites interessantes sobre One Piece, caso alguém esteja interessado vou estar disponibilizando as mesmas.
     
    Alguns Prints das sprites:
     
    Download: One Piece Sprites.rar
     
    Não esqueça do seu Rep++ =]
  8. Upvote
    Sammy recebeu reputação de HauntL3 em [OTClient Mod] Círculo de Hp/Mana   
    Olá pessoal, vi este Mod no otland e achei muito interessante, creio que aqui no tópico não tenha algo relacionado a este mod, então estou trazendo ele aqui, os devidos créditos estarão no final do tópico ( Due credits will be no end of the topic )
     
     
    O que é o módulo game_healthcircle?
    Este módulo desenha círculo de vida e mana Circle no mapa do jogo.
    Portanto, é método alternativo para mostrar o status de saúde do jogador e mana.
     
    Como adicionar este módulo?

    1- Adicionar pasta [game_healthcircle] (BAIXE A VERSÃO MAIS RECENTE AQUI) para  "mods " ou  "modules " pasta (recomendado  "mods " pasta) em sua pasta OTClient principal. 
     
    Veja como ele ficará:
     
    Controle adicional:
     
    Ative e Desligue o Círculo de Exp:
    Ative e Desligue o Círculo de Skill:
     
    Créditos(Credits):
    MagicWall
    Otland
    Eu (pela tradução do tópico)
  9. Upvote
    Sammy recebeu reputação de Raskgames em [OtClient] Tutorial sobre Módulos   
    Olá pessoal, vi esse tutorial em um site gringo sobre a parte básica dos módulos de um otclient, que pode auxiliar muita gente que quiser explorar ainda mais o Otclient, já que essa área eu não vejo tanto conteúdo no Tibia Br, como sempre os créditos estarão ao final do tópico...
     
     
    Então, para começar as coisas que eu vou estar cobrindo:
    - a criação de módulos.
    - repassar alguns dos fundamentos para trabalhar no ambiente otclients lua. como testar eficientemente seus módulos e scripts.
     
     
    Para este tutorial você vai precisar:

    - Um editor de texto de algum tipo (eu gosto de usar o Notepad + +)
    também seria bom ter conhecimentos básicos de lua e habilidades de programação (mas isso é algo que você pode pegar rapidamente praticando).
     
    Agora que já temos tudo o que precisamos, podemos começar !
     
    CRIANDO O NOVO MÓDULO
     
     
    Otclient front-end funciona fora o que chamamos de ' módulos '. Os módulos são uma forma de implementar eficazmente os recursos do cliente separados uns dos outros. Se você está considerando a criação de um novo módulo, é aconselhável que você pense sobre o que o recurso pode ser e se ele iria caber em um módulo já existente (provavelmente um módulo game_xxx), os módulos são encontrados no diretório/modules do otclient.
    Seus são atualmente dois módulo ' ambientes ': jogo e cliente. Os módulos de jogo usam o prefixo game_ e devem estar refletindo recursos que se relacionam especificamente com os recursos do ambiente do jogador ou do jogo por exemplo game_outfit ou game_mounts são ambos os recursos que são usados no ambiente de jogo. Os módulos de cliente usam o prefixo client_ e devem estar refletindo recursos que se relacionam especificamente com o cliente e o cliente somente. Ele não tem nada a ver com o ambiente de jogo de jogadores, por exemplo, client_options e client_skins estão diretamente relacionados com a funcionalidade de clientes. Isso pode ser um pouco difícil de Visualizar para agora, mas você vai pegar isso mais tarde.
    Então, agora que você tem uma compreensão do que é um módulo e um pouco como eles funcionam, vamos em frente e começar a criar um novo.
     
    COMEÇANDO DO ZERO
     
     
    Nós estamos indo para criar um novo módulo a partir do zero, a primeira coisa que você precisa fazer é criar o diretório modules. O nome do diretório deve refletir o recurso global em si, por isso vamos chamar o nosso game_spells para começar a criar um novo módulo que irá listar todos os players spells com suas informações apropriadas. Nós não estaremos criando este módulo inteiro, mas podemos começar a ver como tudo funciona.
     
    Crie um novo diretório chamado game_spells dentro do diretório/Modules clientes.

    Dentro de game_spells precisamos começar adicionando 3 novos arquivos base: Spells. lua, feitiços. otmod e Spells. otui para a lógica de módulos, registro e design de interface.
     
    Criar 3 novos arquivos base spells.lua, spells.otmod e spells.otui dentro/modules/game_spells
    Você já deve saber o que o arquivo. lua representa, mas quais são essas novas extensões. otmod e. otui?
     
    .otmod
     
    .otmod é o arquivo que é usado para inicializar o módulo dentro do otclient, é como um registro em que ele irá registrar o módulo para uso dentro do cliente. Este arquivo geralmente tem uma estrutura como esta (eu adicionei comentários, se você copiar este código não se esqueça de remover o--comments):
    Module nome: game_spells -- nome do módulo (geralmente o mesmo nome que o diretório modules. descrição: Exibir a player spell com sua informação apropriada--descrição do módulo que explica o que é. autor: Sammy -- nomes dos criadores e colaboradores do módulo. website: www.otclient.info -- Se você tem um site externo que você pode ligá-lo aqui. sandboxed: true--sandbox é uma maneira de conter a variável modules e funções para que você não tenha conflitos entre outros módulos. scripts: [ spells.lua ] -- Os scripts são a lógica por trás do módulo onde todas as funções estão contidas. @onLoad: init() -- Este é o lugar onde você define a função de inicialização do módulo (nós vamos cobrir isso mais tarde). @onUnload: terminate() -- Este é o lugar onde você define a função de término do módulo (vamos cobrir isso mais tarde) Copie o código .otmod acima em seu arquivo spells.otmod e remova os comentários.
     
    .otui
     
    .otui é o arquivo que é usado para criar a interface de usuário modules. Esta é uma linguagem de estilo feito encomenda projetado especificamente para otclient chamado OTML, ele se sente muito como a formatação CSS para aqueles de vocês que têm experiência em webdesign. A estrutura típica de um arquivo .otui se parece com isso (este é o arquivo base iniciar, não concluído):
     
    MainWindow !text: tr('Spells') size: 160 450 @onEnter: modules.game_spells.destroy() @onEscape: modules.game_spells.destroy() Label id: spellsLabel !text: tr('Player Spells') width: 130 anchors.top: prev.top anchors.left: prev.left margin-top: 5 margin-left: 5 MainWindow: 
    Esta é a janela que estaremos usando para a interface da Spell List, é uma classe de janela padrão derivado de/client_skins/default/styles/windows.otui styling file estende janela que estende UIWindow. UIWindow é uma classe base dessa inicialização, ele controla a funcionalidade widgets e comportamentos.
     
    !text: Este é o texto que é exibido na seção de cabeçalho MainWindow
    size:  isso é usado para definir a largura/altura da mainwindow.
    @onEnter: configura o retorno de chamada de widgets de MainWindow OnEnter (função que será chamada quando você pressiona a tecla Enter).
    @onEscape: configura os widgets de retorno de chamada de MainWindow (função que será chamado quando você pressiona a tecla de escape).
     
    Label:
    Este é um widget de etiquetas que é usado para exibir texto na maioria dos casos. É um derivado da classe UILabel.
     
    id: Este é o ID que esta mais comum será alias-se com para referenciar usando funções como widget: getChildById ( "spellsLabel ")
    !text: Este é o texto que será exibido pelo widget UILabel.
    width: Este é o tamanho da largura do Label
    anchors. top/bottom/left/right: São onde a parte superior/inferior/esquerda/direita do Label devem ser posicionada.
    margin-top/bottom/left/right: São deslocamentos para as anchors, eles permitirão que você afinar o posicionamento dos componentes da interface do usuário.
     
    Esta é apenas a superfície de .otui formatação e styling, há muito mais que pode ser feito, mas a ideia principal é que você obter uma compreensão sobre como a hierarquia dos componentes da interface do usuário para exibir corretamente, etc as convenções de styling OTML forçá-lo a manter o projeto de um interface separado para o código lógico, por exemplo, o .lua
     
    Copie o código otui acima e coloque em spells.otui
     
    Agora que entendemos qual arquivo é usado para registrar o módulo e que arquivo (s) são usados para construir os módulos da interface do usuário, podemos aprofundar o código de lógica de módulos e tentar entender como tudo funciona em conjunto. O arquivo spells.lua é o arquivo que contém o código de lógica de módulos. É aqui que os spells serão preenchidos e o manuseio da seleção ortográfica e do display ortográfico serão controlados.
     
    Abra o arquivo spells.lua e copie o seguinte código base para começar.
     
    Nós estaremos escolhendo aparte este código para ajudar a entendê-lo melhor. Eu fui em frente e comecei o código base para você, aqui está:
     
    Spells = {} spellWindow = nil selectedSpell = nil spells = {} function init() connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) end function terminate() disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil end function Spells.create(spellList) spells = spellList Spells.destroy() spellWindow = g_ui.displayUI('spells.otui') end function Spells.destroy() if spellWindow then spellWindow:destroy() spellWindow = nil selectedSpell = nil spells = {} end end function Spells.selectSpell() if table.empty(spells) then return end -- TODO end  
    As principais coisas que eu quero focar aqui são:
     
    as variáveis (spellWindow, selectedSpell e spells).
    e as funções (armazenamento de funções e discutir o que init e Terminate são necessários).
     
    O VARIÁVEL
     
     
    Variáveis dentro de um módulo em modo seguro não precisam ser localizadas com a palavra-chave local como elas estão dentro de seu próprio ambiente de módulo. Se o módulo estiver em modo seguro: false, então você precisará certificar-se de que você localize a variável e redefini-los dentro da função Terminate (que vamos discutir mais tarde).
     
    Dentro deste módulo de feitiço precisamos ter uma maneira de armazenar o objeto janela módulos, fazemos isso definindo a variável spellWindow que temos inicializado como nulo, mas que vamos configurar em breve. Nós também precisamos de uma maneira de conter o que o jogador selecionou o que significa que devemos armazenar uma referência para o spell de alguma forma usando a variável selectedSpell. Por último, mas não menos importante e provavelmente não duram tanto! Precisamos armazenar a lista de spells e fazer isso com a variável Spells.
     
    AS FUNÇÕES
     
     
    Funções muito como variáveis estão contidas em módulos de área restrita para que a localização pode variar dependendo de suas preferências. Se você não estiver usando um module sandboxed: true, em seguida, você precisará certificar-se de que você está localizando e armazenar funções corretamente. Eu pessoalmente gosto de usar uma tabela para armazenar minhas funções dentro para manter as coisas organizadas mais este é o lugar onde você vê spells = {}. Spells é uma tabela que eu estarei usando para armazenar todas as funções públicas de um módulo. Funções de módulo privado serão localizadas mesmo que não seja inteiramente necessário dentro de um módulo em modo seguro, eu prefiro declarar quando a função é privada através da palavra-chave local.
    Então, quais são as funções init () e Terminate () usado para?
    Como você já deve ter notado dentro dos feitiços .otmod código que você vai ver:
     
     
    @onLoad: init() @onUnLoad: terminate()  
    init()
     
    A função init é uma função que é chamada quando otclient tenta carregar o módulo registrado usando chamada de sinal OnLoad. Dentro desta função você deve estar inicializando todos os componentes que são exigidos pelo seu módulo. Como você pode ver dentro de spells.lua estamos chamando uma função dentro de init ():
     
    connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy })  
    terminate()
     
    A função Terminate é uma função que é chamada quando otclient tenta descarregar o módulo registrado usando a chamada de sinal OnUnload. Dentro desta função você deve estar destruindo e redefinir variáveis que precisam ser desmarcadas na terminação do módulo. Lembre-se de que nem todas as variáveis precisarão ser redefinidas, mas as referências de widget e a tabela de spells são todas necessárias para serem redefinidas. Como você pode ver dentro de feitiços. lua estamos chamando e definindo uma série de coisas dentro de terminate():
     
     
    disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil Afirmei anteriormente que chamamos a função Connect dentro init (). Agora que estamos encerrando o módulo precisamos desconectar os retornos de chamada do conjunto de chamadas de sinal. Isto é feito através da função de desconexão (...).
    Com estas principais coisas cobertas você pode muito bem fazer o que você gosta dentro do módulo. Você pode com cuidado construir e craft o para inserir o que você precisa. Siga através do tutorial para estender o seu conhecimento de criação de módulos e também trabalhar dentro do ambiente do módulo otclients.
     
    COMO TESTAR EFICAZMENTE OS SEUS MÓDULOS
     
    Testar seus módulos será uma parte importante de fazê-los trabalhar da maneira que você precisa. Módulos de teste pode, por vezes, ser um pouco de um desafio para que haja algumas coisas que você precisa saber, a fim de torná-lo mais fácil para você.
     
    RECARREGANDO OS SEUS MÓDULOS
     
     
    Você pode recarregar seus módulos no cliente usando o Gerenciador módulo módulo Gerenciador módulo selecione seu módulo e clique em recarregar. Esteja ciente de que o seu init () e terminate (), funções serão chamados em recarregar por isso, se você não está inicializando e destruindo coisas particulares corretamente, então você pode obter erros no recarregamento.
    Nota importante: existem algumas alterações raras que podem não ser recarregadas corretamente com o gestor de módulos, coisas como .otui @ alterações (por exemplo, @onClick: edits). Pode haver algumas outras mudanças que não recarregam corretamente, mas para a maior parte ele funciona bem. Se você se encontrar com erros estranhos tentou fazer um reinício completo do cliente para garantir a sua não uma emissão de recarga.
     
    COMANDOS DE TESTE ÚTEIS
    Há uma seleção de comandos úteis que podem ser úteis para testes encontrados no arquivo de script/modules/client_terminal/Commands.lua. Aqui está uma lista dos comandos atuais que você pode inserir no terminal do cliente:
    dumpWidgets(widget, level) drawDebugBoxes(enable) hideMap() showMap() debugContainersItems() debugPosition(enable) autoReloadModule(name)  
    Você pode adicionar novos comandos ao seu diretório/mod, a fim de evitar fazer alterações no arquivo de comando modules.
    Você deve sempre assegurar-se de que seus módulos estejam testados completamente antes de criar solicitações da tração ao repositório principal do git. Estas dicas podem ser muito úteis nas fases de teste!
    ALGUMAS ORIENTAÇÕES ÚTEIS
     
    Ao desenvolver seu módulo seja certo dar-lhe lotes do pensamento sobre como está indo trabalhar e mesmo se você pode fundir a característica a um módulo já existente. Também funções globais e variáveis constantes podem ser encontradas nos diretórios modules/corelib e modules/gamelib. Por favor, dê uma cuidadosa consideração para o que você colocar nesses arquivos e se possível tentar evitá-lo. Siga a regra  "manter tudo para sua própria causa, e apenas essa causa ".
     
    FIM DO TÓPICO =]
     
    CRÉDITOS:
    edubart
    BeniS
    Eu(pela tradução e adaptação para o português)
     
     
     
     
  10. Upvote
    Sammy recebeu reputação de zGiovani em One Piece Sprites   
    Opa pessoal tranquilo ? acabei por vasculhar um pendrive que tinha e acabei achando essa pasta com algumas sprites interessantes sobre One Piece, caso alguém esteja interessado vou estar disponibilizando as mesmas.
     
    Alguns Prints das sprites:
     
    Download: One Piece Sprites.rar
     
    Não esqueça do seu Rep++ =]
  11. Thanks
    Sammy recebeu reputação de otomeuhugo em [OTClient Mod] Círculo de Hp/Mana   
    Olá pessoal, vi este Mod no otland e achei muito interessante, creio que aqui no tópico não tenha algo relacionado a este mod, então estou trazendo ele aqui, os devidos créditos estarão no final do tópico ( Due credits will be no end of the topic )
     
     
    O que é o módulo game_healthcircle?
    Este módulo desenha círculo de vida e mana Circle no mapa do jogo.
    Portanto, é método alternativo para mostrar o status de saúde do jogador e mana.
     
    Como adicionar este módulo?

    1- Adicionar pasta [game_healthcircle] (BAIXE A VERSÃO MAIS RECENTE AQUI) para  "mods " ou  "modules " pasta (recomendado  "mods " pasta) em sua pasta OTClient principal. 
     
    Veja como ele ficará:
     
    Controle adicional:
     
    Ative e Desligue o Círculo de Exp:
    Ative e Desligue o Círculo de Skill:
     
    Créditos(Credits):
    MagicWall
    Otland
    Eu (pela tradução do tópico)
  12. Upvote
    Sammy recebeu reputação de lSainty em [OtClient] Tutorial sobre Módulos   
    Olá pessoal, vi esse tutorial em um site gringo sobre a parte básica dos módulos de um otclient, que pode auxiliar muita gente que quiser explorar ainda mais o Otclient, já que essa área eu não vejo tanto conteúdo no Tibia Br, como sempre os créditos estarão ao final do tópico...
     
     
    Então, para começar as coisas que eu vou estar cobrindo:
    - a criação de módulos.
    - repassar alguns dos fundamentos para trabalhar no ambiente otclients lua. como testar eficientemente seus módulos e scripts.
     
     
    Para este tutorial você vai precisar:

    - Um editor de texto de algum tipo (eu gosto de usar o Notepad + +)
    também seria bom ter conhecimentos básicos de lua e habilidades de programação (mas isso é algo que você pode pegar rapidamente praticando).
     
    Agora que já temos tudo o que precisamos, podemos começar !
     
    CRIANDO O NOVO MÓDULO
     
     
    Otclient front-end funciona fora o que chamamos de ' módulos '. Os módulos são uma forma de implementar eficazmente os recursos do cliente separados uns dos outros. Se você está considerando a criação de um novo módulo, é aconselhável que você pense sobre o que o recurso pode ser e se ele iria caber em um módulo já existente (provavelmente um módulo game_xxx), os módulos são encontrados no diretório/modules do otclient.
    Seus são atualmente dois módulo ' ambientes ': jogo e cliente. Os módulos de jogo usam o prefixo game_ e devem estar refletindo recursos que se relacionam especificamente com os recursos do ambiente do jogador ou do jogo por exemplo game_outfit ou game_mounts são ambos os recursos que são usados no ambiente de jogo. Os módulos de cliente usam o prefixo client_ e devem estar refletindo recursos que se relacionam especificamente com o cliente e o cliente somente. Ele não tem nada a ver com o ambiente de jogo de jogadores, por exemplo, client_options e client_skins estão diretamente relacionados com a funcionalidade de clientes. Isso pode ser um pouco difícil de Visualizar para agora, mas você vai pegar isso mais tarde.
    Então, agora que você tem uma compreensão do que é um módulo e um pouco como eles funcionam, vamos em frente e começar a criar um novo.
     
    COMEÇANDO DO ZERO
     
     
    Nós estamos indo para criar um novo módulo a partir do zero, a primeira coisa que você precisa fazer é criar o diretório modules. O nome do diretório deve refletir o recurso global em si, por isso vamos chamar o nosso game_spells para começar a criar um novo módulo que irá listar todos os players spells com suas informações apropriadas. Nós não estaremos criando este módulo inteiro, mas podemos começar a ver como tudo funciona.
     
    Crie um novo diretório chamado game_spells dentro do diretório/Modules clientes.

    Dentro de game_spells precisamos começar adicionando 3 novos arquivos base: Spells. lua, feitiços. otmod e Spells. otui para a lógica de módulos, registro e design de interface.
     
    Criar 3 novos arquivos base spells.lua, spells.otmod e spells.otui dentro/modules/game_spells
    Você já deve saber o que o arquivo. lua representa, mas quais são essas novas extensões. otmod e. otui?
     
    .otmod
     
    .otmod é o arquivo que é usado para inicializar o módulo dentro do otclient, é como um registro em que ele irá registrar o módulo para uso dentro do cliente. Este arquivo geralmente tem uma estrutura como esta (eu adicionei comentários, se você copiar este código não se esqueça de remover o--comments):
    Module nome: game_spells -- nome do módulo (geralmente o mesmo nome que o diretório modules. descrição: Exibir a player spell com sua informação apropriada--descrição do módulo que explica o que é. autor: Sammy -- nomes dos criadores e colaboradores do módulo. website: www.otclient.info -- Se você tem um site externo que você pode ligá-lo aqui. sandboxed: true--sandbox é uma maneira de conter a variável modules e funções para que você não tenha conflitos entre outros módulos. scripts: [ spells.lua ] -- Os scripts são a lógica por trás do módulo onde todas as funções estão contidas. @onLoad: init() -- Este é o lugar onde você define a função de inicialização do módulo (nós vamos cobrir isso mais tarde). @onUnload: terminate() -- Este é o lugar onde você define a função de término do módulo (vamos cobrir isso mais tarde) Copie o código .otmod acima em seu arquivo spells.otmod e remova os comentários.
     
    .otui
     
    .otui é o arquivo que é usado para criar a interface de usuário modules. Esta é uma linguagem de estilo feito encomenda projetado especificamente para otclient chamado OTML, ele se sente muito como a formatação CSS para aqueles de vocês que têm experiência em webdesign. A estrutura típica de um arquivo .otui se parece com isso (este é o arquivo base iniciar, não concluído):
     
    MainWindow !text: tr('Spells') size: 160 450 @onEnter: modules.game_spells.destroy() @onEscape: modules.game_spells.destroy() Label id: spellsLabel !text: tr('Player Spells') width: 130 anchors.top: prev.top anchors.left: prev.left margin-top: 5 margin-left: 5 MainWindow: 
    Esta é a janela que estaremos usando para a interface da Spell List, é uma classe de janela padrão derivado de/client_skins/default/styles/windows.otui styling file estende janela que estende UIWindow. UIWindow é uma classe base dessa inicialização, ele controla a funcionalidade widgets e comportamentos.
     
    !text: Este é o texto que é exibido na seção de cabeçalho MainWindow
    size:  isso é usado para definir a largura/altura da mainwindow.
    @onEnter: configura o retorno de chamada de widgets de MainWindow OnEnter (função que será chamada quando você pressiona a tecla Enter).
    @onEscape: configura os widgets de retorno de chamada de MainWindow (função que será chamado quando você pressiona a tecla de escape).
     
    Label:
    Este é um widget de etiquetas que é usado para exibir texto na maioria dos casos. É um derivado da classe UILabel.
     
    id: Este é o ID que esta mais comum será alias-se com para referenciar usando funções como widget: getChildById ( "spellsLabel ")
    !text: Este é o texto que será exibido pelo widget UILabel.
    width: Este é o tamanho da largura do Label
    anchors. top/bottom/left/right: São onde a parte superior/inferior/esquerda/direita do Label devem ser posicionada.
    margin-top/bottom/left/right: São deslocamentos para as anchors, eles permitirão que você afinar o posicionamento dos componentes da interface do usuário.
     
    Esta é apenas a superfície de .otui formatação e styling, há muito mais que pode ser feito, mas a ideia principal é que você obter uma compreensão sobre como a hierarquia dos componentes da interface do usuário para exibir corretamente, etc as convenções de styling OTML forçá-lo a manter o projeto de um interface separado para o código lógico, por exemplo, o .lua
     
    Copie o código otui acima e coloque em spells.otui
     
    Agora que entendemos qual arquivo é usado para registrar o módulo e que arquivo (s) são usados para construir os módulos da interface do usuário, podemos aprofundar o código de lógica de módulos e tentar entender como tudo funciona em conjunto. O arquivo spells.lua é o arquivo que contém o código de lógica de módulos. É aqui que os spells serão preenchidos e o manuseio da seleção ortográfica e do display ortográfico serão controlados.
     
    Abra o arquivo spells.lua e copie o seguinte código base para começar.
     
    Nós estaremos escolhendo aparte este código para ajudar a entendê-lo melhor. Eu fui em frente e comecei o código base para você, aqui está:
     
    Spells = {} spellWindow = nil selectedSpell = nil spells = {} function init() connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) end function terminate() disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil end function Spells.create(spellList) spells = spellList Spells.destroy() spellWindow = g_ui.displayUI('spells.otui') end function Spells.destroy() if spellWindow then spellWindow:destroy() spellWindow = nil selectedSpell = nil spells = {} end end function Spells.selectSpell() if table.empty(spells) then return end -- TODO end  
    As principais coisas que eu quero focar aqui são:
     
    as variáveis (spellWindow, selectedSpell e spells).
    e as funções (armazenamento de funções e discutir o que init e Terminate são necessários).
     
    O VARIÁVEL
     
     
    Variáveis dentro de um módulo em modo seguro não precisam ser localizadas com a palavra-chave local como elas estão dentro de seu próprio ambiente de módulo. Se o módulo estiver em modo seguro: false, então você precisará certificar-se de que você localize a variável e redefini-los dentro da função Terminate (que vamos discutir mais tarde).
     
    Dentro deste módulo de feitiço precisamos ter uma maneira de armazenar o objeto janela módulos, fazemos isso definindo a variável spellWindow que temos inicializado como nulo, mas que vamos configurar em breve. Nós também precisamos de uma maneira de conter o que o jogador selecionou o que significa que devemos armazenar uma referência para o spell de alguma forma usando a variável selectedSpell. Por último, mas não menos importante e provavelmente não duram tanto! Precisamos armazenar a lista de spells e fazer isso com a variável Spells.
     
    AS FUNÇÕES
     
     
    Funções muito como variáveis estão contidas em módulos de área restrita para que a localização pode variar dependendo de suas preferências. Se você não estiver usando um module sandboxed: true, em seguida, você precisará certificar-se de que você está localizando e armazenar funções corretamente. Eu pessoalmente gosto de usar uma tabela para armazenar minhas funções dentro para manter as coisas organizadas mais este é o lugar onde você vê spells = {}. Spells é uma tabela que eu estarei usando para armazenar todas as funções públicas de um módulo. Funções de módulo privado serão localizadas mesmo que não seja inteiramente necessário dentro de um módulo em modo seguro, eu prefiro declarar quando a função é privada através da palavra-chave local.
    Então, quais são as funções init () e Terminate () usado para?
    Como você já deve ter notado dentro dos feitiços .otmod código que você vai ver:
     
     
    @onLoad: init() @onUnLoad: terminate()  
    init()
     
    A função init é uma função que é chamada quando otclient tenta carregar o módulo registrado usando chamada de sinal OnLoad. Dentro desta função você deve estar inicializando todos os componentes que são exigidos pelo seu módulo. Como você pode ver dentro de spells.lua estamos chamando uma função dentro de init ():
     
    connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy })  
    terminate()
     
    A função Terminate é uma função que é chamada quando otclient tenta descarregar o módulo registrado usando a chamada de sinal OnUnload. Dentro desta função você deve estar destruindo e redefinir variáveis que precisam ser desmarcadas na terminação do módulo. Lembre-se de que nem todas as variáveis precisarão ser redefinidas, mas as referências de widget e a tabela de spells são todas necessárias para serem redefinidas. Como você pode ver dentro de feitiços. lua estamos chamando e definindo uma série de coisas dentro de terminate():
     
     
    disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil Afirmei anteriormente que chamamos a função Connect dentro init (). Agora que estamos encerrando o módulo precisamos desconectar os retornos de chamada do conjunto de chamadas de sinal. Isto é feito através da função de desconexão (...).
    Com estas principais coisas cobertas você pode muito bem fazer o que você gosta dentro do módulo. Você pode com cuidado construir e craft o para inserir o que você precisa. Siga através do tutorial para estender o seu conhecimento de criação de módulos e também trabalhar dentro do ambiente do módulo otclients.
     
    COMO TESTAR EFICAZMENTE OS SEUS MÓDULOS
     
    Testar seus módulos será uma parte importante de fazê-los trabalhar da maneira que você precisa. Módulos de teste pode, por vezes, ser um pouco de um desafio para que haja algumas coisas que você precisa saber, a fim de torná-lo mais fácil para você.
     
    RECARREGANDO OS SEUS MÓDULOS
     
     
    Você pode recarregar seus módulos no cliente usando o Gerenciador módulo módulo Gerenciador módulo selecione seu módulo e clique em recarregar. Esteja ciente de que o seu init () e terminate (), funções serão chamados em recarregar por isso, se você não está inicializando e destruindo coisas particulares corretamente, então você pode obter erros no recarregamento.
    Nota importante: existem algumas alterações raras que podem não ser recarregadas corretamente com o gestor de módulos, coisas como .otui @ alterações (por exemplo, @onClick: edits). Pode haver algumas outras mudanças que não recarregam corretamente, mas para a maior parte ele funciona bem. Se você se encontrar com erros estranhos tentou fazer um reinício completo do cliente para garantir a sua não uma emissão de recarga.
     
    COMANDOS DE TESTE ÚTEIS
    Há uma seleção de comandos úteis que podem ser úteis para testes encontrados no arquivo de script/modules/client_terminal/Commands.lua. Aqui está uma lista dos comandos atuais que você pode inserir no terminal do cliente:
    dumpWidgets(widget, level) drawDebugBoxes(enable) hideMap() showMap() debugContainersItems() debugPosition(enable) autoReloadModule(name)  
    Você pode adicionar novos comandos ao seu diretório/mod, a fim de evitar fazer alterações no arquivo de comando modules.
    Você deve sempre assegurar-se de que seus módulos estejam testados completamente antes de criar solicitações da tração ao repositório principal do git. Estas dicas podem ser muito úteis nas fases de teste!
    ALGUMAS ORIENTAÇÕES ÚTEIS
     
    Ao desenvolver seu módulo seja certo dar-lhe lotes do pensamento sobre como está indo trabalhar e mesmo se você pode fundir a característica a um módulo já existente. Também funções globais e variáveis constantes podem ser encontradas nos diretórios modules/corelib e modules/gamelib. Por favor, dê uma cuidadosa consideração para o que você colocar nesses arquivos e se possível tentar evitá-lo. Siga a regra  "manter tudo para sua própria causa, e apenas essa causa ".
     
    FIM DO TÓPICO =]
     
    CRÉDITOS:
    edubart
    BeniS
    Eu(pela tradução e adaptação para o português)
     
     
     
     
  13. Thanks
    Sammy recebeu reputação de Olan trein em [OtClient] Tutorial sobre Módulos   
    Olá pessoal, vi esse tutorial em um site gringo sobre a parte básica dos módulos de um otclient, que pode auxiliar muita gente que quiser explorar ainda mais o Otclient, já que essa área eu não vejo tanto conteúdo no Tibia Br, como sempre os créditos estarão ao final do tópico...
     
     
    Então, para começar as coisas que eu vou estar cobrindo:
    - a criação de módulos.
    - repassar alguns dos fundamentos para trabalhar no ambiente otclients lua. como testar eficientemente seus módulos e scripts.
     
     
    Para este tutorial você vai precisar:

    - Um editor de texto de algum tipo (eu gosto de usar o Notepad + +)
    também seria bom ter conhecimentos básicos de lua e habilidades de programação (mas isso é algo que você pode pegar rapidamente praticando).
     
    Agora que já temos tudo o que precisamos, podemos começar !
     
    CRIANDO O NOVO MÓDULO
     
     
    Otclient front-end funciona fora o que chamamos de ' módulos '. Os módulos são uma forma de implementar eficazmente os recursos do cliente separados uns dos outros. Se você está considerando a criação de um novo módulo, é aconselhável que você pense sobre o que o recurso pode ser e se ele iria caber em um módulo já existente (provavelmente um módulo game_xxx), os módulos são encontrados no diretório/modules do otclient.
    Seus são atualmente dois módulo ' ambientes ': jogo e cliente. Os módulos de jogo usam o prefixo game_ e devem estar refletindo recursos que se relacionam especificamente com os recursos do ambiente do jogador ou do jogo por exemplo game_outfit ou game_mounts são ambos os recursos que são usados no ambiente de jogo. Os módulos de cliente usam o prefixo client_ e devem estar refletindo recursos que se relacionam especificamente com o cliente e o cliente somente. Ele não tem nada a ver com o ambiente de jogo de jogadores, por exemplo, client_options e client_skins estão diretamente relacionados com a funcionalidade de clientes. Isso pode ser um pouco difícil de Visualizar para agora, mas você vai pegar isso mais tarde.
    Então, agora que você tem uma compreensão do que é um módulo e um pouco como eles funcionam, vamos em frente e começar a criar um novo.
     
    COMEÇANDO DO ZERO
     
     
    Nós estamos indo para criar um novo módulo a partir do zero, a primeira coisa que você precisa fazer é criar o diretório modules. O nome do diretório deve refletir o recurso global em si, por isso vamos chamar o nosso game_spells para começar a criar um novo módulo que irá listar todos os players spells com suas informações apropriadas. Nós não estaremos criando este módulo inteiro, mas podemos começar a ver como tudo funciona.
     
    Crie um novo diretório chamado game_spells dentro do diretório/Modules clientes.

    Dentro de game_spells precisamos começar adicionando 3 novos arquivos base: Spells. lua, feitiços. otmod e Spells. otui para a lógica de módulos, registro e design de interface.
     
    Criar 3 novos arquivos base spells.lua, spells.otmod e spells.otui dentro/modules/game_spells
    Você já deve saber o que o arquivo. lua representa, mas quais são essas novas extensões. otmod e. otui?
     
    .otmod
     
    .otmod é o arquivo que é usado para inicializar o módulo dentro do otclient, é como um registro em que ele irá registrar o módulo para uso dentro do cliente. Este arquivo geralmente tem uma estrutura como esta (eu adicionei comentários, se você copiar este código não se esqueça de remover o--comments):
    Module nome: game_spells -- nome do módulo (geralmente o mesmo nome que o diretório modules. descrição: Exibir a player spell com sua informação apropriada--descrição do módulo que explica o que é. autor: Sammy -- nomes dos criadores e colaboradores do módulo. website: www.otclient.info -- Se você tem um site externo que você pode ligá-lo aqui. sandboxed: true--sandbox é uma maneira de conter a variável modules e funções para que você não tenha conflitos entre outros módulos. scripts: [ spells.lua ] -- Os scripts são a lógica por trás do módulo onde todas as funções estão contidas. @onLoad: init() -- Este é o lugar onde você define a função de inicialização do módulo (nós vamos cobrir isso mais tarde). @onUnload: terminate() -- Este é o lugar onde você define a função de término do módulo (vamos cobrir isso mais tarde) Copie o código .otmod acima em seu arquivo spells.otmod e remova os comentários.
     
    .otui
     
    .otui é o arquivo que é usado para criar a interface de usuário modules. Esta é uma linguagem de estilo feito encomenda projetado especificamente para otclient chamado OTML, ele se sente muito como a formatação CSS para aqueles de vocês que têm experiência em webdesign. A estrutura típica de um arquivo .otui se parece com isso (este é o arquivo base iniciar, não concluído):
     
    MainWindow !text: tr('Spells') size: 160 450 @onEnter: modules.game_spells.destroy() @onEscape: modules.game_spells.destroy() Label id: spellsLabel !text: tr('Player Spells') width: 130 anchors.top: prev.top anchors.left: prev.left margin-top: 5 margin-left: 5 MainWindow: 
    Esta é a janela que estaremos usando para a interface da Spell List, é uma classe de janela padrão derivado de/client_skins/default/styles/windows.otui styling file estende janela que estende UIWindow. UIWindow é uma classe base dessa inicialização, ele controla a funcionalidade widgets e comportamentos.
     
    !text: Este é o texto que é exibido na seção de cabeçalho MainWindow
    size:  isso é usado para definir a largura/altura da mainwindow.
    @onEnter: configura o retorno de chamada de widgets de MainWindow OnEnter (função que será chamada quando você pressiona a tecla Enter).
    @onEscape: configura os widgets de retorno de chamada de MainWindow (função que será chamado quando você pressiona a tecla de escape).
     
    Label:
    Este é um widget de etiquetas que é usado para exibir texto na maioria dos casos. É um derivado da classe UILabel.
     
    id: Este é o ID que esta mais comum será alias-se com para referenciar usando funções como widget: getChildById ( "spellsLabel ")
    !text: Este é o texto que será exibido pelo widget UILabel.
    width: Este é o tamanho da largura do Label
    anchors. top/bottom/left/right: São onde a parte superior/inferior/esquerda/direita do Label devem ser posicionada.
    margin-top/bottom/left/right: São deslocamentos para as anchors, eles permitirão que você afinar o posicionamento dos componentes da interface do usuário.
     
    Esta é apenas a superfície de .otui formatação e styling, há muito mais que pode ser feito, mas a ideia principal é que você obter uma compreensão sobre como a hierarquia dos componentes da interface do usuário para exibir corretamente, etc as convenções de styling OTML forçá-lo a manter o projeto de um interface separado para o código lógico, por exemplo, o .lua
     
    Copie o código otui acima e coloque em spells.otui
     
    Agora que entendemos qual arquivo é usado para registrar o módulo e que arquivo (s) são usados para construir os módulos da interface do usuário, podemos aprofundar o código de lógica de módulos e tentar entender como tudo funciona em conjunto. O arquivo spells.lua é o arquivo que contém o código de lógica de módulos. É aqui que os spells serão preenchidos e o manuseio da seleção ortográfica e do display ortográfico serão controlados.
     
    Abra o arquivo spells.lua e copie o seguinte código base para começar.
     
    Nós estaremos escolhendo aparte este código para ajudar a entendê-lo melhor. Eu fui em frente e comecei o código base para você, aqui está:
     
    Spells = {} spellWindow = nil selectedSpell = nil spells = {} function init() connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) end function terminate() disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil end function Spells.create(spellList) spells = spellList Spells.destroy() spellWindow = g_ui.displayUI('spells.otui') end function Spells.destroy() if spellWindow then spellWindow:destroy() spellWindow = nil selectedSpell = nil spells = {} end end function Spells.selectSpell() if table.empty(spells) then return end -- TODO end  
    As principais coisas que eu quero focar aqui são:
     
    as variáveis (spellWindow, selectedSpell e spells).
    e as funções (armazenamento de funções e discutir o que init e Terminate são necessários).
     
    O VARIÁVEL
     
     
    Variáveis dentro de um módulo em modo seguro não precisam ser localizadas com a palavra-chave local como elas estão dentro de seu próprio ambiente de módulo. Se o módulo estiver em modo seguro: false, então você precisará certificar-se de que você localize a variável e redefini-los dentro da função Terminate (que vamos discutir mais tarde).
     
    Dentro deste módulo de feitiço precisamos ter uma maneira de armazenar o objeto janela módulos, fazemos isso definindo a variável spellWindow que temos inicializado como nulo, mas que vamos configurar em breve. Nós também precisamos de uma maneira de conter o que o jogador selecionou o que significa que devemos armazenar uma referência para o spell de alguma forma usando a variável selectedSpell. Por último, mas não menos importante e provavelmente não duram tanto! Precisamos armazenar a lista de spells e fazer isso com a variável Spells.
     
    AS FUNÇÕES
     
     
    Funções muito como variáveis estão contidas em módulos de área restrita para que a localização pode variar dependendo de suas preferências. Se você não estiver usando um module sandboxed: true, em seguida, você precisará certificar-se de que você está localizando e armazenar funções corretamente. Eu pessoalmente gosto de usar uma tabela para armazenar minhas funções dentro para manter as coisas organizadas mais este é o lugar onde você vê spells = {}. Spells é uma tabela que eu estarei usando para armazenar todas as funções públicas de um módulo. Funções de módulo privado serão localizadas mesmo que não seja inteiramente necessário dentro de um módulo em modo seguro, eu prefiro declarar quando a função é privada através da palavra-chave local.
    Então, quais são as funções init () e Terminate () usado para?
    Como você já deve ter notado dentro dos feitiços .otmod código que você vai ver:
     
     
    @onLoad: init() @onUnLoad: terminate()  
    init()
     
    A função init é uma função que é chamada quando otclient tenta carregar o módulo registrado usando chamada de sinal OnLoad. Dentro desta função você deve estar inicializando todos os componentes que são exigidos pelo seu módulo. Como você pode ver dentro de spells.lua estamos chamando uma função dentro de init ():
     
    connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy })  
    terminate()
     
    A função Terminate é uma função que é chamada quando otclient tenta descarregar o módulo registrado usando a chamada de sinal OnUnload. Dentro desta função você deve estar destruindo e redefinir variáveis que precisam ser desmarcadas na terminação do módulo. Lembre-se de que nem todas as variáveis precisarão ser redefinidas, mas as referências de widget e a tabela de spells são todas necessárias para serem redefinidas. Como você pode ver dentro de feitiços. lua estamos chamando e definindo uma série de coisas dentro de terminate():
     
     
    disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil Afirmei anteriormente que chamamos a função Connect dentro init (). Agora que estamos encerrando o módulo precisamos desconectar os retornos de chamada do conjunto de chamadas de sinal. Isto é feito através da função de desconexão (...).
    Com estas principais coisas cobertas você pode muito bem fazer o que você gosta dentro do módulo. Você pode com cuidado construir e craft o para inserir o que você precisa. Siga através do tutorial para estender o seu conhecimento de criação de módulos e também trabalhar dentro do ambiente do módulo otclients.
     
    COMO TESTAR EFICAZMENTE OS SEUS MÓDULOS
     
    Testar seus módulos será uma parte importante de fazê-los trabalhar da maneira que você precisa. Módulos de teste pode, por vezes, ser um pouco de um desafio para que haja algumas coisas que você precisa saber, a fim de torná-lo mais fácil para você.
     
    RECARREGANDO OS SEUS MÓDULOS
     
     
    Você pode recarregar seus módulos no cliente usando o Gerenciador módulo módulo Gerenciador módulo selecione seu módulo e clique em recarregar. Esteja ciente de que o seu init () e terminate (), funções serão chamados em recarregar por isso, se você não está inicializando e destruindo coisas particulares corretamente, então você pode obter erros no recarregamento.
    Nota importante: existem algumas alterações raras que podem não ser recarregadas corretamente com o gestor de módulos, coisas como .otui @ alterações (por exemplo, @onClick: edits). Pode haver algumas outras mudanças que não recarregam corretamente, mas para a maior parte ele funciona bem. Se você se encontrar com erros estranhos tentou fazer um reinício completo do cliente para garantir a sua não uma emissão de recarga.
     
    COMANDOS DE TESTE ÚTEIS
    Há uma seleção de comandos úteis que podem ser úteis para testes encontrados no arquivo de script/modules/client_terminal/Commands.lua. Aqui está uma lista dos comandos atuais que você pode inserir no terminal do cliente:
    dumpWidgets(widget, level) drawDebugBoxes(enable) hideMap() showMap() debugContainersItems() debugPosition(enable) autoReloadModule(name)  
    Você pode adicionar novos comandos ao seu diretório/mod, a fim de evitar fazer alterações no arquivo de comando modules.
    Você deve sempre assegurar-se de que seus módulos estejam testados completamente antes de criar solicitações da tração ao repositório principal do git. Estas dicas podem ser muito úteis nas fases de teste!
    ALGUMAS ORIENTAÇÕES ÚTEIS
     
    Ao desenvolver seu módulo seja certo dar-lhe lotes do pensamento sobre como está indo trabalhar e mesmo se você pode fundir a característica a um módulo já existente. Também funções globais e variáveis constantes podem ser encontradas nos diretórios modules/corelib e modules/gamelib. Por favor, dê uma cuidadosa consideração para o que você colocar nesses arquivos e se possível tentar evitá-lo. Siga a regra  "manter tudo para sua própria causa, e apenas essa causa ".
     
    FIM DO TÓPICO =]
     
    CRÉDITOS:
    edubart
    BeniS
    Eu(pela tradução e adaptação para o português)
     
     
     
     
  14. Downvote
    Sammy deu reputação a Dipirona SZ em [POKÉMON] BASE LENDA (2019) - [TOP]   
    Galera, estou postando esse servidor, pois me roubaram, e para que o retardado não saia vendendo ela, ou tirando aproveitos, irei postar ela aqui.

    [TÓPICO]
    Informações;
    Prints;
    Download;
    Scan;
    Créditos;        

    INFORMAÇÕES:
    PRINTS:
    https://imgur.com/a/X1Oo9lU

    Download:
    https://mega.nz/?fbclid=IwAR30ubPlZMnSTLNvbxU_iINxhGEcg5AIBi23_hGXNYLN_Ok6rNFN8QgksHs#!9r41CB4B!zBWvrUU6BsMvql2myYom53ctSHEVjT9t37mjTM6jP7Q

    Scan: 
    Sem tempo para postar, e também não sei fazer, se alguém puder fazer, eu adiciono aqui.

    Créditos:

    To muito triste em ter que fazer isso, mas é isso...
    Ao invés do cara ajudar a comunidade, ele suja mais ela rsrs...
  15. Upvote
    Sammy deu reputação a Tungs em [OPEN-SOURCE] PokeXCrazy   
    Olá Ekztibianos para me despedir de vocês e dessa comunidade estou trazendo meu ato final que é postar essa base ^_^ espero que gostem, desta vez é completa e com o mapa haha❤️ 
     

     
     

     
     

     
     

     
  16. Upvote
    Sammy deu reputação a Jakson Souza em Entra nesse tópico, e ganhe um doce.   
    recrutamente finalizado.
  17. Thanks
    Sammy recebeu reputação de emersondevidoliveira em One Piece Sprites   
    Opa pessoal tranquilo ? acabei por vasculhar um pendrive que tinha e acabei achando essa pasta com algumas sprites interessantes sobre One Piece, caso alguém esteja interessado vou estar disponibilizando as mesmas.
     
    Alguns Prints das sprites:
     
    Download: One Piece Sprites.rar
     
    Não esqueça do seu Rep++ =]
  18. Upvote
    Sammy deu reputação a Gengo em [OtClient] Pokemon Health Info   
    Eai galera do xtibia, hoje venho por meio desse post trazer para vocês uma pokebar, sei que já existe porém este é um pouco diferente do que costumamos ver.
    Antes de tudo faça o download do arquivo e vamos a configuração.
     
    OBS: Seu otClient precisa ter opcodes para poder funcionar.
     
    1) Coloque o module na pasta do seu otClient em /modules.
    2) No arquivo do seu servidor em data/lib/106-mainfunctions.lua coloque o seguinte trecho de código:
    3) Ainda no mesmo arquivo 106-mainfunctions.lua procure pela função doOTCSendPokemonHealth e substitua ela pelo trecho a seguir:
    4) Caso seu servidor não tenha a função table.serialize, adicione ela no arquivo do servidor em data/lib/012-table.lua:
    5) No arquivo do seu servidor data/creaturescripts/script/login.lua coloque o seguinte trecho no final do onLogin antes do return
    sendPokeOTC(cid) 6) Abrindo o arquivo do npc Nurse Joy em especifico o script.lua, procure o trecho de codigo: 
    doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax) Substitui por esse:
    doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax.."|"..getItemAttribute(mypb.uid, "identificador")) E no finalzinho da função do mesmo arquivo lua, antes do end, coloque o seguinte codigo:
    for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallMaxHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end 7) E por ultimo no arquivo opcodes.lua localizado na pasta data/creaturescript/script/opcodes.lua procure por:
    if buffer == "refresh" then doOTCSendPokemonHealth(cid) end E substitui por:
    if buffer == "refresh" then for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end end  
    Bom é basicamente isso, a unica coisa que estará faltando e que vou deixar para vocês fazerem é quando o player colocar ou retirar outro pokemon na bag fazer com que o servidor chame a função sendPokeOTC(cid), não estarei ensinando essa parte pq o meu é bem diferente e não adiantaria eu mostrar como se faz, mas também não é um bixo de 7 cabeças fazer essa parte.
     
    Fazendo esse tutorial certinho e tudo mais, ficará assim no game:

     
    Espero que gostem e que entendam, desculpe-me por qualquer coisa não sou muito de explicar e ficar escrevendo tutorial.
     
    Download do arquivo:
    https://www.mediafire.com/file/p8wch1fogveh48e/game_poke.rar/file
    Scan do arquivo:
    https://www.virustotal.com/#/file/d88b33ad27520ddd28afdaeb7d17af26805fa3bf39400f1a30813a0da3ca1695/detection
     
  19. Thanks
    Sammy recebeu reputação de rafaelzera em [DXP] [Button] Autoloot Com Imagem ao pegar o Loot   
    Pior que perdi a source junto com uma pancada de arquivo aqui no Pc =/, sinto muito não poder ajudar amigo..
  20. Upvote
    Sammy recebeu reputação de jpploko em [OtClient] Tutorial sobre Módulos   
    Olá pessoal, vi esse tutorial em um site gringo sobre a parte básica dos módulos de um otclient, que pode auxiliar muita gente que quiser explorar ainda mais o Otclient, já que essa área eu não vejo tanto conteúdo no Tibia Br, como sempre os créditos estarão ao final do tópico...
     
     
    Então, para começar as coisas que eu vou estar cobrindo:
    - a criação de módulos.
    - repassar alguns dos fundamentos para trabalhar no ambiente otclients lua. como testar eficientemente seus módulos e scripts.
     
     
    Para este tutorial você vai precisar:

    - Um editor de texto de algum tipo (eu gosto de usar o Notepad + +)
    também seria bom ter conhecimentos básicos de lua e habilidades de programação (mas isso é algo que você pode pegar rapidamente praticando).
     
    Agora que já temos tudo o que precisamos, podemos começar !
     
    CRIANDO O NOVO MÓDULO
     
     
    Otclient front-end funciona fora o que chamamos de ' módulos '. Os módulos são uma forma de implementar eficazmente os recursos do cliente separados uns dos outros. Se você está considerando a criação de um novo módulo, é aconselhável que você pense sobre o que o recurso pode ser e se ele iria caber em um módulo já existente (provavelmente um módulo game_xxx), os módulos são encontrados no diretório/modules do otclient.
    Seus são atualmente dois módulo ' ambientes ': jogo e cliente. Os módulos de jogo usam o prefixo game_ e devem estar refletindo recursos que se relacionam especificamente com os recursos do ambiente do jogador ou do jogo por exemplo game_outfit ou game_mounts são ambos os recursos que são usados no ambiente de jogo. Os módulos de cliente usam o prefixo client_ e devem estar refletindo recursos que se relacionam especificamente com o cliente e o cliente somente. Ele não tem nada a ver com o ambiente de jogo de jogadores, por exemplo, client_options e client_skins estão diretamente relacionados com a funcionalidade de clientes. Isso pode ser um pouco difícil de Visualizar para agora, mas você vai pegar isso mais tarde.
    Então, agora que você tem uma compreensão do que é um módulo e um pouco como eles funcionam, vamos em frente e começar a criar um novo.
     
    COMEÇANDO DO ZERO
     
     
    Nós estamos indo para criar um novo módulo a partir do zero, a primeira coisa que você precisa fazer é criar o diretório modules. O nome do diretório deve refletir o recurso global em si, por isso vamos chamar o nosso game_spells para começar a criar um novo módulo que irá listar todos os players spells com suas informações apropriadas. Nós não estaremos criando este módulo inteiro, mas podemos começar a ver como tudo funciona.
     
    Crie um novo diretório chamado game_spells dentro do diretório/Modules clientes.

    Dentro de game_spells precisamos começar adicionando 3 novos arquivos base: Spells. lua, feitiços. otmod e Spells. otui para a lógica de módulos, registro e design de interface.
     
    Criar 3 novos arquivos base spells.lua, spells.otmod e spells.otui dentro/modules/game_spells
    Você já deve saber o que o arquivo. lua representa, mas quais são essas novas extensões. otmod e. otui?
     
    .otmod
     
    .otmod é o arquivo que é usado para inicializar o módulo dentro do otclient, é como um registro em que ele irá registrar o módulo para uso dentro do cliente. Este arquivo geralmente tem uma estrutura como esta (eu adicionei comentários, se você copiar este código não se esqueça de remover o--comments):
    Module nome: game_spells -- nome do módulo (geralmente o mesmo nome que o diretório modules. descrição: Exibir a player spell com sua informação apropriada--descrição do módulo que explica o que é. autor: Sammy -- nomes dos criadores e colaboradores do módulo. website: www.otclient.info -- Se você tem um site externo que você pode ligá-lo aqui. sandboxed: true--sandbox é uma maneira de conter a variável modules e funções para que você não tenha conflitos entre outros módulos. scripts: [ spells.lua ] -- Os scripts são a lógica por trás do módulo onde todas as funções estão contidas. @onLoad: init() -- Este é o lugar onde você define a função de inicialização do módulo (nós vamos cobrir isso mais tarde). @onUnload: terminate() -- Este é o lugar onde você define a função de término do módulo (vamos cobrir isso mais tarde) Copie o código .otmod acima em seu arquivo spells.otmod e remova os comentários.
     
    .otui
     
    .otui é o arquivo que é usado para criar a interface de usuário modules. Esta é uma linguagem de estilo feito encomenda projetado especificamente para otclient chamado OTML, ele se sente muito como a formatação CSS para aqueles de vocês que têm experiência em webdesign. A estrutura típica de um arquivo .otui se parece com isso (este é o arquivo base iniciar, não concluído):
     
    MainWindow !text: tr('Spells') size: 160 450 @onEnter: modules.game_spells.destroy() @onEscape: modules.game_spells.destroy() Label id: spellsLabel !text: tr('Player Spells') width: 130 anchors.top: prev.top anchors.left: prev.left margin-top: 5 margin-left: 5 MainWindow: 
    Esta é a janela que estaremos usando para a interface da Spell List, é uma classe de janela padrão derivado de/client_skins/default/styles/windows.otui styling file estende janela que estende UIWindow. UIWindow é uma classe base dessa inicialização, ele controla a funcionalidade widgets e comportamentos.
     
    !text: Este é o texto que é exibido na seção de cabeçalho MainWindow
    size:  isso é usado para definir a largura/altura da mainwindow.
    @onEnter: configura o retorno de chamada de widgets de MainWindow OnEnter (função que será chamada quando você pressiona a tecla Enter).
    @onEscape: configura os widgets de retorno de chamada de MainWindow (função que será chamado quando você pressiona a tecla de escape).
     
    Label:
    Este é um widget de etiquetas que é usado para exibir texto na maioria dos casos. É um derivado da classe UILabel.
     
    id: Este é o ID que esta mais comum será alias-se com para referenciar usando funções como widget: getChildById ( "spellsLabel ")
    !text: Este é o texto que será exibido pelo widget UILabel.
    width: Este é o tamanho da largura do Label
    anchors. top/bottom/left/right: São onde a parte superior/inferior/esquerda/direita do Label devem ser posicionada.
    margin-top/bottom/left/right: São deslocamentos para as anchors, eles permitirão que você afinar o posicionamento dos componentes da interface do usuário.
     
    Esta é apenas a superfície de .otui formatação e styling, há muito mais que pode ser feito, mas a ideia principal é que você obter uma compreensão sobre como a hierarquia dos componentes da interface do usuário para exibir corretamente, etc as convenções de styling OTML forçá-lo a manter o projeto de um interface separado para o código lógico, por exemplo, o .lua
     
    Copie o código otui acima e coloque em spells.otui
     
    Agora que entendemos qual arquivo é usado para registrar o módulo e que arquivo (s) são usados para construir os módulos da interface do usuário, podemos aprofundar o código de lógica de módulos e tentar entender como tudo funciona em conjunto. O arquivo spells.lua é o arquivo que contém o código de lógica de módulos. É aqui que os spells serão preenchidos e o manuseio da seleção ortográfica e do display ortográfico serão controlados.
     
    Abra o arquivo spells.lua e copie o seguinte código base para começar.
     
    Nós estaremos escolhendo aparte este código para ajudar a entendê-lo melhor. Eu fui em frente e comecei o código base para você, aqui está:
     
    Spells = {} spellWindow = nil selectedSpell = nil spells = {} function init() connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) end function terminate() disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil end function Spells.create(spellList) spells = spellList Spells.destroy() spellWindow = g_ui.displayUI('spells.otui') end function Spells.destroy() if spellWindow then spellWindow:destroy() spellWindow = nil selectedSpell = nil spells = {} end end function Spells.selectSpell() if table.empty(spells) then return end -- TODO end  
    As principais coisas que eu quero focar aqui são:
     
    as variáveis (spellWindow, selectedSpell e spells).
    e as funções (armazenamento de funções e discutir o que init e Terminate são necessários).
     
    O VARIÁVEL
     
     
    Variáveis dentro de um módulo em modo seguro não precisam ser localizadas com a palavra-chave local como elas estão dentro de seu próprio ambiente de módulo. Se o módulo estiver em modo seguro: false, então você precisará certificar-se de que você localize a variável e redefini-los dentro da função Terminate (que vamos discutir mais tarde).
     
    Dentro deste módulo de feitiço precisamos ter uma maneira de armazenar o objeto janela módulos, fazemos isso definindo a variável spellWindow que temos inicializado como nulo, mas que vamos configurar em breve. Nós também precisamos de uma maneira de conter o que o jogador selecionou o que significa que devemos armazenar uma referência para o spell de alguma forma usando a variável selectedSpell. Por último, mas não menos importante e provavelmente não duram tanto! Precisamos armazenar a lista de spells e fazer isso com a variável Spells.
     
    AS FUNÇÕES
     
     
    Funções muito como variáveis estão contidas em módulos de área restrita para que a localização pode variar dependendo de suas preferências. Se você não estiver usando um module sandboxed: true, em seguida, você precisará certificar-se de que você está localizando e armazenar funções corretamente. Eu pessoalmente gosto de usar uma tabela para armazenar minhas funções dentro para manter as coisas organizadas mais este é o lugar onde você vê spells = {}. Spells é uma tabela que eu estarei usando para armazenar todas as funções públicas de um módulo. Funções de módulo privado serão localizadas mesmo que não seja inteiramente necessário dentro de um módulo em modo seguro, eu prefiro declarar quando a função é privada através da palavra-chave local.
    Então, quais são as funções init () e Terminate () usado para?
    Como você já deve ter notado dentro dos feitiços .otmod código que você vai ver:
     
     
    @onLoad: init() @onUnLoad: terminate()  
    init()
     
    A função init é uma função que é chamada quando otclient tenta carregar o módulo registrado usando chamada de sinal OnLoad. Dentro desta função você deve estar inicializando todos os componentes que são exigidos pelo seu módulo. Como você pode ver dentro de spells.lua estamos chamando uma função dentro de init ():
     
    connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy })  
    terminate()
     
    A função Terminate é uma função que é chamada quando otclient tenta descarregar o módulo registrado usando a chamada de sinal OnUnload. Dentro desta função você deve estar destruindo e redefinir variáveis que precisam ser desmarcadas na terminação do módulo. Lembre-se de que nem todas as variáveis precisarão ser redefinidas, mas as referências de widget e a tabela de spells são todas necessárias para serem redefinidas. Como você pode ver dentro de feitiços. lua estamos chamando e definindo uma série de coisas dentro de terminate():
     
     
    disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil Afirmei anteriormente que chamamos a função Connect dentro init (). Agora que estamos encerrando o módulo precisamos desconectar os retornos de chamada do conjunto de chamadas de sinal. Isto é feito através da função de desconexão (...).
    Com estas principais coisas cobertas você pode muito bem fazer o que você gosta dentro do módulo. Você pode com cuidado construir e craft o para inserir o que você precisa. Siga através do tutorial para estender o seu conhecimento de criação de módulos e também trabalhar dentro do ambiente do módulo otclients.
     
    COMO TESTAR EFICAZMENTE OS SEUS MÓDULOS
     
    Testar seus módulos será uma parte importante de fazê-los trabalhar da maneira que você precisa. Módulos de teste pode, por vezes, ser um pouco de um desafio para que haja algumas coisas que você precisa saber, a fim de torná-lo mais fácil para você.
     
    RECARREGANDO OS SEUS MÓDULOS
     
     
    Você pode recarregar seus módulos no cliente usando o Gerenciador módulo módulo Gerenciador módulo selecione seu módulo e clique em recarregar. Esteja ciente de que o seu init () e terminate (), funções serão chamados em recarregar por isso, se você não está inicializando e destruindo coisas particulares corretamente, então você pode obter erros no recarregamento.
    Nota importante: existem algumas alterações raras que podem não ser recarregadas corretamente com o gestor de módulos, coisas como .otui @ alterações (por exemplo, @onClick: edits). Pode haver algumas outras mudanças que não recarregam corretamente, mas para a maior parte ele funciona bem. Se você se encontrar com erros estranhos tentou fazer um reinício completo do cliente para garantir a sua não uma emissão de recarga.
     
    COMANDOS DE TESTE ÚTEIS
    Há uma seleção de comandos úteis que podem ser úteis para testes encontrados no arquivo de script/modules/client_terminal/Commands.lua. Aqui está uma lista dos comandos atuais que você pode inserir no terminal do cliente:
    dumpWidgets(widget, level) drawDebugBoxes(enable) hideMap() showMap() debugContainersItems() debugPosition(enable) autoReloadModule(name)  
    Você pode adicionar novos comandos ao seu diretório/mod, a fim de evitar fazer alterações no arquivo de comando modules.
    Você deve sempre assegurar-se de que seus módulos estejam testados completamente antes de criar solicitações da tração ao repositório principal do git. Estas dicas podem ser muito úteis nas fases de teste!
    ALGUMAS ORIENTAÇÕES ÚTEIS
     
    Ao desenvolver seu módulo seja certo dar-lhe lotes do pensamento sobre como está indo trabalhar e mesmo se você pode fundir a característica a um módulo já existente. Também funções globais e variáveis constantes podem ser encontradas nos diretórios modules/corelib e modules/gamelib. Por favor, dê uma cuidadosa consideração para o que você colocar nesses arquivos e se possível tentar evitá-lo. Siga a regra  "manter tudo para sua própria causa, e apenas essa causa ".
     
    FIM DO TÓPICO =]
     
    CRÉDITOS:
    edubart
    BeniS
    Eu(pela tradução e adaptação para o português)
     
     
     
     
  21. Upvote
    Sammy deu reputação a Nogard em Nogard Graphic Gallery   
  22. Thanks
    Sammy recebeu reputação de davinogfar em One Piece Sprites   
    Opa pessoal tranquilo ? acabei por vasculhar um pendrive que tinha e acabei achando essa pasta com algumas sprites interessantes sobre One Piece, caso alguém esteja interessado vou estar disponibilizando as mesmas.
     
    Alguns Prints das sprites:
     
    Download: One Piece Sprites.rar
     
    Não esqueça do seu Rep++ =]
  23. Upvote
    Sammy deu reputação a Benny em [MODERN AAC] PxG 2018 Layout   
    Algumas imagens:           obs: Não vou dar suporte, o site está aí, o template tá junto. obs2: vocês tem que usar esse modern que tá indo junto, tem alterações nas páginas.  obs3: não autorizo a postagem em outro fórum, grato   Link: Google Drive
  24. Upvote
    Sammy deu reputação a LeoTK em [NTO NS] Source 0.3.6 8.54 OTX Windows/Linux   
    Fala galera bom eu vi que é difícil achar uma source 0.3.6 sem bugs etc... então resolvi disponibilizar a source do meu servidor 0.3.6 8.54 
     
    1- Magic Effects e ShotyEffect Extendido
    2- Magic Effect até 700+ / Shoty Effect até 150 se não me engano
    3- Sistema de Dupla Empunhadura
    4- Tem a função doplayeropenchannel para abrir os chats ao logar
    5- Todos os danos de elementos estão configurado para o magiceffect 131 que no meu client é vazio
    6- Auto Stacking ao jogar item que se junta por quantidade ele junta automaticamente
    7- No Blocking Respawn o monstro da respawn mesmo tendo jogadores perto e com magic effect (não lembro o número do magic effect)
    8- Novo Elemento Wind Adicionado
     
    Bom é isso galera não consigo lembrar todas as modificações de cabeça o intuito é trazer uma source boa para iniciar o projeto de vocês 

    SCAN
    Linux Compile
    Tem um arquivo.txt que tem os códigos para compilar no linux lá tem o nome da biblioteca e o código
     
    Alerta!!!
    Windows Compile
    Use a pasta Dev-Cpp/test esqueça do conteúdo da pasta dev-cpp e use o projeto criado na pasta test a diferença é o parâmetro usado para compilar a source
    Software para compilar no windows
    Stian's Repack Dev-Cpp 0.2, 64bit
     
    obs: Não vou dar suporte com erros ou algo do tipo estou dispondo a source pra quem já sabe o que fazer
    obs: Caso tiver erros ou problemas abra um tópico na área de Suporte
     
    BY : Brunds 
    [NTO_NS]_Source_0.3.6_8.54.rar
  25. Upvote
    Sammy deu reputação a Benny em Layout website - Pokémon   
    Acabei de terminar mais um!
    Espero que seja do agrado de todos (= 

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...