Ir para conteúdo

JonPiress

Campones
  • Total de itens

    2
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    JonPiress deu reputação a valakas em Pokemon Dash V10 (Revolution)   
    Eae galera! Sentiram minha falta? Hoje eu vim aqui apresentar o projeto "Pokemon Dash Revolution", Eu e minha equipe pegamos uma base de Poketibia bem antiga e com source, então nós decidimos fazer um projeto sério de pokemon, logo abaixo eu deixarei umas print screen dos sistemas, por enquanto vamos falar o que tem no serve.
    apenas a primeira geração o resto é facil adicionar boa sorte
    Sistemas:


     
    Spoiler (+)Order 100%
    (+)Goback 100%
    (+)Evoluções 100%
    (+)Boost System 100%
    (+)Sistema de pokemon passivo (n atacam os players)
    (+)Sistema de dano passivo (pokemon usa Habilidade passiva)
    (+)Dig, Cut, Flash, Blink 100%
    (+)Fly. ride, Surf 100%
    (+)Ditto system 100%
    (+)NPC Nurse Healando todos os Pokemons
    (+)Nick System 99%
    (+)Pokedex 100%
    (+)Cooldown Bar 100% basico
    (+)Catch 100%
    (+)Fishing 100% (básico)
    (+)Reviver 100%
    (+)Control mind 100%
    (+)Npc Task
    (+)Duel System (Bem básico mesmo)
    (+)Teleport 100%
    (+)Icon system 100%
    (+)Pokebar 100%
    (+)lvl System 99%
    (+)Npc Mark 100%
    (+)Boost System 100%
    (+)Gender System 100% (Com Bonus Male e Female)
    (+)Happy System 100%
    (+)Comandos internos 100%
    (+)Bike System 30%
    (+)Cooldown bar, e Pokebar 100%
    (+)Price system 0%
    (+)Sleep System 100%
     


    Print Screen:


     
    Spoiler Passiva electabuzz (Mudança de looktype)

     
     
    Passiva Magmar

     
    Pokebar

     
    Sleep System

     
    Boost System

     

     
     
     
    Gender System
     

     
     
    Level System

     
     
    Centro Pokemon PXG


    Icones


     
     


    Pequenos videos:




    Spoiler em breve
     
     
    Download Servidor Dash v10
    http://www.mediafire.com/download/6itmd0q3e0e1e81/SERVIDOR+DASH+V10+%28Revolution%29.rar
     
    otclient editado
    http://www.mediafire.com/download/ya5by0hrzrqse3l/Pokemon+Dash+Revolution+V2.0.rar
     
     
    4shared downloader server v10
    http://www.4shared.com/rar/UOine8iPce/SERVIDOR_DASH_V10__Revolution_.html?
     
    client
    http://www.4shared.com/rar/S3eg9oxxce/Pokemon_Dash_Revolution_V20.html?
     
    Scanner:
    https://www.virustotal.com/pt/file/b38c85f0d8eaa81911514b8be7c8ca9efd1fb06458e83a0ed390140e42eb2a09/analysis/1446425425/
    Creditos
     
     
     
    Mario (Aberos)
    Valakinhas (eu)
    Muniz Felipe
    Sukito, Gristony
    Rick
     
     
  2. Upvote
    JonPiress deu reputação a Tony Araujo em [OTClient] Adicionando a transparencia   
    Falaaa amores <3
     
    Hoje eu fiz um video, ensinando a como adicionar a transparencia no OTClient .
    Bom, eu vi que tem uma grande parte, que tem dificuldade em por a tal transparencia, então fiz essa "video-aula",
    falando como deve fazer .
     
     
    Bom, voce precisara.
     
     
    OTClient (Com a transparencia ativada) Disponibilizada pelo EdMignari
    OBject Builder () Também disponibilizada pelo EdMignari
    Paint.NET () Baixaki
     
    Todos links são diretos.
     
     
    Bom, agora é so ir fazendo oque eu vou dizendo na video-aula.
     

    https://www.youtube.com/watch?v=tpWOu26GNAs
     
     
    Caso tenha dificuldades, é so comentar com a duvida.
     
     
    Créditos :
     
    OrochiElf (Eu) Pela VideoAula
    EdMignari () Por me ensinar, e por disponibilizar os ultilitários
    Edubart () Pela criaçao do OTClient
  3. Upvote
    JonPiress deu reputação a zipter98 em [Encerrado] [PEDIDO]Task Randomica   
    data/lib:
    tasks = { ["easy"] = { POKES = { ["Squirtle"] = {15, 1500, 1, 2160}, ["Charmander"] = {15, 1500, 1, 2160}, ["Bulbasaur"] = {15, 1500, 1, 2160}, }, }, ["medium"] = { POKES = { ["Forretress"] = {25, 2000, 3, 2160}, ["Charmeleon"] = {35, 2000, 3, 2160}, ["Starmie"] = {45, 2500, 3, 2160}, }, }, ["hard"] = { POKES = { ["Charizard"] = {15, 4500, 5, 2160}, ["Ursaring"] = {15, 4000, 5, 2160}, ["Dragonite"] = {30, 5000, 5, 2160}, }, }, ["veryhard"] = { POKES = { ["Santa Diglett"] = {1, 10000, 10, 2160}, ["Santa Psyduck"] = {1, 10000, 10, 2160}, ["Santa Pikachu"] = {1, 10000, 10, 2160}, }, }, } TASK_STO = 91834 TASK_POKES_STO = 91835 TASK_EXPERIENCE = 91836 TASK_QUANTITY_STO = 91837 EXTRA_STO = 91838 EXTRA_PRIZE_STO = 91839 function isInTask(cid) if getPlayerStorageValue(cid, TASK_STO) ~= -1 then return true end return false end data/creaturescripts/scripts, exp2.0.lua: Procure por: if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end valor = math.floor(valor) Substitua por: if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else if not isSummon(cid) then local owner = attacker if isSummon(attacker) then owner = getCreatureMaster(attacker) end if isInTask(owner) then --TASK_QUANTITY_STO --TASK_POKES_STO --TASK_EXPERIENCE --TASK_STO if getCreatureName(cid) == getPlayerStorageValue(owner, TASK_POKES_STO) then local poke = getPlayerStorageValue(owner, TASK_POKES_STO) local prize = getPlayerStorageValue(owner, TASK_EXPERIENCE) local dificuldade = getPlayerStorageValue(owner, TASK_STO) local tabela = tasks[dificuldade] local pokemons = tabela.POKES local pokemon = pokemons[poke] local max_quantity = pokemon[1] if getPlayerStorageValue(owner, TASK_QUANTITY_STO) >= 2 then setPlayerStorageValue(owner, TASK_QUANTITY_STO, getPlayerStorageValue(owner, TASK_QUANTITY_STO)-1) doPlayerSendTextMessage(owner, MESSAGE_STATUS_CONSOLE_ORANGE, "[•"..dificuldade:upper().."]->["..getPlayerStorageValue(owner, TASK_QUANTITY_STO).."/"..max_quantity.."] "..poke..""..(getPlayerStorageValue(owner, TASK_QUANTITY_STO) > 1 and "s" or "").." derrotados.") else doPlayerSendTextMessage(owner, MESSAGE_STATUS_CONSOLE_ORANGE, "[•"..dificuldade:upper().."] DONE!") doPlayerSendTextMessage(owner, 27, "Prize: "..prize.." experience! You can say !extra to get another prize.") doPlayerAddExp(owner, prize) doSendAnimatedText(getThingPos(owner), prize, 215) setPlayerStorageValue(owner, EXTRA_STO, dificuldade) setPlayerStorageValue(owner, EXTRA_PRIZE_STO, poke) setPlayerStorageValue(owner, TASK_POKES_STO, -1) setPlayerStorageValue(owner, TASK_QUANTITY_STO, -1) setPlayerStorageValue(owner, TASK_EXPERIENCE, -1) setPlayerStorageValue(owner, TASK_STO, -1) end end end end valor = getCreatureHealth(cid) end end valor = math.floor(valor) data/talkactions/scripts: !easy, !medium, !hard e !veryhard: function onSay(cid, words) local word = words:gsub("!", "") if tasks[word] then local task = tasks[word] local pokemons = task.POKES local sto = TASK_QUANTITY_STO local sto1 = TASK_POKES_STO local sto2 = TASK_EXPERIENCE local sto3 = TASK_STO if not isInTask(cid) then local tabb = "" local tb = {} local tabbb = {} for a, b in pairs(pokemons) do table.insert(tabbb, a) end for a, pid in pairs(pokemons) do if tabb == "" then tabb = a else tabb = tabb..","..a end end local d = tabb:explode(",") for i = 1, #tabbb do table.insert(tb, d[i]) end local poke = tb[math.random(#tb)] local value = pokemons[poke] local quantity = value[1] local experience = value[2] setPlayerStorageValue(cid, sto, quantity) setPlayerStorageValue(cid, sto2, experience) setPlayerStorageValue(cid, sto1, poke) setPlayerStorageValue(cid, sto3, word) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Agora você está fazendo uma task "..word:upper().." de "..poke..". ["..getPlayerStorageValue(cid, sto).."/"..quantity.."]•[Prize: "..experience.." EXP]") else return doPlayerSendCancel(cid, "Você já está fazendo uma task.") end end return true end !extra: function onSay(cid, words) if type(getPlayerStorageValue(cid, EXTRA_STO)) == "number" then return doPlayerSendCancel(cid, "Você não terminou task alguma para pegar seu prêmio adicional.") end local dificuldade = getPlayerStorageValue(cid, EXTRA_STO) local pokemon = getPlayerStorageValue(cid, EXTRA_PRIZE_STO) local tabela = tasks[dificuldade] local tab = tabela.POKES local poke = tab[pokemon] local id = poke[4] local prize = poke[3] doPlayerSendTextMessage(cid, 27, "[•"..dificuldade:upper().."] Como prêmio por ter terminado a task de "..pokemon..", você recebeu "..prize.." "..getItemNameById(id)..". Parabéns!") doPlayerAddItem(cid, id, prize) setPlayerStorageValue(cid, EXTRA_STO, -1) setPlayerStorageValue(cid, EXTRA_PRIZE_STO, -1) return true end Como configurar: tasks = { ["dificuldade(deve ser a mesma do comando !dificuldade)"] = { POKES = { ["Nome do pokémon"] = {quantidade, prêmio em experiência, quantidade do item ao lado -> que ganhará no !extra, ID do item que ganhará no !extra}, }, }, }
  4. Upvote
    JonPiress deu reputação a zipter98 em [Encerrado] [PEDIDO]Task Randomica   
    OK. Funcionará assim: depois que o jogador pegar a task, só poderá fazer outra daqui depois de 24 horas.
    Substitua o arquivo de !easy, !medium, !hard e !veryhard por este:
    function onSay(cid, words) local word = words:gsub("!", "") if tasks[word] then local task = tasks[word] local pokemons = task.POKES local sto = TASK_QUANTITY_STO local sto1 = TASK_POKES_STO local sto2 = TASK_EXPERIENCE local sto3 = TASK_STO if not isInTask(cid) then if getPlayerStorageValue(cid, TASK_STORAGE_DAILY) > os.time() then return doPlayerSendCancel(cid, "Você já completou a quest diária.") else local tabb = "" local tb = {} local tabbb = {} for a, b in pairs(pokemons) do table.insert(tabbb, a) end for a, pid in pairs(pokemons) do if tabb == "" then tabb = a else tabb = tabb..","..a end end local d = tabb:explode(",") for i = 1, #tabbb do table.insert(tb, d[i]) end local poke = tb[math.random(#tb)] local value = pokemons[poke] local quantity = value[1] local experience = value[2] setPlayerStorageValue(cid, sto, quantity) setPlayerStorageValue(cid, sto2, experience) setPlayerStorageValue(cid, sto1, poke) setPlayerStorageValue(cid, sto3, word) setPlayerStorageValue(cid, TASK_STORAGE_DAILY, os.time() + 86400) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Agora você está fazendo uma task "..word:upper().." de "..poke..". ["..getPlayerStorageValue(cid, sto).."/"..quantity.."]•[Prize: "..experience.." EXP]") end else return doPlayerSendCancel(cid, "Você já está fazendo uma task.") end end return true end Depois, no arquivo de data/lib, adicione esta variável perto de outras semelhantes: TASK_STORAGE_DAILY = 91840
  5. Upvote
    JonPiress deu reputação a Gabrieltxu em [Pokémon] Titanium   
    Conteudo Retirado.
  6. Upvote
    JonPiress deu reputação a EdMignari em OBD - Object Builder Data   
    OBD é o formato usado pelo programa Object Builder para exportar e importar objetos no cliente. O tutorial pretende dar dicas básicas para melhor aproveitamento do formato.


    Exportando um OBD

    1 - Abra seus arquivos do cliente no Object Builder.
    2 - Clique no botão exportar que fica abaixo da visualização do objeto ou clique com o direito do mouse sobre o objeto na lista.



    3 - Selecione o formato OBD e a versão do cliente.




    Importando um arquivo OBD

    1 - Clique no botão importar que fica abaixo da visualização do objeto.
    2 - Na janela Import Object, selecione o arquivo que deseja importar. Para importar mais de um objeto por vez, arraste os objetos direto do seus arquivos para dentro do programa e solte-os na área de visualização ou na lista de objetos.
     




    Editando OBD

    Se você precisa editar apenas um ou alguns OBDs.

    1 - Crie novos arquivos spr e dat no Object Builder para sua versão de cliente.
    2 - Importe o OBD que você deseja editar.
    3 - Faça as alterações necessárias.
    3 - Exporte o objeto modificado novamente como OBD.


    IDC para OBD

    Se você tem alguns IDCs e gostaria de converter pra OBD.

    1 - Crie novos arquivos spr e dat no Object Builder para sua versão de cliente.
    2 - Compile os arquivos.
    3 - Abra os arquivos criados em um editor que suporta IDC e importe os IDCs que você precisa.
    4 - Compile os arquivos.
    5 - Abra os arquivos compilados novamente no Object Builder e exporte como OBD.


    Visualizando o conteúdo dos OBDs

    Use o programa Object Viewer para visualizar arquivos OBDs.







    Estrutura dos arquivos OBDs (Para desenvolvedores)






    Créditos

    Edmignari (edmignari@xtibia.com)
  7. Upvote
    JonPiress recebeu reputação de jhonatanp em [ Pedido ] Sprite / Held Itens.   
    Nesse link contem os sprites dos Helds . . . Só que está em obd , para fazer as alterações na spr com esse formato utilize o Object Builder.
     
    http://www.4shared.com/rar/v_jsZD_wce/Held_Itens.html (Obs: 4 Shared ja tem scan)
     

  8. Upvote
    JonPiress deu reputação a EdMignari em [DUVIDA]Sprites PxG   
    .
  9. Upvote
    JonPiress deu reputação a jeanflamengo em [8.54] Remakes PxG até 07/03   
    Oi povo do Xtibia, sou o adm do PxC e vim aqui disponibilizar para vocês umas sprites de remakes da PxG em formato .obd
     
    .Arquivo contidos \/:
     
     
     
    Olha a Imagem e.e \/
     
     
     
    .Downloads
    em .obd
     
     
     
    em png
     
     
     
     
    .Créditos
     
    .EdMignari por disponibilizar um MegaPack com todos as spr da PxG
    .Para Euzito por localiza-las, renomear e distribuir para vocês e.e
    .joaopera por colocar em formato de png
     
    Se Gosto agradeça sua mão não vai cair e.e
  10. Upvote
    JonPiress deu reputação a Wend ll em PDA By: Bolz:: Versão [GOD anna]   
    Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele
    Espero que gostem;;
     

     
    • Menu:
    ├ Informações;
    ├ Ediçoes;
    ├ Erros;
    ├ Prints;
    ├ Download;
    └ Creditos.
     

     
    • Informações Basicas •
     
     
     
     

     
    • Erros do servidor •
     
     
     
     

     
    • PrintScreen •
     
     
     
     

     
    • Download's •

    Servidor PDA by: Bolz [Editado Por Mim ]
     
    http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html?
     
    OTClient::
     
    http://www.4shared.com/rar/x5LgTQKLce/OTclient.html?
     

     
    @Atualizado 02/04/2014
     
    • Menu:
    ├ Ediçoes;
    ├ Prints;
    ├ Download;
     

     
    • Edições / ajustes •
     
     
     
     

     
    • PrintScreen •
     
     
     
     

     
    • Download's •

    Servidor PDA by: Bolz [Editado Por Mim v2 ]
     
    http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html?
     
    OTclient v2::
     
    http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html?
     

     
    • Creditos •

    Slicer (pelo servidor)
    Brun123 (por alguns scripts, e por criar o pda)
    Stylo Maldoso (pelo mapa)
    Bolz (por editar Maior Parte do Server)
    Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor)
    Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" )
    valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2)
    Xtibia (por alguns scripts)
     
    Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa)
    Mais quando terminar as Aulas posto Nova atualiazação...
    Obrigado a Todos que Elogiaram minha edição nesse Belo servidor
  11. Upvote
    JonPiress deu reputação a dyego2008 em Adicionando items com o Object Builder 8.6/10.37   
    ​Olá galera, hoje eu vim postar um pequeno tutorial, na verdade um vídeo ensinando a usar o básico do Object Builder.
     
    Oque contém no tutorial? Ensino para aqueles que não sabem usar o Obeject Builder programa muito bom para adicionar sprites no Tibia Client.
     
    OBS: é a primeira vez que faço um vídeo, pretendo criar mais tutoriais para ajudar os membros do xtibia.
     
    OBS²: Não vou encher o tópico de palavras pois o Tutorial foi feito em vídeo para explicar melhor.
     
     
    ATUALIZADO:
    https://www.youtube.com/watch?v=fGvFny6lpbs&feature=youtu.be
     
     
    Tutorial de como Adicionar monster e Outfit:
    https://www.youtube.com/watch?v=4TUwfIRo-ls
     
     
    É isso ae galera, em breve mais tutorias sobre o object builder, como adicionar outfits e etc.
  12. Upvote
    JonPiress deu reputação a EdMignari em Aumentando o Limite de Sprites   
    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:
    Básico nas ferramentas utilizadas.
    Ferramentas Utilizadas:
    Object Builder (edita os arquivos dat e spr do cliente) ItemEditor (edita o arquivo otb, que contém os itens usados no servidor) OTClient 0.6.5 Remere's Map Editor Um programa para abrir arquivos LUA.

    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 a janela preferences no menu File > Preferences ou pelo atalho Crtl + P
    2. Selecione a opção extended e a pasta do cliente. Pode ser preciso reiniciar o aplicativo.


    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 :

    Abra a janela de preferências no menu File > Preferences e selecione a aba Client Version.
     
    1 - Selecione a versão do cliente que será usada como padrão.
    2 - Selecione a opção extended.
    3 - Selecione a pasta onde se encontram os arquivos do cliente.
     

     
     
    OBS.: Quando a opção extended está selecionada, ocorrerá um erro se tentar abrir arquivos não estendidos ( arquivos com versão menores que 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 (edmignari@xtibia.com)
  13. Upvote
    JonPiress deu reputação a Soulviling em Pokebar para PDA   
    Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai.
     
     
     
     
     
     

    PDA SEM LEVEL
    1. Vá na pasta data\actions\scripts\goback.lua
    e embaixo da parte:
    function onUse(cid, item, frompos, item2, topos)coloque: sendAllPokemonsBarPoke(cid)2. Vá na pasta data\lib\catch system.luaProcure por:
    setPlayerStorageValue(cid, 854788, 'done') ende embaixo coloque: sendAllPokemonsBarPoke(cid)3. Vá na pasta data\lib\cooldown bar.lua 
    Procure por:
    endreturn retende embaixo coloque:  
     
     
     
    4. Vá na pasta data\lib\some functions.lua
    Troque por esse:
     
     
     
     
     
    5. Vá na pasta data\talkactions\talkactions.xml
     
    Coloque essa tag:
    <talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/>depois crie um data\talkactions\scripts\poke.lua 
     
     
     
    Coloque o game_barpoke dentro da pasta modules.
     
    Download: www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar
     

    Créditos: Soulviling Caotic
  14. Upvote
    JonPiress deu reputação a Aberos em Ot Client- Dúvida   
    @isso é nas sources dele que vc mdua e tem q copilar mas da pra faze uma gambiarra no modules/client_background/background.lua aubistua a função init por essa e altere ali onde esta nome do server pelo nome q vc quiser e tem q deixar as aspas
     
    function init() background = g_ui.displayUI('background') background:lower() clientVersionLabel = background:getChildById('clientVersionLabel') clientVersionLabel:setText('nome do server'.. ' ' .. g_app.getVersion() .. '\n' .. 'Rev ' .. g_app.getBuildRevision() .. ' ('.. g_app.getBuildCommit() .. ')\n' .. 'Built on ' .. g_app.getBuildDate()) if not g_game.isOnline() then addEvent(function() g_effects.fadeIn(clientVersionLabel, 1500) end) end connect(g_game, { onGameStart = hide }) connect(g_game, { onGameEnd = show }) end
  15. Upvote
    JonPiress deu reputação a StyloMaldoso em Pokémon Mysterion ONLINE! 14/03/2014!   
    Servidor está off, voltara nesse mês (04)
    com varias novidades, aguarde!
     
    Facebook: https://www.facebook.com/pmysterion
     
     
    Sistemas principais.
    Sistema de Icone:
     
     
    Sistema de held item:
     
     
    Sistema de catar algúm pokémon e dar EXP automatico ao player:
     
     
     
     
     
    Sistema de held modificado, agora tem held do tier: 1 até o tier: 7

     
    Attr: Equipe Pokémon Mysterion!
  16. Upvote
    JonPiress deu reputação a edu6279 em ME AJUDEM PLS   
    Tente
    OTclient\modules\game_menuTop

    Abra o arquivo: mod_topMenu

    Procure por:

    local player = g_game.getLocalPlayer() g_game.useInventoryItem(player:getInventoryItem(10):getId()) end  
    Apenas troque o numero para 3
  17. Upvote
    JonPiress deu reputação a edu6279 em me ajudem com esse bug   
    Tente:
    SeuOT\data\talkactions
     
    Abra o Arquivo: Talkactions.xml e adicione a Tag:
     

    <talkaction words="#f#ightmode" event="script" value="fightMode.lua"/>
  18. Upvote
    JonPiress deu reputação a HidekiKty em Golden Survival Arena System   
    Golden Survival Arena System (Atualizado 2.7)
    Introdução
    A Golden Survival Arena é um evento automático que ocorre a cada 5 horas, onde os players registrados são teleportados para uma arena e devem sobreviver a waves (rounds) com vários pokémons e cada vez mais fortes.
     
    Como participar do evento

    Para participar do evento é necessário se registrar possuindo o item Meowth Coin. Este item pode ser adquirido dropando de Meowth Hunter ou comprando no NPC Meowth Dealer por 1 diamond cada Coin.
    Obs: Ambos (monster e npc) estão localizados no salão do evento, para ir até o mesmo, teleporte-se utilizando um pokémon com essa habilidade (h "golden).
     
    Adicionando o Sistema
    Implantando a Arena no mapa

    Primeiramente faça o download do mapa com a Arena separada para implantar a seu mapa.
    Obs: Não contem nada no mapa além da Arena.
    Download via MediaFire:
    Clique aqui.
    Scan VirusTotal:
    Clique aqui.
     
    Continuando
    Após ter terminado o download, abra o mapa baixado e o mapa de seu servidor utilizando o RME (remere's map editor).
    Se não possui o RME, faça o download dele no site oficial clicando aqui.
    Agora com os dois mapas abertos, vá ao que foi baixado e siga as instruções.
     

    Clique no quadrado azul localizado na diagonal esquerda para baixo no RME.
     
    Ele será modificado para um lápis onde você poderá selecionar a área a ser copiada e transferida/copiada ao outro mapa.

    Agora com a função do lapís selecionador ativada, selecione a área a ser transferida/copiada ao outro mapa.
     
    Para isto, pressione Shift e selecione a área a ser copiada com o botão esquerdo do mouse.

    Após isto, solte os botões e a área será destacada.
     

    Agora copie o que foi selecionado (CTRL+C) e vá ao outro mapa (o que irá implantar a Arena).
     

    Cole a área selecionada (CTRL+V) e após isto, apenas escolha o local para colocá-la e pressione o botão esquerdo do mouse.
     
    Enfim este será o resultado da Arena implantada.

    Agora vamos aos scripts do sistema e acompanhamentos necessários.
     
    Actions
    Abra a pasta data/actions/scripts de seu servidor e crie/copie qualquer arquivo .lua e renomeie para Meowth Coin.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    Novamente crie/copie qualquer arquivo .lua na mesma pasta (data/actions/scripts) e renomeie para Quadro_Golden.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    Abra a pasta data/actions/scripts de seu servidor e crie/copie qualquer arquivo .lua e renomeie para Quadro_Golden_Rank.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    No mesmo local (data/actions/scripts) abra o arquivo catch.lua
    No seu, é provavel que esteja mais ou menos assim (só que com configurações de acordo com seu servidor):
     
     
     
    Após as linhas:
     
     
     
    Adicione abaixo:
     
     
     
    Resultando em (no caso, script configurado para o meu servidor):
     
     
     
    Agora abra a pasta data/actions e abra o arquivo actions.xml (abra como editar/bloco de notas).
    Adicione as tags:
     
     
    Em vermelho são os ID dos quadros da Golden Island, utilizado para ver a lista de participantes do próximo evento, o horário e o rank de waves (rounds).
    Em azul é o ID do Meowth Coin utilizado para se registrar ao evento.
     
    GlobalEvents
    Abra a pasta data/globalevents/scripts e crie/copie qualquer arquivo .lua e renomeie para Golden Arena.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
    Em azul são as mensagens antes de começar o evento e quando começar o evento.
     
    Novamente na mesma pasta (data/globalevents/scripts) crie/copie qualquer arquivo .lua e renomeie para CleanGoldenArena.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    Agora abra a pasta data/globalevents e abra o arquivo globalevents.xml (abra como editar/bloco de notas).
    Adicione as tags:
     
     
    Em vermelho são os horários da Golden Survival Arena, porém eles tem que ser configurados 10 minutos antes de começar o evento, por causa das mensagens que informam quando irá começar. Sendo assim o evento for começar por exemplo as 14:00, terá de estar configurado time="13:50".
    Em azul são os horários dos cleans da Golden Survival Arena, porém eles tem que ser configurados 02:30 (2 horas e 30 minutos) após o evento ter começado. Sendo assim se o evento começar as 14:00 e as mensagens estiverem configuradas para 13:50, o evento irá começar somente as 14:00, portanto o Clean da Arena teria que estar configurado time="16:30" (14:00+02:30=16:30).
     
    Items
    Agora abra a pasta data/items e abra o arquivo items.xml (abra como editar/bloco de notas).
    Procure pelo ID 6527 (CTRL+F) e subistitua a tag dele por esta:
     
     
     
    Lib
    Agora abra a pasta data/lib e crie/copie qualquer arquivo .lua e renomeie para Golden Arena.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    Agora novamente na pasta data/lib, abra o arquivo configuration.lua
    Nele, dessa a barra até o fim do script/arquivo e então após o } do sistema anterior, pule uma linha e adicione:
     
     
    Em vermelho é a posição x y z da ponta superior da Golden Survival Arena e em azul é a posição da ponta inferior da mesma.

    Em verde é a posição x y z para onde os players registrados no evento seram teleportados quando ele começar.
    Em laranja é a posição x y z para onde os players no evento seram teleportados ao morrerem na Arena ou quando ela acabar.
    Em verde água é a posição x y z que os pokémons da parte em marrom seram teleportados. Como pode ver são 9 posições e 9 pokémons, apenas escolha as 9 diferentes posições da Arena que os pokémons iram aparecer, e sempre o número de posições terá de ser o mesmo número de pokémons; mesmo que ali esteja por exemplo apenas um pokémon que ira aparecer na wave {"", "Shiny Gyarados", "", "", "", "", "", "", ""}, as "" (aspas) são a mesma quantidade de posições.
    Em rosa são os horários em que a Golden Survival Arena irá iniciar executando a função de trazer todos os players registrados a posição escolhida. Diferente dos horários da globalevents.xml que são 10 minutos antes por serem horários das mensagens antes que o evento comece, estes horários são os que ela ira iniciar; portanto devem ser exatos, horas de inicialização.
    Em roxo é o número de waves (rounds) da Arena.
    Em salmão é o tempo em segundos para cada wave (round).
     
    Monster
    Agora abra a pasta data/monster e escolha uma pasta/local para criar os arquivos .xml
    Após ter escolhido o local, crie/copie qualquer arquivo .xml e renomeie para aHunter.xml
    Dentro do arquivo, apague tudo e adicione:
     
     
    O Meowth Hunter é o monster que dropa meowth coins.
     
    Novamente após ter escolhido o local, crie/copie qualquer arquivo .xml e renomeie para aHunterFemale.xml
    Dentro do arquivo, apague tudo e adicione:
     
     
    Em vermelho é o mesmo que o anterior, só que outfit female para ficar como no script do npc da Golden Island.
     
    Agora abra a pasta data/monster e abra o arquivo monsters.xml (abra como editar/bloco de notas).
    Adicione as tags:
     
     
    Em azul é a localização dos Meowth Hunter's, nesse tipo eu coloquei o aHunter.xml e aHunterFemale.xml na pasta data/monster/pokes/System, porém não precisei colocar a parte de data/monster, apenas o que está dentro da pokes em diante (pokes/System/.xml). Se você por exemplo coloca-se o aHunter.xml e aHunterFemale.xml na pasta data/monster/meowthmonster, as tags seriam:
     
     
     
    Npc
    Abra a pasta data/npc/scripts e crie/copie qualquer arquivo .lua e renomeie para .aHunter.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
     
    Agora vá a pasta data/npc e crie/copie qualquer arquivo .xml e renomeie para .aHunter.xml
    Dentro do arquivo, apague tudo e adicione:
     
     
    O npc Hunter identifica o sexo do player e cria um Meowth Hunter do mesmo sexo que o player para lutarem. Lembrando que este monster dropa Meowth Coins.
     
    Abra a pasta data/npc/scripts e crie/copie qualquer arquivo .lua e renomeie para .aMeowthDealer.lua
    Dentro do arquivo, apague tudo e adicione:
     
     
    Em vermelho são os 2 diamonds sendo removidos e em azul os 2 Meowth Coins sendo adicionados ao player.
     
    Agora vá a pasta data/npc e crie/copie qualquer arquivo .xml e renomeie para aMeowth Dealer.xml
    Dentro do arquivo, apague tudo e adicione:
     
     
    Em laranja é o NPC que troca 2 diamonds por 2 Meowth Coins, utilizados para se registrar a Golden Survival Arena.
     
    Após concluir tudo isto, a Golden Survival System estará completamente instalada em seu servidor.

     
    Créditos
    Slicer pelo script 90%.
    PokeXGames por direitos autorais.
    Eu pelo tutorial e 10% do script editado.
    Creio que esse seja o primeiro System Tutorial de instalação completa da Golden Survival Arena.
    Obrigado.
  19. Upvote
    JonPiress deu reputação a FlamesAdmin em Fight mode mensagem bugada   
    Aqui:

  20. Upvote
    JonPiress deu reputação a victorgod em Alavanca Para Quest Igual Anihi ,funcionando ¢   
    Olá Gente hoje vim denovo aqui Para postar uma Nova Action essa Funciona 100¢
     
    Primeiro Vai na Pasta Actions,Actions XML
     
    Actions Xml = <action actionid="7100" script="alavanca.lua"/>
     
    Crie um arquivo.lua Chamado - Alavanca.lua
     
    Coloque Isso:
     
    -- annihilator level 200 lever
     
    function onUse(cid, item, frompos, item2, topos)
     
    if item.uid == 7100 and item.itemid == 1946 then
    player1pos = {x=161, y=46, z=4, stackpos=253} < Local Aonde Player Vai Fica (Exclui Essa Frase Nao ESQUEÇA)
    player1 = getThingfromPos(player1pos)
     
    player2pos = {x=161, y=47, z=4, stackpos=253}
    player2 = getThingfromPos(player2pos)
     
    player3pos = {x=161, y=48, z=4, stackpos=253}
    player3 = getThingfromPos(player3pos)
     
    player4pos = {x=161, y=49, z=4, stackpos=253}
    player4 = getThingfromPos(player4pos)
     
     
    if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
    queststatus1 = getPlayerStorageValue(player1.uid,7100)
    queststatus2 = getPlayerStorageValue(player2.uid,7100)
    queststatus3 = getPlayerStorageValue(player3.uid,7100)
    queststatus4 = getPlayerStorageValue(player4.uid,7100)
     
    if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
    nplayer1pos = {x=160, y=54, z=7} < lOCAL AONDE PLAYER VAI APARECER TIRA ESSA FRASE
    nplayer2pos = {x=160, y=54, z=7}
    nplayer3pos = {x=160, y=54, z=7}
    nplayer4pos = {x=160, y=54, z=7}
     
    doSendMagicEffect(player1pos,2)
    doSendMagicEffect(player2pos,2)
    doSendMagicEffect(player3pos,2)
    doSendMagicEffect(player4pos,2)
     
    doTeleportThing(player1.uid,nplayer1pos)
    doTeleportThing(player2.uid,nplayer2pos)
    doTeleportThing(player3.uid,nplayer3pos)
    doTeleportThing(player4.uid,nplayer4pos)
     
    doSendMagicEffect(nplayer1pos,10)
    doSendMagicEffect(nplayer2pos,10)
    doSendMagicEffect(nplayer3pos,10)
    doSendMagicEffect(nplayer4pos,10)
     
    doTransformItem(item.uid,item.itemid+1)
    else
    doPlayerSendCancel(cid,"Somebody in your team has already done this quest.")
    end
    else
    doPlayerSendCancel(cid,"You need four players for this quest.")
    end
     
    elseif item.uid ==7100 and item.itemid == 1946 then
    if getPlayerAccess(cid) > 0 then
    doTransformItem(item.uid,item.itemid-1)
    else
    doPlayerSendCancel(cid,"Sorry, not possible.")
    end
    else
    return 0
    end
     
    return 1
    end
     
     
     
     
     
     
     
     
    - Depois Você Abre Seu Remeres,escolhe um um lugar e coloca os Tiles ,e uma alavanca Com id de 1946 Nao coloca de 1945 que não vai pegar.
     
    - Depois Você clica Propriedades
     
    Action ID : 7100
    Unique ID : 7100
     
    Aperta "OK" Pronto.
     
     
     
    Atençao: Não esqueça de muda os position Qualquer duvida só posta eu vô responder a todos.
     
    Creditos: A Min pois eu tirei uns bugs que dava no mapa,Mais eu devo muito a um script já estava em um Baiak.
  21. Upvote
    JonPiress deu reputação a MaXwEllDeN em Locker Protection   
    #Introdução
     
    Bem, este é um sistema no qual você pode protejer o seu locker(depot) com senha, assim evitando hackers.
     
     
    #Instalação
     

    Primeiro faça o download do sistema e cole na sua pasta data.
     
    Após ter instalado os arquivos nas suas respectivas pastas adicione as tags:
     
    @Actions
     

    <action itemid="2589; 2590; 2591; 2592" event="script" value="DPPass.lua"/> <!-- DP Pass -->
     
    @Creaturescripts
     

    <event type="login" name="LockerPass" event="script" value="DPPass.lua"/> <!-- DPPass -->
     
    @Movements
     

    <movevent type="StepOut" actionid="96475" event="script" value="DPPass.lua"/> <!-- DPPass -->
     
    @Talkactions
     

    <talkaction words="!locker" script="DPPass.lua"/> <!-- DP Pass -->
     
    Abraço.
  22. Upvote
    JonPiress deu reputação a IvanAppel em Fábrica de Clients   
    Então galera, resolvi criar uma fábrica de clients (cipsoft). Temos regras e padrões no tópico.
     
    Regras

    Postar somente sobre o assunto;
    Não conversar no tópico;
    Qualquer tumultuo no tópico vai ser reportado;
    Se fizer um pedido não fique dizendo, "Iai vai fazer o meu ou não?" "Já terminou?";
    Qualquer ofensa vai ser reportada;

    Padrão

     
    Versão :
    IP (máximo 19 carácteres):
    Ícone (opcional, 32x32):
    Background (fundo inicial, opcional,640x480):
    Procurar por que arquivos(tibia.spr, etc... , opcional):
    Adicional (opcional):

    Agradecimentos

    Queria agradecer somente ao nosso querido usuário Zaruss por me disponibilizar o código RSA do client do tibia, assim posso criar o client com QUALQUER VERSÃO.
    _____________________________________________

    Também descompilo clients, apesar de não ser grande coisa algumas pessoas precisam então, só falar.

    Cientes das regras, façam seus pedidos
     
    Atenciosamente, Eryrrel.
  23. Upvote
    JonPiress deu reputação a LekoDS em Enviando arquivos do site com Filezilla   
    Vamos aprender a colocar o seu site online? Vamos usar o exemplo do Modern ACC, maioria utilizado por servidores derivados. Lembrando que este método é usado para enviar seus arquivos para o servidor que hospeda seu website.

    REQUERIMENTOS:

    Filezilla / Hostinger / Modern ACC

    1º - Baixar o Filezilla - Fácil é pratico, apenas acesse o site do Baixaki. Baixe é instale ele normalmente como pede.

    2º - Agora você deve criar uma conta no Hostinger, onde você vai ter o servidor instalado gratuito, lembrando que é apenas para hospedagem de sites, a vantagem do mesmo que não há publicidade e muito estavel com os demais.

    3º - Hora de Baixar a CMS do Modern ACC pelo OTLand, você pode encontrar a mesma em outros locais, mais vamos da preferencia a uma das comunidades mais usadas globalmente em OTServers.

    Agora vamos começar a passar seus dados para o servidor da hostinger, primeiro você deve criar o seu servidor - o seu site - devemos estar logado no site.

    Acesse pelo menu Hospedagem > Criar uma Nova Conta > Gratuito > Peça Agora
    Então seremos direcionado para criar o servidor gratuito:



    Subdomínio: O local onde você acessara seu domínio, como por exemplo xtibia.com! Lembrando que por se tratar de uma hospedagem gratuita você não pode escolher .com, .net, .com.br por serem pagos. Mais você pode comprar um e direcionar para o mesmo.
    Senha: A que você acessara via FTP, PhpMyAdmin, CPanel e outros.

    Apos criar sua conta você sera redirecionado para o CPanel, aqui você pode gerenciar todo o seu site, Mais vamos focar em apenas 2 partes: O FTP é PhpMyAdmin.

     
    PHPMYADMIN:
    Vamos procurar por Avançado > Bases de Dados MySQL



    Nome do banco de dados MySQL: Nome do banco de dados do Mysql
    Nome de Usuário MySQL: Nome do Usuário de acesso ao Mysql
    Senha: Senha de Acesso

    Atenção: Anote estes dados, vamos precisar dele futuramente.

    Apos criar o seu banco de dados no Mysql, vamos acessar o PhpMyAdmin, então procure por:
     
    Avançado > PhpMyAdmin > Entrar no PhpMyAdmin
    * Nesta parte vai solicitar a senha do banco de dados que você criou na parte do mysql. Se confirmado você sera redirecionado para o PhpMyAdmin.

    Nesta parte você deverá ter a pasta "schemas" com o mysql.sql do seu servidor.

    Você deverá importar para o phpmyadmin, procure a pasta onde esta em seu computador, vou mostrar como na imagem:



    Apos concluir esta parte, clique em executar (ou de enter no teclado), para importar para o phpmyadmin. Se ocorrer tudo certo, vai aparecer uma mensagem parecida com esta:

    Importado 71 arquivos com sucesso!

    FILEZILLA:
    Agora você deverá procurar por: Arquivos > Acesso FTP




    Com estes dados você poderá abrir seu Filezilla - no computador - e colocar estes dados para ter uma conexão! Você deve digitar estes dados como por exemplo o do XTibia:
    Atenção: Estes dados devem ser como o do seu site! Este é apenas o exemplo da imagem.

    Host: xtibia.zz.mu
    Usuario: u512441778
    Senha: ********
    Porta: 21

    Agora você deve estar redirecionado direto no Filezilla para o public_html - verifique antes de enviar os arquivos - se estiver, jogue todos arquivos extraídos do Modern ACC nele. Agora você deve prosseguir a instalação do Modern como você faz no XAMPP.

    Lembrando que os dados que solicitado na instalação do Modern ACC serão como:
    Hostname: mysql.hostinger.com.br Login: Nome do Usuario do Mysql Senha: Senha do Mysql Database: Nome do banco de dados do Mysql Lembrando: Não dou suporte para pessoas que querem fazer o mesmo ter a conexão com sua VPS. Isto deve ser feito com a empresa que você contratou o host. Esse é apenas um tutorial ensinado a colocar seus arquivos online.
  24. Upvote
    JonPiress deu reputação a BananaFight em OtClient - Tutorial Básico #1   
    OtClient - Tutorial Básico #1


    Aula 1 : Editando mod/Modules

    Bom galera, hoje eu vou ensinar vocês a como editar mod/Modules, e também como posiciona-los na janela.


    OBS: Quando eu falar Janela, estou me referindo aos objetos: MainWindow, Botton etc

    Passo 1 entendendo os arquivos

    Dentro da maioria das pasta no OtClient existirão 3 arquivos com as seguintes extensões:


    .lua.otmod.otui

    Cada uma dessas extensões executam um papel EXTREMAMENTE importante dentro do mod/module que você pretende criar, Mais será explicado mais para a frente, Nessa aula vamos mexer apenas no arquivo ".otui".

    Passo 2 Indentação

    Uma das coisas mais importante dentro dos arquivos ".otui" é a indentação, pois se você errar um espaçamento qualquer você pode estar 'bugando' todo o funcionamento da sua mod/module.

    Vou ensinar a vocês o modo certo de indentar seus códigos para que não tenham erros.


    MainWindowid: tutorialWindowsize: 80 80&save: true

    Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar. A indentação deve ser feita com apenas 2 espaços, e sempre seguindo a ordem do item que você ta criando.

    Exemplo:


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    Como o Botão 'Button1' vai ficar dentro da janela ' tutorialWindow', ele tem que ficar a uma distancia de 2 espaços da janela 'MainWindow', Caso eu quebre esse espaçamento provavelmente poderei ter bugs na hora de abrir esse mod/module dentro do client. Outra coisa para tomar cuidado é quando for dar linha para adicionar outra janela, nessa linha em que separa uma janela não pode conter nem um espaço e nenhum comando.

    Exemplo:

    Certo


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    Errado


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    Vocês não conseguem ver a diferença, mais tente selecionar os dois códigos que vão entender melhor, o que eu falei.

    Agora a organização e edição de cada janela dentro do arquivo '.otui' deve seguir o mesmo principio de 2 espaços de distancia.

    Exemplo:

    Certo


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    Errado


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    E também esta Errado desta forma


    MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5

    Como o botão vai aparecer dentro da janela 'MainWindow' ele tem que ficar a 2 espaçamento dela pois se eu deixar os 2 na mesma posição é como se eu estivesse dizendo ao script que são duas janelas separadas e o botton vai aparecer por conta própria quando eu executar o mod/module.

    Passo 3 conhecendo as janelas

    Existem diversos modos de se criar uma janela onde vai aparecer vários botoes textos e etc, Mais sempre vai ter uma janela que será a matriz de todos, onde todos deverão aparecer, que no nosso exemplo é :


    MainWindowid: tutorialWindowsize: 80 80&save: true

    Esse código é nossa janela principal, É nela que vai aparecer tudo que queremos mostrar com no script, Agora vou mostrar o que cada função que tem dentro de MainWindow faz.


    MainWindowid: esse é o ID do MainWindow, Supondo que tenham 2 MainWindow, é com esse id que vamos diferencia-lassize: aqui é onde configuramos a largura e altura da janela, nessesariamente nessa ordem&save: isso fica para as próximas aulas

    Não precisamos usar necessariamente size para mostrar o tamanho ou largura da janela, podemos utilizar por exemplo :


    width: 80height: 80

    Esses 2 códigos podem ser utilizados no lugar de size e farão exatamente a mesma coisa.

    Caso você tenha editado ou criado algum mod/modules para testar esses códigos que mostrei acima, percebeu que na janela não aparece nome e nem nada do gênero e é isso que irei mostrar agora.


    !text: tr('Texto') - Essa função adiciona o texto na janela em que você adicionar esta linhaicon: img.png - Esta função pega a sua imagem e usa ela de icone para a janela ( neste caso a imagem tem que estar na mesma pasta que o arquivo '.otui', e isso só irá funcionar dependendo do tipo da janela matriz, veremos em outros tutoriais.)

    Com esses dois Código você consegue personalizar a janela onde irão aparecer os botoes, textos etc que você pretende fazer.

    Exemplo:

    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: true

    Agora vamos começar a criar botoes, escrever textos e etc.

    Vamos começar adicionando uma Label que vai mostrar o texto 'Olá Xtibia'.


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftmargin-top: 5margin-left: 5

    Como vocês podem ver apareceram algumas funções novas, que são elas :


    anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomanchors.top: prev.topanchors.left: prev.leftanchors.right: prev.rightanchors.bottom: prev.bottommargin-top: 5margin-left: 5margin-right: 5margin-bottom: 5

    Com essas funões nós determinamos onde cada item da nossa janela vai ficar.

    Entendendo as novas funções


    anchors.top: parent.top

    Com a linha 'anchors.top:' estamos dizendo que a posição do meu item vai ser definida para cima, agora adicionando 'parent.top' estamos dizendo que a posição do meu item deve se Colada com começo da Janela, e isso segue para left, right, bottom também.

    agora se no lugar de 'parent.top' eu usar 'prev.top' eu estou dizendo que meu item vai ficar colado com a parte de cima do item que tem encima, Confuso eu sei mais vou dar um exemplo:


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.left

    Ali no script acima eu estou mandando a Label1 ficar colada com a borda de cima da janela principal, e a esquerda, Já na Label2, eu estou mando ela ficar colada com a Label1 ( pois a label1 que esta encima ) e também ficar colada com a borda da janela principal.

    Isso se aplica a todos os lados, se eu usar prev.left, eu vou estar dizendo que a label2 tem que ficar exatamente do lado esquerdo da label1.

    As funções 'margin-top: 5' vão fazer com que meu item fique com a distancia de 5 pixel ( Não tenho certeza se são pixels ) do item que esta acima


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5

    Nesse Exemplo eu fiz a label2 ficar a 5 pixel abaixo da Label1, e isso é a mesma coisa se eu ultilizar left, right, bottom eu vou pegar uma distancia do que estiver do lado do meu item ou embaixo etc.

    Mais agora nós não precisamos nos prender a ficar somente com parent, e prev na hora de criar um item. podemos utilizar o id de um item como referencia de onde deve ficar meu item, como no exemplo :


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: parent.topanchors.left: Label1.left

    Nesse Exemplo eu fiz com que a Label3 ficasse a esquerda da Label1, e grudada a margem da janela principal, mais eu também poderia fazer ela ficar embaixo da Label1, e grudada ao lado direito da margem da janela principal.


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.topanchors.right: parent.right

    Mais caso você for testar isso vai perceber que o Label2 vai ficar encima do Label1 e ao invés do Label3 ficar embaixo do Label1 ele vai ficar do lado, Para corrigir esses pequenos erros você pode juntar códigos como no exemplo :


    MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.bottomanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.bottomanchors.right: parent.right

    Pelo Simples fato de eu ter trocado top por bottom agora o script sabe que a Label2 tem que ficar no fim da Label1 e o mesmo para a Label3, e por isso usamos margin, para deixa uma distancia entre cada item, e para ficar mais organizado.

    Bom acho que é isso, Caso eu lembre de algo relevante estarei editando e adicionando mais coisas, Espero que gostem e quais quer DUVIDAS relacionadas AO TÓPICO é só fazer um comentário aqui embaixo que estarei respondendo.

    @Edit, Infelizmente o Xtibia Quebrou a indentação, mais lembre-se é sempre 2 espaços.
  25. Upvote
    JonPiress deu reputação a caotic em [FABRICA]Otclient   
    Como o pessoal resolveu fazer algumas fabricas resolvi trazer a #1 fabrica do otclient.
    Eu tentarei evitar o uso do opcode vou usar msg e talk para a comunicação do otc~servidor ou o contrario.
     
    Segue ai as regrinhas dos pedidos
     
  • Quem Está Navegando   0 membros estão online

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