Jump to content

(Resolvido)[Action] Reset system por Action


Go to solution Solved by Shiuns,

Recommended Posts

Olá galera do TibiaKing!! Gostaria de pedir uma ajuda a vocês craques dos scripts.. estou tentando colocar meu sistema de reset para ser feito quando o player clica (da use) na placa(ou qualquer objeto).. isso apenas em alguns resets, o restante já está certo para ser feito por talkaction. Porém estou tendo alguns problemas, algumas vezes ele da a mensagem no jogo dizendo que a vocação está errada sendo que está certa, ou não aparece nada no jogo e da erro no TFS. Vou deixar o código e o erro.

 

OBS: TFS 0.4 e quando consegui fazer com que não desse erro no TFS, ele dizia que precisava da vocação para resetar, sendo que o char já estava na vocação certa. Enfim é isto, quem puder ajudar REP+ e humildade no teto!!

 

Código>

Citar

function onUse(cid, fromPosition, itemEx, toPosition)
local tabble = {
{reqVoc= 7, needLevel=330000},
}
local config = {{pid = getPlayerGUID(cid) , {newlv = 90000,life = 3599865,mana = 3599715}}}
if getPlayerLevel(cid) < 330000 and tabble.needLevel
then
doPlayerPopupFYI(cid, "Voce precisa ser level "..needLevel.." para resetar.")
return true
elseif tabble.reqVoc >= getPlayerVocation(cid) or 8
then
doPlayerPopupFYI(cid, "Voce já é vocaçao.")
return true
elseif tabble.reqVoc <= 7 and getPlayerVocation(cid)
then
doPlayerPopupFYI(cid, "Voce precisa ser vocaçao para resetar.")
return true
end
if tabble.reqVoc == getPlayerVocation(cid) then setPlayerStorageValue(cid, 887978, 1)
end
local newvoc = tabble.reqVoc ~= getPlayerVocation(cid) and (tabble.reqVoc+1)
setPlayerStorageValue(cid, 887979, newvoc)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.newlv..", `experience` = "..getExperienceForLevel(config.newlv)..",`manamax` = "..config.mana..",`health` = "..config.life..", `healthmax` = "..config.life..",`mana` = "..config.mana.." WHERE `id` = "..config.pid)
return true
end

 

Mensagem de erro no TFS> 

[Error - Action Interface]
[14:3:05.587] data/actions/scripts/resets/falling.lua:onUse
[14:3:05.588] Description:
[14:3:05.589] data/actions/scripts/resets/falling.lua:10: attempt to compare number with nil
[14:3:05.590] stack traceback:
[14:3:05.591]   data/actions/scripts/resets/falling.lua:10: in function <data/actions/scripts/resets/falling.lua:1>

 

 

Link to post
Share on other sites

Spoiler

function onUse(cid, fromPosition, itemEx, toPosition)
local tabble = {
{reqVoc= 7, needLevel=330000},
}
local config = {{pid = getPlayerGUID(cid) , {newlv = 90000,life = 3599865,mana = 3599715}}}
if getPlayerLevel(cid) < 330000 and tabble.needLevel
then
doPlayerPopupFYI(cid, "Voce precisa ser level "..needLevel.." para resetar.")
return true
elseif tabble.reqVoc >= getPlayerVocation(cid) >= 8 then
doPlayerPopupFYI(cid, "Voce já é vocaçao.")
return true
elseif tabble.reqVoc <= 7 and getPlayerVocation(cid)
then
doPlayerPopupFYI(cid, "Voce precisa ser vocaçao para resetar.")
return true
end
if tabble.reqVoc == getPlayerVocation(cid) then setPlayerStorageValue(cid, 887978, 1)
end
local newvoc = tabble.reqVoc ~= getPlayerVocation(cid) and (tabble.reqVoc+1)
setPlayerStorageValue(cid, 887979, newvoc)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.newlv..", `experience` = "..getExperienceForLevel(config.newlv)..",`manamax` = "..config.mana..",`health` = "..config.life..", `healthmax` = "..config.life..",`mana` = "..config.mana.." WHERE `id` = "..config.pid)
return true
end

 

Link to post
Share on other sites

  • Solution

Falta estudar tabelas...

 

local tabble = {
   {reqVoc= 7, needLevel=330000},
}

print(tabble.reqVoc) -- retorna nil

---------------------------
local tabble = {
   {reqVoc= 7, needLevel=330000},
}

print(tabble[1].reqVoc) -- retorna 7

----------------------------

o certo é usar:

local tabble = {
   reqVoc= 7, needLevel= 330000,
}

print(tabble.reqVoc)

 

 

 

 

o código:

 

function onUse(cid, fromPosition, itemEx, toPosition)
   local tabble = {
      reqVoc = 7,
      needLevel = 330000
   }
   local config = {
      pid = getPlayerGUID(cid),
      newlv = 90000,
      life = 3599865,
      mana = 3599715
   }
   if getPlayerLevel(cid) < 330000 and tabble.needLevel then
      doPlayerPopupFYI(cid, "Voce precisa ser level " .. needLevel .. " para resetar.")
      return true
   elseif tabble.reqVoc >= getPlayerVocation(cid) or 8 then
      doPlayerPopupFYI(cid, "Voce já é vocaçao.")
      return true
   elseif tabble.reqVoc <= 7 and getPlayerVocation(cid) then
      doPlayerPopupFYI(cid, "Voce precisa ser vocaçao para resetar.")
      return true
   end
   if tabble.reqVoc == getPlayerVocation(cid) then
      setPlayerStorageValue(cid, 887978, 1)
   end
   local newvoc = tabble.reqVoc ~= getPlayerVocation(cid) and (tabble.reqVoc+1)
   setPlayerStorageValue(cid, 887979, newvoc)
   doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
   doRemoveCreature(cid)
   db.executeQuery("UPDATE `players` SET `level` = "..config.newlv..", `experience` = "..getExperienceForLevel(config.newlv)..",`manamax` = "..config.mana..",`health` = "..config.life..", `healthmax` = "..config.life..",`mana` = "..config.mana.." WHERE `id` = "..config.pid)
   return true
end

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Confirmação de Termo