Ir para conteúdo

[Talk] Comprar Skill


guixap

Posts Recomendados

tittle-2.png

Olá galerinha (:, hoje irei postar meu primeiro script, na verdade não é nem 100% meu, alguns Scripters me ajudaram, mas o que mais

me ajudou foi O Marcelin (Marcello Mkez), meu professor :). Espero que o script agrade a todos e fiz mesmo para treinar e praticar

e 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 item

adquirir o skill que você determinar e com um limite de compra, si o player uma quantidade máxima

considerada skill full no seu server ele não poderá usar mais. Sem mais explicações vamos ao script:

rsrs.png

 

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...

 

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

 

divisoria.png

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:

 

<talkaction words="!skill" event="script" value="skill.lua"/>

 

divisoria.png

Em data/talkactions/scripts ... Crie um script chamado skill.lua E adicione o seguinte:

 

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.

 

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.

 

divisoria.png

Magic Level: Para comprar ml, você precisa mudar algumas funções então para facilitar:

 

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

 

 

guiirsrs.png

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

Usando variáveis:

 

 

 

IDVOC = 1
IDITEM = 2160
QNTITEM = 5
QNTSKILL = 50
IDSKILL = 3
LIMITESKILL = 100
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

Do jeito mais simples.

 

 

PS. Bonito o tópico!

Link para o comentário
Compartilhar em outros sites

Usando variáveis:

 

 

 

IDVOC = 1
IDITEM = 2160
QNTITEM = 5
QNTSKILL = 50
IDSKILL = 3
LIMITESKILL = 100
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

Do jeito mais simples.

 

 

PS. Bonito o tópico!

 

Eu comecei a fazer as variáveis mas, percebi que no doPlayerSetSkill iria ter problema de colocar variáveis :x

irei tentar aqui em casa, mas agradeço.

Link para o comentário
Compartilhar em outros sites

Eu gostei do script e estou pensando em usar ele no meu servidor só que eu nao compreendi muito bem a funcionalidade dele. Por exemplo;

Eu terei que criar 3 talkactions? Uma para mages, e 2 outras para knight e paladin? Ou eu posso colocar para adicionar o determinado skill certo em cada vocação em uma talkaction só? Ou entao uma talkaction para cada skill e vocaçao?
É so isso, obrigado desde ja

 

~~

~~

Att. Ótimo script, REP+ :thumbsupsmiley2:

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

Eu gostei do script e estou pensando em usar ele no meu servidor só que eu nao compreendi muito bem a funcionalidade dele. Por exemplo;

Eu terei que criar 3 talkactions? Uma para mages, e 2 outras para knight e paladin? Ou eu posso colocar para adicionar o determinado skill certo em cada vocação em uma talkaction só? Ou entao uma talkaction para cada skill e vocaçao?
É so isso, obrigado desde ja

 

~~

~~

Att. Ótimo script, REP+ :thumbsupsmiley2:

 

E o script adiciona somente uma espécie de skill. Si for fazer outros skills você precisaria criar outro arquivo trocando algumas condições.

 

E ao cara que falou que num funcionou poderia citar o erro que aparece na TFS e o servidor que você está usando para mim testar ?

Link para o comentário
Compartilhar em outros sites

Ai, esse script do meu SV nao pego olha qq da quando eu compro. OBS: Uso SV Baiak 860:

 

[24/06/2011 16:02:01] [Error - TalkAction Interface]

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:onSay

[24/06/2011 16:02:01] Description:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: attempt to concatenate local 'skill' (a nil value)

[24/06/2011 16:02:01] stack traceback:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: in function 'doPlayerSetSkill'

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:12: in function <data/talkactions/scripts/skill.lua:7>

 

@EDIT

Ahh, era só editar umas coisas aqui, ah e uma dica eu acho que voce deveria explicar melhor de como instalar esse sistema naquela parte la de IDSKILL e etc, seria bom vc mostrar o exemplo de um já editado e pronto pra galera entender melhor pq nessa parte ali q complico aqui. Mas eu ja consegui, vlw ae REP+

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

Poderia citar os erros?



O script é direto na db, como si fosse alterado manualmente na DB.

 

Ai, esse script do meu SV nao pego olha qq da quando eu compro. OBS: Uso SV Baiak 860:

 

[24/06/2011 16:02:01] [Error - TalkAction Interface]

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:onSay

[24/06/2011 16:02:01] Description:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: attempt to concatenate local 'skill' (a nil value)

[24/06/2011 16:02:01] stack traceback:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: in function 'doPlayerSetSkill'

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:12: in function <data/talkactions/scripts/skill.lua:7>

 

@EDIT

Ahh, era só editar umas coisas aqui, ah e uma dica eu acho que voce deveria explicar melhor de como instalar esse sistema naquela parte la de IDSKILL e etc, seria bom vc mostrar o exemplo de um já editado e pronto pra galera entender melhor pq nessa parte ali q complico aqui. Mas eu ja consegui, vlw ae REP+

 

Você adicionou a function, em 050-function na pasta lib ?

Link para o comentário
Compartilhar em outros sites

Poderia citar os erros?



O script é direto na db, como si fosse alterado manualmente na DB.

 

Ai, esse script do meu SV nao pego olha qq da quando eu compro. OBS: Uso SV Baiak 860:

 

[24/06/2011 16:02:01] [Error - TalkAction Interface]

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:onSay

[24/06/2011 16:02:01] Description:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: attempt to concatenate local 'skill' (a nil value)

[24/06/2011 16:02:01] stack traceback:

[24/06/2011 16:02:01] data/lib/050-function.lua:4: in function 'doPlayerSetSkill'

[24/06/2011 16:02:01] data/talkactions/scripts/skill.lua:12: in function <data/talkactions/scripts/skill.lua:7>

 

@EDIT

Ahh, era só editar umas coisas aqui, ah e uma dica eu acho que voce deveria explicar melhor de como instalar esse sistema naquela parte la de IDSKILL e etc, seria bom vc mostrar o exemplo de um já editado e pronto pra galera entender melhor pq nessa parte ali q complico aqui. Mas eu ja consegui, vlw ae REP+

 

Você adicionou a function, em 050-function na pasta lib ?

Sim, adicionei e ja ta tudo de boa, ta tranquilo.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...