Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Boa noite galera do TK...

gostaria de desenvolver um sistema .. onde certas magias teriam "level".. e que seja dificil de evoluir.. indo ate o maximo

[skill Level 5]

e quanto mais alto o skill level .. mais alto o dano das magias.. e as magias de heal dos druidas, healassem mais.. conforme o SL.

 

OBS.: Versão 8.54

 

Exemplo do sistema: 

10610780_787508707936012_804135965337934

Editado por azzouks (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

magias baseadas no level são bem tranquilas de fazer, olha só um exemplo:

local combat_lv1 = createCombatObject()
    setCombatParam(combat_lv1, COMBAT_PARAM_EFFECT, 50)
    setCombatParam(combat_lv1, COMBAT_PARAM_CREATEITEM, 1499)
    
local combat_lv2 = createCombatObject()
    setCombatParam(combat_lv2, COMBAT_PARAM_EFFECT, 50)
    setCombatParam(combat_lv2, COMBAT_PARAM_CREATEITEM, 1499)

local combat_lv3 = createCombatObject()
    setCombatParam(combat_lv3, COMBAT_PARAM_EFFECT, 50)
    setCombatParam(combat_lv3, COMBAT_PARAM_CREATEITEM, 1499)
    
local area_lv1 = createCombatArea({
    {0, 1, 0},
    {0, 0, 0},
    {0, 2, 0}
})

local area_lv2 = createCombatArea({
    {1, 1, 0},
    {0, 0, 0},
    {0, 2, 0}
})

local area_lv3 = createCombatArea({
    {1, 1, 1},
    {0, 0, 0},
    {0, 2, 0}
})

setCombatArea(combat_lv1, area_lv1)
setCombatArea(combat_lv2, area_lv2)
setCombatArea(combat_lv3, area_lv3)

local function onCastSpell1(parameters)
    doCombat(parameters.cid, combat_lv1, parameters.var)
end
 
local function onCastSpell2(parameters)
    doCombat(parameters.cid, combat_lv2, parameters.var)
end

local function onCastSpell3(parameters)
    doCombat(parameters.cid, combat_lv3, parameters.var)
end

function onCastSpell(cid, var)
local position = getCreaturePosition(cid)
local t = {
[0] = {x = position.x, y = position.y - 3, z = position.z},
[1] = {x = position.x + 3, y = position.y, z = position.z},
[2] = {x = position.x, y = position.y + 3, z = position.z},
[3] = {x = position.x - 3, y = position.y, z = position.z}
}
doSendDistanceShoot(position, t[getCreatureLookDirection(cid)], 38)

local parameters = { cid = cid, var = var}
local spell_storage = 48502

if getPlayerStorageValue(cid, spell_storage) < 15 then
    addEvent(onCastSpell1, 0, parameters)
    setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1)
elseif getPlayerStorageValue(cid, spell_storage) == 15 then
    addEvent(onCastSpell2, 0, parameters)
    setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1)
    doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 2")
        doSendMagicEffect(getCreaturePosition(cid),28)
        doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210)
elseif getPlayerStorageValue(cid, spell_storage) > 15 and getPlayerStorageValue(cid, spell_storage) < 35 then
    addEvent(onCastSpell2, 0, parameters)
    setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1)
elseif getPlayerStorageValue(cid, spell_storage) == 35 then
    addEvent(onCastSpell3, 0, parameters)
    setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1)
    doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 3")
        doSendMagicEffect(getCreaturePosition(cid),28)
        doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210)
elseif getPlayerStorageValue(cid, spell_storage) > 35 then
    addEvent(onCastSpell3, 0, parameters)
    setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1)
end
return true
 end  



não passa de uma magia repleta de checagens num valor de storage que é responsável por dizer qual dos combats será enviado, dando a sensação de que a magia melhora conforme você vai usando-a;

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

como eu dificulto o Spell Up ?

onde configuro o dano da magia ?

quero focar mais em magias de Dano, e de "cura" tipo "exura sio" "exura regen "nick "

 

me dá um exemplo nessa magia aqui.. pra eu tê-la como base:

 

 

local combat = createCombatObject()

local meteor = createCombatObject()
setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(meteor, COMBAT_PARAM_EFFECT, 36)
setCombatParam(meteor, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)
setCombatFormula(meteor, COMBAT_FORMULA_SKILL, 0.8, -220, 1.2, -200)

local meteor2 = createCombatObject()
setCombatParam(meteor2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

local stun = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(stun, CONDITION_PARAM_DELAYED, 25)
addDamageCondition(stun, 500, 5, -2000)
setCombatCondition(meteor, stun)

combat_arr= {
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
}

local combat_area = createCombatArea(combat_arr)
setCombatArea(combat, combat_area)

local function meteorCast(p)
doCombat(p.cid, p.combat, positionToVariant(p.pos))
end

local function stunEffect(cid)
doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)
end

function onTargetTile(cid, pos)
if (math.random(0, 0) == 0) then
local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
if (isInArray(water, ground.itemid) == TRUE) then
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water})
else
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = meteor})
end
end
end

setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

local cooldown = 5

function onCastSpell(cid, var)
function exoribleed(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "CD: Exori Bleed.")
end
if getPlayerStorageValue(cid, 10569) == 1 then
doSendAnimatedText((getCreaturePosition(cid)), "Socorro!", 255)
doSendMagicEffect(getCreaturePosition(cid), 19)
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return false
end

if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, cooldown)
addEvent(exoribleed, cooldown*1000, cid)
return doCombat(cid, combat, var)

else
doSendMagicEffect(getCreaturePosition(cid), 2)
doPlayerSendCancel(cid, "Golpe em cooldown por " ..exhaustion.get(cid, 23006).." segundos")
return false
end
    return doCombat(cid, combat, var)
end

 

Editado por azzouks (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

essa spell é a original ou vc tentou editar e tá postando oque fez? porque ao meu ver isso daí tá cheio de coisas desnecesárias...

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

muita coisa, se liga:
 

 

 

local combat = createCombatObject() -- combat nao usado

local meteor = createCombatObject()
setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(meteor, COMBAT_PARAM_EFFECT, 36)
setCombatParam(meteor, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)
setCombatFormula(meteor, COMBAT_FORMULA_SKILL, 0.8, -220, 1.2, -200)

local meteor2 = createCombatObject() -- nao existe nenhuma utilização pra meteor2, só pra meteor_water.
setCombatParam(meteor2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

local stun = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(stun, CONDITION_PARAM_DELAYED, 25)
addDamageCondition(stun, 500, 5, -2000)
setCombatCondition(meteor, stun)

combat_arr= {
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
}

local combat_area = createCombatArea(combat_arr) -- aqui vc tá setando a area no combat pra dps vincular o combat com o meteor, era mt mais facil vincular com o meteor direto.
setCombatArea(combat, combat_area)

local function meteorCast(p)
doCombat(p.cid, p.combat, positionToVariant(p.pos))
end

local function stunEffect(cid)
doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)
end

function onTargetTile(cid, pos)
if (math.random(0, 0) == 0) then
local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
if (isInArray(water, ground.itemid) == TRUE) then
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water}) --- nao existe meteor_water
else
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = meteor})
end
end
end

setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

local cooldown = 5

function onCastSpell(cid, var)
function exoribleed(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "CD: Exori Bleed.")
end
if getPlayerStorageValue(cid, 10569) == 1 then
doSendAnimatedText((getCreaturePosition(cid)), "Socorro!", 255)
doSendMagicEffect(getCreaturePosition(cid), 19)
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return false
end

if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, cooldown)
addEvent(exoribleed, cooldown*1000, cid)
return doCombat(cid, combat, var)

else
doSendMagicEffect(getCreaturePosition(cid), 2)
doPlayerSendCancel(cid, "Golpe em cooldown por " ..exhaustion.get(cid, 23006).." segundos")
return false
end
    return doCombat(cid, combat, var)
end

 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

[14/01/2015 21:24:12] [Error - Spell Interface]
[14/01/2015 21:24:12] data/spells/scripts/attack/Exori Bleed.lua
[14/01/2015 21:24:12] Description:
[14/01/2015 21:24:12] (luaGetCreatureStorage) Creature not found

[14/01/2015 21:24:12] [Error - Spell Interface]
[14/01/2015 21:24:12] data/spells/scripts/attack/Exori Bleed.lua
[14/01/2015 21:24:13] Description:
[14/01/2015 21:24:13] data/spells/scripts/attack/Exori Bleed.lua:95: attempt to compare boolean with number
[14/01/2015 21:24:13] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/attack/Exori Bleed.lua)


local meteor_lv1 = createCombatObject()
setCombatParam(meteor_lv1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(meteor_lv1, COMBAT_PARAM_EFFECT, 36)
setCombatParam(meteor_lv1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)
setCombatFormula(meteor_lv1, COMBAT_FORMULA_SKILL, 0.8, -220, 1.2, -200)

local stun_lv1 = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(stun_lv1, CONDITION_PARAM_DELAYED, 25)
addDamageCondition(stun_lv1, 500, 5, -2000)
setCombatCondition(meteor_lv1, stun_lv1)

local meteor_lv2 = createCombatObject()
setCombatParam(meteor_lv2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(meteor_lv2, COMBAT_PARAM_EFFECT, 36)
setCombatParam(meteor_lv2, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)
setCombatFormula(meteor_lv2, COMBAT_FORMULA_SKILL, 1.3, -270, 1.8, -240)

local stun_lv2 = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(stun_lv2, CONDITION_PARAM_DELAYED, 25)
addDamageCondition(stun_lv2, 600, 6, -2300)
setCombatCondition(meteor_lv2, stun_lv2)

local meteor_lv3 = createCombatObject()
setCombatParam(meteor_lv3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(meteor_lv3, COMBAT_PARAM_EFFECT, 36)
setCombatParam(meteor_lv3, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)
setCombatFormula(meteor_lv3, COMBAT_FORMULA_SKILL, 1.8, -320, 2.4, -280)

local stun_lv3 = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(stun_lv3, CONDITION_PARAM_DELAYED, 25)
addDamageCondition(stun_lv3, 800, 8, -2500)
setCombatCondition(meteor_lv3, stun_lv3)

local area_lv1 = createCombatArea({
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
})

local area_lv2 = createCombatArea({
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
})

local area_lv3 = createCombatArea({
{1, 1, 1},
{1, 2, 1},
{1, 1, 1}
})

setCombatArea(meteor_lv1, area_lv1)
setCombatArea(meteor_lv2, area_lv2)
setCombatArea(meteor_lv3, area_lv3)

local function onCastSpell1(parameters)
doCombat(parameters.cid, meteor_lv1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, meteor_lv2, parameters.var)
end

local function onCastSpell3(parameters)
doCombat(parameters.cid, meteor_lv3, parameters.var)
end
local function meteorCast(p)
doCombat(p.cid, p.combat, positionToVariant(p.pos))
end

local function stunEffect(cid)
doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)
end

function onTargetTile(cid, pos)
if (math.random(0, 0) == 0) then
local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
if (isInArray(water, ground.itemid) == TRUE) then
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_lv1})
else
local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
doSendDistanceShoot(newpos, pos, CONST_ANI_FIRE)
addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = meteor_lv1})
end
end
end

setCombatCallback(meteor_lv1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

local parameters = { cid = cid, var = var}
local spell_storage = 48502

if getPlayerStorageValue(cid, 48502) <= 49 then
addEvent(onCastSpell1, 0, parameters)
setPlayerStorageValue(cid, 48502, getPlayerStorageValue(cid, 48502)+1)
elseif getPlayerStorageValue(cid, 48502) == 50 then
addEvent(onCastSpell2, 0, parameters)
setPlayerStorageValue(cid, 48502, getPlayerStorageValue(cid, 48502)+1)
doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 2")
doSendMagicEffect(getCreaturePosition(cid),28)
doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210)
elseif getPlayerStorageValue(cid, 48502) > 50 and getPlayerStorageValue(cid, 48502) < 100 then
addEvent(onCastSpell2, 0, parameters)
setPlayerStorageValue(cid, 48502, getPlayerStorageValue(cid, 48502)+1)
elseif getPlayerStorageValue(cid, 48502) == 100 then
addEvent(onCastSpell3, 0, parameters)
setPlayerStorageValue(cid, 48502, getPlayerStorageValue(cid, 48502)+1)
doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 3")
doSendMagicEffect(getCreaturePosition(cid),28)
doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210)
elseif getPlayerStorageValue(cid, 48502) > 100 then
addEvent(onCastSpell3, 0, parameters)
setPlayerStorageValue(cid, 48502, getPlayerStorageValue(cid, 48502)+1)
end

local cooldown = 5

function onCastSpell(cid, var)
function exoribleed(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "CD: Exori Bleed.")
end
if getPlayerStorageValue(cid, 10569) == 1 then
doSendAnimatedText((getCreaturePosition(cid)), "Socorro!", 255)
doSendMagicEffect(getCreaturePosition(cid), 19)
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return false
end

if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, cooldown)
addEvent(exoribleed, cooldown*1000, cid)
return doCombat(cid, combat, var)

else
doSendMagicEffect(getCreaturePosition(cid), 2)
doPlayerSendCancel(cid, "Golpe em cooldown por " ..exhaustion.get(cid, 23006).." segundos")
return false
end
return doCombat(cid, combat, var)
end

 

Alguem ?

Editado por azzouks (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo