• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Lua 2 helps on my script fishing

gmstrikker

Well-Known Member
Joined
Jul 30, 2014
Messages
458
Solutions
1
Reaction score
50
Code:
local config = {
  peixes = {
  leveis = {20, 40, 60, 80, 100, 120},
  fish = {
  [20] = 2670, -- 4
  [40] = 2667, -- 8
  [60] = 7159, -- 16
  [80] = 7158, -- 20
  [100] = 2669, -- 30
  [130] = 7963, -- 40
  }
  },
  waters = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825},
  fishable = {4608, 4609, 4610, 4611, 4612, 4613, 7236},
  spawning = {4614, 4615, 4616, 4617, 4618, 4619},
  holes = {7236},
  corpses = {
  -- [corpse] = {items}
  [2025] = {
  -- {itemid, countmax, chance}
  -- TODO: Water elemental and Massive Water Elemental loot...
  }
  },
  checkCorpseOwner = getConfigValue("checkCorpseOwner"),
  rateLoot = getConfigValue("rateLoot"),
  rateSpawn = getConfigValue("rateSpawn"),
  summons = {
  -- {skill, name, chance, bossName, bossChance}
  },
  baitFailRemoveChance = 10,
  allowFromPz = false,
  useBait = true,
  baitCount = 1,
  fishes = 1
}
local function getFish(uid)
  local lvl = getPlayerSkillLevel(uid, 6)
  for i = #config.peixes.leveis, 1, -1 do
  if lvl >= config.peixes.leveis[i] then
  return config.peixes.fish[config.peixes.leveis[i]]
  end
  end
  return 2670
end
config.checkCorpseOwner = getBooleanFromString(config.checkCorpseOwner)
function onUse(cid, item, fromPosition, itemEx, toPosition)
  if(isInArray(config.waters, itemEx.itemid)) then
  if(isInArray(config.spawning, itemEx.itemid)) then
  doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
  end
  doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
  return true
  end
  local corpse = config.corpses[itemEx.itemid]
  if(corpse ~= nil) then
  local owner = getItemAttribute(cid, "corpseowner")
  if(owner ~= 0 and owner ~= getPlayerGUID(cid) and config.checkCorpseOwner) then
  doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUARENOTTHEOWNER)
  return true
  end
  local chance, items = math.random(0, 100000) / config.rateLoot, {}
  for _, data in ipairs(corpse) do
  if(data[3] >= chance) then
  local tmp = {data[1], math.random(1, data[2])}
  table.insert(items, tmp)
  end
  end
  local itemCount = table.maxn(items)
  if(itemCount > 0) then
  local loot = items[math.random(1, itemCount)]
  doPlayerAddItem(cid, loot[1], loot[2])
  end
  doTransformItem(itemEx.uid, itemEx.uid + 1)
  return true
  end
  if(not isInArray(config.fishable, itemEx.itemid)) then
  return false
  end
  local position, formula, tries = getThingPosition(cid), getPlayerSkill(cid, SKILL_FISHING) / 200 + 0.85 * math.random(), 0
  config.allowFromPz = config.allowFromPz or not getTileInfo(position).protection
  if(item.itemid ~= ITEM_MECHANICAL_FISHING_ROD) then
  if(config.allowFromPz and (not config.useBait or getPlayerItemCount(cid, ITEM_WORM) >= config.baitCount)) then
  tries = 1
  if(isInArray(config.holes, itemEx.itemid)) then
  if(doPlayerRemoveItem(cid, ITEM_WORM, config.baitCount)) then
  tries = 2
  if(formula > 0.83) then
  doPlayerAddItem(cid, ITEM_RAINBOW_TROUT, config.fishes)
  elseif(formula > 0.7) then
  doPlayerAddItem(cid, ITEM_NORTHERN_PIKE, config.fishes)
  elseif(formula > 0.5) then
  doPlayerAddItem(cid, ITEM_GREEN_PERCH, config.fishes)
  else
  doPlayerAddItem(cid, ITEM_FISH, config.fishes)
  end
  end
  elseif(formula > 0.7 and doPlayerRemoveItem(cid, ITEM_WORM, config.baitCount)) then
  tries = 2
  if(table.maxn(config.summons) > 0 and getDistanceBetween(position, toPosition) < 2) then
  local skill, summon = getPlayerSkill(cid, SKILL_FISHING), {name = "", chance = 0, bossName = "", bossChance = 0}
  for _, data in pairs(config.summons) do
  if(skill >= data[1]) then
  summon.name = data[2]
  summon.chance = data[3]
  summon.bossName = data[4]
  summon.bossChance = data[5]
  end
  end
  local random = math.random(1, 100000) / config.rateSpawn
  if(summon.bossName ~= "" and summon.bossChance >= random) then
  doCreateMonster(summon.bossName, position)
  tries = 4
  elseif(summon.name ~= "" and summon.chance >= random) then
  doCreateMonster(summon.name, position)
  tries = 3
  else
  doPlayerAddItem(cid, ITEM_FISH, config.fishes)
  end
  else
  doPlayerAddItem(cid, getFish(cid), config.fishes)
  end
  end
  end
  elseif(config.allowFromPz and (not config.useBait or getPlayerItemCount(cid, ITEM_NAIL) >= config.baitCount)) then
  if(formula > 0.7 and doPlayerRemoveItem(cid, ITEM_NAIL, config.baitCount)) then
  doPlayerAddItem(cid, ITEM_MECHANICAL_FISH, config.fishes)
  tries = 2
  else
  tries = 1
  end
  end
  if(tries > 1) then
  -- conseguiu
  if(not isInArray(config.holes, itemEx.itemid)) then
  doTransformItem(itemEx.uid, itemEx.itemid + 6)
  else
  doTransformItem(itemEx.uid, itemEx.itemid + 1)
  end
  doDecayItem(itemEx.uid)
  elseif(tries > 0) then
  -- fail
  if(config.baitFailRemoveChance >= math.random(1, 100)) then
  if(item.itemid == ITEM_MECHANICAL_FISHING_ROD) then
  doPlayerRemoveItem(cid, ITEM_NAIL, config.baitCount)
  else
  doPlayerRemoveItem(cid, ITEM_FISH, config.baitCount)
  end
  end
  end
  doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
  return true
end

1- Endless Worm
when u fish u lose worm (id:3976)
i want if u have 10224, mecanic fish, u dont lose nothing, so that it is an endless worm

2- Dont fish on PZ
I don't want players can fishing on PZ zone
It is possible?

Ty guys ;)
 
Back
Top