-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
- 1 resposta
- 82 visualizações
-
- 0 respostas
- 297 visualizações
-
- 2 respostas
- 456 visualizações
-
- 0 respostas
- 37 visualizações
-
- 2 respostas
- 916 visualizações
-
Pergunta
Aerdor 48
Tipo, alguém consegue fazer pra mim um fishing system que quando vc pesca em vez de vir o peixe normal (o item) vir um monstro? Mas com uma "lista" com os monstros que podem vir, estilo pokétibia, saka? Minha versão é 8.54.
Alguém pode me ajudar?
Se for de alguma ajuda aqui tem o código do fishing normal:
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] = {items}
[2025] = {
-- {itemid, countmax, chance}
-- TODO: Water elemental and Massive Water Elemental loot...
}
},
checkCorpseOwner = getConfigValue("checkCorpseOwner"),
rateLoot = getConfigValue("rateLoot"),
summons = {
-- {skill, name, chance, bossName, bossChance}
},
rateSpawn = getConfigValue("rateSpawn"),
baitFailRemoveChance = 10,
allowFromPz = false,
useBait = true,
baitCount = 1,
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) 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, 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
E aqui o fishing do pokétibia:
local fishing = {
["Magikarp"] = {skill = 0, level = -2},
["Qwilfish"] = {skill = 18, level = 3},
["Remoraid"] = {skill = 16, level = 20},
["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 = 30},
["Azumarill"] = {skill = 37, level = 16},
["Buizel"] = {skill = 40, level = 25},
["Kingler"] = {skill = 35, level = 14},
["Seaking"] = {skill = 28, level = 11},
["Starmie"] = {skill = 45, level = 20},
["Chinchou"] = {skill = 23, level = 6},
["Poliwhirl"] = {skill = 27, level = 9},
["Seadra"] = {skill = 40, level = 15},
["Lanturn"] = {skill = 38, level = 14},
["Octillery"] = {skill = 30, level = 9},
["Corsola"] = {skill = 46, level = 16},
["Carvanha"] = {skill = 25, level = 15},
["Mudkip"] = {skill = 35, level = 15},
["Feebas"] = {skill = 52, level = 35},
["Wailmer"] = {skill = 52, level = 30},
["Totodile"] = {skill = 33, level = 30},
["Mantine"] = {skill = 45, level = 30},
["Quagsire"] = {skill = 45, level = 30},
["Wooper"] = {skill = 32, level = 30},
["Barboach"] = {skill = 20, level = 20},
["Whiscash"] = {skill = 32, level = 30},
["Corphish"] = {skill = 15, level = 15},
["Crawdaunt"] = {skill = 36, level = 36},
["Spheal"] = {skill = 42, level = 40},
["Clamperl"] = {skill = 22, level = 10},
["Huntail"] = {skill = 34, level = 34},
["Gorebyss"] = {skill = 42, level = 50},
["Luvdisc"] = {skill = 12, level = 10},
}
local storage = 15458
local bonus = 1.0
local limite = 80
local function doFish(cid, pos, ppos, chance, interval, number)
if not isCreature(cid) then return false end
if getPlayerSex(cid) == 1 then
if getCreatureOutfit(cid).lookType ~= 520 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa botar a roupa de Fisher para poder pescar.")
return false
end
else
if getCreatureOutfit(cid).lookType ~= 521 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa botar a roupa de Fisher para poder pescar.")
return false
end
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, 181)
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 and math.random(1, 100) <= 30 then --30 = 30% chance de add fishing
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
REP+ pra quem ajudar.
Editado por AerdorLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados