Ir para conteúdo

[Talkaction] !comprar Skill/magic Level


Fir3element

Posts Recomendados

  • Nome: Comprar skill/magic level
  • Versão testada: TFS 0.3.6pl1 / 0.4_SVN
  • Créditos: fireelement e apocarai
  • Exemplo de uso:

  • !comprar club
  • !comprar magiclevel

Vá em data/talkactions/talkactions.xml e adicione esta tag:

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

 

Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome comprar.lua e cole isto nele:

skill = {
   item = 9971, -- Item
   quantidade = 10, -- Quantidade
   quantidadeskill = 10, -- Skill adicionada
   limiteskill = 350 -- Limite
}

magicLevel = {
   item = 9971,
   quantidade = 15,
   quantidademl = 5,
   limitedeml = 200
}

skillID = {
   ["club"] = SKILL_CLUB,
   ["sword"]= SKILL_SWORD,
   ["axe"] = SKILL_AXE,
   ["distance"] = SKILL_DISTANCE,
   ["shielding"] = SKILL_SHIELD
}

vocationSkill = { -- Vocações - SKILL
   ["club"] = {4, 8},
   ["sword"] = {4, 8},
   ["axe"] = {4, 8},
   ["distance"] = {3, 7},
   ["shielding"] = {4, 8}
}

vocationMagicLevel = {1, 2, 5, 6} -- Vocações - MAGIC LEVEL
protectZone = "sim"
function onSay(cid, words, param, channel)
   local pid = getPlayerGUID(cid)
   if (protectZone == "sim") and (not getTilePzInfo(getCreaturePosition(cid))) then
       doPlayerSendCancel(cid, "Você precisa estar em protection zone pra poder comprar.")
   end

   if (param == '') then
       doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Como usar: !comprar club; !comprar magiclevel.")
       return true
   end

   local storage, duration = 5, 5
   if (param == 'magiclevel') then
       if getPlayerMagLevel(cid) < magicLevel.limitedeml then
           if isInArray(vocationMagicLevel, getPlayerVocation(cid)) then
               if doPlayerRemoveItem(cid, magicLevel.item, magicLevel.quantidade) then
                   if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then
                       setPlayerStorageValue(cid, storage, os.time())
                       doRemoveCreature(cid, true)
                       db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + ".. magicLevel.quantidademl .." WHERE `id` = ".. pid)
                   else
                       doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.")
                   end
               else
                   doPlayerSendCancel(cid, "Você não tem o item requerido.")
               end
           else
               doPlayerSendCancel(cid, "Voce não pode comprar magic level.")
           end
       else
           doPlayerSendCancel(cid, "Você chegou no limite de magic level.")
       end
       return true
   end

   if(skillID[param:lower()]) then
       if(getPlayerSkill(cid, skillID[param:lower()]) < skill.limiteskill) then
           if isInArray(vocationSkill[param:lower()], getPlayerVocation(cid)) then
               if doPlayerRemoveItem(cid, skill.item, skill.quantidade) then
                   if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then
                       setPlayerStorageValue(cid, storage, os.time())
                       doRemoveCreature(cid, true)
                       db.executeQuery("UPDATE `player_skills` SET `value` = `value` + ".. skill.quantidadeskill .." WHERE `player_id` = ".. pid .. " and `skillID[` = ".. skillID[param:lower()])
                   else
                       doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.")
                   end
               else
                   doPlayerSendCancel(cid, "Você não tem o item requerido.")
               end
           else
               doPlayerSendCancel(cid, "Voce não pode comprar este skill.")
           end
       else
           doPlayerSendCancel(cid, "Você chegou no limite de skill.")
       end
   else
       doPlayerSendCancel(cid, "Skill desconhecida.")
   end
   return true
end


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

  • 2 weeks later...

Cara você é o melhor nessa area de comprar skill, ganhou meu REP+ :D

Será que você conseguiria fazer um script igual akele do radbr, que você fala !axe, !club e mostra seu skill?, nossa se você conseguir ganhara todos meus rep+ todo dia :D, manda private se conseguir vlw

Link para o comentário
Compartilhar em outros sites

to meio sem tempo, fiz um q da pra vc ver seu skill, pra ver o de outro player vo ve se faço daqui a pouco

 

talkactions.xml

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

 

cmmd.lua

function onSay(cid, words, param, channel)
local id = {["club"] = 1, ["sword"]= 2, ["axe"] = 3, ["distance"] = 4, ["shielding"] = 5}
if(id[param:lower()]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Skill: "..getPlayerSkill(cid, id[param:lower()]).."") end return true end

Link para o comentário
Compartilhar em outros sites

cara...achei seu script muito interresante,mas ta dando esse erro aqui:

 

[19/07/2011 17:46:50] [Error - TalkAction Interface]

[19/07/2011 17:46:50] data/talkactions/scripts/comprar.lua:onSay

[19/07/2011 17:46:50] Description:

[19/07/2011 17:46:50] data/talkactions/scripts/comprar.lua:71: attempt to call field 'executeQuery' (a nil value)

[19/07/2011 17:46:50] stack traceback:

[19/07/2011 17:46:50] data/talkactions/scripts/comprar.lua:71: in function <data/talkactions/scripts/comprar.lua:1>

 

[19/07/2011 17:46:50] [Error - Npc interface]

[19/07/2011 17:46:50] data/npc/scripts/default.lua:onCreatureSay

[19/07/2011 17:46:50] Description:

[19/07/2011 17:46:50] (luaGetNpcDistanceTo) Thing not found

 

sabe o que preciso fazer ): ?

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 2 weeks later...

MiKeZeerA:  se este caso é para o radbr faltou infernalist que nao vai poder comprar ml e drunou que nao vai poder comprar club ;\ 

 

Seguinte cara é facil, Você só irar mudar aqui nessa parte do script veja bem

 

PARA DRUNOU

 

local voc = {
               ["skillclub"] = {4, 8, (ID DRUNOU) }, -- Vocações que irá comprar club]
               ["skillsword"] = {4, 8}, -- Vocações que irá comprar sword
               ["skillaxe"] = {4, 8}, -- Vocações que irá comprar axe
               ["skilldistance"] = {3, 7}, -- Vocações que irá comprar distance
               ["skillshielding"] = {4, 8, (ID DRUNOU) } -- Vocações que irá comprar shielding

 

PARA INFERNALIST

 

 local vocml = {1, 2, 5, 6, (ID INFERNALIST) } -- Vocações que irá comprar magic level 

 

Simplificarei mais. Onde ta (ID INFERNALIST OU DRUNOU) Voce vai por o numero por exemplo

 

 

1 - Sorcerer
2 - Druid
3 - Paladin
4 - Knight
5 - Master Sorcerer
6 - Elder Druid
7 - Royal Paladin
8 - Elite Knight

9 - Drunou
10 - Lord Drunou
11 - Infernalist
12 - Master Infernalist

 

 

Ficando assim

 

local voc = {
               ["skillclub"] = {4, 8, 9, 10}, -- Vocações que irá comprar club
               ["skillsword"] = {4, 8}, -- Vocações que irá comprar sword
               ["skillaxe"] = {4, 8}, -- Vocações que irá comprar axe
               ["skilldistance"] = {3, 7}, -- Vocações que irá comprar distance
               ["skillshielding"] = {4, 8, 9, 10} -- Vocações que irá comprar shielding

 

 local vocml = {1, 2, 5, 6, 11, 12} -- Vocações que irá comprar magic level 

 

 

Alguma duvida solta a voz .

 

Gostou ? Fico feliz em ter ajudado

 

 

Att Hekksv

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 2 weeks later...

Eu tinha feito um, porém ao usar magias de buff ou anéis que sobem skill e usar o comprarskill faziam com que se ganhasse mais skills...esse script tem esse problema? foi testado?

 

Atenciosament, Lucas Lemos

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...