Ir para conteúdo

[Encerrado] Como Adicionar Nova Ball No Serv Sprites Ja Add No Client


LeoTK

Posts Recomendados

olá galera do XTibia_smile.gif bom estou aki para pedir a ajuda de voces estou com um probleminha eu nao sei mt script xD na verdade nao sei quase nada e eu adicionei a sprite da hyper ball <<< xD sim hyper ball> e esta tudo certinho o catch fail o catch win o cath move o effect ela apagada ela assesa ela em montinho e ela normal < ai eu gostaria de saber como fasso para adicionar no item.otb e no resto do serv como uma ball normal tipo ultra mais nao achei script da ultra ball pra min copiar e mudar os ids e tals e nao sei oque adicionar no item.otb se adiciono tudo que citei da ball ou so algumas coisas.

aguardo respostas

 

ps:+rep pra quem ajudar

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

Se seu pedido foi como adicionar novas balls no server (com spr já no client), tente seguir este tutorial:

 

Para fazer uma ball para se capturada...

actions/scripts/catch
1 - Adicione a ball no cliente
2 - Configure no item xml e otb a ball
3 - Adicione o id da ball na função isPokeBall (arquivo data/lib/somefunctions.lua)
4 - Adicione o id do ball no actions.xml na parte de goback.
5 - Adicione o id da ball no movements.xml na parte do portrait
6 - Adicione no data/lib/configuration.lua na tabela "pokeballs', e em baixo ira aparecer isso:
7- Adicione o id do ball no actions.xml na parte de catch.
8 - Adiciona tbm no npc/scripts/heal.lua.

Exemplo no configuration.lua: Mesmo com heal.lua (npc/scripts/heal.lua)

["normal"] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826, 11827, 11828}},
Onde está em vermelho vc coloca o efeito de goback da pokeball
Onde está em amarelo vc coloca a id da ball
Onde está em verde vc coloca a ball usada
Onde está em azul vc coloca a ball com o pokemon morto
Onde está em marrom vc altera ali na tabela dentro, colocando os ids da ball on,off e use
Não esquecendo é claro de trocar aonde tem escrito ["normal"] pelo nome da sua ball.

npc/scripts/heal.lua
pesquise for balls = 1, 9
1, 9 - significa
[1] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826, 11827, 11828}},
[2] = {effect = 191, on = 11829, use = 11830, off = 11831, all = {11829, 11830, 11831}},
[3] = {effect = 190, on = 11835, use = 11836, off = 11837, all = {11835, 11836, 11837}},
[4] = {effect = 189, on = 11832, use = 11833, off = 11834, all = {11832, 11833, 11834}},
[5] = {effect = 188, on = 11737, use = 11738, off = 11739, all = {11737, 11738, 11739}},
[6] = {effect = 189, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}},
[7] = {effect = 190, on = 11743, use = 11744, off = 11745, all = {11743, 11744, 11745}},
[8] = {effect = 191, on = 11746, use = 11747, off = 11748, all = {11746, 11747, 11748}},
[9] = {effect = 195, on = 12575, use = 12576, off = 12574, all = {12575, 12576, 12574}},
[10] = {effect = xxx, on = xxxxxx, use = xxxxxxx, off = xxxxxx, all = {xxxxx, xxxxx, xxxxx}},
serve para cura todas pokeball dentro da bag, se adc nova ball muda para for balls = 1, 10

3 - Adicione o id da ball na função isPokeBall (arquivo data/lib/somefunctions.lua)

essa parte:

function isPokeball(item)

if not item then return false end

if item >= 11826 and item <= 11837 then

return true

end

if item >= 11737 and item <= 11748 then

return true

end

add nova assim: EXEMPLO:

if item >= 12574 and item <= 12576 then estão adicionada 3 ball aqui 12574, 12575, 12576!

return true

end

Lembrando que quando for adicionar a ball no items.xml, coloque essa tag:

<attribute key="ispokeball" value="1"/>

ficando assim:

<item id="10974" article="a" name="Bulbasaur's pokeball">

<attribute key="ispokeball" value="1"/>

<attribute key="weight" value="100" />

<attribute key="slotType" value="feet" />
 
</item>

Créditos vão TOTALMENTE à Slicer, Bolz e Stylo Maldoso.

 

 

E, também, tem esse tutorial do Beeki, sobre criar novos items p/ adicionar no servidor (No seu caso, "criar" a Hyper Ball para ser adicionada com sucesso em seu server): http://www.xtibia.com/forum/topic/183917-tutorial-otb-item-editor/

 

E, também, caso você não entenda o tutorial do Beeki, tem esse outro aqui (Créditos ao autor, BrunooAngel): http://www.xtibia.com/forum/topic/169658-pokemon-adicionando-novos-items/

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

bom irei testar ja edit


olá amigo emtaum eu testei e a hyper ball ela nao se junta tipow quando eu falo /i ultra ball cria de 100 e quando eu falo /i hyper ball cria 1 e nao da pra juntar com outra e quando cliko com o direito pra dar use fala you cannot use this object <<< pode ajudar?

 

amigo uma foto <<< legenda porq postei no face do server

 

 

\/ IMAGENS DA HYPER BALL \/

http://imageshack.us/photo/my-images/837/95zn.png/

 

 

ahh irei mostrar tudo que fiz

 

 

\/ Heal \/

 

[9] = {effect = 111, on = 114, use = 113, off = 113, all = {114, 113, 113}},

 

 

 

\/ some fucitons \/

 

 

if item >= 114 and item <= 113 then

return true
end

 

 

 

\/ no configurations \/

["Hyper"] = {effect = 111, on = 114, use = 113, off = 113, all = {114, 113, 113}},

\/ item.xml \/ <<< so coloquei essa tag nele

<item id="114" article="a" name="Hyper Ball">
<attribute key="ispokeball" value="1"/>
<attribute key="weight" value="100" />
<attribute key="slotType" value="feet" />
</item>

é isso

hyper ball.bmp

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

sim << mas estou com uma duvida eu adiciono qual tag no item.xml a das balls juntadas 1,2,3,4,5,7,50,100<<< elas juntas ou adiciono a tag dela sozinha como se o poke tivesse dentro dela ou eu adiciono as duas tags e no effect eu coloco aquele efeito que ataca a ball de longe?

Link para o comentário
Compartilhar em outros sites

No effect, o efeito que taca longe. No item.xml, siga como exemplo estas tags da ultraball:

<item id="11829" article="a" name="ultraball">          --Ultraball com o pokémon dentro
     <attribute key="weight" value="100" />
     <attribute key="slotType" value="feet" />
    </item>
 
<item id="11830" article="a" name="ultraball being used">     --Pokémon da ub sendo usado
     <attribute key="weight" value="100" />
     <attribute key="slotType" value="feet" />
</item>
 
<item id="11831" article="a" name="discharged ultraball">     --Pokémon da ub morto
     <attribute key="weight" value="100" />
     <attribute key="slotType" value="feet" />
    </item>
 
<item id="2392" article="a" name="ultra ball"> --UB de captura
<attribute key="weight" value="0" />
<attribute key="description" value="This is pokeball used to catch fainted pokemon. It has a 4x catch rate." />
</item>
Em item id, você coloca o ID que configurou no item editor (disponível para download em um dos tutoriais que passei logo acima).
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

 

<item id="10974" article="a" name="Bulbasaur's pokeball">


<attribute key="ispokeball" value="1"/>

<attribute key="weight" value="100" />

<attribute key="slotType" value="feet" />


</item>

 

/\

 

FIQUEI COM DUVIDA NESSA PARTE


ainda eu nao consegui mais eu ja arrumei o negocio de juntar so que agora do use pra pegar o pokemon e fala you cannot use object

 

 

>>> a imagen desculpa nao hospedar em algun lugar

imagen:>>>hyper ball bugada.bmp


ta funcionando tudo certinho as ball vem em 100 quando cria da pra separa-las unica coisa que ta dando erro e a aparte que tento jogar a ball no poke ai fala you cannot use object

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

Tente retirar esse

<attribute key="ispokeball" value="1"/>

, ficando tipo o exemplo que dei da UB. (só um palpite)

Sobre o heal, você colocou balls = 1, 9?
E poderia postar a Hyper Ball que você colocou no item.xml? Seguindo exemplo da ultra ball. Você também adicionou a Hyper Ball no catch.lua e no catch system.lua?
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

bruno baixe o client do kpdo e descompile la tem


 

local pokeballs = {
[1] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826, 11827, 11828}},
[2] = {effect = 191, on = 11829, use = 11830, off = 11831, all = {11829, 11830, 11831}},
[3] = {effect = 190, on = 11835, use = 11836, off = 11837, all = {11835, 11836, 11837}},
[4] = {effect = 189, on = 11832, use = 11833, off = 11834, all = {11832, 11833, 11834}},
[5] = {effect = 188, on = 11737, use = 11738, off = 11739, all = {11737, 11738, 11739}},
[6] = {effect = 189, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}},
[7] = {effect = 190, on = 11743, use = 11744, off = 11745, all = {11743, 11744, 11745}},
[8] = {effect = 191, on = 11746, use = 11747, off = 11748, all = {11746, 11747, 11748}},
[9] = {effect = 111, on = 114, use = 113, off = 115, all = {114, 113, 115}},
}

--alterado v1.7 \/\/
local posis = { --[storage da city] = {pos da nurse na city},
[897530] = {x = 1053, y = 1046, z = 7}, --saffron
[897531] = {x = 1060, y = 900, z = 7}, --cerulean
[897532] = {x = 1204, y = 1042, z = 7}, --lavender
[897533] = {x = 1213, y = 1321, z = 7}, --fuchsia
[897534] = {x = 862, y = 1094, z = 6}, --celadon
[897535] = {x = 705, y = 1086, z = 7}, --viridian
[897536] = {x = 1075, y = 1233, z = 7}, --vermilion
[897537] = {x = 723, y = 847, z = 7}, --pewter
[897538] = {x = 850, y = 1396, z = 7}, --cinnabar
[897539] = {x = 1429, y = 1597, z = 6}, --snow
[897540] = {x = 542, y = 675, z = 7}, --golden
}

function onThingMove(creature, thing, oldpos, oldstackpos)
end

function onCreatureAppear(creature)
end

function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye sir!')
focus = 0
talk_start = 0
end
end

function onCreatureTurn(creature)
end

function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end

function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

for a, b in pairs(gobackmsgs) do
local gm = string.gsub(b.go, "doka!", "")
local bm = string.gsub(b.back, "doka!", "")
if string.find(string.lower(msg), string.lower(gm)) or string.find(string.lower(msg), string.lower(bm)) then
return true
end
end

if((msgcontains(msg, 'hi') or msgcontains(msg, 'heal') or msgcontains(msg, 'help')) and (getDistanceToCreature(cid) <= 3)) then

if exhaustion.get(cid, 9211) then
selfSay('Por favor, espere um momento para poder curar novamente.')
return true
end

if not getTileInfo(getThingPos(cid)).protection and nurseHealsOnlyInPZ then
selfSay("Entre dentro do Centro Pokémon para curar seu pokémon!")
return true
end

if getPlayerStorageValue(cid, 52480) >= 1 then
selfSay("Você não pode curar enquanto está em duelo!") --alterado v1.6.1
return true
end

for e, f in pairs(posis) do
local pos = getThingPos(getNpcCid())
if pos.x == f.x and pos.y == f.y and pos.z == f.z then
if getPlayerStorageValue(cid, e) <= -1 then --alterado v1.7
setPlayerStorageValue(cid, e, 1)
end
end
end

exhaustion.set(cid, 9211, 5)

doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
doCureStatus(cid, "all", true)
doSendMagicEffect(getThingPos(cid), 132)

local mypb = getPlayerSlotItem(cid, 8)

if #getCreatureSummons(cid) >= 1 then

if not nurseHealsPokemonOut then
selfSay("Por favor, retorne seu pokémon para a pokebola!")
return true
end

local s = getCreatureSummons(cid)[1]
doCreatureAddHealth(s, getCreatureMaxHealth(s))
doSendMagicEffect(getThingPos(s), 13)
doCureStatus(s, "all", false)
if getPlayerStorageValue(s, 1008) < baseNurseryHappiness then
setPlayerStorageValue(s, 1008, baseNurseryHappiness)
end
if getPlayerStorageValue(s, 1009) > baseNurseryHunger then
setPlayerStorageValue(s, 1009, baseNurseryHunger)
end
else
if mypb.itemid ~= 0 and isPokeball(mypb.itemid) then --alterado v1.3
doItemSetAttribute(mypb.uid, "hp", 1)
if getItemAttribute(mypb.uid, "hunger") and getItemAttribute(mypb.uid, "hunger") > baseNurseryHunger then
doItemSetAttribute(mypb.uid, "hunger", baseNurseryHunger)
end
for c = 1, 15 do
local str = "move"..c
setCD(mypb.uid, str, 0)
end
if getItemAttribute(mypb.uid, "happy") and getItemAttribute(mypb.uid, "happy") < baseNurseryHappiness then
doItemSetAttribute(mypb.uid, "happy", baseNurseryHappiness)
end
if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then
for a, b in pairs (pokeballs) do
if isInArray(b.all, mypb.itemid) then
doTransformItem(mypb.uid, b.on)
end
end
end
end
end

local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)

for balls = 1, 8 do --editar a qntdade de balls da tabela ali decima...
for times = 1, 3 do
local items = getItemsInContainerById(bp.uid, pokeballs[balls].all[times])
if #items >= 1 then
for _, uid in pairs(items) do
doItemSetAttribute(uid, "hp", 1)
doTransformItem(uid, pokeballs[balls].on)
for c = 1, 15 do
local str = "move"..c
setCD(uid, str, 0) --alterado v1.3
end
if getItemAttribute(uid, "hunger") and getItemAttribute(uid, "hunger") > baseNurseryHunger then
doItemSetAttribute(uid, "hunger", baseNurseryHunger)
end
if getItemAttribute(uid, "happy") and getItemAttribute(uid, "happy") < baseNurseryHappiness then
doItemSetAttribute(uid, "happy", baseNurseryHappiness)
end
end
end
end
end

doPlayerSendTextMessage(cid, 26, "sounds/chansey.wav")
selfSay('Pronto! seus pokémons foram curados, volte quando quiser.')


if useKpdoDlls then --alterado v1.7
doUpdateMoves(cid)
end

end
end

 

 

/\ esse e meu heal esta certo???


 

failmsgs = {
"Desculpe, Você não conseguiu capturar esse pokémon.",
"Desculpe, sua pokebola quebrou.",
"Desculpe, seu pokemon escapou.",
}

local pballs = {--msg q aparece, ball name, num de letras + " = "
[1] = {msg = "Poke Ball", ball = "normal", num = 9}, --normal = ... 9 letras
[2] = {msg = "Great Ball", ball = "great", num = 8}, --great = ... 8 letras
[3] = {msg = "Super Ball", ball = "super", num = 8}, --brokes count system
[4] = {msg = "Ultra Ball", ball = "ultra", num = 8},
[5] = {msg = "Saffari Ball", ball = "saffari", num = 10},
[6] = {msg = "Hyper Ball", ball = "Hyper", num = 8},
}
--------------------------------------------------------------------------------
function doBrokesCount(cid, str, ball)
if tonumber(getPlayerStorageValue(cid, str)) then
print("Error ocorred in function 'doBrokesCount'... storage "..str.." is a number value")
print("Storage will be changed to the correct table...")
doPlayerSendTextMessage(cid, 27, "A error ocorred... Warning sent to Game Masters!")
setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
return true
end
local s = string.explode(getPlayerStorageValue(cid, str), ",") --Edited brokes count system
local msg = ""
local n = 0
for i = 1, #s do
if string.find(tostring(s), ball) then
local d, e = s:find(""..pballs.ball.." = (.-)")
local st2 = string.sub(s, d + pballs.num, e +5)
local num = tonumber(st2)+1

if num == 0 and ball == pballs.ball then
num = 1
end
if i == #s then
msg = msg..""..ball.." = "..num
n = n +1
else
msg = msg..""..ball.." = "..num..", "
n = n +1
end
else
if i == #s then
msg = msg..s
else
msg = msg..s..", "
end
end
end
setPlayerStorageValue(cid, str, msg)
end

function sendBrokesMsg(cid, str, ball) --Edited brokes count system
if tonumber(getPlayerStorageValue(cid, str)) then
print("Error ocorred in function 'sendBrokesMsg'... storage "..str.." is a number value")
print("Storage will be changed to the correct table...")
doPlayerSendTextMessage(cid, 27, "A error ocorred... warning sent to game masters!")
setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
return true
end
local t = string.explode(getPlayerStorageValue(cid, str), ",")
local msg = "You have wasted: "
local n = 0

for a = 1, #t do
local d, e = t[a]:find(""..pballs[a].ball.." = (.-)")
local st2 = string.sub(t[a], d + pballs[a].num, e +5)
if tonumber(st2) == 0 and pballs[a].ball == ball then
st2 = 1
end
if tonumber(st2) ~= 0 then
if n ~= 0 and a ~= #t then
msg = msg..", "
end
if tonumber(st2) ~= 1 then
msg = msg..st2.." "..pballs[a].msg.."s"
n = n +1
else
msg = msg..st2.." "..pballs[a].msg
n = n +1
end
end
end
msg = msg.." to catch it."
doPlayerSendTextMessage(cid, 27, msg)
end
--------------------------------------------------------------------------------

function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system

local name = catchinfo.name
local pos = catchinfo.topos
local topos = {}
topos.x = pos.x
topos.y = pos.y
topos.z = pos.z
local newid = catchinfo.newid
local catch = catchinfo.catch
local fail = catchinfo.fail
local rate = catchinfo.rate
local basechance = catchinfo.chance

if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then --alterado v2.7 task clan
rate = 15
end

local corpse = getTopCorpse(topos).uid

if not isCreature(cid) then
doSendMagicEffect(topos, CONST_ME_POFF)
return true
end

doItemSetAttribute(corpse, "catching", 1)

local levelChance = getItemAttribute(corpse, "level") * 0.02

local totalChance = math.ceil(basechance * (1.2 + levelChance))
local thisChance = math.random(0, totalChance)
local myChance = math.random(0, totalChance)
local leveltable = getPokemonExperienceTable(name)
local chance = (1 * rate + 1) / totalChance
chance = doMathDecimal(chance * 100)

if rate >= totalChance then
local status = {}
status.clevel = tonumber(getItemAttribute(corpse, "level"))
local clevel = status.clevel
status.cexp = leveltable[clevel]
local cexp = status.cexp
status.cnext = leveltable[clevel+1] - cexp
status.coffense = getItemAttribute(corpse, "offense")
status.cdefense = getItemAttribute(corpse, "defense")
status.cspeed = getItemAttribute(corpse, "speed")
status.cvitality = getItemAttribute(corpse, "vitality")
status.cspatk = getItemAttribute(corpse, "spattack")
status.gender = getItemAttribute(corpse, "gender")
status.happy = 160

doRemoveItem(corpse, 1)
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee) --Edited brokes count system
doPlayerSendTextMessage(cid, 26, "sounds/bell.wav")
return true
end


if totalChance <= 1 then totalChance = 1 end
doPlayerSendTextMessage(cid, 26, "sounds/105.wav")

local myChances = {}
local catchChances = {}


for cC = 0, totalChance do
table.insert(catchChances, cC)
end

for mM = 1, rate do
local element = catchChances[math.random(1, #catchChances)]
table.insert(myChances, element)
catchChances = doRemoveElementFromTable(catchChances, element)
end


local status = {}
status.clevel = tonumber(getItemAttribute(corpse, "level"))
local clevel = status.clevel
status.cexp = leveltable[clevel]
local cexp = status.cexp
status.cnext = leveltable[clevel+1] - cexp
status.coffense = getItemAttribute(corpse, "offense")
status.cdefense = getItemAttribute(corpse, "defense")
status.cspeed = getItemAttribute(corpse, "speed")
status.cvitality = getItemAttribute(corpse, "vitality")
status.cspatk = getItemAttribute(corpse, "spattack")
status.gender = getItemAttribute(corpse, "gender")
status.happy = 70

doRemoveItem(corpse, 1)

local doCatch = false

for check = 1, #myChances do
if thisChance == myChances[check] then
doCatch = true
end
end

if doCatch then
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee) --Edited brokes count system
else
addEvent(doNotCapturePokemon, 4000, cid, name, typeee) --Edited brokes count system
doSendMagicEffect(topos, fail)
end
end

function doCapturePokemon(cid, poke, ballid, status, typeee) --Edited brokes count system

if not isCreature(cid) then
return true
end

local list = getCatchList(cid)
if not isInArray(list, poke) and not isShinyName(poke) then --Edited catch system
doPlayerAddSoul(cid, 1)
end

doAddPokemonInOwnList(cid, poke)
doAddPokemonInCatchList(cid, poke)

if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end

if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end

local description = "Contains a "..poke.."."

local leveltable = getPokemonExperienceTable(poke)

local clevel = status.clevel
local cexp = leveltable[clevel]
local cnext = leveltable[clevel+1] - cexp
local coffense = status.coffense
local cdefense = status.cdefense
local cspeed = status.cspeed
local cvitality = status.cvitality
local cspatk = status.cspatk
local gender = status.gender
local happy = 200
--alterado v2.6
if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then --edited proteçao
item = doCreateItemEx(ballid)
else
item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1) --alterado v2.6.1
end

doItemSetAttribute(item, "poke", poke)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "offense", coffense)
doItemSetAttribute(item, "level", clevel)
doItemSetAttribute(item, "exp", cexp)
doItemSetAttribute(item, "nextlevelexp", cnext)
doItemSetAttribute(item, "defense", cdefense)
doItemSetAttribute(item, "speed", cspeed)
doItemSetAttribute(item, "vitality", cvitality)
doItemSetAttribute(item, "specialattack", cspatk)
doItemSetAttribute(item, "happy", happy)
doItemSetAttribute(item, "gender", gender)
doItemSetAttribute(item, "fakedesc", description)
doItemSetAttribute(item, "description", description)
if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then --edited passiva hitmonchan
doItemSetAttribute(item, "hands", 0)
end
----------- task clan ---------------------
if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then
sendMsgToPlayer(cid, 27, "Quest Done!")
doItemSetAttribute(item, "unique", getCreatureName(cid)) --alterado v2.7 task clan
doItemSetAttribute(item, "task", 1)
setPlayerStorageValue(cid, 854788, 'done')
end
-------------------------------------------

local storage = newpokedex[poke].stoCatch --alterado v2.6
if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then --edited proteçao
doPlayerSendMailByName(getCreatureName(cid), item, 1)
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..", level "..clevel..")!")
doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")
--------------------------------------------------------------------------------
sendBrokesMsg(cid, storage, typeee) --Edited brokes count system
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
else
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a "..poke.." (level "..clevel..")!")
--------------------------------------------------------------------------------
sendBrokesMsg(cid, storage, typeee) --edited brokes count system
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
end

if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) --alterado v2.7 tava o efeito errado o.O
if catchMakesPokemonHappier then
setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + math.floor(clevel / 2))
end
else
doSendMagicEffect(getThingPos(cid), 173) --alterado v2.8
end

doIncreaseStatistics(poke, true, true)

end

function doNotCapturePokemon(cid, poke, typeee) --Edited brokes count system

if not isCreature(cid) then
return true
end

if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end

if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end

doPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])

if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)
else
doSendMagicEffect(getThingPos(cid), 166)
end

local storage = newpokedex[poke].stoCatch

--------------------------------------------------------------------------------
doBrokesCount(cid, storage, typeee) --edited brokes count system
--------------------------------------------------------------------------------
doIncreaseStatistics(poke, true, false)

end


function getPlayerInfoAboutPokemon(cid, poke)
local a = newpokedex[poke]
if not isPlayer(cid) then return false end
if not a then
print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")
return false
end
local b = getPlayerStorageValue(cid, a.storage)

if b == -1 then
setPlayerStorageValue(cid, a.storage, poke..":")
end

local ret = {}
if string.find(b, "catch,") then
ret.catch = true
else
ret.catch = false
end
if string.find(b, "dex,") then
ret.dex = true
else
ret.dex = false
end
if string.find(b, "use,") then
ret.use = true
else
ret.use = false
end
return ret
end


function doAddPokemonInOwnList(cid, poke)

if getPlayerInfoAboutPokemon(cid, poke).use then return true end

local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)

setPlayerStorageValue(cid, a.storage, b.." use,")
end

function isPokemonInOwnList(cid, poke)

if getPlayerInfoAboutPokemon(cid, poke).use then return true end

return false
end

function doAddPokemonInCatchList(cid, poke)

if getPlayerInfoAboutPokemon(cid, poke).catch then return true end

local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)

setPlayerStorageValue(cid, a.storage, b.." catch,")
end

function getCatchList(cid)

local ret = {}

for a = 1000, 1251 do
local b = getPlayerStorageValue(cid, a)
if b ~= 1 and string.find(b, "catch,") then
table.insert(ret, oldpokedex[a-1000][1])
end
end

return ret

end


function getStatistics(pokemon, tries, success)

local ret1 = 0
local ret2 = 0

local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
ret1 = 0
else
ret1 = num
end
arq:close()

local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
ret2 = 0
else
ret2 = num
end
arq:close()

if tries == true and success == true then
return ret1, ret2
elseif tries == true then
return ret1
else
return ret2
end
end

function doIncreaseStatistics(pokemon, tries, success)

local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""

if tries == true then
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"

local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
num = 1
else
num = num + 1
end
arq:close()
local arq = io.open(dir, "w")
arq:write(""..num.."")
arq:close()
end

if success == true then
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"

local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
if num == nil then
num = 1
else
num = num + 1
end
arq:close()
local arq = io.open(dir, "w")
arq:write(""..num.."")
arq:close()
end
end

function doUpdateGeneralStatistics()

local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "NUMBER NAME TRIES / CATCHES\n\n"
local str = ""

for a = 1, 251 do
if string.len(oldpokedex[a][1]) <= 7 then
str = "\t"
else
str = ""
end
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n"
end

local arq = io.open(dir, "w")
arq:write(base)
arq:close()
end

function getGeneralStatistics()

local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "Number/Name/Tries/Catches\n\n"
local str = ""

for a = 1, 251 do
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n"
end

return base
end

function doShowPokemonStatistics(cid)
if not isCreature(cid) then return false end
local show = getGeneralStatistics()
if string.len(show) > 8192 then
print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.")
doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.")
return false
end
doShowTextDialog(cid, math.random(2391, 2394), show)
end

 

 

/\

 

eu adicionei no coemços isso "[6] = {msg = "Hyper Ball", ball = "Hyper", num = 8}," <<< fiz certo e no catch system dentro do lib

Link para o comentário
Compartilhar em outros sites

No catch system fez assim?

{b = "Hyper", v = 0},

E no Item Editor/Dat Editor marcou a opção "Useable"?

E algumas coisas que o Slicer disse em outro tópico:

ja fez isso aki tb? ;p -postado originalmente pelo @lucashgas
Nao esqueca de editar o xml de action pro goback funcionar
do xml do portrait para os pokemons aparecerem no portrait.
de adicionar a ball na lib configuration.lua e some functions.lua
e tambem na tag items.xml colocando isPokeball.
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

Você adcionou o ID delas no actions.xml? E se sim, qual o erro que dá no console quando você recebe a mensagem do "You cannot use this object."

E em hipotese ALGUMA retire o "<attribute key="ispokeball" value="1"/>" porque só irá piorar.

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

Akumah, poderia explicar sobre essa tag ispokeball? Tava vendo aqui, e todas as antigas balls (normal/great/super/ultra) não possuem essa tag, e funcionam perfeitamente. Tem algum motivo especial, ou alguma coisa assim?

EDIT: Acabei de ver, só a saffari mesmo têm essa tag.

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

Akumah, poderia explicar sobre essa tag ispokeball? Tava vendo aqui, e todas as antigas balls (normal/great/super/ultra) não possuem essa tag, e funcionam perfeitamente. Tem algum motivo especial, ou alguma coisa assim?

EDIT: Acabei de ver, só a saffari mesmo têm essa tag.

Tem a ver com as sources, as pokeballs tem algumas propriedades que outros itens não tem, e creio que as 4 balls primarias já vem com essas propriedades na source mesmo.

Só sei que quando fui adcionar a saffari ball, quando não tinha colocado o ispokeball, a ball não dava catch correto e tava beem bugada.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...