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

Vc so tem que adicionar a tag no items.xml e registar no movements.xml

 

<attribute key="skillFist" value="5" />

Fist eh fist fighting e 5 eh o tanto de skill que adiciona

 

pode ser skillSword skillAxe skillClub skillDistance

 

e pra ml

 

<attribute key="magiclevelpoints" value="1" />

Dps registra o item no movements.xml, assim

 

<movevent type="Equip" itemid="2323" slot="head" event="function" value="onEquipItem">
<vocation id="1"/>
<vocation id="5" showInDescription="0"/>
<vocation id="2"/>
<vocation id="6" showInDescription="0"/>
</movevent>
<movevent type="DeEquip" itemid="2323" slot="head" event="function" value="onDeEquipItem"/>

no itemid vc coloca o id, no slot coloca onde o item fica, pode ser head, body, legs, hand.

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta com esse:

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

local mglevel = 10

	if doPlayerAddMagLevel(cid, mglevel) then
		doRemoveItem(cid)
		doPlayerSendTextMessage(cid, 22, "Você recebeu " .. mglevel .. ".")
	end
return true
end
	
Link para o comentário
Compartilhar em outros sites

  • 0

Pra sumir da bp, só colocar

doRemoveItem(item.uid, 1)

no lugar de

doRemoveItem(cid)

eu não manjo de skills de tibia, e nem conheço muito bem as funções pra adiciona-las, mas se quiser tentar: e n, n testei

function onUse(cid, item, fromPosition, itemEx, toPosition)
 
local mglevel = 10
 
if getPlayerStorageValue(cid, 11296) >= 1 then
doPlayerSendCancel(cid, "vc já usou o item de ml.")
return true 
end
doRemoveItem(item.uid, 1)
setPlayerStorageValue(cid, 11296, 1)
doPlayerAddMagLevel(cid, mglevel)
doPlayerSendTextMessage(cid, 22, "Você recebeu 10 lvs de ml.")
return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Aah é esqueci disso kkk'

--Topic

 

Tenta assim:

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

local pid = getPlayerGUID(cid)

	if getPlayerStorageValue(cid, 13180) >= 1 then
		doPlayerSendCancel(cid, "Você já usou este item.")
	else
		doRemoveItem(item.uid, 1)
		doRemoveCreature(cid)
                db.query("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = "..pid)
                setPlayerStorageValue(cid, 13180, 1)
    end

    return true
end
Editado por Fawz
Link para o comentário
Compartilhar em outros sites

  • 0

 

Vo ti dar um exemplo de um Short que da ml ..

 

Em items.xml :

 

</item><item id="7464" article="a" name="VIP Shorts">  <attribute key="weight" value="150" />   <attribute key="skillDist" value="4" />  <attribute key="skillAxe" value="4" />  <attribute key="skillsword" value="4" />  <attribute key="skillclub" value="4" />  <attribute key="skillfist" value="4" />  <attribute key="magiclevelpoints" value="4" />  <attribute key="description" value="Esse short FAZ a diferenca (+4 de tds os skills)" />  <attribute key="slotType" value="legs" /></item>
<attribute key="magiclevelpoints" value="4" /> <-- Aqui voce muda quantos ela vai dar de ml.

 

Ae adicione essa tag em movements.xml :

 

<movevent type="Equip" itemid="7464" slot="legs" event="function" value="onEquipItem"/><movevent type="DeEquip" itemid="7464" slot="legs" event="function" value="onDeEquipItem"/> <!-- VIP SHORTS -->
Lembrando que esse foi so um exemplo..Ai voce altera os Id's e Slots!
Link para o comentário
Compartilhar em outros sites

  • 0

Não resolveu,tem que clicar no item e ganhar 10 de ml e ai o item some da back pack e você fica com 10 lvl de ml. Pode ajudar?

 

 

 

Aah é esqueci disso kkk'

--Topic

 

Tenta assim:

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

local pid = getPlayerGUID(cid)

	if getPlayerStorageValue(cid, 13180) >= 1 then
		doPlayerSendCancel(cid, "Você já usou este item.")
	else
		doRemoveItem(item.uid, 1)
		doRemoveCreature(cid)
                db.query("UPDATE `players` SET `maglevel` = `maglevel` + 10 WHERE `id` = "..pid)
                setPlayerStorageValue(cid, 13180, 1)
    end

    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta assim:

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

local pid = getPlayerGUID(cid)

	if getPlayerStorageValue(cid, 13180) >= 1 then
		doPlayerSendCancel(cid, "Você já usou este item.")
	else
		doRemoveItem(item.uid, 1)
        doPlayerAddMagLevel(cid, 10)
        setPlayerStorageValue(cid, 13180, 1)
    end

    return true
end

Tem esse aqui do oneshot mas é por tempo:

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SUBID, 101)

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 101) then
		return doPlayerSendCancel(cid, "Você já usou o item, aguarde o efeito acabar.")
	end
	
	doSendMagicEffect(fromPosition, CONST_ME_MAGIC_GREEN)
	return doAddCondition(cid, condition)
end
Link para o comentário
Compartilhar em outros sites

  • 0
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
local mglevel = 10
 
if getPlayerStorageValue(cid, 11296) >= 1 then
doPlayerSendCancel(cid, "vc já usou o item de ml.")
return true 
end
doRemoveItem(item.uid, 1)
setPlayerStorageValue(cid, 11296, 1)
doPlayerAddMagLevel(cid, mglevel)
doPlayerSendTextMessage(cid, 22, "Você recebeu 10 lvs de ml.")
return true
end

 

Engraçado é que esse script deveria funcionar. Você registrou no actions.xml?

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

  • 0

Bom, pode ser pequenos erros ou source diferentes.

 

Por este script como exemplo:

 

 

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

local pid = getPlayerGUID(cid)

if getPlayerStorageValue(cid, 13180) >= 1 then
doPlayerSendCancel(cid, "Você já usou este item.")
else
doRemoveItem(item.uid, 1)
doPlayerAddMagLevel(cid, 10) --- poderia ser assim doPlayerAddMagicLevel(cid, 10) por exemplo.
setPlayerStorageValue(cid, 13180, 1)
end

return true
end

 

E este, para ficar infinito, recomendo usar o valor "-1" no tempo.

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000) -- com o valor definido para -1, seria tempo infinito.
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SUBID, 101)

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 101) then
return doPlayerSendCancel(cid, "Você já usou o item, aguarde o efeito acabar.")
end

doSendMagicEffect
(fromPosition, CONST_ME_MAGIC_GREEN)
return doAddCondition(cid, condition)
end

 

Faça os testes das minhas sugestões, pois estão certo os script, só que recomendo que use o primeiro.

 

 

Boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...