Parabéns pelo ótimo trabalho com o tutorial.
Ganhou destaque na seção!
Por Slicer, 01 de jan. de 2013 em Tutoriais para Iniciantes
info
Grupo: Herói
Registrado: 25/10/12
Posts: 2.4k
Reputação: +687
Gênero: Masculino
Char no Tibia: Nuncative

Parabéns pelo ótimo trabalho com o tutorial.
Ganhou destaque na seção!
Ae Slicer, e pra cria o ataque Morth do Dark abra, igual na PXG
info
Grupo: Campones
Registrado: 29/05/13
Posts: 51
Reputação: +4
Char no Tibia: Nunca Joguei

Slicer estou com uma duvida aki eo fiz o seguindo Eo tava querendo uma passive illusion igual da pxg ai vi um topico que vc até comento la e o brun ajudo o kra e o kra falo que deo certo . só que eo peguei o Scrip dele e fui seguindo seo tutorial
--/////////////////////// PASSIVAS /////////////////////////--
info
Grupo: Campones
Registrado: 25/01/14
Posts: 2
Reputação: 0

amigo slicer ensina faze uma magia com 3 areas pfv iria me ajudar muito cara!
Slicer meu bom... preciso de uma ajuda sua cara...
Como faço pra almentar a duração de um ataque de area.. (ex Thunder Storm dura 3 segundos) quero que ele dure 5 ou 6 entende?
Slicer , Essa Script Serve Apenas Para Pda ?
info
Grupo: Campones
Registrado: 29/04/14
Posts: 1
Reputação: 0

Slicer uma dúvida eu consegui tudo coloquei o ataque e tudo mais, mas num sai o efeito tem como me explicar como ajeito isso ?
Editado Abril 29 por Rogersystem
ae slicer tem como ajudar a instalar essa magia que foi criada no spell creator. vlw uso pokecyan
<instant name="teste" words="default" lvl="100" maglv="0" mana="0" exhaustion="30" prem="0" needlearn="0" blockwalls="0" aggressive="1" event="script" value="teste.lua">
</instant>
-- SpellCreator generated.
-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, 226)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_UNDEFINEDDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 0, 2, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
return (200)*-1,(1000)*-1
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local con___combat0_Brush = createConditionObject(0+CONDITION_PARALYZE)
addDamageCondition(con___combat0_Brush, 3, 1000, -400)
setCombatCondition(combat0_Brush, con___combat0_Brush)
-- Areas/Combat for 900ms
local combat9_Brush_2 = createCombatObject()
setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, 91)
setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat9_Brush_2,createCombatArea({{0, 0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0}}))
function getDmg_Brush_2(cid, level, maglevel)
return (500)*-1,(1000)*-1
end
setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
-- Areas/Combat for 1600ms
local combat16_Brush_3 = createCombatObject()
setCombatParam(combat16_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat16_Brush_3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatArea(combat16_Brush_3,createCombatArea({{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}))
function getDmg_Brush_3(cid, level, maglevel)
return (200)*-1,(400)*-1
end
setCombatCallback(combat16_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
-- Areas/Combat for 2500ms
local combat25_Brush_4 = createCombatObject()
setCombatParam(combat25_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat25_Brush_4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat25_Brush_4,createCombatArea({{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush_4(cid, level, maglevel)
return (10)*-1,(20)*-1
end
setCombatCallback(combat25_Brush_4, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_4")
-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
doCombat(cid, c, var)
if (dirList ~= nil) then -- Emit distance effects
local i = 2;
while (i < #dirList) do
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
i = i + 2
end
end
end
end
function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
RunPart(combat0_Brush,cid,var)
addEvent(RunPart,900,combat9_Brush_2,cid,var)
addEvent(RunPart,1600,combat16_Brush_3,cid,var)
addEvent(RunPart,2500,combat25_Brush_4,cid,var)
return true
end
como veem ele gera a xml e a magia em si mais no ot aq cyan nao tem como saber onde colo a magia criada ou se precisa dividila em area e efeito magico sei la nao tenho a minima ideia de como adiciona-la no server peço por favor que alguem me ajude explicando detalhadamente pra eu poder fazer sosinho depois. vlw.
Ola galera hoje trago para vocês um tutorial de como adicionar novas spells aos pokemons em um servidor 'PDA'...
Tutorial feito a pedido do usuario: @josegremista
Importante: Antes de começar gostaria de deixar claro que criar uma nova spell em um servidor de pokemon eh totalmente diferente que criar uma spell em um servidor de tibia, as spells de pokemon são criadas em lib/pokemon moves.lua e não na pasta spells como no tibia... A pasta spells vai simplismente 'chamar' as spells feitas na pasta lib.
Vão em lib/pokemon moves.lua e achem isso..
Caso estejam usando meu servidor:--/////////////////////// PASSIVAS /////////////////////////--Caso usem outro tipo de 'PDA', vão ao final do script e achem isso:end return true endE entao adicionem um outro 'elseif'...elseif spell == "xxxx" thenOnde "xxxx" é o nome da nova spell...
E então embaixo disso, criem o script da nova spell..
Exemplo:local pos = getThingPosWithDebug(cid) doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell) addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0)Importante: Caso usem meu servidor, aconcelho a olharem o arquivo lib/newStatusSyst.lua, la estão todas as funções de dano do servidor...
Importante: Não coloquem areas de spells nesse arquivo! As areas de spells devem ser colocadas em lib/areas.lua, para deixar o outro script mais organizado...
Depois de criado o script da spell, vão em lib/configuration.lua e achem a tabela movestable, e então adicionem a nova spell nos pokes q vocês quiserem...
No meu 'PDA' usem:move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd, f = ee, t = "yyyy"},Onde:"xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o poke tem q tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso não precise de target pra usar a spell, ee = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada spell -caso seja uma spell que não tem dano coloquem 0-, "yyyy" = é o 'tipo' da spell -"grass", "water", "fire"...-Caso usem outro tipo de 'PDA' usem:move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd},Onde:"xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o pokemon tem que tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso nao precise de target pra usar a spellImportante: caso usem outro tipo de 'PDA' o dano e o 'tipo' da spell ficam em lib/moves.lua...["xxxx"] = {f = aa, t = "yyyy"},Onde:"xxxx" = nome da spell, aa = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada skill -caso seja uma skill que n]ao tem dano coloquem 0-, "yyyy" = é o tipo da spell -"grass", "water", "fire"...Depois de feito isso, vão em spells/ps/ e copiem algum arquivo la e mudem o nome para o nome da sua nova spell e depois abram esse arquivo e mudem isso:docastspell(cid, "xxxx")Onde "xxxx" é o nome da spell...
Depois abram o arquivo spells/spells.xml e adicionem uma nova linha...<instant name="xxxx" words="yyyy" lvl="1000" mana="0" event="script" value="ps/xxxx.lua"></instant>Onde:"xxxx" = nome da nova spell, "yyyy" = vocês colocam "spellYYY" onde "YYY" eh o proximo numero em sequencia, olhem a ultima spell adicionada q vocês vão intender...E por ultimo, vão em monster/pokes/ e adicionem a spell nos pokemons que vocês quiserem...<attack name="xxxx" interval="yyyy" chance="zzzz" range="aaaa"/>Onde:"xxxx" = nome da spell, "yyyy" = de quanto em quantos, milésimos de segundos -1s = 1000-, o pokemon tentara usar a spell, "zzzz" = a chance do pokemon conseguir usar a spell, "aaaa" = distância minima pro pokemon começar a usar a spellPronto, espero q vocês gostem do tutorial. Qualquer erro ou se faltou alguma coisa me avisem para eu editar o post ^^
info
Grupo: Visconde
Registrado: 08/12/15
Posts: 309
Reputação: +133
Gênero: Masculino

eh essa eh a ideia yan kk
@@all
se alguem tiver mais algum pedido de tutorial desse tpw eh soh flar q tento fazer..
elseif isInArray({"Psychic Sight", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, spell) then
local ret = {}
ret.id = cid
ret.cd = 10
ret.eff = 0
ret.check = 0
ret.buff = spell
ret.first = true
doCondition2(ret)
Em 21/12/2015 at 20:40, samlecter disse:eh essa eh a ideia yan kk
@@all
se alguem tiver mais algum pedido de tutorial desse tpw eh soh flar q tento fazer..Slicer, cai aqui por acaso, já sabia adicionar spells mas tenho 1 dúvida e 1 pedido rsrsPedido: Poderia fazer um Addon System que funcionasse durante o Fly, ou quando o pokemon usasse uma spell que troque a outfit, exemplo rollout, counter helix (passiva do scyther), sei que preciso possuir a outfit dele usando tais spells e Fly com addon, eu tenho mas todos os addons systems que achei não funcionam em fly, etcSe puder por para abrir aquela janela para escolher o addon e a cor, ficaria legal também, mas isso é o de menos ^_^Dúvida: Sabe aquelas spells que deixam o pokemon ivuneravel, trocando a outfit (Acid Armor, Iron Defense, Minimize, Camouflage, etc) no pokemon moves, creio que elas não são configuradas por lá, pois a unica coisa que tem de cada uma delas é isso:elseif isInArray({"Psychic Sight", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, spell) then local ret = {} ret.id = cid ret.cd = 10 ret.eff = 0 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret)Onde configuro tais spells? exemplo trocar a outfit dela pra outra?eu consegui criar exceções para caso tal pokemon use tal spell, fique com tal outfi, caso contrário fique com a outfit padrão, dai usei o Iron Defense para funcionar no bronzong e no shiny metagross além do Steelix, mas no caso do shiny metagross, caso eu use ride enquanto com a spell iron defense ativa, quando eu saio da ride, caso não tenha acabado o tempo da spell, ele fica com a outfit "padrão" que seria do steelix com iron defense
conseguiu resolver o problema do "iron defense, etc"? se sim, poderia me dar um help como?
Editado Outubro 27 por soyjho
Em 01/01/2013 em 11:55, Slicer disse:Ola galera hoje trago para vocês um tutorial de como adicionar novas spells aos pokemons em um servidor 'PDA'...
Tutorial feito a pedido do usuario: @josegremista
Importante: Antes de começar gostaria de deixar claro que criar uma nova spell em um servidor de pokemon eh totalmente diferente que criar uma spell em um servidor de tibia, as spells de pokemon são criadas em lib/pokemon moves.lua e não na pasta spells como no tibia... A pasta spells vai simplismente 'chamar' as spells feitas na pasta lib.
Vão em lib/pokemon moves.lua e achem isso..
Caso estejam usando meu servidor:--/////////////////////// PASSIVAS /////////////////////////--Caso usem outro tipo de 'PDA', vão ao final do script e achem isso:
end return true end
E entao adicionem um outro 'elseif'...
elseif spell == "xxxx" thenOnde "xxxx" é o nome da nova spell...
E então embaixo disso, criem o script da nova spell..
Exemplo:
local pos = getThingPosWithDebug(cid) doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell) addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0)
Importante: Caso usem meu servidor, aconcelho a olharem o arquivo lib/newStatusSyst.lua, la estão todas as funções de dano do servidor...
Importante: Não coloquem areas de spells nesse arquivo! As areas de spells devem ser colocadas em lib/areas.lua, para deixar o outro script mais organizado...
Depois de criado o script da spell, vão em lib/configuration.lua e achem a tabela movestable, e então adicionem a nova spell nos pokes q vocês quiserem...
No meu 'PDA' usem:
move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd, f = ee, t = "yyyy"},Onde:
"xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o poke tem q tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso não precise de target pra usar a spell, ee = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada spell -caso seja uma spell que não tem dano coloquem 0-, "yyyy" = é o 'tipo' da spell -"grass", "water", "fire"...-
Caso usem outro tipo de 'PDA' usem:
move1 = {name = "xxxx", level = aa, cd = bb, dist = cc, target = dd},Onde:
"xxxx" = nome da spell, aa = level que o poke/player precisa ter para usar a spell, bb = cd, tempo de espera, para usar a spell denovo, cc = distância minima que o pokemon tem que tar pra usar a spell, dd = coloquem 1, caso precise ter um target pra usar a spell, ou coloquem 0, caso nao precise de target pra usar a spell
Importante: caso usem outro tipo de 'PDA' o dano e o 'tipo' da spell ficam em lib/moves.lua...
["xxxx"] = {f = aa, t = "yyyy"},Onde:
"xxxx" = nome da spell, aa = esse é o 'dano' da spell, esse valor vai ser usado na formula final de dano de cada skill -caso seja uma skill que n]ao tem dano coloquem 0-, "yyyy" = é o tipo da spell -"grass", "water", "fire"...
Depois de feito isso, vão em spells/ps/ e copiem algum arquivo la e mudem o nome para o nome da sua nova spell e depois abram esse arquivo e mudem isso:
docastspell(cid, "xxxx")Onde "xxxx" é o nome da spell...
Depois abram o arquivo spells/spells.xml e adicionem uma nova linha...
<instant name="xxxx" words="yyyy" lvl="1000" mana="0" event="script" value="ps/xxxx.lua"></instant>Onde:
"xxxx" = nome da nova spell, "yyyy" = vocês colocam "spellYYY" onde "YYY" eh o proximo numero em sequencia, olhem a ultima spell adicionada q vocês vão intender...
E por ultimo, vão em monster/pokes/ e adicionem a spell nos pokemons que vocês quiserem...
<attack name="xxxx" interval="yyyy" chance="zzzz" range="aaaa"/>Onde:
"xxxx" = nome da spell, "yyyy" = de quanto em quantos, milésimos de segundos -1s = 1000-, o pokemon tentara usar a spell, "zzzz" = a chance do pokemon conseguir usar a spell, "aaaa" = distância minima pro pokemon começar a usar a spell
Pronto, espero q vocês gostem do tutorial. Qualquer erro ou se faltou alguma coisa me avisem para eu editar o post ^^
n caso d DXP??
info
Grupo: Campones
Registrado: 16/01/13
Posts: 73
Reputação: +1
poderia atualizar seu post sem os spoilers talvez em quote tenho um problema para abrir spoilers so ataualizando a pagina e dps de 5 segundos nao da pra abrir mais