Ir para conteúdo
  • 0

[Resolvido] [Pokemon] Bug De Clonar Pokemon


Frenvius

Pergunta

  • Administrador

então pessoal eu até a pouco tempo(ontem)

nao sabia desse bug

fiquei sabendo pq um cara com a msm duvida veio me pedir ajuda

eu tenho uma ideia de como arrumar mais nao sei se é possivel pois n sei mto de script

é tipo que assim você sobe no pokemon (ride ou fly) ae beleza

voce troca a pokebola do poke que ta no fly/ride pra uma que tenha um pokemon morto

ae voce sai do fly/ride ele vai criar o pokemon que esta no seu slot feet, que seria o morto

então ele cria o pokemon ae ele morre e aparece o corpo, ae é so vc captura

ae gostaria de saber, se n tem como arrumar pra sair do fly/ride somente se o pokemon certo estiver no local que seria o slot feet

 

caso precise vou postar o scrip de ride e fly:

Fly:

 

function getPokemonMaxLife(name)
	local file = io.open('data/monster/monsters.xml','r')
	local arquivo = file:read(-1):lower():match('<monster name="'..name:lower()..'" file="(.-)"/>')
	file:close()
	local data = io.open('data/monster/'..(arquivo or ''),'r')
	if not data then
		return 100
	end
	local maximo = data:read(-1):match('max%s*=%s*"(%d+)"')
	data:close()
	return maximo
end

function onUse(cid, item, frompos, item2, topos)

local pokes = {
['Moltres'] = {229, 800},
['Articuno'] = {230, 800},
['Zapdos'] = {224, 800},
['Mew'] = {232, 800},
['Mewtwo'] = {233, 800},
['Dragonite'] = {221, 300},
['Pidgeot'] = {222, 350},
['Fearow'] = {226, 400},
['Aerodactyl'] = {227, 490},
['Charizard'] = {216, 590},
['Elder Charizard'] = {295, 800},
}
local idballs = {
[2531] = {"Pokeball"},
[2557] = {"Superball"},
[2524] = {"Greatball"},
[2525] = {"Ultraball"},
[2523] = {"Masterball"},
}

local storage = 9393 -- Não mexa aqui!
local exhaust = 0 -- Tempo para player poder usar o item novamente! (tempo em segundos)
local time = 0 -- Tempo para ficar na montaria! (tempo em segundos)
local old_speed = getCreatureBaseSpeed(cid)
local summons = getCreatureSummons(cid)
if (getPlayerStorageValue(cid, storage) <= os.time()) then
if getPlayerStorageValue(cid, 24000) == 5 then
return doPlayerSendCancel(cid, "You are riding.")
end
if getPlayerStorageValue(cid, 17000) == 10 then
local nome = getItemName(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid)
local balls = idballs[getPlayerSlotItem(cid,8).itemid]
local poke_name = nome:match('(.-) '..balls[1])
local action_id = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid")
if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then
return doPlayerSendCancel(cid,"Desça antes de sair do fly")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, -(getCreatureSpeed(cid) - getCreatureBaseSpeed(cid)))
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, 7)
setPlayerStorageValue(cid, 23000, 6)
local monster = doCreateMonster(poke_name, getCreaturePosition(cid))
doConvinceCreature(cid, monster)
doCreatureAddHealth(monster, -(tonumber(getPokemonMaxLife(poke_name) - action_id)))
   doPlayerSay(cid, poke_name .. ", I'm tired of flying!", TALKTYPE_SAY)
setPlayerStorageValue(cid, 9999,-1)
setPlayerStorageValue(cid, 8888,-1)
return true
end
if #getCreatureSummons(cid) < 1 then
return doPlayerSendCancel(cid, "Para voar você precisa de um pokemon")
end

if isPremium(cid) == FALSE then
return doPlayerSendCancel(cid, "Você não é premium account.")
end
local name = getCreatureName(getCreatureSummons(cid)[1])
local pokemon = pokes[getCreatureName(getCreatureSummons(cid)[1])]

if not pokes[name] then
return doPlayerSendCancel(cid, "Este pokemon não pode voar.")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, pokemon[2])
setPlayerStorageValue(cid, 17000, 10)
setPlayerStorageValue(cid, 23000, 5)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
setPlayerStorageValue(cid,9999,pokemon[1])
setPlayerStorageValue(cid,8888,pokemon[2])
doItemSetAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid", getCreatureHealth(getCreatureSummons(cid)[1]))
function getPokemonId(summons)
for _, pid in ipairs(summons) do
return pid
end
end
doRemoveCreature(getPokemonId(summons))
doPlayerSay(cid, name .. ", Vamos voar!", TALKTYPE_SAY)
doPlayerSendTextMessage(cid,27,'Fale \'up\' para subir e \'down\' para descer!.' )
     if fly.using(cid)  then
               local p = getCreaturePosition(cid)
               p.stackpos = 0
               local f = getTileThingByPos(p)
               if fly.del(cid) then
                       if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then
                               return true
                       else
                               setPlayerStorageValue(cid,10941,1)
                               local p = getCreaturePosition(cid)
                               setPlayerStorageValue(cid, 102011,p.x)
                               setPlayerStorageValue(cid, 102012,p.y)
                               setPlayerStorageValue(cid, 102013,p.z)
                               return true
                       end
               else
                       doPlayerSendTextMessage(cid,27,'Você não pode voar neste local.')
               end
       end
end
       return true
end

 

 

Ride:

 

function getPokemonMaxLife(name)
	local file = io.open('data/monster/monsters.xml','r')
	local arquivo = file:read(-1):lower():match('<monster name="'..name:lower()..'" file="(.-)"/>')
	file:close()
	local data = io.open('data/monster/'..(arquivo or ''),'r')
	if not data then
		return 100
	end
	local maximo = data:read(-1):match('max%s*=%s*"(%d+)"')
	data:close()
	return maximo
end

function onUse(cid, item, frompos, item2, topos)

local pokes = {
['Tauros'] = {128, 200},
['Ninetales'] = {129, 300},
['Rapidash'] = {130, 350},
['Ponyta'] = {131, 200},
['Rhyhorn'] = {132, 150},
['Arcanine'] = {12, 500},
['Shiny Arcanine'] = {492, 800},
['Shiny Venusaur'] = {494, 700},
['Crystal Onix'] = {293, 400},
['Onix'] = {126, 350},
['Venusaur'] = {134, 350},
['Dodrio'] = {133, 350},
['Doduo'] = {135, 250},
}
local idballs = {
[2531] = {"Pokeball"},
[2557] = {"Superball"},
[2524] = {"Greatball"},
[2525] = {"Ultraball"},
[2523] = {"Masterball"},
}

local old_speed = getCreatureBaseSpeed(cid)
local summons = getCreatureSummons(cid)
local storage = 9393 
local exhaust = 0
local time = 0
if (getPlayerStorageValue(cid, storage) <= os.time()) then
if getPlayerStorageValue(cid, 18000) == 10 then
local nome = getItemName(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid)
local balls = idballs[getPlayerSlotItem(cid,8).itemid]
local poke_name = nome:match('(.-) '..balls[1])
   local action_id = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid")
doChangeSpeed(cid, -(getCreatureSpeed(cid) - getCreatureBaseSpeed(cid)))
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 18000, 7)
setPlayerStorageValue(cid, 25000, 6)
local monster = doCreateMonster(poke_name, getCreaturePosition(cid))
doConvinceCreature(cid, monster)
doCreatureAddHealth(monster, -(tonumber(getPokemonMaxLife(poke_name) - action_id)))
   doPlayerSay(cid, poke_name .. ", I'm tired of riding!", TALKTYPE_SAY)
return true
end

if isPremium(cid) == FALSE then
return doPlayerSendCancel(cid, "Você não é premium account.")
end

if #getCreatureSummons(cid) < 1 then
return doPlayerSendCancel(cid, "Para dar ride você precisa de um pokemon")
end


local pokemon = pokes[getCreatureName(getCreatureSummons(cid)[1])]
local name = getCreatureName(getCreatureSummons(cid)[1])
if not pokes[name] then
return doPlayerSendCancel(cid, "Este pokemon não pode dar ride.")
end
setPlayerStorageValue(cid, storage, os.time()+exhaust)
doChangeSpeed(cid, pokemon[2])
setPlayerStorageValue(cid, 18000, 10)
setPlayerStorageValue(cid, 25000, 5)
doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
setPlayerStorageValue(cid,10000,pokemon[1])
setPlayerStorageValue(cid,8889,pokemon[2])
doItemSetAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid", getCreatureHealth(getCreatureSummons(cid)[1]))
function getPokemonId(summons)
for _, pid in ipairs(summons) do
return pid
end
end
doRemoveCreature(getPokemonId(summons))
doPlayerSay(cid, name .. ", Let's go RIDE!", TALKTYPE_SAY)
end
end

 

Editado por Frenvius
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Administrador

eu achei a solução a um tempo já mas esqueci de postar

no ride e no fly porcure por isto

local action_id = getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "aid")

 

logo abaixo adicione isto:

if action_id == -1 then

return doPlayerSendCancel(cid,"Use o pokemon correto pra sair do fly")

end

 

e salve

pronto :D

Te ajudei? +REP :whistle:

Editado por Frenvius
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...