MY
dúvida

Como criar um item que da skill

Por mylorc, 23 de out. de 2013 em Scripts

como criar um item que da ml
resolvido
script
53
5.6k
ZarussZ
29 de outubro de 2013 às 14:11

Como magic level e uma skill nao seria mais facil usa isso>>>>>doPlayerAddSkillTry(cid, skillid, n)?

So uma perguntinha

zipter98Z
29 de outubro de 2013 às 14:12

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 Outubro 29 por zipter98

ZarussZ
29 de outubro de 2013 às 14:36
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 Outubro 29 por Zaruss

mylorcM
29 de outubro de 2013 às 21:07

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.

 

KilluaK
29 de outubro de 2013 às 21:42

Post apagado.

Editado Outubro 31 por amoeba13

gonorreiaswatG
29 de outubro de 2013 às 21:57

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 Outubro 29 por Adriano Swatt

KilluaK
29 de outubro de 2013 às 22:14

 

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 Outubro 29 por amoeba13

mylorcM
29 de outubro de 2013 às 22:29

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.

KilluaK
29 de outubro de 2013 às 22:49

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
gonorreiaswatG
30 de outubro de 2013 às 08:52

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 Outubro 30 por Adriano Swatt

mylorcM
30 de outubro de 2013 às 13:27

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
zipter98Z
30 de outubro de 2013 às 13:31

Algum erro no console? Em alguma das tentativas? Ou, por incrível que pareça, em nenhuma delas constou erro lá?

mylorcM
30 de outubro de 2013 às 14:08

Olha erro não,porém deixou de dar resultados.

KilluaK
30 de outubro de 2013 às 14:38

Baixei um server aqui e to testando, ta dando varios erros na verdade. To tentando arrumar

mylorcM
30 de outubro de 2013 às 14:54

Ok,obrigado. Quando der certo por favor poste aqui,o item que estou usando é o Id=1948 ^^