Ir para conteúdo
  • Cadastre-se

[Resolvido] [PEDIDO] Script amuleto e level


Posts Recomendados

Gostaria de um script, que ao logar pela primeira vez o player recebe um amuleto no slot e ele não pode removê-lo.

Ao upar de level esse amuleto é trocado por outro, que não pode remover.

Ao upar novamente ele é trocado e assim por diante.

Não sei se é fácil ou se é um desafio, mas estou a procura desse script desde o ano passado, dou 2REP+ pra quem conseguir me ajudar.

Link para o post
Compartilhar em outros sites

Cria um dois itens no otb que tenham a opção de não ser móvel. Anote os ids deles, e depois crie os itens no xml com as respectivas informações dos amuletos que você quiser.

 

Depois instale esse script:

 

local amuleto1 = 2170
local amuleto2 = 2171
 
function onLogin(cid)
   if getPlayerLastLoginSaved(cid) < 1 then
      doPlayerAddItem(cid, amuleto1)
   end
   
   if getPlayerItemCount(cid, amuleto1) > 0 then
      registerCreatureEvent(cid, "AmuletoChange")
   end
 
   return true
end
 
function onAdvance(cid, skill, oldlevel, newlevel)
   if skill == 8 and getPlayerItemCount(cid, amuleto1) > 0 then
      doPlayerRemoveItem(cid, amuleto1)
      doPlayerAddItem(cid, amuleto2)
   end
 
   return true
end

 

<event type = "login" name = "LoginAmuleto" event = "script" value = "Amuletos.lua" />
<event type = "advance" name = "AmuletoChange" event = "script" value = "Amuletos.lua" />

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

mas no caso são 40 amuletos, como funciona pra adicionar mais no script?

 

--

 

Não consigo dat editor pra versão que eu uso: 9.44

Tem como fazer um script pra não poder remover o item?

eu tentei esse mas não consegui desenvolver ele:

function onDeEquip(cid, target, item, targetItem)
local itemsnoMove = {2173}
if (isInArray(itemsnoMove, item.itemid)) then
doPlayerSendCancel (cid, "You can't move this item.")
return false
end
return true
end
Link para o post
Compartilhar em outros sites
local amuleto1 = 21..
local amuleto2 = 21..
local amuleto3 = 21..
local amuleto4 = 21..
local amuleto5 = 21..
local amuleto6 = 21..
local amuleto7 = 21..
local amuleto8 = 21..
local amuleto9 = 21..
local amuleto10 = 21..

function onLogin(cid)
   if getPlayerLastLoginSaved(cid) < 1 then
      doPlayerAddItem(cid, amuleto1)
   end
   
   if getPlayerItemCount(cid, amuleto1) > 0 then
      registerCreatureEvent(cid, "AmuletoChange")
   end
 
   return true
end
 
function onAdvance(cid, skill, oldlevel, newlevel)
   if skill == 8 and getPlayerItemCount(cid, amuleto1) > 0 then
      doPlayerRemoveItem(cid, amuleto1)
      doPlayerAddItem(cid, amuleto2)
      doPlayerRemoveItem(cid, amuleto2)
      doPlayerAddItem(cid, amuleto3)
      doPlayerRemoveItem(cid, amuleto3)
" vai colocando todos os amuletos"
   end
 
   return true
end

Troca os IDS

e Colocando

      doPlayerRemoveItem

      doPlayerAddItem

 

é assim MaXwEllDeN ?

Editado por TonyHalk (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local amuleto1 = 21..
local amuleto2 = 21..
local amuleto3 = 21..
local amuleto4 = 21..
local amuleto5 = 21..
local amuleto6 = 21..
local amuleto7 = 21..
local amuleto8 = 21..
local amuleto9 = 21..
local amuleto10 = 21..

function onLogin(cid)
   if getPlayerLastLoginSaved(cid) < 1 then
      doPlayerAddItem(cid, amuleto1)
   end
   
   if getPlayerItemCount(cid, amuleto1) > 0 then
      registerCreatureEvent(cid, "AmuletoChange")
   end
 
   return true
end
 
function onAdvance(cid, skill, oldlevel, newlevel)
   if skill == 8 and getPlayerItemCount(cid, amuleto1) > 0 then
      doPlayerRemoveItem(cid, amuleto1)
      doPlayerAddItem(cid, amuleto2)
      doPlayerRemoveItem(cid, amuleto2)
      doPlayerAddItem(cid, amuleto3)
      doPlayerRemoveItem(cid, amuleto3)
" vai colocando todos os amuletos"
   end
 
   return true
end

Troca os IDS

e Colocando

      doPlayerRemoveItem

      doPlayerAddItem

 

é assim MaXwEllDeN ?

 

 

Não, não seria assim, se você ler o que está acontecendo ai, ele adiciona todos amuletos e remove NO MESMO INSTANTE. Ou seja, o player só ficaria com o último amuleto, SEMPRE, toda vez que ele upasse ele ia receber todos os amuletos, e remover todos, menos o último.

 

@Daniel

Ah, todo level vai ser um amuleto diferente? Então faz assim:

local amuletos = {2170, 2171, 2172, 2173, 2174, 2175}
 
function onLogin(cid)
   if getPlayerLastLoginSaved(cid) < 1 then
      doPlayerAddItem(cid, amuletos[1])
   end
   
   if getPlayerItemCount(cid, amuleto1) > 0 then
      registerCreatureEvent(cid, "AmuletoChange")
   end
 
   return true
end
 
function onAdvance(cid, skill, oldlevel, newlevel)
   if skill == 8 then 
      for index, id in ipairs(amuletos) do
         if getPlayerItemCount(cid, id) > 0 and amuletos[index + 1] then
            doPlayerRemoveItem(cid, id)
            doPlayerAddItem(cid, amuleto[index + 1])
            break
         end
      end
   end
 
   return true
end
local amuletos = {2170, 2171, 2172, 2173, 2174, 2175}

Nessa tabela você vai adicionando o id dos amuletos, na ordem que eles vão ser trocados.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Pega esse, o antigo tem um problema:

 

local amuletos = {2170, 2171, 2172, 2173, 2174, 2175}
 
function onLogin(cid)
   if getPlayerLastLoginSaved(cid) < 1 then
      doPlayerAddItem(cid, amuletos[1])
   end
   
   if getPlayerItemCount(cid, amuleto1) > 0 then
      registerCreatureEvent(cid, "AmuletoChange")
   end
 
   return true
end
 
function onAdvance(cid, skill, oldlevel, newlevel)
   if skill == 8 then 
      for index, id in ipairs(amuletos) do
         if getPlayerItemCount(cid, id) > 0 and amuletos[index + 1] then
            doPlayerRemoveItem(cid, id)
            doPlayerAddItem(cid, amuletos[index + 1])
            break
         end
      end
   end
 
   return true
end

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

essa é a última atualização certo?

	

    local amuletos = {
       [8] = 2170,
       [9] = 2171,
       [10] = 2172,
       [11] = 2173,
       [12] = 2174,
       [13] = 2175,
    }
     
    function onLogin(cid)
       if getPlayerLastLoginSaved(cid) < 1 then
          doPlayerAddItem(cid, amuletos[getPlayerLevel(cid)])
       end
     
       local amuleto = amuletos[getPlayerLevel(cid)]
       if amuleto and getPlayerItemCount(cid, amuleto) > 0 then
          registerCreatureEvent(cid, "AmuletoChange")
       end
     
       return true
    end
     
    function onAdvance(cid, skill, oldlevel, newlevel)
       if skill == 8 then
          local amuleto = amuletos[oldlevel]
          if getPlayerItemCount(cid, amuleto) > 0 and amuletos[newlevel] then
             doPlayerRemoveItem(cid, amuleto)
             doPlayerAddItem(cid, amuletos[newlevel], 1, false, CONST_SLOT_NECKLACE)
          end
       end
     
       return true
    end


Ao upar o medalhão não é trocado e aparece o seguinte erro:

 

1dZkG.png

 

O server não fecha, só quando eu dou print screen e eu não sei por que '.'

Link para o post
Compartilhar em outros sites

local amuletos = {
       [1] = 2130,
       [2] = 2131,
       [3] = 2132,
       [4] = 2133,
       [5] = 2135,
       [6] = 2136,
    }
 
    function onLogin(cid)
       if getPlayerLastLoginSaved(cid) < 1 then
          doPlayerAddItem(cid, amuletos[getPlayerLevel(cid)])
       end
 
       local amuleto = amuletos[getPlayerLevel(cid)]
       if amuleto and getPlayerItemCount(cid, amuleto) > 0 then
          registerCreatureEvent(cid, "AmuletoChange")
       end
 
       return true
    end
 
    function onAdvance(cid, skill, oldlevel, newlevel)
       if skill == 8 then
         local amuleto = amuletos[oldlevel]
          if getPlayerItemCount(cid, amuleto) > 0 and amuletos[newlevel] then
             doPlayerRemoveItem(cid, amuleto, 1)
             doPlayerAddItem(cid, amuletos[newlevel], 1, false, CONST_SLOT_NECKLACE)
          end
       end
 
       return true
    end
 

 

Agora sim está certo.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

Funcionou, agora só falta terminar o sistema do script, mas vou criar outro tópico pra isso, REP+ pra você e pro Bruno que me ajudaram.


Dúvida sanada, tag adicionada.
Tópico movido!
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo