Ir para conteúdo

Featured Replies

Postado

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


 

Resolvido por Imperius

Ir para solução
  • 3 weeks later...
Postado
  • 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

 

Postado
  • Autor
  Em 15/10/2022 em 16: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.

Postado
  Em 16/10/2022 em 19:15, 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.

Postado
  • Autor
  Em 16/10/2022 em 21:04, 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!

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo