Ir para conteúdo

Malditto

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Malditto deu reputação a Skyligh em [ACTIONS] Tm System -   
    Olá pessoal, venho hoje aqui para postar um sistema de pokemon muito procurado, o famoso, Tm System. Siga o tutorial a risca ou seu trabalho será invão.
    Quote
    Seu Funcionameto: Basícamente funciona assim; ele adiciona um "Attack" novo a um pokemon ou substitui um existente, dependendo da vontado do player.
    Versões testadas: Qualquer derivado do PDA
    http://www.havencrest.co.uk/images/page-divider 2.jpg
    Vamos ao que interessa, vá em actions.xml e cole a seguinte tag:
      <action itemid="id do item que será usado" event="script" value="tmSystem.lua"/> Atenção o item que será usado no system, não deve ter o attributo "Usable" ou você terá erros. Agora crie um arquivo em {data/actions/scripts} chamado tmSystem.lua e cole o seguinte script dentro:
      function onUse(cid, item, frompos, item2, topos) local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemNameById(item2.itemid) local i = item2.itemid if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "Need pokemon to learn a "..tmname..".") end if getItemAttribute(slotball, "TM") == tmname then return doPlayerSendCancel(cid, "Your pokemon was learned this TM.") end if isInArray(tm[""..tmname..""], getPokemonName(pokemon)) then doPlayerSetVocation(cid, 49) openChannelDialog(cid) else doPlayerSendCancel(cid, "This TM not compatible in your pokemon.") end return true end http://www.havencrest.co.uk/images/page-divider 2.jpg Agora vamos em {creaturescripts.xml} e colaremos a seguinte tag:
      <event type="joinchannel" name="TmChoose" event="script" value="tmsys.lua"/> Agora crie o arquivo tmsys.lua em {creaturescripts/scripts} e cole isso dentro:
      [CODE] function onJoinChannel(cid, channelId, users, isTv) if getPlayerVocation(cid) == 49 then else return true end local summon = getCreatureSummons(cid)[1] local moves = movestable[getCreatureName(summon)] local n = 1 for a = 1, 12 do local b = getNewMoveTable(moves, a) if b then n = n + 1 end end for b = 13, 23 do if channelId == b then local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local slotm = getPlayerSlotItem(cid, 9) local tmname = getItemNameById(slotm.itemid) if n >= channelId - 11 then doPlayerSendTextMessage(cid, 27, "Congralutions! Your "..getPokemonName(pokemon).." learn a new TM ("..tmname..").") doItemSetAttribute(slotball, "TM", tmname) doItemSetAttribute(slotball, "TMN", channelId - 11) doSendMagicEffect(getThingPosition(pokemon), 28) doSendMagicEffect(getThingPosition(pokemon), 29) doRemoveItem(slotm.uid) if useKpdoDlls then doUpdateMoves(cid) end else doPlayerSendCancel(cid, "Put tm on at last empty slot.") end return false end end return true end http://www.havencrest.co.uk/images/page-divider 2.jpgNesta parte você precisa de muita atenção, você terá que criar 10 channels como no modelo abaixo:
      <channel id="13" name="[Put on M1]"> <vocation id="49"/> </channel>   <channel id="14" name="[Put on M2]"> <vocation id="49"/> </channel> Em channel id você seguira a ordem 13 a 23, em vocations id pode deixar do jeito que esta. Agora crie uma vocation com o id 49 ou cole a seguinte tag no vocations.xml:
      <vocation id="49" name="TM" description="pokemon trainer" needpremium="0" gaincap="0" gainhp="55" gainmana="0" gainhpticks="0" gainhpamount="0" gainmanaticks="0" gainmanaamount="0" manamultiplier="1.1" attackspeed="-1" soulmax="251" gainsoulticks="-1" fromvoc="1" lessloss="0"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="2" club="2" sword="2" axe="2" distance="2" shielding="2" fishing="2" experience="1.1"/> </vocation> Imagem Postada http://www.havencrest.co.uk/images/page-divider 2.jpgAgora vamos em {data/lib} e crie um arquivo chamado tmSystem.lua e cole as seguintes linhas nele:
      tmabilities = { ["Solar Beam"] = {"Blastoise", "Venusaur", "Charizard"}, ["Fire Blast"] = {"Blastoise", "Venusaur", "Charizard"}, } Nesta parte você edita, para cada magia[""] = nome dos pokemons que poderam ter essa magia por tm. Tipo do jeito que esta ai, se você for tentar colocar um fire blast em um bulba não vai pegar.. Para adicionar mais magias, basta copiar a linha e colocar o nome da magia nova e seus respectivos pokemons. http://www.havencrest.co.uk/images/page-divider 2.jpg Preste atenção, para cada magia feita, terá que haver um item com o nome da magia. E o id deste item deve ser colocado na tag da actions. ou seja(exemplo): abra o item.xml pegue o item que deseje usar e coloque o nome "Solar Beam"(do mesmo jeito da lib), pegue o id dele e cole na tag da actions. Espero que tenham intendido está parte. http://www.havencrest.co.uk/images/page-divider 2.jpg A ultima parte da instalção, vamos em {data/talkactions/scripts} e abra o arquivo move1.lua e substitua a parte de "if it = 1" até o ultimo "end" antes da parte "if not move then":
      local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) end --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 local cdzin = "move"..it.."" local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemAttribute(slotball, "TM") if it == "2" then if getItemAttribute(slotball, "TMN") == 2 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move2 end elseif it == "3" then if getItemAttribute(slotball, "TMN") == 3 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move3 end elseif it == "4" then if getItemAttribute(slotball, "TMN") == 4 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move4 end elseif it == "5" then if getItemAttribute(slotball, "TMN") == 5 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move5 end elseif it == "6" then if getItemAttribute(slotball, "TMN") == 6 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move6 end elseif it == "7" then if getItemAttribute(slotball, "TMN") == 7 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move7 end elseif it == "8" then if getItemAttribute(slotball, "TMN") == 8 then move = {name = ""..tmname.."", level = 0, cd =15, dist = 0, target = 0} else move = movestable[name].move8 end elseif it == "9" then if getItemAttribute(slotball, "TMN") == 9 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move9 end elseif it == "10" then if getItemAttribute(slotball, "TMN") == 10 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move10 end elseif it == "11" then if getItemAttribute(slotball, "TMN") == 11 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move11 end elseif it == "12" then if getItemAttribute(slotball, "TMN") == 12 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move12 end end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.6 if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then local target = getCreatureTarget(cid) if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons[i], move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Até que enfim.. Se fizeram tudo certo o sistema vai funcionar se não.... Caso não itendam alguma parte da explicação podem me perguntar por aqui...
    Creditos
    Smix
  2. Gostei
    Malditto deu reputação a Ayron5 em Preciso de um RME estendido e com Transparencia   
    Segure esse aqui amigo! Espero ter ajudado  
    Remere's_Map.rar
  3. Gostei
    Malditto deu reputação a Thayam em [OLD/OTC] Criando link de Download Direto para seu cliente!   
    Fala Nação TK, tudo beleza com vocês?
     
    Eu sou o Thayam, muito pouco conhecido (até porque sou muito novo no fórum), sou OT ADMIN e atualmente trabalho em um projeto de PokeTibia que divulgarei em breve. MAS O QUE ISSO TEM A VER? - Absolutamente nada, é apenas uma apresentação pessoal para aqueles que não me conhecem, enfim, recebi ajuda de muitos usuários nesse fórum e isso me motivou a tentar ajudar aqueles que também estão começando.
     
    Esse tutorial é bem simples, porém eu procurei nesse fórum e não achei nada relacionado, então achei interessante cria-lo para explicar como criar um link de Download Direto para seu client usando o DropBox!
     
    ATENÇÃO: Nesse tutorial não ensinarei a compilar o cliente, somente a disponibilizá-lo para download em um link livre de download hosters.
     
    Ok, vamos lá:
     
    1° Passo: Entendendo o que é um Link Direto
    Sabe quando você acessa um site para baixar aquele cliente de servidor que você tanto quer, e ao clicar em download (normalmente está escrito Clique Aqui  fazendo com que você realmente ache que ao clicar ali você já irá fazer o download do arquivo) o site te redireciona para algum download hoster dentro dos bilhares existentes - porém nem todos confiáveis - e você precisa se registrar, ou esperar 20 segundos, ou acertar aquele códigozinho ilegível chamado captcha? Então, ao criar um link direto para seu cliente, quando o usuário acessá-lo, ele irá fazer o download do seu cliente automáticamente, sem espera, nem desenhos, nem códigos (eu realmente odeio aqueles códigos)
     
    2° Passo: Criar uma conta no DropBox
    Acesse o site do DropBox clicando aqui: https://www.dropbox.com/



     
    3° Passo: Crie sua conta no DropBox
    Clique em Registrar-se e preencha o formulário com os seus dados (Nome, Sobrenome, E-mail, Senha) em seguide aceite os termos e clique em Registrar-se e o site irá fazer o download automáticamente do programa (ATENÇÃO: NÃO É NECESSÁRIO O DOWNLOAD DO PROGRAMA, SOMENTE CASO VOCÊ QUEIRA O TER EM SEU PC)



     
    4° Passo: Após o download (ou não) clicar no ícone do DropBox
    Após ter feito o download (ou não) do cliente do dropbox clique no ícone do site no canto superior esquerdo da tela.



     
    5° Passo: Clicar no ícone Enviar
    Clicar no ícone Enviar, e em seguida clicar em Selecionar Arquivos.



     
    6° Passo: Selecionar o arquivo em seu Computador
    Selecione o arquivo que você quer que os usuários baixem e clique em Abrir (No meu está Open porque meu Windows esta em Inglês) e em seguida clique em Pronto.
    OBS: O Arquivo que será upado não precisa necessariamente ser um arquivo zipado (.rar, .zip, .7zip etc).



     
    7° Passo:  Clique sobre o arquivo upado e copie seu link de download
    Clique sobre o nome do arquivo que você acabou de upar e em seguida clique com o botão direito do mouse e selecione a opção Copiar Link.



     
    8° e último passo:  Cole esse link copiado no arquivo do seu site e pronto
    Cole o link que você copiou no arquivo de download do seu site e pronto.



     
    RECOMENDAÇÃO: Cole o link que você copiou no seu navegador como feito na imagem do passo 8 para testar se tudo ocorreu bem
     
    E assim chegamos ao fim deste tutorial, como eu disse antes, é muito simples, mas acredito que muitos não sabiam e podem sim absorver algo de positivo deste conteúdo!
     
     
     
    É Isso galera, gostaram? se sim, comente ai em baixo, e caso não gostaram, comentem também, todas as críticas construtivas são bem vindas!
     
    Até a proxima!
     
    Créditos:
    ~~Thayam
     
  4. Gostei
    Malditto deu reputação a Featzen em Smeargle System[PXG]   
    Bom, como um individuo(Vudi) não sabe cumprir o que fala, vou postar o sistema aqui.(não cabe ao post explicar aqui)
    Bom, aqui está o smeargle system, igual o da PxG. Vamos lá.
     
    1 - Vá na pasta Lib, substitua seu cooldown bar.lua por isso:



     
    2 - Ainda no Lib, no fim(depois do ultimo end) do Some Functions.lua, adicione isso:



     
    3 - Agora no order.lua, do Actions, em baixo de:
    if getTileThingByPos(checkpos).uid <= 0 then return true end Adicione:



     
    4 - Se seu servidor ja tiver os spells, sketch 1, sketch 2... Substitua por esses:
     



     
    Se não, use os mesmos acima, não esqueça de adicionar no spells.xml.
     
    5 - Agora, vá em talkactions/scripst, abra o move1.lua e substitua:



     
    Pronto, se tiver feito tudo certo, funcionará.
    Como ficará:



    Como usar:



     
    Créditos: Eu(Todo o script)
  5. Gostei
    Malditto deu reputação a henriquesafadao em Nick no Donate Pokemon   
    Vo posta apenas pra vim com nick do play basta edita pra aparecer o codigo numérico

               doItemSetAttribute(ball, "nick", "# ".. getPlayerName(cid) .. " #")
     
  6. Gostei
    Malditto deu reputação a KotZletY em (Ajuda) Porta de houses bugadas, poketibia   
    Esta é uma mensagem automática! Este tópico foi movido para a área correta.
    Pedimos que você leia as regras do fórum.
     
    @gabrieel as houses não foram feitas corretamente, ou bugaram de alguma forma.
    Apague a house.xml, e re-faça todas as casas do zero!! 
  7. Gostei
    Malditto deu reputação a JhonatanCWest em Aprenda a criar e postar um NPC no seu Map   
    Olá KingTibianos
    A pedido de um membro, vou postar um tutorial de como criar um NPC. Explicando detalhadamente.
    Primeiramente, cada npc se encontra em data/npcs no seu ot.
    Vou postar aqui como exemplo um NPC que venda algumas coisas:
      <?xml version="1.0" encoding="UTF-8"?> <npc name="Paul" script="default.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="57" body="86" legs="0" feet="114" addons="2"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_sellable" value="crossbow,2455,150;bow,2456,130"/> <parameter key="shop_buyable" value="crossbow,2455,360;bow,2456,200;spear,2389,10;royal spear,7378,25;assassin star,7368,200;power bolt,2547,30;bolt,2543,3;arrow,2544,2;"/> </parameters> </npc> Explicando:
    <?xml version="1.0" encoding="UTF-8"?>
    Especifica o tipo de linguagem usada no script. Não altere.
    npc name = Nome do NPC
    script = Endereço do Script. Default é o padrão.
    walkinterval = O intervalo de tempo em que o NPC anda.
    floorchange = Se ele "troca de chão", ou seja se ele se movimenta.
    healthnow = Tanto de vida que o Npc está no momento. Geralmente modificado em caso de "quests" específicas.
    max = O tanto de vida máximo dele. Este deve ser maior que o healthnow.
    looktype = Roupa usada, você pode ver as roupas no arquivo: data/XML/outfits.xml
    head, body, legs, feet = A cor da roupa, eu não tenho agora, mas vou provicenciar o pack das cores.
    addon = Se usa algum addon. 1 para o 1°, 2 para o 2°, 3 para os dois.
    <parameters> = Define que abaixo começará uma série de códigos parâmetros.
    module_shop = Módulo, usado. No caso aqui, é shop.. compras/vendas.
    shop_sellable = Define o que o NPC lhe oferece para vender.
    value = Determina as Id's, Nomes e Preços.
    crossbow,2455,150; = Primeiro "crossbow" nome que aparecerá na janela de "venda" do NPC, ID do item, Preço do Item;
    shop_buyable = Define o que o NPC irá lhe oferece para comprar
    Como colocar no RME Map Editor (Atual usado):
    1° Abra o RME, juntamente ao seu mapa.
    2° Clique em File>Import>Importar Monsters/NPC
    3° Clique no arquivo XML acima criado
    4° De um F5 para garantir o aparecimento do NPC
    5° Vá em Window e selecione Terrain Palette caso ainda não tenha feito isso.
    6° Vá em Creature, no canto esquero onde tem um option Terrain Palette.
    7° Selecione abaixo em creatures, NPCS.
    8° Clique lá embaixo, em spawns e crie uma área de circulamento do NPC no seu Mapa.
    9° Clique no nome do seu NPC, e coloque-o no mapa.
    10° Salve o Mapa! Pronto!!
    Pronto, seu NPC criado, e desenvolvido.
    Em breve o tutorial de Mapping, criando uma área para seu NPC! Bem detalhado!
    Caso tenha gostado, +REP
    Ou ao menos comente sobre o Post!
    Abraços!
  8. Curtir
    Malditto deu reputação a nociam em [ Pedido ] Otclient Para Poketibia 0.6.5 +   
    https://github.com/edubart/otclient/releases

    http://www.tibiaking.com/forum/topic/34344-otclient-067-1071/
  9. Gostei
    Malditto deu reputação a Yonie em [Modern Aac] Web Site Para PokeTibia + MiniTutorial   
    belo site ganho meu rep boa kra continue assim


    edit#
    como edito o menu tipo onde ta escrito download,conta,etc...
    queria deixar digamos a minha cara vlw
  10. Gostei
    Malditto deu reputação a kbelin em Não consigo criar Character no site Modern Acc   
    @Thelo1980
    Talvez seu config.lua esteja erroneamente configurado, aparentemente seu site usa uma DB, enquanto seu server está usando outra.

Informação Importante

Confirmação de Termo