Postado Setembro 23, 2022 2 anos 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
Postado Outubro 15, 2022 2 anos 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 Outubro 16, 2022 2 anos 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 Outubro 16, 2022 2 anos 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 Outubro 17, 2022 2 anos 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.