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

Request to create a infinte worm on my fishing action

gmstrikker

Well-Known Member
Joined
Jul 30, 2014
Messages
458
Solutions
1
Reaction score
50
I need a help to my action

I want create a new worm, infinite worm

Item id 10224

If player have this item dont need normal worm, and dont remove

Any know?

Code:
local config = {
  peixes = {
   leveis = {20, 40, 50, 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
  doPlayerAddSkillTry(cid, SKILL_FISHING, 1, false)
  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
 
Holy fuck, your script is as bad written as possible. Please reindent because it is utterly unreadable.

Anyway, I think it might do the trick:
https://gist.github.com/ranisalt/add4b81638ec9afe9ba0

If you're interested, the trick is in line 105, either the player has a magic worm or the game removes worms from the player.
 
This script makes me want to spend hours teaching him how to do it better.

How bout you explain what you want in this script. Maybe you will be able to get some help.
 
Last edited by a moderator:
LOL :S

If u have mecanical fish id:
10224

U dont need worms, and dont lose mecanical fish, cause its VIP worm infinity
 
Code:
local config = {
  peixes = {
   leveis = {20, 40, 50, 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 VIP_WORM = 1111 --itemid of vip worm---------------

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 getPlayerItemCount(cid, VIP_WORM) >= 1 and item.itemid == ITEM_MECHANICAL_FISHING_ROD then
config.useBait = 0
end
  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, 1, false)
  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
    if not (getPlayerItemCount(cid, VIP_WORM)) >= 1 then
  doPlayerRemoveItem(cid, ITEM_NAIL, config.baitCount)
  else
  doPlayerRemoveItem(cid, ITEM_FISH, config.baitCount)
  end
  end
  end
  end
  doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
  return true
end
 
Code:
local config = {
  peixes = {
   leveis = {20, 40, 50, 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 VIP_WORM = 1111 --itemid of vip worm---------------

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 getPlayerItemCount(cid, VIP_WORM) >= 1 and item.itemid == ITEM_MECHANICAL_FISHING_ROD then
config.useBait = 0
end
  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, 1, false)
  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
    if not (getPlayerItemCount(cid, VIP_WORM)) >= 1 then
  doPlayerRemoveItem(cid, ITEM_NAIL, config.baitCount)
  else
  doPlayerRemoveItem(cid, ITEM_FISH, config.baitCount)
  end
  end
  end
  end
  doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
  return true
end

sorry good guys, my internet back today
Ty so much to all :)

This script dont work :(
 
It fish fishing according to your fishing level
For example:
fishing <= 20 - cath item id:
2670
fishing >= 40 and > 60 - cath item id:
2667
...........
[40] = 2667, -- 8
[60] = 7159, -- 16
[80] = 7158, -- 20
[100] = 2669, -- 30
[130] = 7963, -- 40
 
thats all?

if they have 130 fishing they can catch all items?

Code:
local items = {
[1] = {item = 2670, desc = "itemname"},
[2] = {item = 2667, desc = "itemname"},
[3] = {item = 7159, desc = "itemname"},
[4] = {item = 7158, desc = "itemname",
[5] = {item = 2669, desc = "itemname"},
[6] = {item = 7963, desc = "itemname"}
}

local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(fishable, itemEx.itemid) then

    if (not getPlayerItemCount(cid, VIP_WORM) > 0) then
        if (not doPlayerRemoveItem(cid, ITEM_WORM, 1)) then
            doPlayerSendCancel(cid, "You must have worms to fish.")
        return false
        end
    end

    if math.random(1, 100) <= 30 then --30% Chance to get item
        if getPlayerSkillLevel(cid, SKILL_FISH) >= 130 then
            ITEM = items[math.random(1, 6)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 100 and getPlayerSkillLevel(cid, SKILL_FISH) < 130 then
            ITEM = items[math.random(1, 5)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 80 and getPlayerSkillLevel(cid, SKILL_FISH) < 100 then
            ITEM = items[math.random(1, 4)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 60 and getPlayerSkillLevel(cid, SKILL_FISH) < 80 then
            ITEM = items[math.random(1, 3)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 40 and getPlayerSkillLevel(cid, SKILL_FISH) < 60 then
            ITEM = items[math.random(1, 2)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 20 and getPlayerSkillLevel(cid, SKILL_FISH) < 40 then
            ITEM = items[1]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) < 20 then
        end
     
        if (not ITEM) then
        return true
        end
     
        doPlayerAddItem(cid, ITEM.item, 1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..ITEM.desc".")
    end
doSendMagicEffect(toPosition, 1)
end
return true
end

simple catch item fishing....
 
Last edited:
Code:
local items = {
[1] = {item = 2670},
[2] = {item = 2667},
[3] = {item = 7159},
[4] = {item = 7158},
[5] = {item = 2669},
[6] = {item = 7963}
}

local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(fishable, itemEx.itemid) then

    if (not getPlayerItemCount(cid, VIP_WORM) > 0) then
        if (not doPlayerRemoveItem(cid, ITEM_WORM, 1)) then
            doPlayerSendCancel(cid, "You must have worms to fish.")
        return false
        end
    end

    if math.random(1, 100) == 1 then --Chance to get item
        if getPlayerSkillLevel(cid, SKILL_FISH) >= 130 then
            ITEM = items[math.random(1, 6)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 100 and getPlayerSkillLevel(cid, SKILL_FISH) < 130 then
            ITEM = items[math.random(1, 5)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 80 and getPlayerSkillLevel(cid, SKILL_FISH) < 100 then
            ITEM = items[math.random(1, 4)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 60 and getPlayerSkillLevel(cid, SKILL_FISH) < 80 then
            ITEM = items[math.random(1, 3)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 40 and getPlayerSkillLevel(cid, SKILL_FISH) < 60 then
            ITEM = items[math.random(1, 2)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 20 and getPlayerSkillLevel(cid, SKILL_FISH) < 40 then
            ITEM = items[1]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) < 20 then
        end
      
        if (not ITEM) then
        return true
        end
      
        doPlayerAddItem(cid, ITEM.item, 1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..getItemNameById(ITEM.item)..".")
    end
doSendMagicEffect(toPosition, 1)
end
return true
end

simple catch item fishing....
Well, you are good making scripts.. But you are better to double post. So please stop doing that.
 
thats all?

if they have 130 fishing they can catch all items?

Code:
local items = {
[1] = {item = 2670},
[2] = {item = 2667},
[3] = {item = 7159},
[4] = {item = 7158},
[5] = {item = 2669},
[6] = {item = 7963}
}

local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(fishable, itemEx.itemid) then

    if (not getPlayerItemCount(cid, VIP_WORM) > 0) then
        if (not doPlayerRemoveItem(cid, ITEM_WORM, 1)) then
            doPlayerSendCancel(cid, "You must have worms to fish.")
        return false
        end
    end

    if math.random(1, 100) == 1 then --Chance to get item
        if getPlayerSkillLevel(cid, SKILL_FISH) >= 130 then
            ITEM = items[math.random(1, 6)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 100 and getPlayerSkillLevel(cid, SKILL_FISH) < 130 then
            ITEM = items[math.random(1, 5)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 80 and getPlayerSkillLevel(cid, SKILL_FISH) < 100 then
            ITEM = items[math.random(1, 4)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 60 and getPlayerSkillLevel(cid, SKILL_FISH) < 80 then
            ITEM = items[math.random(1, 3)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 40 and getPlayerSkillLevel(cid, SKILL_FISH) < 60 then
            ITEM = items[math.random(1, 2)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 20 and getPlayerSkillLevel(cid, SKILL_FISH) < 40 then
            ITEM = items[1]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) < 20 then
        end
      
        if (not ITEM) then
        return true
        end
      
        doPlayerAddItem(cid, ITEM.item, 1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..getItemNameById(ITEM.item)..".")
    end
doSendMagicEffect(toPosition, 1)
end
return true
end

simple catch item fishing....


Ty and nice code bro

But it dont work ;s
 
Found very small error:

Code:
local items = {
[1] = {item = 2670, desc = "itemname"},
[2] = {item = 2667, desc = "itemname"},
[3] = {item = 7159, desc = "itemname"},
[4] = {item = 7158, desc = "itemname",
[5] = {item = 2669, desc = "itemname"},
[6] = {item = 7963, desc = "itemname"}
}

local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(fishable, itemEx.itemid) then

    if (not getPlayerItemCount(cid, VIP_WORM) > 0) then
        if (not doPlayerRemoveItem(cid, ITEM_WORM, 1)) then
            doPlayerSendCancel(cid, "You must have worms to fish.")
        return false
        end
    end

    if math.random(1, 100) <= 30 then --30% Chance to get item
        if getPlayerSkillLevel(cid, SKILL_FISH) >= 130 then
            ITEM = items[math.random(1, 6)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 100 and getPlayerSkillLevel(cid, SKILL_FISH) < 130 then
            ITEM = items[math.random(1, 5)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 80 and getPlayerSkillLevel(cid, SKILL_FISH) < 100 then
            ITEM = items[math.random(1, 4)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 60 and getPlayerSkillLevel(cid, SKILL_FISH) < 80 then
            ITEM = items[math.random(1, 3)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 40 and getPlayerSkillLevel(cid, SKILL_FISH) < 60 then
            ITEM = items[math.random(1, 2)]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 20 and getPlayerSkillLevel(cid, SKILL_FISH) < 40 then
            ITEM = items[1]
        elseif getPlayerSkillLevel(cid, SKILL_FISH) < 20 then
        end
     
        if (not ITEM) then
        return true
        end
     
        doPlayerAddItem(cid, ITEM.item, 1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..ITEM.desc..".")
    end
doSendMagicEffect(toPosition, 1)
end
return true
end
 
Im tryng it:
Code:
local items = {
[1] = {item = 2670, desc = "itemname"},
[2] = {item = 2667, desc = "itemname"},
[3] = {item = 7159, desc = "itemname"},
[4] = {item = 7158, desc = "itemname"},
[5] = {item = 2669, desc = "itemname"},
[6] = {item = 7963, desc = "itemname"}
}

local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
local VIP_WORM = 10224

function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(fishable, itemEx.itemid) then

if (not getPlayerItemCount(cid, VIP_WORM) > 0) then
if (not doPlayerRemoveItem(cid, ITEM_WORM, 1)) then
doPlayerSendCancel(cid, "You must have worms to fish.")
return false
end
end

if math.random(1, 100) <= 30 then --30% Chance to get item
if getPlayerSkillLevel(cid, SKILL_FISH) >= 130 then
ITEM = items[math.random(1, 6)]
elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 100 and getPlayerSkillLevel(cid, SKILL_FISH) < 130 then
ITEM = items[math.random(1, 5)]
elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 80 and getPlayerSkillLevel(cid, SKILL_FISH) < 100 then
ITEM = items[math.random(1, 4)]
elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 60 and getPlayerSkillLevel(cid, SKILL_FISH) < 80 then
ITEM = items[math.random(1, 3)]
elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 40 and getPlayerSkillLevel(cid, SKILL_FISH) < 60 then
ITEM = items[math.random(1, 2)]
elseif getPlayerSkillLevel(cid, SKILL_FISH) >= 20 and getPlayerSkillLevel(cid, SKILL_FISH) < 40 then
ITEM = items[1]
elseif getPlayerSkillLevel(cid, SKILL_FISH) < 20 then
end

if (not ITEM) then
return true
end

doPlayerAddItem(cid, ITEM.item, 1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..ITEM.desc..".")
end
doSendMagicEffect(toPosition, 1)
end
return true
end

Dont erros on console, but its dont work

Dont effect on water on use fishing, dont any efects on use rod
 
any know how to fix it?

Sounds like you didn't even connect the script properly to the rod.
Are you sure it's all well connected in actions.xml to this code?

Try to put a doCreatureSay(cid, "Using rod.") below the function onUse in the script just to check if the function is even getting triggered.
 
Code:
    local items = {
        [1] = {item = 2670, desc = "itemname"},
        [2] = {item = 2667, desc = "itemname"},
        [3] = {item = 7159, desc = "itemname"},
        [4] = {item = 7158, desc = "itemname"},
        [5] = {item = 2669, desc = "itemname"},
        [6] = {item = 7963, desc = "itemname"}
    }

    local skillLevels = {
        {20, 40},    -- 1
        {40, 60},    -- 2
        {60, 80},    -- 3
        {80, 100},   -- 4
        {100, 130},  -- 5
        {130, 255}   -- 6
    }

    local chance = 30 --30% Chance to get item
    local fishingSkill = 0

    local fishable = {4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
    local VIP_WORM = 10224

    function onUse(cid, item, fromPosition, itemEx, toPosition)
        if isInArray(fishable, itemEx.itemid) then
            if (not getPlayerItemCount(cid, VIP_WORM) > 0 or (not doPlayerRemoveItem(cid, ITEM_WORM, 1))) then
                doPlayerSendCancel(cid, "You must have worms to fish.")
                return false
            end
    
            fishingSkill = getPlayerSkillLevel(cid, SKILL_FISH)
            if math.random(1, 100) <= chance then
                for i = 1, #skillLevels do
                    if fishingSkill >= skillLevels[i][1] and fishingSkill < skillLevels[i][2] then
                        ITEM = items[math.random(1, i)]
                    end
                end
            end
        
            if (not ITEM) then
                return true
            end
        
            doPlayerAddItem(cid, ITEM.item, 1)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have caught a "..ITEM.desc..".")
            doSendMagicEffect(toPosition, 1)
        end
        return true
    end
 
Last edited:
Yeah guys
<action itemid="2580" event="script" value="tools/fishing.lua" allowfaruse="1"/>
<action itemid="10223" event="script" value="tools/fishing.lua" allowfaruse="1"/>

Try test it, dont work, dont do nothing, no erros, no actions, i try use on water only give msg
Code:
22:45 Using the last fishing rod...

But no effects on water, no fishs, n-o-thing
 

Similar threads

Back
Top