Olá galerinha (:, hoje irei postar meu primeiro script, na verdade não é nem 100% meu, alguns Scripters me ajudaram, mas o que maisme ajudou foi O Marcelin (Marcello Mkez), meu professor
. Espero que o script agrade a todos e fiz mesmo para treinar e praticare espero publicar muito mais scripts para vocês. Bom essa talkaction possibilita ao player de terminada vocação, com uma certa quantidade de um certo itemadquirir o skill que você determinar e com um limite de compra, si o player uma quantidade máximaconsiderada skill full no seu server ele não poderá usar mais. Sem mais explicações vamos ao script:

Function: (By Vodkart)
Nota: É importante a instalação da function para que funcione, pois ela permite que o skill seja adicionado sem erros e diretamente na DB.
Em data/lib/050-function...
Spoiler
function doPlayerSetSkill(cid, skill, amount)
local pid = getPlayerGUID(cid)
doRemoveCreature(cid,true)
db.executeQuery("UPDATE `player_skills` SET `value` = ".. amount .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. skill ..";")
return TRUE
end
function doPlayerSetMagic(cid, amount)
local pid = getPlayerGUID(cid)
doRemoveCreature(cid,true)
db.executeQuery("UPDATE `players` SET `maglevel` = " .. amount .. " WHERE `id` = "..pid)
return TRUE
end
Talkactions:
(By, Vodkart Função Principal, Xapinhal Condições, Marcello Mkez Mensagens e Org. do script e DemonBH por um pequeno erro na condição getItem).
Em data/talkactions/talkactions.xml ...Adicione:
Spoiler
<talkaction words="!comprar" event="script" value="skill.lua"/>
Em data/talkactions/scripts ... Crie um script chamado skill.lua E adicione o seguinte:
Spoiler
function onSay(cid, words, param)
if getPlayerVocation(cid) == IDVOC then
if getPlayerItemCount(cid,IDITEM) >= QNTITEM then
if getPlayerSkill(cid, IDSKILL) <= LIMITESKILL then
doPlayerRemoveItem(cid,IDITEM,QNTITEM)
doPlayerSetSkill(cid, SKILL_NOMESKILL, getPlayerSkillLevel(cid, SKILL_NOMESKILL)+QNTSKILL)
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Você tem o skill full.")
return true
end
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Você não tem gold ignot suficiente.")
return true
end
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Você não é knight.")
return true
end
end
Configuração: Infelizmente não aprendi variável ainda, então teremos que configurar assim :x.
Spoiler
IDVOC = Id da vocação que poderá usar o comando, si tiver mais de uma adicione and.
IDITEM = ID do item requerido.
QNTITEM = Quantidade do item requerido
QNTSKILL = Quantidade de skill que irá adicionar
IDSKILL = Id do skill que irá adicionar
LIMITESKILL = Número do máximo de skill que pode comprar. Exemplo: Si 350 de skill axe o player não poderá usar mais o comando.
Magic Level: Para comprar ml, você precisa mudar algumas funções então para facilitar:
Spoiler
function onSay(cid, words, param)
if getPlayerVocation(cid) == IDVOC then
if getPlayerItemCount(cid,IDITEM) >= QNTITEM then
if getPlayerMagLevel(cid) <= LIMITESKILL then
doPlayerRemoveItem(cid,IDITEM,QNTITEM)
doPlayerSetMagic(cid, getPlayerMagLevel(cid)+QNTSKILL)
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Você tem o magic level full.")
return true
end
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Você não tem barras suficiente.")
return true
end
else
doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Somente druid e sorcerer podem comprar esse skill.")
return true
end
end
Diretório original: http://www.xtibia.co...-comprar-skill/