• 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!

Solved Help action fishing.lua

gmstrikker

Well-Known Member
Joined
Jul 30, 2014
Messages
458
Solutions
1
Reaction score
50
I found this script and had testing and editing it, is perfect, the fishing brings different fish according to your fishing skill, but this fishing skill is advancing very fast!
Changing the experience or the rates of rises as this?

fishing.lua
Code:
local config = {
  peixes = {
  leveis = {20, 40, 50, 60, 80, 100, 120},
  fish = {
  [20] = 2670,
  [40] = 2667,
  [50] = 2668,
  [60] = 7459,
  [80] = 7458,
  [100] = 2669,
  [120] = 7963,
  }
  },
  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
  doPlayerAddSkillTry(cid, SKILL_FISHING, tries)
  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
  doPlayerAddSkillTry(cid, SKILL_FISHING, 1)
  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
 
You can add false so it ignores the skillrate in config.lua.
Code:
doPlayerAddSkillTry(cid, SKILL_FISHING, tries, false)
 
You can add false so it ignores the skillrate in config.lua.
Code:
doPlayerAddSkillTry(cid, SKILL_FISHING, tries, false)
how to apply it?
And I would place new rates only to the script?
Because if much lower rates just skill with others, for example sword ...
 
Add false to the 2 doPlayerAddSkillTry functions like I showed in the post.
This will only effect the gain of the fishing skill from this script.
 
Eu tentei um modo de deixar duas vezes mais dificel, porém agora não está dando nem 1% de skill

doPlayerAddSkillTry(cid, SKILL_FISHING, 1 / 2)

Code:
local config = {
  peixes = {
  leveis = {20, 40, 50, 60, 80, 100, 120},
  fish = {
  [20] = 2670,
  [40] = 2667,
  [50] = 2668,
  [60] = 7459,
  [80] = 7458,
  [100] = 2669,
  [120] = 7963,
  }
  },
  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
  doPlayerAddSkillTry(cid, SKILL_FISHING, tries / 2)
  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
  doPlayerAddSkillTry(cid, SKILL_FISHING, 1 / 2)
  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
 
Back
Top