Ir para conteúdo

Omega

Marquês
  • Total de itens

    1165
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Tudo que Omega postou

  1. mais se o demon morrer não vai dar pra sumonar ele denovo certo ? Errado. Testa antes de ficar conjecturando se tá errado ou não. TA DANDO ERRO É, tinha mexido aqui e peguei o errado. Mas o que você deveria fazer era postar o erro para que eu pudesse corrigir. Quem tá precisando de um favor aqui é você, amigo. Quem mais deveria demonstrar educação e gratidão é você, amigo. Quem merece ficar sem script nenhum... adivinha? É você, amigo. Removi o post anterior e espero que ninguém mais ajude depois de perceber o quão ingrato e mal educado você está sendo. Não sei se seus pais te ensinaram, mas quando se pede alguma coisa, se diz por favor. Quando alguém te dá alguma coisa, se diz obrigado. Apertei até ctrl+f pra ver se tinha algum por aqui... nada.
  2. Posta o script do oracle aí.
  3. Cara, isso aí tá muito errado. Desse jeito qualquer um vai poder pegar os itens e eles vão aparecer sempre e somente quando o OT carrega o mapa, ou seja, quando você reinicia.
  4. Eles ficam armazenados no storage 7051 (configurável no lib) de cada jogador. Aí é só colocar pra checar quanto vale esse storage.
  5. mais se o demon morrer não vai dar pra sumonar ele denovo certo ? Errado. Testa antes de ficar conjecturando se tá errado ou não.
  6. O que eu fiz fica do jeito que você pediu. Antes tinha perdido a formatação, mas corrigi. Testei aqui e tá funcionando.
  7. Testa desse jeito aqui:
  8. Tenta isso aí: Tópico movido para a seção de dúvidas e pedidos resolvidos.
  9. function onSay(cid, words, param) local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..taskstg.points.." and `value` > 0") if query:getID() == -1 then doPlayerSendTextMessage(cid, 27, 'Nao foram encontrados jogadores com task points.') return true end local players = {} local points = {} local str = "" local j = 1 local str = "TASK RANK\n\n" repeat str = str.."{"..j.."} "..getPlayerNameByGUID(query:getDataInt("player_id")).." ["..query:getDataInt("value").."]\n" j = j + 1 until not query:next() or j >= 10 doPlayerPopupFYI(cid, str) return true end Cara, fiz só algumas modificações pra melhorar, mas o problema é que você tem que dar logout pra salvar os storages. Depois aparece.
  10. Cara, acho que tá funcionando aí, mas você não tem nenhum personagem com pontos de task ganhos, aí o script não mostra nada.
  11. Claro, mas essa função não existe a menos que você insira ela. Pra facilitar, eu botei uma checagem de premmy e storage por player mesmo. Antes de ver o post do Amoeba, eu pensei em criar algo parecido, mas ia dar um trabalho dos infernos, então deixei assim mesmo
  12. Muito útil essa função. Ajuda a criar alguns scripts que seriam um saco sem ela.
  13. Isso não é inédito em OTS, mas fiz o meu sistema de Caçador de Recompensa (Bounty Hunter) 1. Informações sobre o sistema Sistema de pontos por recompensa incluído (configurável) Rank de maiores caçadores Rank de maiores recompensas Lista de jogadores com recompensa online 2. Funcionamento Você fala com o NPC, que oferece várias opções Você pode colocar uma recompensa para a morte de alguém (post), pegar seu dinheiro por caçar alguém (reward), checar as maiores recompensas (most wanted), checar seus pontos de caçador (points) ou obter informações gerais sobre o funcionamento (information) Para colocar uma recompensa, você deve fornecer um nome. Se esse jogador existir, você deverá oferecer um valor (mínimo configurável). Depois, desse valor será descontada a taxa da guilda dos assassinos (configurável). Se você tiver esse dinheiro, ele será removido e o nome dessa pessoa estará na lista de procurados, para que o jogador que a matar (não funciona para o jogador que colocou a recompensa) ganhe a recompensa devida Quando um jogador mata outro procurado, ele é avisado de que ganhou a recompensa e os pontos (se estiver ativado). Para pegar a recompensa, ele deve falar com o NPC Para saber quais jogadores procurados estão online e quais são suas recompensas, foi adicionado um quadro especial que lista esses jogadores, assim como um outro quadro que lista os maiores caçadores do servidor 3. Códigos 3.1. Tags Creaturescripts.xml: <event type="kill" name="bountykill" event="script" value="bountykill.lua"/> <event type="look" name="bountyboard" event="script" value="bountyboard.lua"/> talkactions.xml: <talkaction words="/installbounty" access="5" event="script" value="bountyinstall.lua"/> 3.2. NPC Crie um arquivo: npcs/Tyrion.xml 3.3. Códigos lua Adicionar em creaturescripts/login.lua, junto com os demais registerCreatureEvent registerCreatureEvent(cid, "bountyboard") registerCreatureEvent(cid, "bountykill") lib/bountylib.lua creaturescripts/scripts/bountykill.lua creaturescripts/scripts/bountyboard.lua npcs/scripts/assguild.lua talkactions/scripts/bountyinstall.lua 4. Configuração / Instalação Você deve usar o comando /installbounty pelo GOD para que o sistema adicione a coluna necessária no seu banco de dados As configurações disponíveis estão no bountylib.lua O sistema de pontos apenas adiciona e conta os pontos. Cabe a sua imaginação/habilidade fazer algo a partir deles Para adicionar o rank de melhores caçadores e a lista de procurados online, você deve criar dois itens (eu recomendo o quadro negro - id 1810, por exemplo) e colocar os actionids 3550 e 3551. Assim, quando alguém der look, aparecerão as respectivas listas [óbvio] O sistema depende de que você adicione o NPC no mapa [/óbvio] 5. Bugs Apesar de ter testado bastante, ainda há espaço para alguns bugs. Caso você os encontre, por favor poste DETALHADAMENTE qual é o erro para que eu possa consertar 6. Considerações Finais Espero críticas/sugestões/elogios sobre o código e seu funcionamento
  14. function onLogin(cid) local days = 2 if not isPremium(cid) then if getPlayerStorageValue(cid, 505060) == -1 then doPlayerAddPremiumDays(cid, days) setPlayerStorageValue(cid, 505060, 1) doPlayerSendTextMessage(cid, 25, 'Voce recebeu '..days..' dias de premium account! Bom jogo!') end end return true end EDIÇÃO: Não tinha visto a resposta do Amoeba. Eu fiz pra cada char que logar, então o dele é mais completo.
  15. - - -
  16. function onLogin(cid) local storage,days = (getPlayerAccountId(cid)+550),1 if getGlobalStorageValue(storage) <= 0 then setGlobalStorageValue(19456, 1) doPlayerAddPremiumDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu "..days.." dias de premium account. Bom jogo!") end return true end
  17. Não entendi uma coisa: "enquanto a spell estar sendo conjurada"? A spell demora um tempo pra ser conjurada? Bom, pra fazer o que você quer, use a função: doCreatureSetNoMove(cid, true) Para paralizar o jogador que está conjurando a magia. Depois adicione: addEvent(doCreatureSetNoMove, tempo, false) Sendo esse tempo em milissegundos para que o jogador possa se mover novamente. Coloque isso no script da spell que deve funcionar para o que você quer.
  18. Omega

    Arrumar spells

    Tenta trocar o return true Por return doCombat(cid, combat, var)
  19. Omega

    Ajuda Task System

    O problema é que ele vai ter que fazer o mesmo pra todos os monstros, porque se não vai pedir uma tabela e receber um número, o que vai causar erro. Mas gostei da solução, me parece que deve funcionar se não houve 'erros bobos'.
  20. O do rank eu consigo fazer, mas de php eu não saco ainda =/ EDIÇÃO: Segue o script do rank: TAG no talkactions.xml: <talkaction words="!taskrank" event="script" value="taskrank.lua"/>
  21. Que tal: Isso mesmo que você queria? Obrigadão, Alex. Desculpa a demora, é que só cheguei de viagem agora. Vou usar aqui =D
  22. Dá pra consertar passando uma pasta de actions que funcione, mas se não tem nem isso que funcione, não quero nem imaginar o que mais não funciona aí
  23. Omega

    [Pedido] Mensagem

    É, isso aí. Tá começando a aprender scripting? Qualquer dúvida pode mandar PM que se eu souber, eu ajudo.
  24. Você tem que mudar no movements.xml. Vai lá procura o id do item e coloca slot="head" na tag
  25. Gostei do true no lugar do TRUE que muitos usam, mas você deveria começar a identar (se é que a formatação não foi perdida ao postar) Leitura obrigatória para qualquer scripter: http://www.xtibia.com/forum/topic/203791-qual-e-a-coisa-mais-importante-em-um-codigo-e-por-que-e-a-elegancia/ Melhor tutorial (na verdade é um pacote) que eu já vi sobre scripting: http://www.xtibia.com/forum/topic/99746-pasta-data-enciclopedia-13-tutoriais-para-entender-ela-toda/ Mais dois comentários: Você comeu o Pos no terceiro parâmetro em: function onUse(cid, item, fromition, itemEx, toPosition) E procure usar actionid sempre que possível, pois é mais fácil de arrumar conflito com itemid, que passa a valer para todos.
  • Quem Está Navegando   0 membros estão online

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