Ir para conteúdo
  • Cadastre-se

(Resolvido)Skin


Ir para solução Resolvido por Imperius,

Posts Recomendados

Boa tarde, estou precisando de ajuda com uma Scripting que tenho aqui de uma Skin.

Funcionamento:
1- Ao clicar em um item você mudará a Outfit do seu Personagem (Skin).

2- Clicando novamente a Skin sai do personagem, voltando para Outfit que estava anteriormente.

3- A Skin só pode ser usada pela vocação que seja compatível com a mesma, Ex: Vocação Naruto - Naruto Akatsuki (Skin).

5- A Skin terá um Cooldown de 10 segundos para ser usada novamente, Ex: Depois que eu ativar a Skin, posso desativar rapidamente. Porém só posso ativar novamente 10 Segundos depois, de ter ativado a mesma.

Erros:
- Todas vocações estão podendo usar qualquer Skin. Ex: Coloquei como teste a skin "Sakura Akatsuki", e coloquei para que só pudesse ser usada da Vocação [27 até 37] = Sakura. 

Porém todas as vocações abaixo de 27 estão podendo usar, e todas vocações acima de 37 também estão usando.

- O Script não tem um Cooldown para a Skin ser usada, poderiam me ajudar com isso?


Segue o SCRIPT:
 

Citar

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

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


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

  if getPlayerVocation(cid) < 27 and getPlayerVocation(cid) > 37 then
      doPlayerSendTextMessage(cid, 22, "Sua vocacao nao pode usar este item!")
      return true
  end
      if getCreatureOutfit(cid).lookType ~= 1397 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, 24, "Skin Akatsuki Ativada!")
      else
            doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, 1234567)})     --se o looktype for 2013 volta ao original
            doPlayerSendTextMessage(cid, 24, "Skin Akatsuki Desativada!")
      end
      if remover then
          doRemoveItem(item.uid, 1)            -- pode deixar 1 aqui e no escopo deixa false
      end

    return true
end


 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
  • Solução

Dessa forma?

 

local storage = {1234567, 1234568} -- Armazena o outfit que o player estava usando / Armazena o Cooldown.

local cooldown = 1 -- tempo em minutos.
local remover = true -- Remover o item ao usar? false = não remove, true = remove. 
local outfitID = 1397 -- id da outfit que o player se transformará.

function onUse(cid, item)

	if getPlayerVocation(cid) < 26 or getPlayerVocation(cid) > 37 then
		doPlayerSendTextMessage(cid, 22, "Sua vocacao nao pode usar este item!")
		return true
	end

	if getPlayerStorageValue(cid, storage[2]) - os.time() >= 1 then
		doPlayerSendCancel(cid, "Voce precisa aguardar " ..(getPlayerStorageValue(cid, storage[2]) - os.time()).. " segundos para usar este item novamente.")
		return true
	end

	if getCreatureOutfit(cid).lookType ~= outfitID then 
		setPlayerStorageValue(cid, storage[1], getCreatureOutfit(cid).lookType)
		doCreatureChangeOutfit(cid, {lookType = outfitID})
		doPlayerSendTextMessage(cid, 24, "Skin Akatsuki Ativada!") 
	else
		doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, storage[1])})
		doPlayerSendTextMessage(cid, 24, "Skin Akatsuki Desativada!")
  	end

	setPlayerStorageValue(cid, storage[2], os.time() + (cooldown*60)) -- Seta o Cooldown.
	if remover then doRemoveItem(item.uid, 1) end 

    return true
end

 

Link para o post
Compartilhar em outros sites
Em 15/10/2022 em 13:14, Imperius disse:

Dessa forma?

 


local storage = {1234567, 1234568} -- Armazena o outfit que o player estava usando / Armazena o Cooldown.

local cooldown = 1 -- tempo em minutos.
local remover = true -- Remover o item ao usar? false = não remove, true = remove. 
local outfitID = 1397 -- id da outfit que o player se transformará.

function onUse(cid, item)

	if getPlayerVocation(cid) < 26 or getPlayerVocation(cid) > 37 then
		doPlayerSendTextMessage(cid, 22, "Sua vocacao nao pode usar este item!")
		return true
	end

	if getPlayerStorageValue(cid, storage[2]) - os.time() >= 1 then
		doPlayerSendCancel(cid, "Voce precisa aguardar " ..(getPlayerStorageValue(cid, storage[2]) - os.time()).. " segundos para usar este item novamente.")
		return true
	end

	if getCreatureOutfit(cid).lookType ~= outfitID then 
		setPlayerStorageValue(cid, storage[1], getCreatureOutfit(cid).lookType)
		doCreatureChangeOutfit(cid, {lookType = outfitID})
		doPlayerSendTextMessage(cid, 24, "Skin Akatsuki Ativada!") 
	else
		doCreatureChangeOutfit(cid, {lookType = getPlayerStorageValue(cid, storage[1])})
		doPlayerSendTextMessage(cid, 24, "Skin Akatsuki Desativada!")
  	end

	setPlayerStorageValue(cid, storage[2], os.time() + (cooldown*60)) -- Seta o Cooldown.
	if remover then doRemoveItem(item.uid, 1) end 

    return true
end

 

Irmão, está perfeito era exatamente isso.
Mas ao invés de ser tempo em minutos, se possível, você poderia colocar para ser Segundos? Porque quero por um cooldown de 10 segundos pra usar novamente.

Link para o post
Compartilhar em outros sites
1 hora atrás, raphadoidera disse:

Irmão, está perfeito era exatamente isso.
Mas ao invés de ser tempo em minutos, se possível, você poderia colocar para ser Segundos? Porque quero por um cooldown de 10 segundos pra usar novamente.

 

Remova esse trecho:

 

setPlayerStorageValue(cid, storage[2], os.time() + (cooldown*60)) -- Seta o Cooldown.

 

e substitua por esse:

 

setPlayerStorageValue(cid, storage[2], os.time() + (cooldown)) -- Seta o Cooldown.

 

Assim o cooldown ficará em segundos.

Link para o post
Compartilhar em outros sites
19 horas atrás, Imperius disse:

 

Remova esse trecho:

 


setPlayerStorageValue(cid, storage[2], os.time() + (cooldown*60)) -- Seta o Cooldown.

 

e substitua por esse:

 


setPlayerStorageValue(cid, storage[2], os.time() + (cooldown)) -- Seta o Cooldown.

 

Assim o cooldown ficará em segundos.

Muito obrigado irmão, salvou nessa! 

RESOLVIDO!

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo