Ir para conteúdo

LbrS

Campones
  • Total de itens

    19
  • Registro em

  • Última visita

Sobre LbrS

Informações

  • Forma que conheci o xTibia
    Sites de Busca
  • Sou
    OT-Admin

LbrS's Achievements

  1. Realmente, com os arquivos que você enviou a janela fica duplicada e o botão de login não funciona. Ao clicar nada acontece.
  2. Exatamente. Essa ferramente apesar de ser pouco utilizada pela maioria, agiliza MUITO o trabalho. Ela serve pra muita coisa mesmo, fiz esse post mencionando os items do loot de cada monstro pois é algo que frequentemente ocorre acredito que em qualquer projeto, e é algo que a ferramenta de pesquisa salva, e muito. Mas enfim, usando um pouco a cabeça o pessoal consegue utilizar essa ferramente pra muitas coisas além do que eu ensinei no tópico
  3. Olá ! Hoje eu estava editando meu projeto, quando me deparei com uma situação em que eu tive que editar um item, para ele se tornar um item VIP em meu OT. Porém, havia um problema, este mesmo item, antes de ser editado, podia ser dropado de diversos monstros, e isso era uma coisa que não poderia acontecer, é claro que um item VIP não poderia ser dropado de monstros, seria um item para ser vendido no site do jogo. Então tive que remover este item do loot de todos os monstros do OT, o que deveria ser muito cansativo. Eu iria ter de pesquisar na internet todos os monstros que dropam este certo item, para procurar os monstros na pasta monsters do meu OT e remover o item do loot de cada monstro um por um. Exatamente, DEVERIA ser algo muito cansativo, porém .. Lembrei de uma ferramenta do próprio windows que poderia me ajudar. O simples "pesquisar" ! Durr, grande bosta. Sim, mas não é apenas isso, eu descobri que esta ferramente é mais poderosa do que parece ! Ela não pesquisa apenas nomes de arquivos, ela pesquisa também conteúdos nos códigos de dentro dos arquivos ! Ou seja .. Caso você queira remover um certo item do loot dos monstros do seu OT, você não precisará mais descobrir todos os monstros que dropam o certo item, para depois pesquisar o nome de cada monstro um de cada vez, para depois ir lá e remover o item do loot .. Você basicamente precisará saber o id do seu item ... Neste exemplo, irei usar o item "Life Crystal", que pode ser dropado de muitos monstros. O ID do Life Crystal é : 2177. Agora basta você ir até o "Pesquisar" do Windows ... Selecionar "Todos os arquivos e pastas" ... Em "Uma palavra ou Frase no arquivo" ponha o ID do seu item, e em "Examinar em", desça a lista e vá em "Procurar..." e coloque a pasta "data/monsters" do seu OT. Ficando assim : Agora basta dar "Pesquisar" e aguardar o resultado. Vão aparecer então todos os arquivos .xml dos monstros que contém no loot o item que você colocou o ID. No caso do "Life Crystal", apareceram os seguintes resultados : Agora basta você entrar nos arquivos dos monstros, e remover o item do loot. Exemplo, irei remover o "Life Crystal" do loot do "Yeti". Entro no código do Yeti : <?xml version="1.0" encoding="UTF-8"?> <monster name="Yeti" nameDescription="a yeti" race="blood" experience="460" speed="270" manacost="0"> <health now="950" max="950"/> <look type="110" corpse="6038"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="80" attack="60"/> <attack name="physical" interval="1000" chance="15" range="7" min="-190" max="-140"> <attribute key="shootEffect" value="snowball"/> <attribute key="areaEffect" value="poff"/> </attack> <attack name="energy" interval="1000" chance="12" length="3" spread="3" min="-120" max="-175"> <attribute key="areaEffect" value="poff"/> </attack> </attacks> <defenses armor="28" defense="33"/> <elements> <element energyPercent="100"/> <element earthPercent="-20"/> </elements> <immunities> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="Yooodelaaahooohooo!"/> <voice sentence="Yooodelaaaheeeheee!"/> </voices> <loot> <item id="2671" countmax="3" chance="10000"/><!-- ham --> <item id="2148" countmax="70" chance="100000"/><!-- gold coin --> <item id="2666" countmax="5" chance="33333"/><!-- meat --> <item id="2111" countmax="5" chance="10000"/><!-- snowball --> <item id="2425" chance="1333"/><!-- obsidian lance --> <item id="4848" chance="600"/><!-- icicle --> <item id="2197" chance="700"/><!-- stone skin amulet --> <item id="2381" chance="6666"/><!-- halberd --> <item id="2177" chance="2500"/><!-- life crystal --> <item id="2044" chance="10000"/><!-- lamp --> <item id="2448" chance="10000"/><!-- studded club --> <item id="2688" countmax="4" chance="2500"/><!-- candy cane --> </loot> </monster> No final do código existe uma parte de configuração dos loots : <loot> <item id="2671" countmax="3" chance="10000"/><!-- ham --> <item id="2148" countmax="70" chance="100000"/><!-- gold coin --> <item id="2666" countmax="5" chance="33333"/><!-- meat --> <item id="2111" countmax="5" chance="10000"/><!-- snowball --> <item id="2425" chance="1333"/><!-- obsidian lance --> <item id="4848" chance="600"/><!-- icicle --> <item id="2197" chance="700"/><!-- stone skin amulet --> <item id="2381" chance="6666"/><!-- halberd --> <item id="2177" chance="2500"/><!-- life crystal --> <item id="2044" chance="10000"/><!-- lamp --> <item id="2448" chance="10000"/><!-- studded club --> <item id="2688" countmax="4" chance="2500"/><!-- candy cane --> </loot> Agora basta você encontrar na lista de loots do monstro o item que você deseja remover, no meu caso, "Life Crystal". Alguns arquivos de monsters (a maioria) vem com comentários ao lado dos ID's dizendo que itens que são aqueles, então basta você ir lendo a lista até encontrar o item que você deseja remover (no meu caso o "Life Crystal"), ou então caso não tenha o nome dos itens, apenas o ID no loot, dê um CTRL + F e pesquise o ID do seu item, e apague a linha. Enfim, veremos então como fica meu código após remover o "Life Crystal" do loot : <loot> <item id="2671" countmax="3" chance="10000"/><!-- ham --> <item id="2148" countmax="70" chance="100000"/><!-- gold coin --> <item id="2666" countmax="5" chance="33333"/><!-- meat --> <item id="2111" countmax="5" chance="10000"/><!-- snowball --> <item id="2425" chance="1333"/><!-- obsidian lance --> <item id="4848" chance="600"/><!-- icicle --> <item id="2197" chance="700"/><!-- stone skin amulet --> <item id="2381" chance="6666"/><!-- halberd --> <item id="2044" chance="10000"/><!-- lamp --> <item id="2448" chance="10000"/><!-- studded club --> <item id="2688" countmax="4" chance="2500"/><!-- candy cane --> </loot> Você pode observar que eu removi apenas a linha que era do "Life Crystal". Pronto, o Ghazbaran não dropa mais o "Life Crystal", agora basta só ir até o arquivo dos outros monstros que dropam também este item, e remover deles. Parece um pouquinho complicado pra quem não entende nada sobre esse tipo de coisa, mas ao fazer você percebe que é super simples, basta alguns cliques. ~ ~ Agora você pode ver que, o processo demorado que antes seria : Ir ao Google -> Pesquisar o item e ver que monstros que dropam este item -> Encontrar cada um dos monstros nos arquivos do seu servidor -> Remover item do loot. Se converteu para um processo bem mais prático e rápido, que é : Pesquisar ID do item no Windows -> Remover item do loot. LEMBRANDO QUE EU FIZ ESTE PROCESSO NO WINDOWS XP, NUNCA TESTEI EM WINDOWS VISTA / 7 / 8 / LINUX ETC. Portanto, acredito que funcione da mesma forma utilizando o sistema de pesquisa. Espero que ajude alguém, é isso. Obrigado
  4. Dantarrixx, Now your code worked well. Thank you! (My REP's over. Tomorrow grant you and sorry for my bad english, hehe.) ~ Novamente alertando. Dúvida sanada. Podem mover.
  5. Duvida sanada, pode ser movido. Funcionou perfeitamente cara. Muito obrigado ! REP.
  6. Funcionou perfeitamente Zipter98. Sempre você cara! Parabéns, você é realmente muito bom. Muito obrigado ! REP. Sanado, pode mover.
  7. Thanks for the reply. However, when running the command nothing happens. (Yes, I had the correct items in my backpack.)
  8. Olá, tenho um código aqui que anteriormente eu já havia tirado uma dúvida sobre ele, e o zipter98 me ajudou. Porém me veio à tona outra dúvida. Eu iria postar lá no mesmo tópico, mas ele já havia sido movido após ser resolvido, então não sabia se eu podia postar lá ainda. Então resolvi criar outro tópico. É o seguinte. Tenho um código em que é um TALKACTION que você executa um comando, exemplo !teleport + LOCAL, e ele te teleporta. Porém existem algumas restrições. O comando só te teleporta caso você tenha um certo item e um certo level. No caso, cada opção de teleport tem um level que possa teleportar. Mas já o item, não. O item está configurado para todas as opções, ou seja, não importa o destino que você escolher, você vai precisar do mesmo item. Eu quero que tenha um item para cada destino, e não um item para todos os destinos. Acho que deu pra entender, caso alguém for me ajudar e tenha alguma dúvida sobre a minha dúvida (lol), só falar. Aqui o código : function onSay(cid, words, param) local config = { pz = true, battle = true, need_level = true, premium = true, need_Item = true, Item = 2010 -- Aqui o item fica para qualquer destino que eu for. } local lugar = { ["Centerya"] = { pos = {x = 1137, y = 1243, z = 5},level = 8}, ["Deserya"] = { pos = {x = 930, y = 1239, z = 5},level = 30} } --Posições. local pos_one = {x = 1136, y = 1243, z = 5} local pos_two = {x = 1137, y = 1243, z = 5} local pos_three = {x = 929, y = 1239, z = 5} local pos_four = {x = 930, y = 1239, z = 5} --Variável que irá "verificar" a posição do jogador. local check = 0 if (param == "Lista") then local str = "" str = str .. "Locais disponíveis :\n\n" for name, pos in pairs(lugar) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end local a = lugar[param] if getThingPos(cid).x ~= pos_one.x or getThingPos(cid).y ~= pos_one.y or getThingPos(cid).z ~= pos_one.z then check = check + 1 end if check == 1 then if getThingPos(cid).x ~= pos_two.x or getThingPos(cid).y ~= pos_two.y or getThingPos(cid).z ~= pos_two.z then check = check + 1 end end if check == 2 then if getThingPos(cid).x ~= pos_three.x or getThingPos(cid).y ~= pos_three.y or getThingPos(cid).z ~= pos_three.z then check = check + 1 end end if check == 3 then if getThingPos(cid).x ~= pos_four.x or getThingPos(cid).y ~= pos_four.y or getThingPos(cid).z ~= pos_four.z then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você só pode utilizar este comando à frente de um mastro.") end end if not(a) then doPlayerSendTextMessage(cid, 22, "Esta ilha não existe.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.premium == true and isPremium(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players Premium Accounts podem teleportar. Para comprar Premium Account acesse : \n www.???.com") return TRUE elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você só pode teleportar dentro de Protection Zones. ") return TRUE elseif config.need_Item == true and getPlayerItemCount(cid,config.Item) < 1 then doPlayerSendCancel(cid,"Você precisa da " .. getItemNameById(config.Item) .. " para teleportar para " .. param .. " Island.") return TRUE elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não pode teleportar durante o estado de battle.") return TRUE elseif config.need_level == true and getPlayerLevel(cid) < a.level then doPlayerSendTextMessage(cid, 22, "Você não tem level suficiente. \n Você precisa ser Lv."..a.level.."+ para poder teleportar para " .. param .. " Island.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end doTeleportThing(cid, a.pos) doSendMagicEffect(a.pos, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, " Você foi teleportado para \n " .. param .. " Island.") end
  9. Olá. Andei tentando aqui um sistema de NPC para o barco do meu projeto, tentei pegar alguns scripts que encontrei pelo fórum e editar adicionando o que eu queria, mas acabei falhando completamente, então estou aqui pedindo á alguém que me ajude, se for possível. Seguinte, gostaria de um NPC da seguinte forma : 1. Ele dá várias opções de locais que você pode teleportar. Ex: Olá, posso te levar á diversos lugares. Diga travel. *PLAYER DIZ TRAVEL* Posso te levar á Cidade1 e Cidade2. Escolha seu destino. 2. O player irá escolher o local, porém o NPC só irá teleportá-lo caso ele tenha : Um certo item. (CADA DESTIDO TERÁ UM CERTO ITEM PARA PODER TELEPORTAR.) (ex: CIDADE1 = Fire Sword, CIDADE2 = Wand of Vortex.) Um certo nível. (CADA DESTINO TERÁ UM CERTO NÍVEL PARA PODER TELEPORTAR.) (ex: CIDADE1 = Lv.30, CIDADE2 = Lv.60) Uma certa quantidade de gold. (CADA DESTINO TERÁ UM CERTO VALOR PARA PODER TELEPORTAR.) (ex: CIDADE1 = 1000 gold, CIDADE2 = 2000 gold.) ~ É basicamente isso, lembrando de uma coisa: APÓS TELEPORTAR, O ITEM NÃO É CONSUMIDO, ELE CONTINUA NA BP. (O gold é consumido, claro.)
  10. zipter98, Funcionou perfeitamente! Consegui entender sua lógica, e devo dizer que ela foi muito inteligente. Pode ficar tranquilo que conseguirei configurar novas posições "permitidas". Entendi perfeitamente o código. OBRIGADO, você é muito bom cara Dúvida sanada, pode mover o tópico.
  11. Seu .otbm foi corrompido. Você não tinha nem um backup, uma cópia do arquivo em algum lugar do PC? Se não tem, sinto lhe informar mas seu mapa nunca mais voltará. Você só tem uma chance, que é ver se seu PC criou um ponto de restauração á pouco tempo, e você possa voltar àquele ponto. Boa sorte.
  12. amoeba13, Muito obrigado cara, era exatamente isso que eu precisava ! zipter98, Seu código funcionou perfeitamente, porém, eu gostaria de saber como faço para que eu possa adicionar mais SQM's além de apenas um, em que possa utilizar o comando e teleportar. Eu tentei de 3 formas, porém nenhuma funcionou. Segue aí como eu tentei : local posis = {x = xxx, y = yyy, z = zzz} and {x = xxx2, y = yyy2, z = zzz2} Não deu certo, eu pensei que fosse por estar o "and" nessa lógica, então tentei : local posis = {x = xxx, y = yyy, z = zzz} or {x = xxx2, y = yyy2, z = zzz2} Também não deu certo, então me espelhei em outra parte do código e tentei : local posis = { pos = {x = xxx, y = yyy, z = zzz}, pos = {x = xxx2, y = yyy2, z = zzz2} } Nenhuma das minhas tentativas funcionou. Tem como me ajudar ? Obrigado !
  13. O código do zipter98 funcionou ! Muito obrigado cara. Ontem estava tentando pelas minhas próprias mãos fazer isso, e vendo seu código funcionando percebi que por pouco eu não havia conseguido. Aproveitando, zipter98 ou AnneMotta, vocês provavelmente entendem mais do que eu de .lua, então gostaria de fazer uma pergunta pra ampliar meu conhecimento. Estes parâmetros como : getCreatureCondition getPlayerLevel getThingPos (O que você utilizou para resolver minha dúvida) Entre outros, vocês sabem de cabeça todos estes parâmetros ou tem alguma lista, algum lugar que eu possa descobrir essas coisas, para quando eu precisar ? Ontem eu estava tentando fazer e não consegui por não saber quando função/parâmetro utilizar .. Obrigado ! obs.: Dei rep+ aos dois por terem tentado me ajudar / me ajudado. Você curtiu isso -> AnneMotta. Você curtiu isso -> Zipter98.
  14. Nada. Não dá nem um erro, nem nada. Só que continua teleportando de qualquer lugar.
  15. Olá, tenho aqui um script de teleport por comando. Funciona simplesmente da seguinte forma : Você executa um comando + o lugar que quer ir (exemplo : "!teleport Cidade 1", e você é teleportado para o lugar escolhido. Porém, tem restrições. No caso do meu código, você não pode teleportar se estiver durante estado de Battle, fora de Protection Zones, sem um certo item na bag e se não for premium. Até aí tudo bem, consegui deixar da forma que eu desjava, mas tem uma coisa. Quero que o comando só execute em certo SQM. Já tentei de diversas formas porém não consegui, e estou pedindo ajuda. Aqui está o comando : function onSay(cid, words, param) local config = { pz = true, battle = true, need_level = true, premium = true, need_Item = true, Item = 2010 } local lugar = { ["Cidade 1"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 2"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 3"] = { -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, ["Cidade 4"] ={ -- nome do lugar pos = {x=1090, y=1236, z=7},level = 8}, } if (param == "Lista") then local str = "" str = str .. "Ilhas disponíveis :\n\n" for name, pos in pairs(lugar) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 6579, str) return TRUE end local a = lugar[param] if not(a) then doPlayerSendTextMessage(cid, 22, "Esta ilha não existe.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE elseif config.premium == true and isPremium(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players Premium Accounts podem teleportar. Para comprar Premium Account acesse : \n www.???.com") return TRUE elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você só pode teleportar dentro de Protection Zones. ") return TRUE elseif config.need_Item == true and getPlayerItemCount(cid,config.Item) < 1 then doPlayerSendCancel(cid,"Você precisa da " .. getItemNameById(config.Item) .. " para teleportar para " .. param .. " Island.") return TRUE elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não pode teleportar durante o estado de battle.") return TRUE elseif config.need_level == true and getPlayerLevel(cid) < a.level then doPlayerSendTextMessage(cid, 22, "Você não tem level suficiente. \n Você precisa ser Lv."..a.level.."+ para poder teleportar para " .. param .. " Island.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end doTeleportThing(cid, a.pos) doSendMagicEffect(a.pos, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, " Você foi teleportado para \n " .. param .. ". Island.") end Para quem não entendeu, quero que o comando só teleporte caso você esteja encima de certo SQM. Caso contrário (else), ele envia uma mensagem : "doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você não pode utilizar este comando fora do SQM correto.")" Se alguém for resolver, na hora de colocar as coordenadas, pode por x,y e z = 0 , que depois eu configuro.
  • Quem Está Navegando   0 membros estão online

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