Ir para conteúdo

Adicionando novas spells - PDA


Slicer

Posts Recomendados

  • 5 months later...
  • 2 months later...
  • 4 months later...

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 /////////////////////////--

elseif spell == "Illusion Team" then
local storage = 124239
if getPlayerStorageValue(cid, storage) - os.time() > 0 then return end
setPlayerStorageValue(cid, storage, os.time() + 6) < Esa Parte estava separada esa é a que o Brun posto la
local function RemoveTeam(cid, master)
if isCreature(cid) then
local p = getThingPosWithDebug(cid)
doSendMagicEffect(p, 211)
doRemoveCreature(cid) < < e esa e o Scrip do kra só que eo não sei se eo coloquei no lugar Certo .
end
end
local function sendEff(cid, master, t)
if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
addEvent(sendEff, 1000, cid, master, t-1) --alterado v1.9
end
end
if getPlayerStorageValue(cid, 637500) >= 1 then
return true
end
local s = {
["Misdreavus"] = "MisdreavusTeam",
["Shiny Stantler"] = "ShinyStantlerTeam",
}
local master = getCreatureMaster(cid)
local item = getPlayerSlotItem(master, 8)
local pos = getThingPosWithDebug(cid)
local time = 5
local pokelife = (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
local random = math.random(5, 10)
local dir = getCreatureLookDir(cid)
---------
doItemSetAttribute(item.uid, "hp", pokelife)
---------
doDisapear(cid)
doTeleportThing(cid, {x=4, y=3, z=10}, false)
doAppear(cid)
---------
doSummonMonster(master, s[getSubName(cid, target)]) --alterado v1.6.1
local pk = getCreatureSummons(master)[2]
adjustStatus(pk, item.uid, true, true, true)
---------
doTeleportThing(pk, getClosestFreeTile(pk, pos), false)
doTeleportThing(cid, getClosestFreeTile(cid, pos), false)
doCreatureSetLookDir(pk, dir)
doCreatureSetLookDir(cid, dir)
doSendMagicEffect(getThingPosWithDebug(pk), 211)
doSendMagicEffect(getThingPosWithDebug(cid), 211)
if getPlayerStorageValue(cid, 9658783) >= 1 then --gambiarra
doSetCreatureOutfit(cid, {lookType = 1446}, -1)
end
sendEff(cid, master, time) --alterado v1.9
--------
setPlayerStorageValue(pk, 637500, 1)
setPlayerStorageValue(master, 637501, 1)
addEvent(RemoveTeam, time*1000, pk, master)
addEvent(setPlayerStorageValue, time*1000, master, 637501, -2) --alterado v1.6
Eo Segui seo Tutorial e não deo erro nenhum no serv só que o Misdreavus continua NOrmal
Quem Poder Ajudar Agradeço e do 5 REP+
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

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?

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 1 year later...

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
end
E entao adicionem um outro 'elseif'...
elseif spell == "xxxx" then
Onde "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 ^^

 

 

Link para o comentário
Compartilhar em outros sites

  • 5 months later...

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 rsrs
Pedido: 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, etc
Se 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

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Damgrath unpinned this tópico
  • 4 months later...
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 rsrs
 
 
Pedido: 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, etc
 
Se 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 por soyjho
Link para o comentário
Compartilhar em outros sites

  • 3 years later...
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" then

Onde "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??

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...