Ir para conteúdo
  • 0

Como criar um item que da skill


mylorc

Pergunta

[Resolvido] Olá,galera preciso criar um iten que da skill,alguém pode ajudar?

Se tiver algum script poste porfavor,pode ser skill ML ,obrigado.

 

Obs:falo de um item tipo livro,em que você clicka e recebe o skill,e que pode usar uma vez só.

Editado por mylorc
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

3 tentativas, veja se vai printar o test, e se n funcionar, poste os erros q der no console. /\ melhor prevenir do que remediar, talvez funcione assim, já q de várias de tentativas, nenhuma funcionou

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local pid = getPlayerGUID(cid)
local mglv = 10
if getPlayerStorageValue(cid, 15498) >= 1 then
return doPlayerSendCancel(cid, "vc já usou o item de ml.")
end
doRemoveCreature(cid, true)
db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + ".. mglv .." WHERE `id` = ".. pid)
print("test")
setPlayerStorageValue(cid, 15498, 1)
doRemoveItem(item.uid, 1)
return true
end
OU
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, 15498) >= 1 then
return doPlayerSendCancel(cid, "vc já usou o item de ml.")
end
doPlayerAddMagLevel(cid, 10)
setPlayerStorageValue(cid, 15498, 1)
print("test")
doRemoveItem(item.uid, 1)
return true
end
OU
function onUse(cid, item, fromPosition, itemEx, toPosition)
local pid = getPlayerGUID(cid)
local mglv = 10
if getPlayerStorageValue(cid, 15498) >= 1 then
return doPlayerSendCancel(cid, "vc já usou o item de ml.")
end
doRemoveCreature(cid, true)
db.query("UPDATE `players` SET `maglevel` = `maglevel` + ".. mglv .." WHERE `id` = ".. pid)
setPlayerStorageValue(cid, 15498, 1)
print("test")
doRemoveItem(item.uid, 1)
return true
end

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0
function onUse(cid, item, fromPosition, itemEx, toPosition)

    if getPlayerStorageValue(cid, 11296) >= 1 then
        doPlayerSendCancel(cid, "Voce ja usou este item.")
    else
        doRemoveItem(item.uid, 1)
        setPlayerStorageValue(cid, 11296, 1)
        doPlayerAddSkill(cid, SKILL__MAGLEVEL, 10)
        doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
    end
return true
end

Nao sei se vai funcionar.

Editado por Zaruss
Link para o comentário
Compartilhar em outros sites

  • 0

Ele realmente tira o iten e fala a menssagem que deu 10 ml,porém o player não recebe os 10 Magic Level.

Sabe resolver?

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if getPlayerStorageValue(cid, 11296) >= 1 then
        doPlayerSendCancel(cid, "Voce ja usou este item.")
    else
        doRemoveItem(item.uid, 1)
        setPlayerStorageValue(cid, 11296, 1)
        doPlayerAddSkill(cid, SKILL__MAGLEVEL, 10)
        doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
    end
return true
end

Nao sei se vai funcionar.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Adriano, não faltou um end ae não? Ou é só impressão minha?

Faltou sim, copiei e alterei correndo pois estava saindo.

 

 

Adriano, não faltou um end ae não? Ou é só impressão minha?

function onUse(cid, item, fromPosition, itemEx, toPosition)

	if getPlayerStorageValue(cid, 11296) >= 1 then
		doPlayerSendCancel(cid, "Voce ja usou este item.")
	else
		doRemoveItem(item.uid, 1)
		setPlayerStorageValue(cid, 11296, 1)
		doPlayerAddMagLevel(cid, (getPlayerMagLevel(cid))+10)
		doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
	end
return true
end

@adriano é difícil identar o script? *-*

 

Então né, eu ainda estou aprendendo trabalhar com scripts, e fiz este correndo para sair.

Para de ser carente, só estou tentando ajudar aqui no fórum com o que estou aprendendo.

 

 

@@Tópico.

Cara, quando você tenta usar estes scripts, está aparecendo alguma mensagem no Console ou até mesmo a mensagem como se já tivesse usado o item?

Pois estamos tentando sempre com a mesma storage e pode ser que algum dos scripts já tenha a adicionado no player e por isto este erro.

#palpite.

 

Tente este abaixo.

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if getPlayerStorageValue(cid, 11297) >= 1 then
        doPlayerSendCancel(cid, "Voce ja usou este item.")
    else
        doRemoveItem(item.uid, 1)
        setPlayerStorageValue(cid, 11297, 1)
        doPlayerAddMagLevel(cid, getPlayerMagLevel(cid) +10)
        doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
    end
return true
end

 

 

 

Boa sorte.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

  • 0

 

Adriano, não faltou um end ae não? Ou é só impressão minha?

Faltou sim, copiei e alterei correndo pois estava saindo.

 

 

Adriano, não faltou um end ae não? Ou é só impressão minha?

function onUse(cid, item, fromPosition, itemEx, toPosition)

	if getPlayerStorageValue(cid, 11296) >= 1 then
		doPlayerSendCancel(cid, "Voce ja usou este item.")
	else
		doRemoveItem(item.uid, 1)
		setPlayerStorageValue(cid, 11296, 1)
		doPlayerAddMagLevel(cid, (getPlayerMagLevel(cid))+10)
		doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
	end
return true
end

@adriano é difícil identar o script? *-*

 

Então né, eu ainda estou aprendendo trabalhar com scripts, e fiz este correndo para sair.

Para de ser carente, só estou tentando ajudar aqui no fórum com o que estou aprendendo.

 

 

@@Tópico.

Cara, quando você tenta usar estes scripts, está aparecendo alguma mensagem no Console ou até mesmo a mensagem como se já tivesse usado o item?

Pois estamos tentando sempre com a mesma storage e pode ser que algum dos scripts já tenha a adicionado no player e por isto este erro.

#palpite.

 

Tente este abaixo.

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if getPlayerStorageValue(cid, 11297) >= 1 then
        doPlayerSendCancel(cid, "Voce ja usou este item.")
    else
        doRemoveItem(item.uid, 1)
        setPlayerStorageValue(cid, 11297, 1)
        doPlayerAddMagLevel(cid, getPlayerMagLevel(cid) +10)
        doPlayerSendTextMessage(cid, 22, "Você recebeu 10 leveis de magic level.")
    end
return true
end

 

 

 

Boa sorte.

 

 

Adriano, ctz que ta correto esse doPlayerAddMagLevel(cid, getPlayerMagLevel(cid) +10) ? Pelo jeito ele vai pega o ml do cara, soma 10 e adicionar tudo isso de ml pra ele.

 

@Topic, aproveita que vai tentar com storage diferente e ja faca 4 tentativas, mudando o storage a cada uma.

doPlayerAddMagLevel(cid, 10)
doPlayerAddSkill(cid, SKILL__MAGLEVEL, 10)
local pid = getPlayerGUID(cid)
db.query("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = ".. pid)
local pid = getPlayerGUID(cid)
db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = ".. pid)
Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

Então,na verdade poderia retirar a storage? Pois quero que o player possa usar quantas vezes quiser.

Então o problema é que não ta dando o magic level para o player.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, nesse caso nao precisa de storage, ficando assim:


local mli = getPlayerMagLevel(cid)+10
local pid = getPlayerGUID(cid)

function onUse(cid, item, fromPosition, itemEx, toPosition)
    doRemoveItem(item.uid, 1)
    doPlayerSendTextMessage(cid, 25, "Voce ganhou 10 de ml.")
    doRemoveCreature(cid)
    db.executeQuery("UPDATE `players` SET `maglevel` = "..mli.." WHERE `id` = ".. pid)
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Mas pelo que entendi era isso que ele queria, que adicionasse +10 leveis mágicos ao player.

E o que fez acima creio que funcione agora, até porque para alterar no database o player não pode estar logado, então o outro script não estava funcionando por isto.

Caso este ainda venha a não funcionar, pode até pensar em fazer como addEvent, para em 2 segundos kickar o personagem e no 3º segundo alterar a db.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

  • 0

O player clica no item agora e não acontece nada o script não esta funcionando.

Sabe arrumar?

 

 

 

 

Sim, nesse caso nao precisa de storage, ficando assim:


local mli = getPlayerMagLevel(cid)+10
local pid = getPlayerGUID(cid)

function onUse(cid, item, fromPosition, itemEx, toPosition)
    doRemoveItem(item.uid, 1)
    doPlayerSendTextMessage(cid, 25, "Voce ganhou 10 de ml.")
    doRemoveCreature(cid)
    db.executeQuery("UPDATE `players` SET `maglevel` = "..mli.." WHERE `id` = ".. pid)
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Pronto amigo, ta aqui. Testado e funcionando 100%


function doPlayerAddMagicLevel(cid, amount)
        local amount = amount or 1
        for i = 1, amount do
                doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false)
        end
 
        return true
end
    
function onUse(cid, item, fromPosition, itemEx, toPosition)
    doRemoveItem(item.uid, 1)
    doPlayerSendTextMessage(cid, 25, "Voce ganhou 10 de ml.")
    doPlayerAddMagicLevel(cid, 10)
    return true
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...