Ir para conteúdo
Banner com Efeitos

abmauromacedo

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    abmauromacedo deu reputação a Anyur em Grama Básica   
    Faaala galera do TibiaKing, tudo certo com vocês? Estou aqui para postar a nossa primeira aula, feita por mim e pelo Brund! O Mapa foi elaborado pelo Brund e eu estarei elaborando o texto que vocês vão ler abaixo.
    O tutorial contém 10 imagens explicativas!


    Bom, para começar, o mais simples de tudo é colocar a grama (grass) no lugar, então, é só fazer o formato que você quiser!
    Isso você pode fazer tranquilamente pelo Terrain Palette!









    Esse foi o formato escolhido pelo Brund para fazer o tutorial. Agora, é bom deixar claro que toda nature tem algum rio passando perto ou o mar, em algum momento qualquer! E esse é o próximo passo!


    Coloca-se algumas bordas d'água e também água (IDs: 4644 a 4663). Tente colocar usando o Raw Palette do seu Remere's, e seguindo formatos não quadrados, isso é sempre importante!









    Agora, é sempre importante colocar terra (dirt), fazendo caminhos. Como você é um iniciante, você pode fazer essa parte pelo Terrain Palette e com Auto-Border. Porém, tente fazer formatos legais e também modificar um pouco as bordas, colocando bordas de grama (IDs: 4542 a 4553), vocês verão na imagem algumas diferenças.


    Faça esse caminho em pequenos bolinhos.







    Agora algo que vocês podem fazer também como adicional, é colocar, perto da água, chão de pedra, bordas de pedra (IDs: 6639 a 6650), assim como de pedra arenosa fina (IDs: 4596 a 4607).









    Você também pode incrementar um pouco as bordas que envolvem a terra (dirt), colocando a borda grossa de grama (IDs: 7653 a 7364) em cima de algumas normais.









    Agora vamos começar a detalhar de verdade!

    O primeiro e mais importante passo do detalhamento é colocar os arbustos (IDs: 2767 e 2768). Coloque sempre de 3 à 5 arbustos juntos e dê um espaçamento entre cada grupo de arbustos.


    Não coloque-os, em hipótese alguma, em cima da terra (dirt), pois nesse tipo de nature, a terra (dirt) sempre será caminho para o player!









    Agora você deverá colocar as árvores vivas (IDs: 2700 a 2708) e também, em remotas hipóteses, árvores mortas (IDs: 2709 a 2722)!


    Coloque sempre no máximo duas árvores juntas, e sempre perto dos arbustos! E também evite colocar árvores vivas que não sejam as verdes, as outras deixam o mapa feio!









    Agora é a parte que deixa o seu mapa de nature básica praticamente pronto!
    É a hora de preencher a maior parte da área verde com os tufos de grama (IDs: 6216 a 6219)!







    Agora é hora de colocar alguns detalhes menos úteis, porém importantes para o visual!
    Coloque pedras grandes, pequenas e também algumas plantas de swamp. Isso tudo eu aconselho que encontrem no Doodad Palette!







    Espero que gostem do Tutorial!
    Abraços!
  2. Gostei
    abmauromacedo deu reputação a Caronte em Como tirar imagens in-game decentes   
    Como tirar imagens in-game decentes.
    créditos: Daniel.
     
    Abra seu client e vá em: 
    Open Options:

     
    Graphics

     
    Advanced

     
    Don't Stretch/Shrink Game Window.


    Programa Pra tirar PRINTS recomendado!
    PRNTSCR.COM
    Basta baixar e apertar a tecla "Print Screen":

    Para melhorar!
    Um jeito da print sair perfeita, é escurecer o ambiente e utilizar itens de iluminação. Para isso, você pode esperar o ambiente ficar escuro ou utilizar este script: http://www.tibiaking.com/forum/topic/48074-tutorial-god-ambient-light/

     
    Itens de iluminação recomendados!
    Torch

    Frozen Starlight  

    Magic Light Wand

    Necromancer Shield

     


    ANTES!

     
     
    DEPOIS

     

     
     
  3. Gostei
    abmauromacedo deu reputação a FlameArcixt em Remeres Map Editor (3.3) Em grupo (LIVE)   
    ??
    A muito tempo eu procuro um Remere's map editor com a opção Live funcional (Mapear em grupo), no dia (28/02/2021) o membro @WooX  me apresentou esse Editor que possui essa opção funcional, hoje venho compartilhar aqui no Tibiaking, Mesmo que não seja relevante.
    ⛔ Não vou ensinar a instalação, pois é igual em todos os editor, e já existem vários tutoriais de instalação no TibiaKing. ⛔
     
    ? Passo 1: Baixando/Usando Radmin (Necessário para quem não consegue abrir as portas do roteador/modem) ?
    ? Passo 2: Hosteando uma partida no Remere's Map Editor ?
    ? Passo 3: Entrando na live de alguém ?
     Demonstração em ação (Ignorem a musica) 
    ? DEMONSTRAÇÂO ?
     
    ⚠️ DOWNLOAD REMERES MAP EDITOR 3.3: LINK ⚠️
    ⚠️ DOWNLOAD RADMIN: LINK ⚠️
     
     
     
  4. Curtir
    abmauromacedo deu reputação a Tibia Dr em Comandos rapidos RME   
    Ola pessoal, trousse todos os comandos rapidos que conheço do RME :
    Ctrl + Q = fecha o Remere's map editor
    Ctrl + W = deixa o floor a baixo invisível
    Ctrl + E = deixa o mapa invisível
    Ctrl + T = abre o editor de cidades (serve para editar o nome da cidade e aonde fica o templo “local onde o personagem renasce após a morte”)
    Ctrl + Y = vai para frente (ex: após usar Ctrl + Z)
    Ctrl + O = procurar para abrir um arquivo (open file)
    Ctrl + P = abre as propriedades do mapa
    Ctrl + S = salva o mapa
    Ctrl + F = procura itens (pela id ou nome)
    Ctrl + G = vai para o local escolhido (definido por: X/Y/Z
    Ctrl + Z = volta uma coisa
    Ctrl + C = copia o local selecionado
    Ctrl + V = cola o local selecionado (após usar Ctrl + C)
    Ctrl + N = cria um novo projeto
    Q = deixa o floor abaixo mais escuro
    W = abre palette de waypoints
    E = desativa visão de casa
    R = abre palette de RAW
    T = abre palette de Terrain
    I = abre palette de items
    O = marca em vermelho os locais onde o personagem não consegue passar
    S = aparece ou desaparece o Spawn time flame (fogo que faz monstros renascerem)
    D = abre palette doodad
    F = faz os animais desaparecerem
    G = Deixa objetos transparentes
    H = abre house palette
    J = abre o itens selecionado no RAW palette (usando id ou nome)
    C = abre palette de creatures
    V = marca em azul todos os detalhes do mapa
    M = abre o mini mapa de navegação


    Espero que não seja inutil, e tambem espero que gostem, vlw TibiaKing!
  5. Curtir
    abmauromacedo deu reputação a GabrielSapient em Launcher AutoUpdate C#   
    Galera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai:
     

     
    1. Download:
     
     
    • Download | • Scan

    2. Oque ele faz:
     
     
    • Verifica a existência da versão local na pasta do cliente;   • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão;   • Verifica arquivo .xml no servidor de atualização;   • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip);   • Extrai os arquivos .zip;   • Exclui os arquivos .zip após a extração;   • Arquiva a versão atualizada na pasta do cliente;   • E, finalmente, desbloqueia o botão "Start Game".     3. Como editar:     • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio:   Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações.
        • Agora vamos procurar por:   Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client.
     
    • \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\")
     

      • No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host:       OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja.       • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client:       Pronto! Agora e com o Site.     • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo:   • No arquivo version.txt colocamos a versão da nova atualização:   • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml.   4. Dica   • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client.     5. Créditos     Eu - Pelo launcher e pelo tutorial.
  6. Curtir
    abmauromacedo deu reputação a Cat em Encontrar itens e códigos escondidos no Mapa   
    Existe a possibilidade de você baixar um mapa com algumas "manhas", e alguns players sabendo disso podem se beneficiar em seu servidor. Por exemplo, uma bag com crystal coins, uma action numa parede que te teleporte até a sala de recompensas da POI, etc.
    Abaixo mostrarei como encontrar itens e códigos escondidos no mapa:
     
    No menu superior, Edit - Find Item (CTRL + F). No quadro de pesquisa CTRL + F (Search for item), selecione o item clique em OK, você será teleportado até a posição em que o item está e poderá removê-lo. Se ele estiver atrás de uma árvore por exemplo, você pode usar a tecla de atalho G (ghost loose items), que deixa as sprites transparentes.
     
     
     
     
    No menu superior, Edit - Find Unique / Action. Também é possível cadastrar action/unique ids e criar quests escondidas no mapa. Essa opção te mostra todos os uniqueids e actionids que existem. Clique nas opções da lista para ir até a posição.
     
     
     
    No menu superior, Edit - Find Containers Esta opção mostra os containers que existem no mapa. Chests e bookcases, bags e backpacks, corpses e coffins, boxes,  barrels e tudo que da pra clicar, abrir e pegar um item dentro. Clique nas opções da lista para ser teleportado até o item.
     

     
    ______________________________________________________
     
     
     
     
  7. Curtir
    abmauromacedo deu reputação a Guilherme em Salve uma vida!   
    Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
     
    Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
     
    Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.

    As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
     
    Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
     
    ----------------
    ATUALIZAÇÃO:
    Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.

     
  8. Curtir
    abmauromacedo deu reputação a Trick07 em Como criar um OTCLIENT próprio para servidor Poketibia!   
    Ninguém dá mais suport nesse fórum não ? Não é só o meu mas tem vários outros tópicos abertos não respondidos e quando não é isso tem alguém movendo para área correta e nada mais.
  9. Gostei
    abmauromacedo deu reputação a MaXwEllDeN em [Aula 8] while & repeat   
    << Aula 7 - Estruturas de Controle
    Essa aula foi escrita por um urso gordo Mock, todos os créditos pertencem à ele.
    While & repeat
    Aula 8
    Primeiramente desculpe a demora por essa aula, ficou meio aquela de; ah faz você, não faz você, anem faz você; Mais em fim estamos de volta com uma coisa indispensável em scripting que são os loops. Antes de tudo devo avisa que loops são perigosos, você pode travar seu servidor inteiro usando errado um loop.
    Os loops são usados para inicialmente quando temos varias funções juntas iguais, por exemplo, fazendo um jogador falar oi 10 vezes. Sem os loops você faria assim:
      doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) Com loops você resume isso a 4 linhas, e ainda pode fazer milhares de coisas com eles!
     
    While
    Sintaxe:
    Traduzindo:
    Então repare, enquanto algo for verdadeiro fazer... Ele vai executar o que estiver dentro do loop infinitas vezes até que o ((sentença)) seja falso ou você mande ele parar.
    Veja um exemplo:
      while getPlayerLevel(cid) < 10 do --- Enquanto o level for menor que 10 doPlayerAddExp(cid,1000) adcionar 1k de exp por vez end Viram? enquanto o nível for menor que 10 ele vai adicionar 1k de exp. Ele ira verificar, se for false (maior que 10) ele pula tudo e vai para o que estiver depois do end, se for true (for menor que 10) ele ira adicionar 1k de exp e depois ira verificar de novo, ele vai executar até que seja 10. Nessa hora que se tem que tomar cuidado, é na verificação. Se você colocar algo como: while 1 < 2 do, ele vai executar eternamente, até que vc encerre o programa forçadamente (ctrl-alt-del) ou reinicie o pc, ou então feche o programa no X
     
    Veja mais alguns exemplos:
      pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 while stack < 255 do pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 end Nesse exemplo declaramos uma pos e um numero, no loop verifica se o numero é menor que 255, se for a stackpos vai ser igual ao numero e depois ira verificar o que tem no mapa naquela posição, se tiver um item e nao for um player ou monster ele ira remover o item e no final adcionar +1 numero a nossa variavel stack, Nisso repare, ele ira executar 255 veze e ira deletar todos os items daquela posição imagina vc escrevendo isso 255 vezes sem o loop .
     
    Repeat
    Ao contrario do while ele é tudo ao contrario, a verificação é no fim e ele só repete se for false (contrario de while que é se for true)
    Sintaxe:
    Tradução:
    Bem nao seria até seria até que nao, pois se você usar: until true ele vai parar, e se usar: until false ele vai continuar. è ao contrario especificando mais. Diferente do while, o repeat ele executa primeiro o bloco para depois verificar, a verificação é no final. Tambem perigoso pois se usado incorretamente vc vai travar seu server tambem. Mais nao ligue pra isso todos que começam a mexer com loops sempre travam seus servidores no começo é normal.
    Veja o repeat em uso:
      local n = 0 repeat n = n+1 print('ola pessoas este é o loop numero:'..n) until n == 10 Ele ira executar 10 vezes, ele ira parar quando n for 10. Agora veja o exemplo de limpar o char adaptado para o repeat e veja a diferença (repare nos sinais de > e< )
      pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 repeat pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 until stack > 255 Viram? Ao invez da verificação ser no começo do loop ela é feita no final, entao ao final do lopp antes da verificação eu adciono +1 no valor da variavel stack, e ele so ira parar o loop assim que stack for maior que 255 (ou seja 256), entao assim que o script dentro do loop temrinar com o valor 256 ele ira parar o loop e prosseguir com o resto do script. break Antes de terminarmos irei falar rapidamente sobre o break. Ele é usado APENAS em loops e serve para "quebrar" o loop, acontece quando vc quer parar o loop sem a verificação, ou parar antes de algo.
     
    Veja:
      local parar = 0 while os.date('%S') == '45' do print('Verificando se agora são 45 segundos') if parar > 25 then break end print('Nem é agora são:'..os.date('%S')..' segundos') parar = para+1 end print('oi') Nesse caso criei um script para ver se agora são X horas X minutos e 45 segundos (não importa quantas horas e minutos só os segundos), e se depois de 25 verificações não for 45 segundos ele ira usar o break. Quando usado ele ira finalizar o loop e irar continuar a executar o script depois do loop, no caso o print('oi') ai e o resto do script (caso exista) Nesse caso criei um script para ver se agora são X horas X minutos e 45 segundos (não importa quantas horas e minutos só os segundos), e se depois de 25 verificações não for 45 segundos ele ira usar o break. Quando usado ele ira finalizar o loop e irar continuar a executar o script depois do loop, no caso o print('oi') ai e o resto do script (caso exista)
     
     
    Exercícios Faça seguinte:
     
    Crie um loop que execute enquanto o player estiver online, e enquanto ele estiver online colocar para kickar ele. Use o repeat para criar um script que solte 25 magic effects diferentes. Use qualquer loop para criar um script que mova um player por 5 sqms em direções aleatórios (o script deve parar com o break!) DESAFIO Crie um script que gere um loop infinito que só pare depois de 10 segundos de execução.
     
    Essa aula foi escrita por um urso gordo Mock, todos os créditos pertencem à ele.
    Aula 9 - Tabelas >> Respostas:
     
  10. Gostei
    abmauromacedo deu reputação a MaXwEllDeN em [Aula 6] Escopo   
    << Aula 5 - Variáveis e Comentários
    Escopo
    Aula 6
    Vimos na aula anterior sobre variáveis, e vimos também, bem superficialmente, como declarar variáveis como locais.
    Você pode se perguntar: "Qual a utilidade de uma variável local?", "O que ela tem de diferente de uma variável global?" ou "Se elas são tão importantes, por que quase ninguém usa?".
    Vamos por passos. Imagine a seguinte situação: "Você tem uma variável chamada var, e ela vale 1, mas em certo ponto do script você quer que ela receba o valor 2, execute alguma coisa (Como um print) e, depois que executar, ela retorne ao valor anterior (1).". Um dos modos de fazer isto é usando uma outra variável temporária para armazenar o valor antigo, ficando assim:
      var = 1 temp_var = var var = 2 print(var) var = temp_var temp_var = nil print(var) Veja que o código possui 7 linhas para fazer algo tão simples, por isso usar a variável temporária foi uma idéia de girico chamada carinhosamente de Gambiarra. Vamos fazer a mesma coisa que antes, mas agora do modo "correto":
      var = 1 do local var = 2 print(var) end print(var) Observe que agora, mesmo tendo ficado com quase o mesmo número de linhas, está mais "charmoso". Vamos agora entender o do e o end. O do é uma estrutura de controle (Abre/Fecha um Escopo) que abre um novo escopo. O end é uma estrutura de controle (Abre/Fecha um Escopo) que fecha o escopo mais alto. Você não deve ter entendido. Imagine que os escopos são como uma pirâmide, que começa inicialmente no andar 0 (Estes números são "imaginários", somente para facilitar o entendimento). As estruturas de controle tem o poder de construir ou destruir um degrau desta pirâmide, no caso o do constrói um andar e o end destrói o andar mais alto da pirâmide. Vamos tentar entender:
      -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. Importante: Você deve terminar no andar que começou, ou seja, no andar 0. Vamos ver o mesmo código um pouco maior:
      -- Estamos no andar 0. do -- Construímos um andar. Agora estamos no andar 1. do -- Construímos mais um andar. Agora estamos no andar 2. do -- Construímos mais um andar. Agora estamos no andar 3. end -- Destruímos o andar 3 e voltamos para o 2. end -- Destruímos o andar 2 e voltamos para o 1. end -- Destruímos o andar 1 e voltamos para o 0. -- Estamos no andar 0. A definição ideal para escopo (Em Lua) seria: Até onde as variáveis locais são alcançáveis. Isso porque se você estiver no andar 1 e tiver declarado uma variável no andar 2, quando o andar 2 tiver sido destuido pelo end, a variável será apagada e você não poderá mais chamá-la no andar 1, embora você possa chamar variáveis do andar 1 se estiver no andar 2. Se esta variável existir no andar 1 e no 2, vai sempre pegar a que estiver mais perto (No caso, a do andar 2). Se existir uma local alcançável e uma global, sempre pegará a local ao invés da global. A global só será pega se não houver nenhuma local alcançável. Você pode declarar uma variável local em um andar e modificar seu valor em outro escopo. Esta é uma tática muito útil:
      var = 1 do local var do var = 2 end do print(var) end end print(var) Preste bastante atenção quanto à isto:
      var = 1 do do local var = 2 end do print(var) end end Se você está pensando que o valor escrito será 2, está muito enganado. A variável local "var" do primeiro andar 2 será apagada assim que o end destruir o andar, então o valor escrito será 1. Essa "pegadinha" pode frustrar vocês, então prestem atenção. Vale lembrar que, como as funções são armazenadas em variáveis, elas também podem ser locais:
      teste = function() end -- Variável Global function teste() end -- Variável Global local teste = function() end -- Variável Local local function teste() end -- Variável Local OBS: Toda Estrutura de Controle deve terminar com o end. São estruturas de controle:
    do function while repeat if OBS: O repeat é um caso especial e não usa end para finalizar o escopo. Ele usa o until. Veremos as 4 últimas em aulas futuras. Exercício Descubra o que acontece em cada um dos casos e por quê:
      var = 1 local var = 2 print(var)   var = 1 do local var = 2 end print(var)   var = 1 local var do var = 2 end print(var)   var = 1 local var = 2 do print(var) end   var = 1 do local var = 2 do var = 3 end print(var) end Aula escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
    Aula 7 - Estruturas de Controle >>
  11. Gostei
    abmauromacedo deu reputação a Wend em [OLD/OTC] Aumentado o Limite de Sprites   
    Oiie Galerinha do TK   
     
    Clientes com versões anteriores à 9.60 têm um limite de sprites de 65.535. Parece muito, mas logo esse limite é atingido e ficamos impossibilitados de adicionar novos objetos para o servidor/cliente a não ser substituindo alguns sprites. Esse tutorial pretende ensinar como configurar as principais ferramentas para aumentar o limite. A versão utilizada no tutorial foi a 8.60.
     

     
    Conhecimentos Necessários:
    XML
    Básico nas ferramentas utilizadas.
     

     
    Ferramentas Utilizadas:

    Object Builder     (edita os arquivos dat e spr do cliente) >> Para baixar o programa clique no Nome dele *--*
    iTemEditor     (edita o arquivo otb, que contém os itens usados no servidor) >> Para baixar o programa clique no Nome dele *--*
    OTclient 0.6.5.
    Um programa para abrir arquivos LUA.
    Remere's Map Editor.
     

     
    Compilando os Arquivos Estendidos:

    1. Abra seus arquivos "spr" e "dat" no Object Builder.
    2. Compile os arquivos com a opção extended selecionada.

    Obs: Uma vez compilado estendido, a opção extended deverá estar sempre selecionada tanto ao abrir, quanto ao compilar.
     

     
    Configurando o ItemEditor:

    1. Abra o itemEditor, vai em File/ Preferences 
    2. clique em Browse e escolha o local onde está seu Arquivos "Dat" e "Spr"
    3. Marque a Opção Extender 

     

     
    Configurando OTClient:

    1. Abra o arquivo things.lua encontrado em modules/game_things
    2. Adicione esta linha de código na função load:


    function load()   local version = g_game.getClientVersion()     g_game.enableFeature(GameSpritesU32) -- Linha Adicionada     local datPath, sprPath 3.Adicione uma cópia dos arquivos dat e spr estendidos na pasta data/things.
     

     
    Remere's Map Editor :

    Infelizmente o RME não tem suporte pra arquivos estendidos.
    A solução mais viável é adicionar uma versão 9.60 junto a versão do seu cliente e compilar os arquivos como 9.60 especialmente para o RME. A versão do RME deve ser 2.2 ou superior.

    - Compile na sua versão para usar no cliente e no ItemEditor.
    - Compile na versão 9.60 numa pasta separada para usar no RME.

    Adicionando a versão:

    1. Vá à pasta de instalação do RME e abra o arquivo clients.xml, encontrado na pasta data.
    2. Procure a tag do seu cliente e adicione uma linha para versão 9.6


    <client name="8.60" otb="8.60" visible="true" data_directory="860">    <otbm version="3"/>    <extensions from="8.20 - 8.31"/>    <data datversion="8.6" sprversion="7.0" dat="0x4C2C7993" spr="0x4C220594"/>    <data datversion="8.6" sprversion="7.0" dat="0x4C6A4CBC" spr="0x4C63F145"/>    <data datversion="9.6" sprversion="9.6" dat="0x4FFA74CC" spr="0x4FFA74F9"/> <!-- Versão Extendida --> </client> 3. Compile seus arquivos em uma pasta separada com a versão 9.60.

     
     
     
    4. Na versão utilizada, configure o RME para a pasta onde se encontra os arquivos compilados como 9.60
     
     
     

     

     
    Perguntas Frequentes:
     
    P: Qual o novo limite de sprites após ser estendido?
    R: 4.294.967.295
     
    P: Depois que compilar estendido, pode ser usando no cliente da Cip?
    R: Não! Seria preciso modificar o cliente para que consiga ler os arquivos.

    P: Posso usar o dat editor para modificar os arquivos depois?
    R: O ObjectBuilder é um dat/spr editor, mas se você quer usar outro editor, é pouco provável que funcione. Não custa tentar.
     


     
    Créditos:: 


    EdMignari e sua Equipe
  12. Curtir
    Essa modificação permite que ao passar o mouse sobre um item, apareça uma descrição do item. Não tem como causar lag no servidor nem no cliente, pois carrega as informações dentro do arquivo na TAG itemsList
     
    Vai em otclient/modules/game_interface/widgets e abra o arquivo uiitem.lua
    Procure por 
    function UIItem:onHoverChange(hovered)
      UIWidget.onHoverChange(self, hovered)
     
    Salte uma linha e coloque o código abaixo
  13. Obrigado
    abmauromacedo deu reputação a MaXwEllDeN em [Aula 3] Primeiros Passos   
    << Aula 2 - Lógica da programação
     
     
     
     
    Primeiros Passos
     
     
     
     
    Aula 3
     
     
     
    Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
     
    As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
     
     
    Editores + Interpretadores:
    SciTE Scintilla [Avançado] OTScript Live! [Recomendado]  
    Editores:
     
    Notepad++  
    Interpretadores:
     
    Lua [Oficial]  
    Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
     
    Testando seus scripts!
    No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
     
    Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
     
    Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
     
     
      print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...  (ou não )
     
     
    O que o script fez? o0
     
    Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes.
     
    Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções.
     
      O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela.   Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!".   É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito.     OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta.   Os parâmetros são simplesmente o conjunto de todos os argumentos.   OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas!     Tipos de valores!   Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores.   OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)...       Numbers   Como o nome diz, numbers são números, não há muito o que falar sobre eles...   Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta.
     
    Strings  
    As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são:
     
    Apóstrofo: Começa com ' e termina com '.
    Aspas: Começa com " e termina com ".
    Colchete-Colchete: Começa com [[ e termina com ]].
    Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==].
     
    As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro.
     
    Exemplo:
    print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number.
    "1" << Isto é uma string.
     
    Booleanos  
    Os booleanos podem assumir apenas dois valores: true e false.
    true: Valor verdadeiro.
    false: Valor falso.
     
    OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora...
     
    Exemplo:
      print(true) print(false) print(nil)  
     
    Functions  
    Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções.
     
     
    Exemplo:
      print(function() end) OBS: Não se preocupe com isso ainda!
     
    Tables ou Arrays  
    São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice).
     
    Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave).
     
    Exemplo:
    print({})  
    Userdata  
    Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles.
     
     
    Nil  
    Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo.
     
    Exemplo:
    print(nil)  
    As funções retornam!
     
    Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor.
      Exemplo: print(type(1))  
     
    O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
     
     
    Exercícios:
    Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
     
     
    Resposta:
     
     
     
     
    Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
     
     
     
     
     
     
    Aula 4 - Operadores e Bibliotecas >>
  14. Obrigado
    abmauromacedo deu reputação a MaXwEllDeN em [Aula 2] Lógica da Programaçao   
    << Aula 1 - Introdução
     
     
     
     
    Lógica da Programação
    Aula 2
     
     
     
     
    O que é a Lógica da Programação?
    Bem, tudo o que é escrito em alguma linguagem de programação deve seguir uma lógica para poder funcionar. Vamos pegar um exemplo simples e curto: Um script de SD. (Sudden Death Rune)
     
    Quando o script de SD for chamado (Alguém usou a SD), ela segue passos básicos, que é basicamente a execução dela. Primeiro o script vai verificar se quem usou a SD possui nível, magic level, etc... suficiente para poder usar a SD. Se não possuir opa! Ela vai enviar uma mensagem de erro ao jogador, um efeito de fumaça e vai encerrar a execução. Caso contrário: se for um jogador com todos os requerimentos básicos para usar uma SD, então o script vai verificar se o alvo é um Player ou Monstro. Se não for vai enviar uma mensagem de erro, efeito, e vai parar de executar. Se for um monstro ou player, então o script fará um efeito da SD atingindo o alvo, toda aquela piromancia louca, e então vai tirar o devido dano do jogador.
     
    Um pouco cansativo de ler tudo isso, mas observe o exemplo abaixo:
     
     
      Quando uma SD for usada, então faça: Verifique se o jogador que usou a SD possui nível igual ou maior que 45, e se possui nível mágico maior ou igual a 15. Se possuir, faça: Se o alvo da SD for um Monstro ou Jogador, então faça: Calcule o dano que causará ao alvo. Remova uma carga da SD. Execute o efeito de SD. Calcule o dano que causará ao alvo e execute-o no alvo, tirando a vida dele ou mana, no caso de o alvo estiver usando o Magic Shield (Utamo Vita). Mas se o alvo da SD não for um Monstro ou Jogador, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o alvo da SD é um Monstro ou Jogador, ou nenhum dos dois. Mas se o jogador não possuir estes requerimentos, então faça: Envie uma mensagem de erro ao jogador. Envie um efeito de fumaça na posição do jogador. Aqui termina a verificação se o jogador possui ou não os requerimentos. Aqui termina a execução da SD. Agora, depois deste algoritmo, talvez tenha ficado mais claro como os programas de computador funcionam. Tudo não passa de um processo lógico, onde a linguagem de programação só serve como uma "máscara" para que o programador escreva o código seguindo esta lógica, por isso é ultra importante saber a lógica da programação antes de começar a programar. O que é um Algoritmo? O "código" que eu escrevi acima (Dentro da caixa de texto) representando o uso da SD foi um algoritmo. Os algoritmos são formas de representar a lógica seguida pelo programa. São passos que o programa segue para atingir determinado objetivo ou em outras palavras, completar uma tarefa (No caso da SD, matar ou não o alvo, ou enviar uma mensagem de erro). Um exemplo de algoritmo são as operações matemáticas, como somar, dividir, multiplicar, subtrair... Quando você soma 2 mais 2, você está executando um algoritmo para ele atingir o objetivo (O resultado!!), que é 4. Um programa ou script é basicamente a escrita dos algoritmos em uma linguagem de programação que é executada pelo computador de forma lógica.
     
    Esta aula foi curta pois eu prefiro lhes ensinar as estruturas lógicas conforme ensino as mesmas em Lua, assim trabalhando a lógica e Lua ao mesmo tempo. Primeiro ensino como funciona a estrutura na Lógica e depois ensino como aplicar em Lua.
     
    Exercícios-Tarefa:
     
    1. Monte o algoritmo de um script de "Shovel (Pá)".
    2. Monte o algoritmo de um script de "Pedra que troca sexo".
    3. Monte o algoritmo de "Ir ao cinema".
    4. Monte o algoritmo de "Fazer bolo".
     
     
     
    Respostas: Só abra depois de ter tentado resolver os exercícios!
     
    Exercício 1:
     
     
     
    Exercício 2:
     
     
    Exercício 3:
     
     
    Exercício 4:
     
     
     
    OBS: Nota-se que já fiquei cansado nas respostas do exercício 3 e 4... 
     
    Aqui só serão aceitas dúvidas ou reporte de erros. Qualquer coisa que não se encaixe nesta descrição será apagado sem aviso.
     
    Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
     
     
    Aula 3 - Primeiros Passos >>
  15. Gostei
    abmauromacedo deu reputação a Jeffeson 123 em [DUVIDA] Como fazer um mapa de poketibia do 0?   
    Sua pergunta foi "como criar um mapa do 0" bom é uma coisa muito simples
     
    (1°) abra seu remere's map editor vá em file. OBS:caso não tenha um mapa aberto pode pular essas duas primeiras etapas.

     
    (2°) Depois em new.
     

     
    (3°) Vai abrir isso
     

     
    (4°) Aqui você faz qualquer coisa só para salvar mesmo depois vai em save as...
     

    (5°) Aqui você vai colocar o nome do seu mapa no caso se você estive editando um PDA, Centurion etc... Será mastermap mas caso você não saiba só abrir  o config.luo ou ir na pasta data>world e pega o nome que tem lá. Quer uma dica? Fazer um mapa do 0 é bem estressante seria muito melhor você começa com uma mapa base até pega experiência mas se esse é seu desejo. Só é você abrir o mapa e começa a editar.
    (6°) Depois de termina seu novo mapa vai em Data>world do seu serve excluir ou mover oque tive lá e cola o mapa que você fez.
  16. Obrigado
    abmauromacedo deu reputação a Cat em Bug rme   
    Você está utilizando o Remere's Map Editor versão estendida? Essa versão tem opções extras em propriedades que eliminam esse erro.
  17. Gostei
    abmauromacedo recebeu reputação de Bruno Oliver em Talkaction de Correr   
    em: data\talkactions\scripts\
    crie o arquivo correr.lua e cole isso dentro
     



     
    explicação:
     



     
    depois vá em: data\talkactions\
    clique com o botão direito no arquivo "talkactions.xml" em seguida "Edit/Editar" 
    e acrescente a seguinte tag:
     



     
     se souberem como determinar tempo da função (para que a ação possa acabar, e assim não ser acumulativa). atualizem essa talkaction e reupem att.
     
    Créditos: lavi
  18. Gostei
    abmauromacedo recebeu reputação de lessa1994 em Talkaction de Correr   
    em: data\talkactions\scripts\
    crie o arquivo correr.lua e cole isso dentro
     



     
    explicação:
     



     
    depois vá em: data\talkactions\
    clique com o botão direito no arquivo "talkactions.xml" em seguida "Edit/Editar" 
    e acrescente a seguinte tag:
     



     
     se souberem como determinar tempo da função (para que a ação possa acabar, e assim não ser acumulativa). atualizem essa talkaction e reupem att.
     
    Créditos: lavi
  19. Gostei
    abmauromacedo recebeu reputação de brenno em Talkaction de Correr   
    em: data\talkactions\scripts\
    crie o arquivo correr.lua e cole isso dentro
     



     
    explicação:
     



     
    depois vá em: data\talkactions\
    clique com o botão direito no arquivo "talkactions.xml" em seguida "Edit/Editar" 
    e acrescente a seguinte tag:
     



     
     se souberem como determinar tempo da função (para que a ação possa acabar, e assim não ser acumulativa). atualizem essa talkaction e reupem att.
     
    Créditos: lavi
  20. Gostei
    abmauromacedo recebeu reputação de souza11 em Talkaction de Correr   
    em: data\talkactions\scripts\
    crie o arquivo correr.lua e cole isso dentro
     



     
    explicação:
     



     
    depois vá em: data\talkactions\
    clique com o botão direito no arquivo "talkactions.xml" em seguida "Edit/Editar" 
    e acrescente a seguinte tag:
     



     
     se souberem como determinar tempo da função (para que a ação possa acabar, e assim não ser acumulativa). atualizem essa talkaction e reupem att.
     
    Créditos: lavi
  21. Gostei
    abmauromacedo recebeu reputação de Gaant em Talkaction de Correr   
    em: data\talkactions\scripts\
    crie o arquivo correr.lua e cole isso dentro
     



     
    explicação:
     



     
    depois vá em: data\talkactions\
    clique com o botão direito no arquivo "talkactions.xml" em seguida "Edit/Editar" 
    e acrescente a seguinte tag:
     



     
     se souberem como determinar tempo da função (para que a ação possa acabar, e assim não ser acumulativa). atualizem essa talkaction e reupem att.
     
    Créditos: lavi
  22. Gostei
    abmauromacedo deu reputação a PokemonMania em (RECRUTANDO) PokéMania   
    Venho apresentar um projeto, Não novo , Um projeto sério, Com 1 objetivo de passar muita diversão para nossos players, Requisitos: Seriedade e Dedicação..


    Base: PFILD


    Prints Em Breve!!


    Informações/
    • Pokemons 1º geraçao
    • Pokemons 2º geraçao
    • Projeto é open source.


    ( MAPA SERÁ FEITO DO ZERO )
     
    (GOGO GALERA, A EQUIPE AINDA NÃO ESTA COMPLETA!)

    Vagas na Equipe

    2 Programador [VAGO]

    2 Spriter [VAGO]

    4 Mappers [VAGO]

    1 Script [VAGO]




    Formulário


    Nome:

    Idade:

    Qual área desempenha:

    Tempo de experiência no cargo:

    Skype:

    Facebook:
  23. Gostei
    abmauromacedo deu reputação a ZORAN em [Poketibia] Poke PAD   
    Olá, pessoal eu venho aqui para chamar os itereçados em me ajudar no projeto PAD Online, bem o que e PAD Online, Pad online e Pokemon Adventure Dash Online e um novo servidor que estou desevolvendo solitariamente e i rei postar uma base para o pessoal ele tem source e alguns erros, por esse motivo venho recrutar amigos que queiram ajudar.

    ERROS DO SERVER:

    Catch não pega pokemons
    GoBack não retorna pokemons e os duplica
    Pokemons do player quando morre não retorna e alguns outros erros
    Erro na source isPokeball

    O QUE TERÁ(apenas projeto): Servidor base pokemon Dash do Ricardo
     
    Atenção: averá duas Bases uma com level system e evolução por stones e a outra sem level system
     
    Bostmachine 100%
    Boost sendo mostrado no nome do pokemon
    stones 100%
    Pokemon da 1 a 2 Geração full
    todos os moves de m1 a m12
    Muitas outras coisas.

    O QUE EU FIZ:

    Adicionei RACE_STEEL e RACE_DARK
    Arumei o erro de event. Walk

    O QUE VOU FAZER.

    Arumar as casas
    melhorar o mapa
    atualizar as sprints de pokemon 1 e 2 geração
    Retirar do client as Sprints de tibia
    E outras coisitas.

    VAGAS para equipe:

    Designer: abmauromacedo
    Scripter : Vago Vago
    Programador: Vago
     
    Caso saiba fazer outra coisa poste ai em baixo que vamos chamando diacordo com o necessario.
    Se quiser ajudar me ADD NO FACEBOOK OU no SKYPE: michel-helmer , e Deixe uma messagem ai em baixo, com Seu nome e o que faz.

    OBS: mande uma mensagem com o nome de, quero ajudar o POKE PAD.



    Um grande abraço e fique com Deus!
  24. Gostei
    já tentou ver se tem alguma opção pra habilitar e desabilitar o sistema de level dentro do arquivo de configuração da pasta lib?
    se não tiver, só com a source mesmo do servidor... e a source é muito provável que você não irá encontrar pra baixar.
  25. Gostei
    abmauromacedo deu reputação a GiovaniRodrigo em [Pedido] Npc Que Teleporta Por Level   
    Obrigado pelos elogios cara, a questão de falar que não tem level já arrumei isso, ele esta dizendo agora 

Informação Importante

Confirmação de Termo