Versao 0.1b Tutorial
Voce nao Sabe nada sobre scripts e nem mesmo como funcionao e quer criar uma magia
Voce pode ir no classico copy/paste:
Primeiro Passo:
Copie uma tag no spells.xml Exemplo:
<instant name="Eternal Winter" words="exevo gran mas frigo" lvl="60" mana="1200" prem="1" selftarget="1" exhaustion="2000" needlearn="0" script="attack/eternal winter.lua">
<vocation name="Druid"/>
<vocation name="Elder Druid"/>
</instant>
E cole logo a baixo uma identica.
Agora edite certos campos:
<instant name="Eternal Winter" words="exevo gran mas frigo" lvl="60" mana="1200" prem="1" selftarget="1" exhaustion="2000" needlearn="0" script="attack/eternal extreme winter.lua">
<vocation name="Druid"/>
<vocation name="Elder Druid"/>
</instant>
Vermelho Palavras a serem ditas para a magia sair
Verde Level para Usar a magia
Amarelo Mana pra Usar a magia
Negrito Voce deve mudar para o nome do seu script, no caso usaremos eternal extreme winter
Procure na pasta scripts/attack o bloco de notas chamado eternal winter copieo e cole renomeie-o para eternal extreme winter, abaixo ensino como editar.
Em seguida voce pode editar certas coisas
--Calculed by ta4e--
--For tibia 8.31--
--Made in 07/11/08--
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)
function getCombatFormulas(cid, lv, maglv)
local formula_min = -((lv*0.25 + maglv*3) * 2.7)
local formula_max = -((lv*0.25 + maglv*3) * 3.1)
if(formula_max < formula_min) then
local tmp = formula_max
formula_max = formula_min
formula_min = tmp
end
return formula_min, formula_max
end
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Azul Minimo Dano -- Leve em base que dakele geito que esta 2.7 ira dar 500 de dano se voce multiplicar por 2 o 2.7 ira ficar 5.4 e ira dar 1000 de dano
Rosa Maximo Dano -- mesmo conceito de cima
Laranja se voce nao conhece o comando pode ser !z 1,2,3...66 ou /z 1,2,3...66 useo no seu ot e veja um bem legal e apague toda a parte laranja e bote o efeito que voce quer no meu caso irei botar 61
Conclusao a magia ira ficar com a forma do exevo gran mas frigo com otro dano e com otro efeito
___________
Update 0.2a
Usando tambem o comando !x ou /x 1,2,3...41
Na linha da sua magia vai estar assim:
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 18)
Para usar os efeitos do /x ou !x voce deve botar antes do EFFECT a palavra DISTANCE e ficara assim:
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 18)
Negrito Como devera ficar para utilizar o comando !x ou /x
Listinha de efeitos e seus devidos nomes:
!z ou /z:
0 - Blood Splat
1 - Mana Loss
2 - Poff Smoke
3 - Weapon Hit
4 - Explosion Area
5 - Explosion Hit
6 - Fire Area
7 - Yellow Ring
8 - Poison Ring
9 - Hit Area
10 - Teleport
11 - Energy Hit
12 - Blue Magic Sparkle
13 - Red Magic Sparkle
14 - Green Magic Sparkle
15 - Rising Fire
16 - Poison Hit
17 - Mort Area
18 - Green Sound
19 - Red Sound
20 - Poison Area
21 - Yellow Sound
22 - Purple Sound
23 - Blue Sound
24 - White Sound
25 - Bubbles
26 - Craps
27 - Gift Wraps
28 - Yellow Firework
29 - Red Firework
30 - Blue Firework
31 - Stun Effect
32 - Sleep
33 - Sea Serpent
34 - Groundshaker
35 - Hearts
36 - Fire
37 - Energy Area
38 - Small Clouds
39 - Holy Damage
40 - Big Clouds
41 - Ice Area
42 - Ice Tornado
43 - Ice Attack
44 - Stone Shower
45 - Small Plants
46 - Munchy
47 - Purple Energy
48 - Yellow Energy
49 - Holy Caldera
50 - Big Plants
51 - Cake
52 - Giant Ice
53 - Water Splash
54 - Plant Spin
55 - Nao Sei
56 - Nao Sei
57 - Nao Sei
58 - Nao Sei
59 - Nao Sei
60 - Nao Sei
61 - Nao sei
62 - Nao Sei
63 - Nao sei
64 - Nao Sei
65 - Nao Sei
66 - Nao Sei
!x ou /x:
0 - Spear
1 - Bolt
2 - Arrow
3 - Fire
4 - Energy
5 - Poison Arrow
6 - Burst Arrow
7 - Throwing Star
8 - Throwing Knife
9 - Small Stone
10 - Death
11 - Large Rock
12 - Snowball
13 - Power Bolt
14 - Poison
15 - Infernalbolt
16 - Hunting Spear
17 - Enchanted Spear
18 - Assassin Star
19 - Viper Star
20 - Royal Spear
21 - Sniper Arrow
22 - Onyx Arrow
23 - Piecing Bolt
24 - Sword
25 - Axe
26 - Club
27 - Ethreal Spear
28 - Ice
29 - Earth
30 - Holy
31 - Sudden Death
32 - Flash Arrow
33 - Flamming Arrow
34 - Shiver Arrow
35 - Energy Ball
36 - Small Ice
37 - Small Holy
38 - Small Earth
39 - Earth Arrow
40 - Explosion
41 - Cake
___________________
Update 0.2b
Mudando a area da sua spell:
Repare a linha da nossa primeira spell la em cima
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
Neste local voce edita a area da sua magia vamos começar:
Apague toda akela linha acima em negrito e bote isto:
local area = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}
setCombatArea(combat, createCombatArea(area))
Legenda dos numeros:
0 = nao vai acertar a magia
1 = aonde a magia vai acertar
2 = centro que eh o player (nao acertara tambem)
Agora voce pode fazer uma area que voce queira de qualquer forma
___________________
Update 0.3a
Como Trocar o Dano da sua Magia:
Para trocar o tipo de dano repare a linha da magia:
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
Vermelho Eh o tipo de dano que ira dar eh so mudalo para outro tipo
Listinha de Danos:
COMBAT_PHYSICALDAMAGE - 1COMBAT_ENERGYDAMAGE - 2COMBAT_EARTHDAMAGE - 4COMBAT_POISONDAMAGE - 4COMBAT_FIREDAMAGE - 8COMBAT_UNDEFINEDDAMAGE - 16COMBAT_LIFEDRAIN - 32COMBAT_MANADRAIN - 64COMBAT_HEALING - 128COMBAT_DROWNDAMAGE - 256COMBAT_ICEDAMAGE - 512COMBAT_HOLYDAMAGE - 1024COMBAT_DEATHDAMAGE - 2048PS:Voce pode usar os numeros no lugar das palavras
___________________
Update 0.3b
Botando em pratica tudo que aprendemos!
Neste update nos iremos usar todo o conteudo do tutorial para fazer uma magia com varios efeitos,danos e areas diferentes
Aqui esta o script que criei para trabalharmos em cima dele:
local combat1 = createCombatObject()
local combat2 = createCombatObject()
local combat3 = createCombatObject()
local combat4 = createCombatObject()
local combat5 = createCombatObject()
local combat6 = createCombatObject()
local combat7 = createCombatObject()
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 42)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition1 = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition1, CONDITION_PARAM_TICKS, 20000)
--setConditionParam(condition1, CONDITION_PARAM_SPEED, -500)
setConditionFormula(condition1, -0.8, 0, -0.8, 0)
setCombatCondition(combat1, condition1)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition2 = createConditionObject(CONDITION_ENERGY)
setConditionParam(condition2, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition2, 10, 2000, -80)
setCombatCondition(combat2, condition2)
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 52)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition3 = createConditionObject(CONDITION_FIRE)
setConditionParam(condition3, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition3, 10, 2000, -80)
setCombatCondition(combat3, condition3)
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 3)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition4 = createConditionObject(CONDITION_POISON)
setConditionParam(condition4, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition4, 10, 2000, -80)
setCombatCondition(combat4, condition4)
local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, 2)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition5 = createConditionObject(CONDITION_CURSED)
setConditionParam(condition5, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition5, 10, 2000, -80)
setCombatCondition(combat5, condition5)
local combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 40)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition6 = createConditionObject(CONDITION_FREEZING)
setConditionParam(condition6, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition6, 10, 2000, -80)
setCombatCondition(combat6, condition6)
local combat7 = createCombatObject()
setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat7, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -0.5, -1, -0.1, -1)
local condition7 = createConditionObject(CONDITION_DAZZLED)
setConditionParam(condition7, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition7, 10, 2000, -80)
setCombatCondition(combat7, condition7)
arr1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr2 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 3, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr3 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr4 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
arr5 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
arr6 = {
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
}
arr7 = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
local area6 = createCombatArea(arr6)
local area7 = createCombatArea(arr7)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
setCombatArea(combat7, area7)
local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat3, parameters.var)
end
local function onCastSpell4(parameters)
doCombat(parameters.cid, parameters.combat4, parameters.var)
end
local function onCastSpell5(parameters)
doCombat(parameters.cid, parameters.combat5, parameters.var)
end
local function onCastSpell6(parameters)
doCombat(parameters.cid, parameters.combat6, parameters.var)
end
local function onCastSpell7(parameters)
doCombat(parameters.cid, parameters.combat7, parameters.var)
end
function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6, combat7 = combat7 }
addEvent(onCastSpell1, 100, parameters)
addEvent(onCastSpell2, 200, parameters)
addEvent(onCastSpell3, 300, parameters)
addEvent(onCastSpell4, 400, parameters)
addEvent(onCastSpell5, 500, parameters)
addEvent(onCastSpell7, 600, parameters)
addEvent(onCastSpell6, 700, parameters)
addEvent(onCastSpell7, 800, parameters)
return true
end
Legenda:
Azul Dano de cada wave (onda) da sua magia
Negrito Area das magias (arr)
Vermelho Pausa de uma wave para outra, se quizer aumente bote 100,300,500...
Pronto agora se voce viu os outros updates sabera mudar dano efeito e fazer uma otima magia bem louca
Video de Demonstraçao:
__________
Fim dos Updates (Se voce tiver alguma opniao de update MP para mim que eu faço mais updates)