FI
talkaction

[Talkaction] !comprar Skill/magic Level

Por Fir3element, 26 de jun. de 2011 em Actions e Talkactions

script
16
5.8k
26 de junho de 2011 às 21:45

  • 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 Dezembro 19 por fireelement

27 de junho de 2011 às 18:26

Valeu pelo comentário, não precisa ser muito high exp, o script é baseado no do RadBR (50x exp).

Daianpf2011D
28 de junho de 2011 às 16:13

#fireelement

 

Voçê é o cara!

To falando sério, todos os scripts de comprar skill do :XTibia_smile:

não funcionaram no meu servidor.

Mais o seu sim !!!

Vlw manolo

:positive:

 

APROVADO

:button_ok:

REP+

1 mês depois...
RafuR
10 de julho de 2011 às 23:34

Funfou Ake Gostei muito vlw +rep :button_ok:

IgorzeraI
15 de julho de 2011 às 21:24

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

15 de julho de 2011 às 21:48

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

IgorzeraBRI
16 de julho de 2011 às 01:56

Valewww ae cara, ajudou muito o melhor script de compra de skill e esse, sem duvidas ;D

yyaaggooY
19 de julho de 2011 às 17:51

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 ): ?

sauvadur2S
19 de julho de 2011 às 22:42

Muito bom script, alguns meses atras eu estava procurando por esse script achei varios mas a todos com defeito!

Bom trabalho Rep+ :button_ok:

22 de julho de 2011 às 08:56

As querys podem lagar o servidor, estou fazendo um outro script

Editado Agosto 14 por fireelement

3 meses depois...
mikedbrM
14 de outubro de 2011 às 23:57

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

2 semanas depois...
MarkhoppousM
26 de outubro de 2011 às 11:48

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

3 meses depois...
04 de janeiro de 2012 às 06:32

Fiz uma limpeza no script e arrumei o tópico, não sei o que acotenceu para ele desformatar sozinho.

04 de janeiro de 2012 às 08:10

O código está bom, mas na minha opinião, um script assim tira toda graça do jogo.

 

Parabéns, até.

Editado Janeiro 4 por Demonbholder

2 semanas depois...
lemos99L
12 de janeiro de 2012 às 23:58

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