• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Add exhaust to this fishing rod script

zippy

Member
Joined
Feb 1, 2011
Messages
233
Reaction score
8
Could someone add 3seconds exhust to this rod?
I rep!

Code:
local fishing = {
["Magikarp"] = {skill = 0, level = -2},
--["Qwilfish"] = {skill = 18, level = 3},
--["Remoraid"] = {skill = 16, level = 2},
["Staryu"] = {skill = 22, level = 6},
["Tentacool"] = {skill = 20, level = 7},
["Goldeen"] = {skill = 17, level = 5},
["Krabby"] = {skill = 14, level = 2},
["Horsea"] = {skill = 16, level = 3},
["Poliwag"] = {skill = 15, level = 2},
--["Marill"] = {skill = 21, level = 3},
--["Azumarill"] = {skill = 37, level = 16},
["Kingler"] = {skill = 35, level = 14},
["Seaking"] = {skill = 28, level = 11},
["Starmie"] = {skill = 49, level = 20},
--["Chinchou"] = {skill = 23, level = 6},
["Poliwhirl"] = {skill = 27, level = 9},
["Seadra"] = {skill = 41, level = 15},
--["Lanturn"] = {skill = 38, level = 14},
--["Octillery"] = {skill = 30, level = 9},
--["Corsola"] = {skill = 46, level = 16},
}

local storage = 15458
local bonus = 1
local limite = 80


local function doFish(cid, pos, ppos, chance, interval, number)
        if not isCreature(cid) then return false end

        if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then
        return false end

        if getPlayerStorageValue(cid, storage) ~= number then return false end

        doSendMagicEffect(pos, CONST_ME_LOSEENERGY)

local peixe = 0
local playerpos = getClosestFreeTile(cid, getThingPos(cid))
local level = 1
local fishes = {}
local randomfish = ""


	if getPlayerSkillLevel(cid, 6) < limite then
	doPlayerAddSkillTry(cid, 6, bonus)
	end

for a, b in pairs (fishing) do
	if getPlayerSkillLevel(cid, 6) >= b.skill then
		table.insert(fishes, a)
	end
end

	if math.random(1, 100) <= chance then
		if getPlayerSkillLevel(cid, 6) < limite then
		doPlayerAddSkillTry(cid, 6, bonus)
		end
		randomfish = fishes[math.random(#fishes)]
	level = getPlayerSkillLevel(cid, 6) / 3
	level = level + getPlayerLevel(cid) / 5
	level = math.random(level * 0.6, level)
	level = level + fishing[randomfish].level
	peixe = doSummonCreature(randomfish, playerpos)
	if level <= 0 then
		level = math.random(getPlayerLevel(cid))
	end
		if not isCreature(peixe) then
			addEvent(doFish, interval, cid, pos, ppos, chance, interval, number)
		return true
		end
	setWildPokemonLevel(peixe, level)
	doSetMonsterPassive(peixe)
	doWildAttackPlayer(peixe, cid)
		if #getCreatureSummons(cid) >= 1 then
        		doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173)
			doChallengeCreature(getCreatureSummons(cid)[1], peixe)
        	else
			doSendMagicEffect(getThingPos(cid), 173)
			doChallengeCreature(cid, peixe)
        	end
	return true
	end
addEvent(doFish, interval, cid, pos, ppos, chance, interval, number)
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 tonumber(getPlayerStorageValue(cid, storage)) then
	local test = io.open("data/sendtobrun123.txt", "a+")
	local read = ""
	if test then
		read = test:read("*all")
		test:close()
	end
	read = read.."\n[fishing.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, storage)..""
	local reopen = io.open("data/sendtobrun123.txt", "w")
	reopen:write(read)
	reopen:close()
	setPlayerStorageValue(cid, storage, 1)
end

setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1)
	if getPlayerStorageValue(cid, storage) >= 800 then
		setPlayerStorageValue(cid, storage, 1)
	end

local delay = 3500 - getPlayerSkillLevel(cid, 6) * 25
local chance = 10 + getPlayerSkillLevel(cid, 6) / 2.5

doFish(cid, toPos, getThingPos(cid), chance, delay, getPlayerStorageValue(cid, storage))

return true
end
 
after "local limite = 80" add this:

LUA:
	local exhaustionInSeconds = 4
       local storage = 34235
	if(exhaustion.check(cid, storage) == true) then
	doPlayerSendCancel(cid, "Exhaustion!")
    return 0
	end
	exhaustion.set(cid, storage, exhaustionInSeconds)


u must have in LIB folder this:
(for example in constant.lua, or u can create file "exhauston.lua")

and add to this file:

LUA:
exhaustion = 
{ 
    check = function (cid, storage) 
        if(getPlayerStorageValue(cid, storage) >= os.time(t)) then 
            return TRUE 
        end 
        return FALSE 
    end, 
    get = function (cid, storage) 
        local exhaust = getPlayerStorageValue(cid, storage) 
        if(exhaust > 0) then 
            local left = exhaust - os.time(t) 
            if(left >= 0) then 
                return left 
            end 
        end 
        return FALSE 
    end, 
    set = function (cid, storage, time) 
        setPlayerStorageValue(cid, storage, os.time(t) + time) 
    end, 
    make = function (cid, storage, time) 
        local exhaust = exhaustion.get(cid, storage) 
        if(not exhaust) then 
            exhaustion.set(cid, storage, time) 
            return TRUE 
        end 
        return FALSE 
    end 
}
 
deinit it in the top of script after local storage = 15458

PHP:
local exhaustForFish = 1 -- in seconds
local storageForFish = 3000 -- storage value used to save exhaustion

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


try
PHP:
if(exhaustion.check(cid, storageForFish)) then
	return true
end
exhaustion.set(cid, storageForFish, storageForFish)
 
Sorry zippy, but im not good on adding exhaust in a script, you dont need pm me anymore.
 
Back
Top