Ir para conteúdo
  • Cadastre-se

(Resolvido)Error Fishing System


Ir para solução Resolvido por tioj,

Posts Recomendados

Please help.. :( error come when try to use Steak, Special Lure, Misty's Special Lure and Big Steak.

 

data/actions/actions.xml

<action itemid="2580" event="script" value="Fishing_System/fishing.lua" allowfaruse="1"/>
<action itemid="10223" event="script" value="Fishing_System/fishing.lua" allowfaruse="1"/>
<action itemid="12853-12860;3976" event="script" value="Fishing_System/Iscas_Fishing.lua"/>

 
​data/action/scripts/fishing_system/fishing.lua

local fishing = {
[-1] = { segs = 5, pokes = {{"Magikarp", 5}} },
 
[3976] = { segs = 5, pokes = {{"Horsea", 5}, {"Remoraid", 3}, {"Goldeen", 3}, {"Poliwag", 2}} },  -- pega no client da pxg
 
[12855] = { segs = 5, pokes = {{"Tentacool", 3}, {"Staryu", 2}, {"Krabby", 3}, {"Shellder", 2}} },
 
[12854] = { segs = 5, pokes = {{"Seel", 2}, {"Chinchou", 2}} },
 
[12858] = { segs = 5, pokes = {{"Seaking", 2}, {"Seadra", 2}, {"Poliwhirl", 2}} },
 
[12857] = { segs = 5, pokes = {{"Starmie", 2}, {"Kingler", 2}, {"Corsola", 2}, {"Qwilfish", 2}} },  -- pega no client da pxg
 
[12860] = { segs = 2, pokes = {{"Lanturn", 2}, {"Dewgong", 2}} },
 
[12859] = { segs = 2, pokes = {{"Cloyster", 2}, {"Poliwrath", 2}, {"Politoed", 2}, {"Octillery", 2}} },
 
[12856] = { segs = 2, pokes = {{"Dratini", 3}, {"Dragonair", 2}} },
 
[12853] = { segs = 2, pokes = {{"Gyarados", 1}, {"Mantine", 1}, {"Tentacruel", 1}, {"Kingdra", 1}, {"Giant Magikarp", 1}} },
}
 
local storageP = 154585
local sto_iscas = 5648454 --muda aki pra sto q ta no script da isca
local bonus = 15
local limite = 100
 
 
local function doFish(cid, pos, ppos, interval)
      if not isCreature(cid) then return false end
      if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then
         return false 
      end
      
      doSendMagicEffect(pos, CONST_ME_LOSEENERGY)
      
      if interval > 0 then
         addEvent(doFish, 1000, cid, pos, ppos, interval-1)
         return true
      end   
 
      local peixe = 0
      local playerpos = getClosestFreeTile(cid, getThingPos(cid))
      local fishes = fishing[getPlayerStorageValue(cid, sto_iscas)]
      local random = {}   
 
      if getPlayerSkillLevel(cid, 6) < limite then 
         doPlayerAddSkillTry(cid, 6, bonus * 5)
      end
 
    --[[if math.random(1, 100) <= chance then
if getPlayerSkillLevel(cid, 6) < limite then
doPlayerAddSkillTry(cid, 6, bonus * 5)
end]]
 
      random = fishes.pokes[math.random(#fishes.pokes)]
 
      for i = 1, math.random(random[2]) do
          peixe = doSummonCreature(random[1], playerpos)
          if not isCreature(peixe) then
             setPlayerStorageValue(cid, storageP, -1)
             doRemoveCondition(cid, CONDITION_OUTFIT)
             return true
          end
          doSetMonsterPassive(peixe)
          doWildAttackPlayer(peixe, cid)
          doCreatureSetLookDir(cid, getDirectionTo(getThingPos(cid), getThingPos(peixe)))  --alterado ver depois
     if #getCreatureSummons(cid) >= 1 then
             doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 0)
    doChallengeCreature(getCreatureSummons(cid)[1], peixe)
          else
             doSendMagicEffect(getThingPos(cid), 0)
    doChallengeCreature(cid, peixe)
          end
       end
       setPlayerStorageValue(cid, storageP, -1)
       doRemoveCondition(cid, CONDITION_OUTFIT)
return true
end
 
local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
 
function onUse(cid, item, fromPos, itemEx, toPos)
 
if getPlayerGroupId(cid) == 11 then
return true
end
 
local checkPos = toPos
checkPos.stackpos = 0
 
if getTileThingByPos(checkPos).itemid <= 0 then
   doPlayerSendCancel(cid, '!')
   return true
end
 
if not isInArray(waters, getTileInfo(toPos).itemid) then
   return true
end
 
if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then
   doPlayerSendCancel(cid, "You can't fish while surfing/flying.")
   return true
end
 
if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then
   doPlayerSendCancel(cid, "You can\'t fish while surfing neither flying above water.")
   return true
end
 
if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then
doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.")
return true
end
 
 
if not isInArray({520, 521}, getCreatureOutfit(cid).lookType) then
   return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fisher outfit for fishing.")
end
 
local delay = fishing[getPlayerStorageValue(cid, sto_iscas)].segs
 
if getPlayerStorageValue(cid, sto_iscas) ~= -1 then
   if getPlayerItemCount(cid, getPlayerStorageValue(cid, sto_iscas)) >= 1 then
      doPlayerRemoveItem(cid, getPlayerStorageValue(cid, sto_iscas), 1)
   else
      setPlayerStorageValue(cid, sto_iscas, -1)
   end
end
 
local outfit = getCreatureOutfit(cid)
local out = getPlayerSex(cid) == 0 and 1467 or 1468
 
doSetCreatureOutfit(cid, {lookType = out, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
setPlayerStorageValue(cid, storageP, 1)     --alterei looktype
doCreatureSetNoMove(cid, false)
 
doFish(cid, toPos, getThingPos(cid), math.random(5, delay))
 
return true
end

 
data/action/scripts/fishing_system/Iscas_Fishing.lua

local sto = 5648454 
local iscas = {
--[id da isca] = lvl de fishing pra usar ela,
[3976] =                  {fish = 20, level = 15}, -- Worm        
[12855] =                 {fish = 25, level = 20},   -- Seaweed
[12854] =                 {fish = 40, level = 25},  -- Fish
[12858] =                 {fish = 50, level = 35},   -- Shrimp
[12857] =                 {fish = 60, level = 40},  -- Kept    
[12860] =                 {fish = 70, level = 50},   -- Steak
[12859] =                 {fish = 80, level = 65},   -- Special Lure
[12856] =                 {fish = 80, level = 65},  -- Misty's Special Lure
[12853] =                 {fish = 90, level = 75},   -- Big Steak
}
 
function onUse(cid, item, frompos, item2, topos)
   if not iscas[item.itemid] then return true end
   
   local fishNEED = iscas[item.itemid].fish
   if getPlayerSkillLevel(cid, 6) < iscas[item.itemid].fish then
      return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need fishing "..fishNEED.." to use this bait.")
   end
   
   local level = iscas[item.itemid].level
   if getPlayerLevel(cid) < iscas[item.itemid].level then
      return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need level "..level.." to use this bait.")
   end
      
   if getPlayerStorageValue(cid, sto) == -1 then
      setPlayerStorageValue(cid, sto, item.itemid)
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Your bait was placed on the fishing rod.')
   else
      setPlayerStorageValue(cid, sto, -1)
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Your bait was removed from the fishing rod.')
   end
return true
end

 
Error:

[17/04/2015 13:26:04] [Error - Action Interface] 
[17/04/2015 13:26:04] data/actions/scripts/Fishing_System/fishing.lua:onUse
[17/04/2015 13:26:04] Description: 
[17/04/2015 13:26:04] data/actions/scripts/Fishing_System/fishing.lua:138: bad argument #2 to 'random' (interval is empty)
[17/04/2015 13:26:04] stack traceback:
[17/04/2015 13:26:04] [C]: in function 'random'
[17/04/2015 13:26:04] data/actions/scripts/Fishing_System/fishing.lua:138: in function <data/actions/scripts/Fishing_System/fishing.lua:83>

Editado por dbs86 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

good I'll use the translator because I can not speak English

 

replace their fisheries for these files

 

fishing.lua

 

local fishing = {
[-1] = { segs = 3, pokes = {{"Magikarp", 3}} },
 
[3976] = { segs = 3, pokes = {{"Horsea", 3}, {"Remoraid", 3}, {"Goldeen", 3}, {"Poliwag", 2}} },
 
[12855] = { segs = 3, pokes = {{"Tentacool", 3}, {"Staryu", 2}, {"Krabby", 3}, {"Shellder", 2}} },
 
[12854] = { segs = 3, pokes = {{"Seel", 2}, {"Chinchou", 2}, {"Slowpoke", 2}, {"Psyduck", 2}, {"Wooper", 2}} },
 
[12858] = { segs = 3, pokes = {{"Seaking", 2}, {"Seadra", 2}, {"Poliwhirl", 2}, {"Squirtle", 2}, {"Totodile", 2}} },
 
[12857] = { segs = 3, pokes = {{"Starmie", 2}, {"Kingler", 2}, {"Corsola", 2}, {"Qwilfish", 2}} },
 
[12860] = { segs = 3, pokes = {{"Lanturn", 2}, {"Dewgong", 2}, {"Slowbro", 2}, {"Azumarill", 2}} },
 
[12859] = { segs = 3, pokes = {{"Cloyster", 2}, {"Quagsire", 2}, {"Politoed", 2}, {"Octillery", 2}} },
 
[12856] = { segs = 3, pokes = {{"Dratini", 1}, {"Dragonair", 1}} },
 
[12853] = { segs = 3, pokes = {{"Gyarados", 1}, {"Mantine", 1}, {"Tentacruel", 1}, {"Poliwrath", 1}, {"Golduck", 1}, 
{"Giant Magikarp", 1}, {"Feraligatr", 1}, {"Blastoise", 1}}, }
}
 
local storageP = 154585
local sto_iscas = 5648454 --muda aki pra sto q ta no script da isca
local bonus = 30
local limite = 100
local efish = 9500
local cdfish = 3
 
 
local function doFish(cid, pos, ppos, interval)
 
      if not isCreature(cid) then return false end
      if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then
         return false 
      end
      
      doSendMagicEffect(pos, CONST_ME_LOSEENERGY)
      
      if interval > 0 then
         addEvent(doFish, 1000, cid, pos, ppos, interval-1)
         return true
      end   
 
      local peixe = 0
      local playerpos = getClosestFreeTile(cid, getThingPos(cid))
      local fishes = fishing[getPlayerStorageValue(cid, sto_iscas)]
      local random = {}   
 
      if getPlayerSkillLevel(cid, 6) < limite then 
         doPlayerAddSkillTry(cid, 6, bonus * 5)
      end
 
 
      random = fishes.pokes[math.random(#fishes.pokes)]
 
      for i = 1, math.random(random[2]) do
          peixe = doSummonCreature(random[1], playerpos)
          if not isCreature(peixe) then
             setPlayerStorageValue(cid, storageP, -1)
             doRemoveCondition(cid, CONDITION_OUTFIT)
             return true
          end
          doSetMonsterPassive(peixe)
          doWildAttackPlayer(peixe, cid)
          doCreatureSetLookDir(cid, getDirectionTo(getThingPos(cid), getThingPos(peixe)))  --alterado ver depois
     if #getCreatureSummons(cid) >= 1 then
             doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 0)
    doChallengeCreature(getCreatureSummons(cid)[1], peixe)
          else
             doSendMagicEffect(getThingPos(cid), 0)
    doChallengeCreature(cid, peixe)
          end
       end
       setPlayerStorageValue(cid, storageP, -1)
       doRemoveCondition(cid, CONDITION_OUTFIT)
return true
end
 
local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
 
function onUse(cid, item, fromPos, itemEx, toPos)
 
if getPlayerGroupId(cid) == 11 then
return true
end
 
local checkPos = toPos
checkPos.stackpos = 0
 
if getTileThingByPos(checkPos).itemid <= 0 then
   doPlayerSendCancel(cid, '!')
   return true
end
 
if not isInArray(waters, getTileInfo(toPos).itemid) then
   return true
end
 
if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then
   doPlayerSendCancel(cid, "You can't fish while surfing/flying.")
   return true
end
 
if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then
   doPlayerSendCancel(cid, "You can\'t fish while surfing neither flying above water.")
   return true
end
 
if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then
doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.")
return true
end
 
if exhaustion.get(cid, efish) and exhaustion.get(cid, efish) > 0 then
local tempo = tonumber(exhaustion.get(cid, efish)) or 0
local min = math.floor(tempo)
doPlayerSendCancel(cid, "Voce tem que esperar "..getStringmytempo(tempo).." para pescar denovo.")
return true
end
 
local delay = fishing[getPlayerStorageValue(cid, sto_iscas)].segs
 
if getPlayerStorageValue(cid, sto_iscas) ~= -1 then
   if getPlayerItemCount(cid, getPlayerStorageValue(cid, sto_iscas)) >= 1 then
      doPlayerRemoveItem(cid, getPlayerStorageValue(cid, sto_iscas), 1)
   else
      setPlayerStorageValue(cid, sto_iscas, -1)
   end
end
 
local outfit = getCreatureOutfit(cid)
local out = getPlayerSex(cid) == 0 and 1467 or 1468
 
doSetCreatureOutfit(cid, {lookType = out, lookHead = outfit.lookHead, lookBody = outfit.lookBody, lookLegs = outfit.lookLegs, lookFeet = outfit.lookFeet}, -1)
setPlayerStorageValue(cid, storageP, 1)     --alterei looktype
doCreatureSetNoMove(cid, false)
 
doFish(cid, toPos, getThingPos(cid), delay)
exhaustion.set(cid, efish, cdfish)
 
return true
end

 
Iscas_Fishing.lua
 

local sto = 5648454 
local iscas = {
--[id da isca] = lvl de fishing pra usar ela,
[3976] =                  {fish = 10, level = 15}, -- Worm        
[12855] =                 {fish = 15, level = 20},   -- Seaweed
[12854] =                 {fish = 25, level = 25},  -- Fish
[12858] =                 {fish = 35, level = 35},   -- Shrimp
[12857] =                 {fish = 45, level = 40},  -- Kept    
[12860] =                 {fish = 55, level = 50},   -- Steak
[12859] =                 {fish = 60, level = 65},   -- Special Lure
[12856] =                 {fish = 60, level = 65},  -- Misty's Special Lure
[12853] =                 {fish = 65, level = 75},   -- Big Steak
}
 
function onUse(cid, item, frompos, item2, topos)
   if not iscas[item.itemid] then return true end
   
   local fishNEED = iscas[item.itemid].fish
   if getPlayerSkillLevel(cid, 6) < iscas[item.itemid].fish then
      return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de fishing "..fishNEED.." para usar essa isca.")
   end
   
   local level = iscas[item.itemid].level
   if getPlayerLevel(cid) < iscas[item.itemid].level then
      return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de level "..level.." para usar essa isca.")
   end
      
   if getPlayerStorageValue(cid, sto) == -1 then
      setPlayerStorageValue(cid, sto, item.itemid)
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'A sua isca foi colocada na vara de pesca.')
   else
      setPlayerStorageValue(cid, sto, -1)
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'A sua isca foi retirada da vara de pesca.')
   end
return true
end

 

good if everything right place you managed fish with no problem and I put for the player to fish every 3 seconds

Editado por tioj (veja o histórico de edições)

Minhas Gambiarras :rock:

 

 

[PDA] Pokedex Mostrando o Catch

 

http://www.tibiaking.com/forum/topic/54998-pda-arrumando-a-dex/?view=findpost&p=323041

 

Link para o post
Compartilhar em outros sites

click the best response button in the right corner ^^

Minhas Gambiarras :rock:

 

 

[PDA] Pokedex Mostrando o Catch

 

http://www.tibiaking.com/forum/topic/54998-pda-arrumando-a-dex/?view=findpost&p=323041

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo