Jump to content

Recommended Posts

Bom, criei esse tópico,

para ensinar como fazer aquelas armas que soltam 6 elementos

igual Servs do tipo "kamikaze".

Vejo muita gente querendo saber como criar essas armas e

vejo poucos Tutoriais ensinando a criaras.

Bom, Chega de Papo furado e vamos a o Scripter

 

 

Vá na pasta do seu Ot em data/items Abra o items.xml, procure pelo item que você vai usar e substitua por isso:

<item id="1234 article="a" name="Seis Elementos">

<attribute key="weight" value="4000"/>
<attribute key="description" value="You read: |PLAYERNAME| dono deste item."/>
<attribute key="weaponType" value="wand"/>
<attribute key="range" value="9"/>
</item>

Vermelho= Id do Item que vai soltar os 6 elementos
Verde= Nome do Item que vai soltar os 6 elementos
Azul claro= Peso do item que vai soltar os 6 elementos
Azul escuro= Tipo do Item que vai soltar os 6 Elementos ( Wand para Armas de Mage)-(Sword para armas de Knight)-(Distance para armas de Paladin)
Marrom= Quantos Sqm o item vai atingir o Inimigo (Se for arma de Knight tipo Sword, você tira essa Opção)
Agora vá em data/weapons/scripts e Crie um arquivo com nome de seiselementos.lua e cole isso lá:
w = {
[1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE},
[2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE},
[3] = {ef = 45, sh = 38, dmg = COMBAT_POISONDAMAGE},
[4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE},
[5] = {ef = 11, sh = 35, dmg = COMBAT_ENERGYDAMAGE},
[6] = {ef = 31, sh = 35, dmg = COMBAT_PHYSICALDAMAGE},
[7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE}
}
 
function onUseWeapon(cid, var)
min, max = 100 , 200 -- dano minimo e maximo
target = getCreatureTarget(cid)
wx = w[math.random(1, #w)]
doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh)
addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef)
end
return true
end

Agora vá em data/weapons abra o seu weapons.xml e cole Isto lá:

 

Se for Wand ou Rod:

<wand id="123" level="20" mana="10" min="0" max="0" type="physical" event="script" value="seislementos.lua"> <!-- New Wand -->

<vocation id="2"/>
<vocation id="6"/>
</wand>
Se for Sword,axe ou club:
<melee id="123" level="60" unproperly="1" event="script" value="seiselementos.lua"/>
<vocation id="4"/>
<vocation id="8"/>
</melee>
Se for Star,spear:
<distance id="123" level="20" event="script" value="seiselementos.lua"/>"<!-- New Star -->
Se for Arrow ou Bolt:

<distance id="123" event="script" value="seislementos.lua"/>

Como Configurar:
Vermelho= Id da Arma
Verde= Level para usar a Arma
Marrom= Mana que gastara quando a Arma for usada
Azul claro= Deixe os dois em 0, o Dano da Wand ou Rod não e definido por ai, e sim la no arquivo.lua dela como mostrei acima /\
Azul escuro= Id da Vocation que poderam usar a Arma
Pronto, Agora sua Arma esta Pronta !
Edited by Shoguns
Link to comment
Share on other sites

Esta bom, mas da pra melhorar, por exemplo: como adicionar local nas tabelas e tambem retirar a funçao if target ~= 0 then pois nao tem necessidade.

 

 

Observaçoes: se no script ja tem a funçao doSendDistanceShoot porque no item tem o shootType?

Link to comment
Share on other sites

Esta bom, mas da pra melhorar, por exemplo: como adicionar local nas tabelas e tambem retirar a funçao if target ~= 0 then pois nao tem necessidade.

 

 

Observaçoes: se no script ja tem a funçao doSendDistanceShoot porque no item tem o shootType?

 

 

Vlw pela dica, vou estar atualizando o Tutorial.

Link to comment
Share on other sites

w = {
[1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE},
[2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE},
[3] = {ef = 45, sh = 38, dmg = COMBAT_POISONDAMAGE},
[4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE},
[5] = {ef = 11, sh = 35, dmg = COMBAT_ENERGYDAMAGE},
[6] = {ef = 31, sh = 35, dmg = COMBAT_PHYSICALDAMAGE},
[7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE}
}
 
function onUseWeapon(cid, var)
min, max = 100 , 200 -- dano minimo e maximo
target = getCreatureTarget(cid)
wx = w[math.random(1, #w)]
doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh)
addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef)
end
return true
end

Voce esqueceu de retirar o end...

 

 

no meu caso eu deixei assim:

local w = {
[1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE},
[2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE},
[3] = {ef = 45, sh = 38, dmg = COMBAT_POISONDAMAGE},
[4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE},
[5] = {ef = 11, sh = 35, dmg = COMBAT_ENERGYDAMAGE},
[6] = {ef = 31, sh = 35, dmg = COMBAT_PHYSICALDAMAGE},
[7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE}
}
 
function onUseWeapon(cid, var)
local min, max = 100, 200 -- dano minimo e maximo

local target = getCreatureTarget(cid)
local wx = w[math.random(#w)]

doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh)
addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef)
return true
end
Link to comment
Share on other sites

×
×
  • Create New...