Ir para conteúdo
  • Cadastre-se

Pedido Script para Pesca Simples


Posts Recomendados

Salve rapazeada do TK, preciso de um script de pesca simples, onde o player usa a vara na água, aumenta o fishing e tem a chance de pescar um peixe, como meu servidor é 7.4, não precisa de worms pra pescar, procurei por esse script no fórum porém não encontrei, se houver algum por favor me mande o link e peço desculpas!!

Link para o post
Compartilhar em outros sites
-- By GriZzm0

function onUse(cid, item, frompos, item2, topos)
	-- 490 fish
	-- 491 no fish 
	-- 492 fish regeneration
	if (item2.itemid == 490) then
		fishingskill = getPlayerSkill(cid,6)
		formula = fishingskill / 200 + 0.85 * math.random()
		if formula > 0.70 then
			doTransformItem(item2.uid, 492)
			doDecayItem(item2.uid)
			doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, 2)
			doPlayerAddItem(cid, 2667, 1)
		else
			doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, 1)
		end
		
		doSendMagicEffect(topos, CONST_ME_LOSEENERGY)

	elseif (item2.itemid == 491 or item2.itemid == 492) then
		doSendMagicEffect(topos, CONST_ME_LOSEENERGY)
	end
	
	return true
end

 

Editado por Anderson Sacani (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
47 minutos atrás, Anderson Sacani disse:

-- By GriZzm0

function onUse(cid, item, frompos, item2, topos)
	-- 490 fish
	-- 491 no fish 
	-- 492 fish regeneration
	if (item2.itemid == 490) then
		fishingskill = getPlayerSkill(cid,6)
		formula = fishingskill / 200 + 0.85 * math.random()
		if formula > 0.70 then
			doTransformItem(item2.uid, 492)
			doDecayItem(item2.uid)
			doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, 2)
			doPlayerAddItem(cid, 2667, 1)
		else
			doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, 1)
		end
		
		doSendMagicEffect(topos, CONST_ME_LOSEENERGY)

	elseif (item2.itemid == 491 or item2.itemid == 492) then
		doSendMagicEffect(topos, CONST_ME_LOSEENERGY)
	end
	
	return true
end

 

não deu certo, meu script para pesca é esse:

 

Spoiler
local config = {
    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] = {[aid] = { {itemid, countmax, chance} }}
        [10499] = {
            [101] = {},
            [102] = {}
        }
    },
    checkCorpseOwner = getConfigValue("checkCorpseOwner"),
    rateLoot = getConfigValue("rateLoot"),
 
    summons = {
        -- {skill, name, chance, bossName, bossChance}
    },
    rateSpawn = getConfigValue("rateSpawn"),
 
    baitFailRemoveChance = 10,
    allowFromPz = false,
    useBait = false,
    baitCount = 0,
    fishes = 1
}
 
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 and corpse ~= 0) then
        corpse = corpse[itemEx.actionid]
        if(corpse ~= nil and corpse ~= 0) then
            if(config.checkCorpseOwner and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
                local owner = getItemAttribute(itemEx.uid, "corpseowner")
                if(owner ~= 0 and owner ~= nil and owner ~= getPlayerGUID(cid)) then
                    doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUARENOTTHEOWNER)
                    return true
                end
            end
 
            local chance, items, default, max = math.random(0, 100000) / config.rateLoot, {}, {}, 0
            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
                if(data[3] > max) then
                    default = data
                    max = data[3]
                end
            end
 
            local itemCount = table.maxn(items)
            if(itemCount > 0) then
                local loot = items[math.random(1, itemCount)]
                doPlayerAddItem(cid, loot[1], loot[2])
            else
                doPlayerAddItem(cid, default[1], default[2])
            end
 
            doTransformItem(itemEx.uid, getItemInfo(itemEx.itemid).decayTo)
            doSendMagicEffect(toPosition, CONST_ME_WATERSPLASH)
            doDecayItem(itemEx.uid)
            return true
        end
    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, ITEM_FISH, 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

 

O fishing skill sobe normalmente, o único problema é que não pesca nenhum peixe.

 

Link para o post
Compartilhar em outros sites

Criei minha própria versão, testa e me retorna:

local rateSkill = 10

function onUse(cid, item, frompos, item2, topos)
    if item2.itemid ~= 490 then
        return false
    end

    if ((math.random(1, 100000)) <= (getPlayerSkill(cid, 6) * 500)) then
        doPlayerAddItem(cid, 2667, 1)
    end

    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * rateSkill))

    return true
end

Em rateSkill tu configura a velocidade em que o skill subirá

Dei uma brincada e melhorei o script, pode usar que é sucesso:

local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if item2.itemid ~= 490 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

Editado por Anderson Sacani (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
27 minutos atrás, Anderson Sacani disse:

Criei minha própria versão, testa e me retorna:


local rateSkill = 10

function onUse(cid, item, frompos, item2, topos)
    if item2.itemid ~= 490 then
        return false
    end

    if ((math.random(1, 100000)) <= (getPlayerSkill(cid, 6) * 500)) then
        doPlayerAddItem(cid, 2667, 1)
    end

    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * rateSkill))

    return true
end

Em rateSkill tu configura a velocidade em que o skill subirá

o script em si está tudo ok, porém só da pra pescar em uma certa água, no meu servidor existem diversas diferentes, como eu poderia adaptar ali no ID 490 para aceitar todos os IDS de água?

Link para o post
Compartilhar em outros sites

Testa:

local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local waterIds = { 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622,
        4623, 4624, 4625, 7236, 10499, 15401, 15402 }
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if not isInArray(waterIds, item2.itemid) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

Editado por Anderson Sacani (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
2 minutos atrás, Anderson Sacani disse:

Testa:


local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local waterIds = { 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622,
        4623, 4624, 4625, 7236, 10499, 15401, 15402 }
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if not isInArray(waterIds, item2.itemid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

funcionou certinho, mas não aparece a animação de quando pesca, sabe? esqueci de mencionar no comentário anterior, perdão!

Link para o post
Compartilhar em outros sites
local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local waterIds = { 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622,
        4623, 4624, 4625, 7236, 10499, 15401, 15402 }
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if not isInArray(waterIds, item2.itemid) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doSendMagicEffect(topos, CONST_ME_LOSEENERGY)
    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

Link para o post
Compartilhar em outros sites
3 minutos atrás, Anderson Sacani disse:

local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local waterIds = { 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622,
        4623, 4624, 4625, 7236, 10499, 15401, 15402 }
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if not isInArray(waterIds, item2.itemid) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doSendMagicEffect(topos, CONST_ME_LOSEENERGY)
    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

funcionou certinho, obrigado! rep+

Link para o post
Compartilhar em outros sites
  • 4 weeks later...
Em 20/02/2023 em 18:44, Anderson Sacani disse:


local config = {
    rate = 10, -- Speed at which the skill will progress
    cooldown = 2, -- Time in seconds of character exhaustion
}

function onUse(cid, item, frompos, item2, topos)
    local waterIds = { 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622,
        4623, 4624, 4625, 7236, 10499, 15401, 15402 }
    local skill, amount, storage = getPlayerSkill(cid, 6), 1, 6873565011
    local now = os.time()
    local check = (now - getPlayerStorageValue(cid, storage))
    if not isInArray(waterIds, item2.itemid) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only use the fishing rod in the water.")
        return true
    end

    if check < 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You are exhausted.")
        return true
    end

    if ((math.random(1, 100000)) <= (skill * 500)) then
        if skill > 50 then
            amount = math.random(1, ((skill / 10) - 3))
        end
        doPlayerAddItem(cid, 2667, amount)
        if amount > 7 then
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Congratulations, you've caught more than 7 fish!")
        end
    end

    doSendMagicEffect(topos, CONST_ME_LOSEENERGY)
    doPlayerAddSkillTry(cid, LEVEL_SKILL_FISHING, (1 * config.rate))
    setPlayerStorageValue(cid, storage, (now + config.cooldown))

    return true
end

 

Olá amigo, peço desculpas por reviver este tópico, mas quando se pesca com a fishing rod está aumento o skill fist fighting e não o fishing, saberia como resolver? já tentei mudar no getPlayerSkill(cid, 6) mas aparentemente este é o skill de fishing mesmo

Edit: Consegui arrumar, ao invés de LEVEL_SKILL_FISHING coloquei somente SKILL_FISHING e deu certo!

Editado por yuriowns (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@L3K0T Toma cuidado com inteligência artificial. Claramente tu mandou ela fazer isso aí kkk e certamente ta bem errado. Quer um conselho? Usa inteligência aritifical só pra auxiliar, ou pra fins de aprendizado, mas não pra fazer o serviço, porque vai dar bem ruim!

 

@yuriowns O problema é que teu servidor provavelmente não tem a variável LEVEL_SKILL_FISHING. Por tanto, tu deverá testar por números. Podes começar substituindo o LEVEL_SKILL_FISHING pelo número 6.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por LasseXeterno
      Então, estou tentando adicionar uma nova "race" no meu Ot de base Cyan, tentei seguir 3 tutoriais aqui do tibiaking, um sobre race, porém nos códigos do meu servidor não tem o constant.h e nem o monster.cpp. E o outro tutorial, eu fiz tudo que ele pediu e quando entrei no game para testar, funcionava os golpes e as imunidades, porém não aparecia o número do dano e nem a cor.  Usei esse tutorial como base: 
      Pois ele é derivado. E o outro tutorial que usei foi: 
      Porém nesse, não consegui achar a const.h, e quando fui nos arquivos do creaturescript e adicionei uma cor nova a "COLOR_FAIRY", quando abro o jogo, os pokemons que seriam teoricamente "fada", o que eu usei de teste foi a Clefable. A Clefable tomava IK e dava IK no seu atk do tipo fada. 
      Além de que, o meu erro principal é esse: Warning - Monsters::loadMonster] Unknown race type fairy. (data/monster/pokes/geracao 1/Clefable.xml)
       Pois como eu já disse, não consigo achar onde adicionar uma nova race.

    • Por yuriowns
      Salve rapazes, tranquilo? Preciso de ajuda pra colocar para os npc's que vendem pots verificarem quantos itens possuem no tile em que o player está e se tiver com +80 itens no sqm, o npc avisa e não vende nada até o player ir em um sqm com menos de 80 itens no chão.
       
    • Por A.Mokk
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Bom pessoal, a algumas semanas atras eu joguei um servidor que havia sistema de imbuimento sendo 8.60, no servidor se utilizava a spellwand para encantar as armas, os comandos eram dado no canal Imbuiment... Gostaria de saber se alguém teria como disponibilizar algum sistema de imbuimento, já procurei pra caramba aqui no fórum mas tudo que encontro é pra versões acima da que eu uso.
       
    • Por Mateus Robeerto
      Não sei se aqui é a área ou algum local para solicitar a alteração do email antigo... Não lembro mais a senha dele, nem a resposta secreta para acessar. Peço a algum administrador ou moderador para, por favor, alterar o email para o novo.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo