Ir para conteúdo
  • 0
Slyton

action Comando de pula de clan

Pergunta

Bom estou com um pequeno problema com o script.

 

- Jurandir: Mais como funciona o comando?

- Eu: O comando funciona da seguinte maneira, o player fala o comando passa de 1 clan para o outro, gastando uma taxa após falar o comando que são 10 Diamonds.

- Jurandir: Mas oque esta acontecendo?

- Eu: Após falar o comando, o player tinha que gasta 10 Diamonds e passar de clan, so que ele fala o comando passa de clan so que não gasta os 10 Diamonds.

 

 

Valendo Rep++

    <talkaction words="/clan" event="script" value="clan.lua"/>

 function onSay(cid, words, param, channel)
if param == "" then
return sendMsgToPlayer(cid, 20, "Estao faltam os parametros! [clan name], [rank]")
end
local t = string.explode(param, ",")
local clans = {'Volcanic', 'Seavell', 'Orebound', 'Wingeon', 'Malefic', 'Gardestrike', 'Psycraft', 'Naturia', 'Raibolt'}
 
if not isInArray(clans, t[1]) then
   return sendMsgToPlayer(cid, 20, t[1].." nao é uma clan valido!")
elseif not tonumber(t[2]) then
   return sendMsgToPlayer(cid, 20, "Parametros errados! [clan name], [rank].")
end
 
local rank = tonumber(t[2])
local clan = t[1]
 
    if getPlayerStorageValue(cid, 92823) < 1 then      
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Essa é sua primeira vez mudando de clan. Nas próximas, terá o custo de 10 diamonds.") 
        doPlayerSendTextMessage(cid, 27, "Agora você pertence ao clan "..clan..", rank: "..rank.."")         
        setPlayerClan(cid, clan)
        setPlayerClanRank(cid, rank)
    else
        if getPlayerItemCount(cid, 12237) < 10 then
            return doPlayerSendCancel(cid, "Você precisa de 10 diamond para mudar de clan.")
        elseif rank > getPlayerStorageValue(cid, 862281) then
            return doPlayerSendCancel(cid, "Sorry, not possible.")
        end
       
        doPlayerSendTextMessage(cid, 27, "Agora você pertence ao clan "..clan..", rank: "..rank.."")
        doPlayerRemoveItem(cid,12237, 10)
        setPlayerClan(cid, clan)
        setPlayerClanRank(cid, rank)
    end
    return true
end

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde, o problema seria:

 

- Ele checa se o valor da storage 92823 é menor que 1. [OK]

- MAS, ele não seta a storage 92823 para 1, após mudar o clan/rank, ou seja. O código entende que a "primeira vez que ele muda de clan" é eterna rs.

 

Aqui está o código arrumado:

 

 

Please login or register to see this spoiler.

 

Editado por Roksas

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

  1. Tenho certeza que e olha.
  2. 14:19 You see 100 Diamonds.
  3. It's color come across as violent and aggressive.

    ItemID: [12237].

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Desculpa, não havia lido o código corretamente por falta de atenção haha. Mas já encontrei o erro, segue meu post lá em cima corrigido. Vlw galera s2

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Humm testei e deu perfeitamente so que tem um probleminha, kkkk

a primeira vez que usa o comando e de graça? não tem como mudar isso? AEHUUHUE

Editado por Slyton

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

Tem sim, já estava no código desde o começo rs, mas eu retiro para você. Ficando assim:

 

 

Please login or register to see this spoiler.

 

 

Flw!

Editado por Roksas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por khaleesi95
      Nome: Camando !spells por vocation.
      Tipo: Talkaction.
      Versão: 8.1
       
      Olá gente, esse é meu primeiro post. Vou ensinar aqui como colocar o comando !spells no seu OT versão 8.1. S[o testei na 8.1, mas acredito que funcione em outras também.
       
      Bom então vamos começar...
       
      Você só vai rpecisar de seu bloco de notas.
       
      PRIMEIRO PASSO:
       
      Entre na pasta dos scripts das talkactions:
       
      OTServ > Data > Talkactions > Scripts
       
      nesta pasta você crie um arquivo com o nome que desejar, eu optei por "spells.lua". Ou se tiver algum arquivo dentro desta pasta, é só copiá-lo, colar na mesma pasta, e renomeá-lo.
       
      SEGUNDO PASSO:
       
      Apague tudo o que estiver no seu novo arquivo.
       
      adicione este código:
       
      function onSay(cid) voc = getPlayerVocation(cid) if voc == 5 then doPlayerSendTextMessage(cid,22,"Magias para Master Sorcerer") elseif voc == 6 then doPlayerSendTextMessage(cid,22,"Magias para Elder Druid") elseif voc == 7 then doPlayerSendTextMessage(cid,22,"Magias para Royal Paladin") elseif voc == 8 then doPlayerSendTextMessage(cid,22,"Magias para Elite Knights") else doPlayerSendTextMessage(cid,22,"Magias para Todos") end return 1 end    
      voc = getPlayerVocation(cid) - Pega a ID da vocação do player.
       
      if voc == 5 then - ID da vocação do player, (5 = Master Sorcerer), você pode mudar para as IDs com promotion, por exemplo os Knight que tem ID 4, assim a menssagem só vai aparecer para os Knight, basta mudar a ID.
       
      doPlayerSendTextMessage(cid,22,"Magias para Master Sorcerer") - Texto que vai aparecer para o player, caso ele seja Master Sorcerer.
       
      doPlayerSendTextMessage(cid,22,"Magias para Todos") - Se você perceber, existe um ELSE logo acima, que é como se falasse que se a vocação do player não for nenhuma entre as 4 definidas: 5, 6, 7 e 8, ele manda esta mensagem, ou seja, se o player é um Knight por exemplo ele manda esta mensagem, no meu caso eu optei por definir as IDs de player com promotion, mas você pode fazer so para knight por exemplo, e so mudar o ID para 4 (ID do knight).
       
      Abaixo tem mais 3 códigos iguais, que diferem na ID, e no texto, para mudar a seu gosto, basta você saber a ID da vocação, e trocá-la, você tabém pode criar textos para outras vocações, é só copiar isso:
       
      elseif voc == ID_DA_VOCATION then doPlayerSendTextMessage(cid,22,"TEXTO_PARA_A_VOCATION")    
      e colar a baixo do ultimo código parecido com este.
       
      TERCEIRO PASSO:
       
      Agora volte um nível nas pastas ou seja:
       
      OTServ > Data > Talkactions
       
      Abra o arquivo "talkactions.xml" e adicione esta linha entre as tags <talkactions> </talkactions>:
       
      <talkaction words="!spells" event="script" script="spells.lua"/>    
      words="!spells" - O que o player deve digitar para que a mensagem apareca em sua tela.
      script="spells.lua" - O nome do arquivo .lua que executa a função, ele está em sua pasta Scripts dentro de Talkactions.
       
      Espero que tenham gostado.
      Abraços.
    • Por khaleesi95
      Nome: NPC que vende BP de fluids!
      Tipo: NPC
      Versão: 8.1
       
      Bom, eu procurei na net várias e várias vezes, um NPC que vende BP de manafluid ou outro tipo de fluid, só achava de runas, etc.
       
      Vamos começar então...
       
      PRIMEIRO PASSO:
       
      Entre na sua pasta NPC e copie qualquer alquivo .xml de NPC que tiver na pasta e em seguida cole-o na mesma pasta:
       
      PASTA_DO_OT > Data > npc
       

       
      ** Pode ser qualquer arquivo.
       
      Após isso renomeie com o nome do NPC que vc quer que venda as BPs
      Ex: Bp Fluid.xml
       
      SEGUNDO PASSO:
       
      Delete tudo que está no seu novo arquivo de NPC (Bp Fluid.xml) e cole isto:
       
      <?xml version="1.0"?><npc name="Vendedor de BP de MF" script="data/npc/scripts/bpfluid.lua" access="0"> <look type="251" head="57" body="57" legs="57" feet="57" addons="2" corpse="3128"/> </npc>    
      name="Vendedor de BP de MF": Nome do NPC ( Vai aparecer em seu OT ).
       
      script="data/npc/scripts/bpfluid.lua": Local onde se encontra o arquivo .lua que vamos configurar mais à frente.
       
      access="0": O Número do acesso do NPC, no caso 0, pois queremos que ele seja acessível a todos do server.
       
      Salve o arquivo.
       
      TERCEIRO PASSO:
       
      Vá na Pasta Scripts dentro da pasta NPC e copie qualquer arquivo e cole na mesma pasta, renomeando-o para "bpfluid.lua" (ver parte verde do código XML), em nosso caso.
       
      QUARTO PASSO:
       
      Apague o conteúdo de seu arquivo "bpfluid.lua" e copie isto:
       
      local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false focus = 0 talk_start = 0 target = 0 following = false attacking = false function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then selfSay('Olá ' .. creatureGetName(cid) .. '! Eu vendo bps De MF (manafluid) 1k e LF (lifefluid) 600gp.') focus = cid talk_start = os.clock() elseif string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 3 then selfSay('Desculpe, ' .. creatureGetName(cid) .. '! Eu falo com você em um minuto.') elseif msgcontains(msg, 'bp de mf') and focus == cid then buyContainer(cid,1988,2006,7,1000,20) talk_start = os.clock() elseif msgcontains(msg, 'bp mf') and focus == cid then buyContainer(cid,1988,2006,7,1000,20) talk_start = os.clock() elseif msgcontains(msg, 'bp de lf') and focus == cid then buyContainer(cid,1988,2006,10,600,20) talk_start = os.clock() elseif msgcontains(msg, 'bp lf') and focus == cid then buyContainer(cid,1988,2006,10,600,20) talk_start = os.clock() elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 3 then selfSay('Até logo, ' .. creatureGetName(cid) .. '!') focus = 0 talk_start = 0 end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Próximo por favor...') end focus = 0 end end    
      Bom, eu são sou um bom scripter, por isso não vou comentar boa parte desse código, mas vou falar da parte (pelo menos eu acho) mais importante do script, que é a parte onde o NPC vende a BP de Fluid.
       
      Vou mostrar só uma parte da venda (BP de MF) porque a outra é igual só muda um número, e o preço.
       
      elseif msgcontains(msg, 'bp de mf') and focus == cid then buyContainer(cid,1988,2006,7,1000,20) talk_start = os.clock()    
      elseif msgcontains(msg, 'bp de mf'): O que o player deverá diser para comprar sua BP cheia de manalfuid.
       
      Agora vou explicar a parte importante do código:
       
      buyContainer(cid,1988,2006,7,1000,20)
       
      Em marrom: ID da Backpack Simples. Você pode escolher o modelo da Backpack basta saber a ID e trocar por ali.
      Em verde: ID de um "vial": provavelmente vidros onde ficam os fluids (não troque aqui se quer fluid).
      Em azul: ID que define qual tipo de fluid, ex: manafluid, lifefluid, água, e por ai vai. Pra você saber a ID do tipo de fluid, basta ir na pasta "items", e entrar em "items.xml", aqui procure pelo fluid que você quer, no meu pro exemplo a manafluid está com a ID assim: "20007", ai é só utilizar o numero 7 (10 para lifefluid - por exemplo).
      Em vermelho: Preço que o usuário vai pagar pela BP cheia: 1000gp (1k).
      Em rosa: Número de manafluids dentro da backpack, como a bp só cabe 20, ali fica 20. Se quiser colocar bps que cabem mais, você vai ter que editar ali.
       
      NPC QUE VENDE BP DE ITENS
       
      Como prometido, vou falar um pouco sobre esse assunto.
       
      TODOS OS PASSOS DESSE SÃO IGUAIS AOS DA BP DE MANAFLUID, com excesão do último.
       
      Vou explicar este código:
       
      elseif msgcontains(msg, 'bp de uh') and focus == cid then buyContainer(cid,1988,2273,100,600) talk_start = os.clock()    
      elseif msgcontains(msg, 'bp de uh'): O que o player deverá diser para comprar sua BP cheia de UH.
       
      Agora vou explicar a parte importante do código:
       
      buyContainer(cid,1988,2273,100,600)
       
      Em marrom: ID da Backpack Simples. Você pode escolher o modelo da Backpack basta saber a ID e trocar por ali.
      Em verde: ID do Item, no caso UH.
      Em azul: Números de item por slot (UH é agrupável). Se for item que só cabe 1 por slot (ex.: rope - corda), você só precisa apagar o número 100 e uma das vírgulas:buyContainer(cid,1988,2273,600).
      Em vermelho: O preço por BP cheia do Item: 600gp.
       
      COMO COLOCAR SEU NPC NO MAP EDITOR
       
      To sem o MAP EDITOR, mas vou falar mais ou menos aqui:
       
      Vá na pasta do seu MAP editor e procure o arquivo "creatures.xml", copie uma das linhas e Add uma dessas:
       
      <creature looktype="251" name="Bp Fluid" head="57" body="57" legs="57" feet="57" type="npc"/>
       
      lokktype, head, body, legs, feet você copia do arquivo que você criou do NPC na pasta NPC, (PRIMEIRO PASSO).
      name: coloque o Nome que você colocou no seu arquivo de NPC, (PRIMEIRO PASSO).
      type: npc (porque é um NPC).
       
      É bem simples, tem um quadrado vermelho, ao lado de um verde (onde add protection zone), que adiciona uma espécie de "fogo" em um local, nesta área vermelha você pode adicionar NPCs ou Monstros...
       
      Coloque na área onde vai ficar o NPC, esse "fogo" e o QUALQUER (Qualquer um da lista) NPC do lado do "fogo".
       
      Clique numa setinha que tem numa barra horizontal no topo, e dê dois cliques em cima no NPC, agora edite, coloque no lugar do Nome, o nome do arquivo XML que você criou para o NPC.
       
      Ex.: Bp Fluid (só o nome sem o .xml)
       
       
      ** Só testei no 8.1, mas acredito que funcione em outras versões.
       
      Abraços a todos.
    • Por WExpert
      Boa tarde.
      Bom, eu estou tentando descompilar um client de narutotibia 8.54 com o TibiaUnbinder, e segui todos os tutoriais corretamente, passo a passo, e não consegui descompilar, quem puder mi ajudar leva meu REP+
    • Por Legnus
      Achei isso perdido em um servidor antigo e decidi compartilhar. No vídeo fica fácil entender como funciona, espero que seja útil.
       
       
       
       
       
       
       
       
      data/npc:
       
      Please login or register to see this spoiler.
       
×