Ir para conteúdo
  • Cadastre-se

(Resolvido)Usar Item e Mudar Outfit.


Ir para solução Resolvido por FeeTads,

Posts Recomendados

Ao usar um item, mudará minha outfit e quando eu usa-lo novamente removerá a mesma. O item não será removido da Bag.

Este item só poderá ser usado pela vocação <vocation id="1-13"/>

 

Spoiler

local remove = true -- Remover ao usar?
local sto = 1234568

local outfits = {
    [11478] = {out = 2013},
}

-- [Item ID] = {out = ID da Outfit},

function onUse(cid, item)
    local t = outfits[item.itemid]

    if getCreatureOutfit(cid).lookType ~= 2013 then     --se o outfit for diferente do 2013
          setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)      --salva o looktype atual do player

    else
          doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})

    end

    if t and getCreatureOutfit(cid).lookType ~= 2013 then
        doCreatureChangeOutfit(cid, {lookType = t.out})
    end
    
    if remove then
        doRemoveItem(item.uid, 0)
    end
    return true
end

 

 

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
11 minutos atrás, raphadoidera disse:

Ao usar um item, mudará minha outfit e quando eu usa-lo novamente removerá a mesma. O item não será removido da Bag.

local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

    if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
          setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
		  doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
		  doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
    else
          doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
		  doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
    end

    
    if remover then
        doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
    end
    return true
end


uma dica não use "remove" "callback" como variavel, pq ja são funções do tibia, isso pode dar conflito as vezes
alterei onde estava "remove" pra "remover"
 

testa esse pra ver se funciona, se não funcionar posta o erro do console em spoiler pf.

Editado por FeeTads
ajuste (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 minutos atrás, FeeTads disse:

local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

    if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
          setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
		  doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
		  doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
    else
          doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
		  doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
    end

    
    if remover then
        doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
    end
	--uma dice não use "remove" "callback" como variavel, pq ja são funções do tibia, isso pode dar conflito as vezes
    return true
end

 

testa esse pra ver se funciona, se não funcionar posta o erro do console em spoiler pf.

 

Funcionou perfeitamente irmão, só falta colocar pra apenas X vocação poder usar

Link para o post
Compartilhar em outros sites
6 minutos atrás, raphadoidera disse:

Funcionou perfeitamente irmão, só falta colocar pra apenas X vocação poder usar

if getPlayerVocation(cid) == 1 or if getPlayerVocation(cid) == 5 --esse eh sorc (n tenho ctz pode ser druid)
if getPlayerVocation(cid) == 2 or if getPlayerVocation(cid) == 6 -- esse eh druid (n tenho ctz pode ser sorc)
if getPlayerVocation(cid) == 3 or if getPlayerVocation(cid) == 7 --esse é pally
if getPlayerVocation(cid) == 4 or if getPlayerVocation(cid) == 8 --esse eh knight


vc adicionaria acima a vocation que vc quer
assim:
 

if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then
	if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
          setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
		  doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
		  doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
    else
          doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
		  doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
    end

    
    if remover then
        doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
    end
end

 

3 minutos atrás, FeeTads disse:

getPlayerVocation(cid) == 5

ai vc olha la no teu vocation.xml e escolhe quais vc quiser kkkkkkkk

Editado por FeeTads
reajuste (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
16 minutos atrás, FeeTads disse:

if getPlayerVocation(cid) == 1 or if getPlayerVocation(cid) == 5 --esse eh sorc (n tenho ctz pode ser druid)
if getPlayerVocation(cid) == 2 or if getPlayerVocation(cid) == 6 -- esse eh druid (n tenho ctz pode ser sorc)
if getPlayerVocation(cid) == 3 or if getPlayerVocation(cid) == 7 --esse é pally
if getPlayerVocation(cid) == 4 or if getPlayerVocation(cid) == 8 --esse eh knight


vc adicionaria acima a vocation que vc quer
assim:
 


if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then
	if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
          setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
		  doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
		  doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
    else
          doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
		  doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
    end

    
    if remover then
        doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
    end
end

 

ai vc olha la no teu vocation.xml e escolhe quais vc quiser kkkkkkkk

 

Deu esse erro na distro  irmão.

OBS: Mano em relação as vocações, exemplo naruto vai da Vocação 1 até a vocação 13. 

if getPlayerVocation(cid) == 1 or if getPlayerVocation(cid) == 13

Colocando dessa forma, não iria possibilitar apenas a vocação 1 e 13 de usarem? Ao invés de possibilitar da vocação 1 até a vocação 13?

image.png

Link para o post
Compartilhar em outros sites
5 minutos atrás, raphadoidera disse:

Colocando dessa forma, não iria possibilitar apenas a vocação 1 e 13 de usarem? Ao invés de possibilitar da vocação 1 até a vocação 13?

pra ser da 1 até a 13 coloca assim
 

if getPlayerVocation(cid) >= 1 and getPlayerVocation(cid) <= 13 then
		..código..

end


ai ele checa se a vocação é maior ou igual a 1 e menos igual 13, ou seja tudo entre 1 e 13 ele pega

 

 

7 minutos atrás, raphadoidera disse:

if getPlayerVocation(cid) == 1 or if getPlayerVocation(cid) == 13

me equivoquei nessa parte ali esse "or if" não tem, só "or get..", usa oq te passei acima que vai funcionar

.
vou arrumar aqui o script pra vc

 

local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) >= 1 and getPlayerVocation(cid) <= 13 then
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end
   end

    return true
end





 

Link para o post
Compartilhar em outros sites
5 minutos atrás, FeeTads disse:

pra ser da 1 até a 13 coloca assim
 


if getPlayerVocation(cid) >= 1 and getPlayerVocation(cid) <= 13 then
		..código..

end


ai ele checa se a vocação é maior ou igual a 1 e menos igual 13, ou seja tudo entre 1 e 13 ele pega

 

 

me equivoquei nessa parte ali esse "or if" não tem, só "or get..", usa oq te passei acima que vai funcionar

 

Ainda ta dando esse erro na distro.

 

image.thumb.png.d8c78122324b7ff0f1dab8390eebd7a5.png

Link para o post
Compartilhar em outros sites
9 minutos atrás, raphadoidera disse:

Ainda ta dando esse erro na distro.

 tenta assim.

 

local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) > 13 then
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end


se continuar esse erro, procura por "getPlayerVocation" na sua source em luascript.cpp

Link para o post
Compartilhar em outros sites
3 minutos atrás, FeeTads disse:

 tenta assim.

 


local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) > 13 then
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end


se continuar esse erro, procura por "getPlayerVocation" na sua source em luascript.cpp

 

Funcionou papai, só mais uma coisa mano (foi mal). Queria que você colocasse pra sair no chat "Sua vocação não pode usar este item." caso uma vocação diferente tente usar o item, por favor.

Link para o post
Compartilhar em outros sites
  • Solução
3 minutos atrás, raphadoidera disse:

Funcionou papai, só mais uma coisa mano (foi mal). Queria que você colocasse pra sair no chat "Sua vocação não pode usar este item." caso uma vocação diferente tente usar o item, por favor.

local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) > 13 then
      doPlayerSendTextMessage(cid, 22, "Sua vocação não pode usar este item!")
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end

 

se funcionar deixa o rep+ ai pra ajudar <3

Link para o post
Compartilhar em outros sites
2 horas atrás, FeeTads disse:


local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) > 13 then
      doPlayerSendTextMessage(cid, 22, "Sua vocação não pode usar este item!")
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end

 

se funcionar deixa o rep+ ai pra ajudar <3


Certinho irmão, muito obrigado do fundo do coração! <3

2 horas atrás, FeeTads disse:


local remover = false -- Remover ao usar?  false = não remove, true = remover

local outfits = {
    [11478] = {out = 2013},
}


function onUse(cid, item)
    local t = outfits[item.itemid]

  if getPlayerVocation(cid) > 13 then
      doPlayerSendTextMessage(cid, 22, "Sua vocação não pode usar este item!")
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 2013 then    									 --se o outfit for diferente do 2013
            setPlayerStorageValue(cid, 1234567, getCreatureOutfit(cid).lookType)    	     --salva o looktype atual do player
            doCreatureChangeOutfit(cid, {lookType = t.out})								 --transforma
            doPlayerSendTextMessage(cid, 22, "Voce alterou seu Outfit!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})	 --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 22, "De volta ao seu outfit original!")
      end
      if remover then
          doRemoveItem(item.uid, 1)			-- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end

 

se funcionar deixa o rep+ ai pra ajudar <3

 

Irmão, notei só agora um erro na Script.

if getPlayerVocation(cid) > 13 then

Aqui está falando que toda vocação menor que 13 vai poder usar a Skin.

Porém se eu criar uma Skin pro sasuke onde a vocação dele é 14 a 26, a vocação naruto que é 1 a 13 vai poder usar a Skin do Sasuke saco?

Teria como arrumar pra mim por favor?

 

@FeeTads

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
22 horas atrás, raphadoidera disse:

Teria como arrumar pra mim por favor?

esse script vai funcionar pra apenas 1 item, caso queira pra outro, da 14 a 26, ai vc vai precisar criar outro script e checar se a vocação ta entre 14 e 26

 

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