BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Como crear Nuevas pokeballs en tu server PokeTibia

Como crear Nuevas pokeballs en tu server PokeTibia

luisgarza


Novato
Bueno les explicare mi problema tengo por ejemplo el Item que quiero aser ball en mi caso es 12:41 You see 100 cherish balls.This is pokeball used to catch fainted pokemon. It has a 10x catch rate. ItemID: [10649]. Position: [X: 1217] [Y: 1207] [Z: 6]., lo pongo en items.xml queda asi:

*******************************
item
item id="10649" article="a" name="cherish ball" plural="cherish balls">
attribute key="description" value="This is pokeball used to catch fainted pokemon. It has a 10x catch rate."
****************************************************

Despues hay que crear una ball una Que sea la que atrapa el pokemon con DISTINTO ID que la ball que se usa (12:56 You see a cherish ball. It contains a Magikarp.) Aqui el ejemplo:

********************************************
item
item id="10646" article="a" name="cherish ball"
attribute key="weight" value="100"
attribute key="slotType" value="feet"
attribute key="ispokeball" value="1"
**************************************************
Despues hay que crear una ball una Que sea la que describa el pokemon fainted con DISTINTO ID que la ball que se usa (12:56 You see a discharged cherish ball.) Aqui el ejemplo:
********************************************
item
item id="10647" article="a" name="discharged cherish ball"
attribute key="weight" value="100"
attribute key="slotType" value="feet"
attribute key="ispokeball" value="1"
**********************************************
Listo ahora sigue agregarlos a la carpeta de Actions para aserlas funcionar me voy ala carpeta Data/Actions/Scripts y abro el archivo catch.lua, y ayi mismo pongo la nueva ball lo explicare, Aqui el archivo original:

local ballcatch = {
[2394] = {cr = 1, on = 24, off = 23, ball = 11826, send = 47, typeee = "normal"},
[10953] = {cr = 3, on = 204, off = 203, ball = 10946, send = 47, typeee = "saffari"},
[2391] = {cr = 2, on = 198, off = 197, ball = 11832, send = 48, typeee = "great"},
[2393] = {cr = 8, on = 202, off = 201, ball = 11835, send = 46, typeee = "rapid"},
[2392] = {cr = 4, on = 200, off = 199, ball = 11829, send = 49, typeee = "ultra"},10649
}

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

local item2 = getTopCorpse(topos)
if item2 == null then
return true
end

if getItemAttribute(item2.uid, "catching") == 1 then
return true
end

local name = string.lower(getItemNameById(item2.itemid))
name = string.gsub(name, "fainted ", "")
name = string.gsub(name, "defeated ", "")

local x = pokecatches[doCorrectPokemonName(name)]

--------------------------------------------------------------------------------
local storage = newpokedex[doCorrectPokemonName(name)].stoCatch --Used balls system
if getPlayerStorageValue(cid, storage) == -1 then
setPlayerStorageValue(cid, storage, "normal = 0,normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, cherish = 0,")
end
--------------------------------------------------------------------------------

if not x then return true end

local owner = getItemAttribute(item2.uid, "corpseowner")

if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner and isInArray({1,8}, getPlayerGroupId(cid)) then
doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
return true
end

local typeee = ballcatch[item.itemid].typeee --Used balls system

local catchinfo = {}
catchinfo.rate = ballcatch[item.itemid].cr
catchinfo.catch = ballcatch[item.itemid].on
catchinfo.fail = ballcatch[item.itemid].off
catchinfo.newid = ballcatch[item.itemid].ball
catchinfo.name = doCorrectPokemonName(name)
catchinfo.topos = topos
catchinfo.chance = x.chance

doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send)
doRemoveItem(item.uid, 1)

local d = getDistanceBetween(getThingPos(cid), topos)
addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) -- Broken balls system
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)

return true
end

Hay que crear La nueva ball quedaria asi:
[10649 (item de la pokeball de items.xml ] = {cr = 1000 (catch rate), on = 202 (efecto de captura realizada), off = 201 (efecto de captura fallida) , ball = 10646 (pokebolla que aparecera en tu mochila ), send = 46 (efecto de lanzamiento) , typeee = "cherish" (tipo de pokebolla) },

Lo agregamos y guardamos el archivo catch.lua y ahora buscamos el archivo Actions.xml en la carpeta Data/Actions/Actions.xml lo abrimos y editamos estee pedazo:



event="script" value="goback.lua"/>


El 10646 es la ball que tendra el pokemon capturado 13:06 You see a cherish ball.It contains a Magikarp; y el 10647 es la discharged ball
El 10649 es el id de nuestra nueva ball la que usaremos para capturar, ahora guardamos y cerramos.


Corro el server y me sale un error aqui lo anexo:
[07/04/2013 13:17:03] [Error - Action Interface]
[07/04/2013 13:17:03] data/actions/scripts/goback.lua:onUse
[07/04/2013 13:17:03] Description:
[07/04/2013 13:17:03] data/actions/scripts/goback.lua:23: attempt to index field '?' (a nil value)
[07/04/2013 13:17:03] stack traceback:
[07/04/2013 13:17:03] data/actions/scripts/goback.lua:23: in function


Segun yo es un error del script goback.lua pero ya busque y nose donde esta el error aqui les anexo tambien mi goback.lua para que lo revisen

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

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end

local owner = getItemAttribute(item.uid, "firstpoke")

if owner and owner ~= getCreatureName(cid) then
doPlayerSendCancel(cid, "This pokemon belongs to "..owner..", it is his first pokemon. Please, give it back to him.")
return true
end

if getPlayerStorageValue(cid, 20000) == 1 then
doPlayerSendCancel(cid, "You cant use your pokeball if you are on a bike.")
return true
end

if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
return true
end

local btype = getPokeballType(item.itemid)

local effect = pokeballs[btype].effect
if not effect then
effect = 21
end

if item.itemid == pokeballs[btype].use then

if getPlayerStorageValue(cid, 990) == 1 then -- GYM
doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
return true
end

if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end

local z = getCreatureSummons(cid)[1]

if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
return true
end

doReturnPokemon(cid, z, item, effect)

elseif item.itemid == pokeballs[btype].on then

if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end

local thishp = getItemAttribute(item.uid, "hp")

if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end

local pokemon = getItemAttribute(item.uid, "poke")

if not pokes[pokemon] then
return true
end

local x = pokes[pokemon]
local boosts = getItemAttribute(item.uid, "boost") or 0

if getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer < getItemAttribute(item.uid, "level") then
doPlayerSendCancel(cid, "Your pokemon's level is much higher than yours, you can't use him.")
return true
end

doSummonMonster(cid, pokemon)


local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end

if getCreatureName(pk) == "Ditto" then

local left = getItemAttribute(item.uid, "transLeft")
local name = getItemAttribute(item.uid, "transName")

if left and left > 0 then
setPlayerStorageValue(pk, 1010, name)
doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
doItemSetAttribute(item.uid, "transBegin", os.clock())
else
setPlayerStorageValue(pk, 1010, "Ditto")
end
end

if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end

doCreatureSetLookDir(pk, 2)

adjustStatus(pk, item.uid, true, false, true)
doAddPokemonInOwnList(cid, pokemon)

doTransformItem(item.uid, item.itemid+1)

local pokename = getItemAttribute(item.uid, "nick") or getCreatureName(pk)

local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_SAY)
exhaustion.set(cid, 6666, 2)

doSendMagicEffect(getCreaturePosition(pk), effect)

else

doPlayerSendCancel(cid, "This pokemon is fainted.")

end


return true
end



Ojala me puedan ayudar aclaro que no tengo otro archivo de goback es el unico que tengo y con las otras balls me funcionan bien las del juego la pokeball, great, ultra, y rapid.




Dezza


Nuevo
Deja lo Calo xD eso es lo que toi buscando desde ase ratoo :drool:

DavidR


Moderador
Men usa los tags, el script abarca una gran extensidad. Y eso podría parecerles incómodo o fastidioso a los usuarios. Si no sabes cómo ponerlas, es así:

[.code] SCRIPT [./code]

SIN los puntos. Quedaría así:
Código:
 SCRIPT
Y eso es todo ^^ Tu post se vería mejor y más ordenado de esa forma.

Buen aporte :+Rep:
Saludos.

http://www.blacktibia.org/

Brunoh


Nuevo
Amigos Tengo un problema mis players tiran ball y es como si lo ubiesen atrapado pero la ball no hace nada osea no lo atrapa y desaparece la ball y el pokemon (su cuerpo) se queda ahi que hago?

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .