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
LuckOakeL
27 de outubro de 2013 às 14:03

Usar condition não resolve, quando o player fizer logout vai sair.

 

O mais certo é usar doPlayerAddMagLevel(cid, amount) ou pela database mesmo, fazendo logout no player e modificando.

mylorcM
27 de outubro de 2013 às 19:12

Podem ajudar ? Já fiz um item que da 10k de Life é possivel mudar a life para skill?Se puder eu posto para vocês darem uma olhada.

Ajuda?

gonorreiaswatG
28 de outubro de 2013 às 10:20

Você tentou alterar a tag como eu postei?

Pois tem OTServ que identifica como doPlayerAddMagicLevel, se não me engano tive este problema antes.

mylorcM
28 de outubro de 2013 às 15:29

Não deu certo.Estou postando o que da life aqui para você dar uma olhada,se você souber mudar life por ml me avisa:

 

 

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

 

doRemoveItem(item.uid, 1)

doPlayerSendTextMessage(cid, 27, "You won 10.000 points of life.")

return setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + 10000)

end

LumusL
28 de outubro de 2013 às 15:59

Cara impossível não funcionar, você colocou a tag no actions.xml?

gonorreiaswatG
28 de outubro de 2013 às 16:14

Não deu certo.Estou postando o que da life aqui para você dar uma olhada,se você souber mudar life por ml me avisa:

 

 

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

 

doRemoveItem(item.uid, 1)

doPlayerSendTextMessage(cid, 27, "You won 10.000 points of life.")

return setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + 10000)

end

Teste este abaixo:

 

 

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.")
return true
end

 

Poste o resultado.

zipter98Z
28 de outubro de 2013 às 17:59

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

LumusL
28 de outubro de 2013 às 18:11

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? *-*

Editado Outubro 28 por Fawz

zipter98Z
28 de outubro de 2013 às 18:24

Desculpa a pergunta de nb, mas como se identa aqui no xtibia? ._.

Eu idento tudo bunitin e talz, só q quando vou passar pra cá, fica "normal".

Editado Outubro 28 por zipter98

mylorcM
28 de outubro de 2013 às 19:44

Sim coloquei.E o item não funciona,nem chega a dar 10 ml para o player.

LumusL
28 de outubro de 2013 às 22:40

Tentemos assim:

Em creaturescripts crie um arquivo e cole isso dentro:

function onLogin(cid)

local pid = getPlayerGUID(cid)
local cfg = {	stg = 15498, -- storage dada ao usar o item.	
ml = 10, -- qtd de ml
}
	if getPlayerStorageValue(cid, cfg.stg) <= 1 then	
		doRemoveCreature(cid)	
		db.query("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = "..pid)
		setPlayerStorageValue(cid, cfg.stg, 2)
	else	
		return false
	end
return TRUE
end 

Em data/actions cole isso:

function onUse(cid, item, fromPosition, itemEx, toPosition)  
	if getPlayerStorageValue(cid, 15498) >= 1 then
		doPlayerSendCancel(cid, "vc já usou o item de ml.")
		return true
	elseif doRemoveItem(item.uid, 1) then	
		setPlayerStorageValue(cid, 15498, 1)	
		doPlayerSendTextMessage(cid, 22, "Porfavor, relogue seu personagem.")
	end
return true
end 

@Edit:

Se caso os de cima não funcionar, tente com esse:

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

local item = 2160, -- id do item
local pid = getPlayerGUID(cid)
	if getPlayerStorageValue(cid, 15499) <= 1 then
	elseif doPlayerRemoveItem(cid, item) then
		doRemoveCreature(cid)
		db.query("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = "..pid)
		return TRUE
	else
		return false
	end
end

Ps: sou iniciante ainda, caso alguém mais experiente, ache um erro me fale :)

Editado Outubro 28 por Fawz

KilluaK
28 de outubro de 2013 às 23:26

Fawz eu achei meio estranho esse elseif, acho q ia ficar melhor assim

 

function onUse(cid, item, fromPosition, itemEx, toPosition)  
	if getPlayerStorageValue(cid, 15498) >= 1 then
		doPlayerSendCancel(cid, "vc já usou o item de ml.")
		return false
end

	        if doRemoveItem(item.uid, 1) then	
		setPlayerStorageValue(cid, 15498, 1)	
		doPlayerSendTextMessage(cid, 22, "Porfavor, relogue seu personagem.")
	end
return true
end 
mylorcM
29 de outubro de 2013 às 05:52

Sim,eu coloquei. E mesmo assim não funciona,o item não chega a dar 10 de ML para o player.Pode ajudar?

LumusL
29 de outubro de 2013 às 12:27

Tentou com o que postei?

mylorcM
29 de outubro de 2013 às 13:43

Tentei todos nem um deu certo,alias o iten tem que sumir da backpack apos o click, sabe algum?Sabe se tem como trocar a life por skill naquele script que postei?