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