Ir para conteúdo
  • 0

Ajuda script de SD


Bragony

Pergunta

Olá, boa tarde.

 

Gostaria de saber se é possível adaptar a fórmula antiga das SD's, como era feita, nos dias de hoje...

 

Segue o modelo do otserver 7.6:

 

-- doTargetMagic

-- attackType: Type of attack

-- cid: creature id.

-- Targetpos: Target position.

-- animationEffect: Projectile animation.

-- damageEffect: Effect to show when spell hits a player.

-- animationColor: Color of the text that is shown above the player when hit.

-- offensive: Indicates if the spell is a healing/attack spell.

-- drawblood: Determines if the spell causes blood splash.

-- minDmg: Minimal damage.

-- maxDmg: Maximum damage.

-- returns true if the spell was casted.

 

attackType = ATTACK_PHYSICAL

animationEffect = NM_ANI_SUDDENDEATH

 

hitEffect = NM_ME_MORT_AREA

damageEffect = NM_ME_DRAW_BLOOD

animationColor = RED

offensive = true

drawblood = true

 

SuddenDeathObject = (attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0)

 

function onCast(cid, creaturePos, level, maglv, var)

centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}

 

SuddenDeathObject.minDmg = (level * 2 + maglv *3) * 1.2 - 30

SuddenDeathObject.maxDmg = (level * 2 + maglv *3) * 1.6

 

return doTargetMagic(cid, centerpos, SuddenDeathObject:ordered())

end

 

 

E o modelo atual:

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)

setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.005, -25, -1.75, 0)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Ok... Gostaria de usar o método de fórmula antigo.

 

Com um mínimo dependendo do level e do mlevel, e um máximo também. Imagino que o novo jeito já faça isso, só que de uma maneira muito camuflada...

 

Queria algo assim como na formula antiga:

 

Dano mínimo: 10*lvl+5*ml-30

Dano maximo: 10*lvl+7*ml-20

 

Deu pra entender?

 

Desde ja obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Dalvorsn, testei a fórmula, mas deu erro na interface:

 

Data/spells/scripts/atack/sudden death.lua:10: attempt to perform arithmetic on global 'level' - a nil value

Stack trackback:

Data/spells/scripts/atack/sudden death.lua:10: in function <data/spells/cripts/atack/sudden death.lua:5>

 

 

E agora?

 

Obrigado pela ajuda.

Editado por Bragony
Link para o comentário
Compartilhar em outros sites

  • 0

Troca por:

 

 

 

 

local attackType = COMBAT_PHYSICALDAMAGE

local hitEffect = CONST_ME_MORTAREA

local distanceEffect = CONST_ANI_DEATH

 

function onCastSpell(cid, var)

local target = getCreatureTarget(cid)

if target then

local lvl, maglv = getPlayerLevel(cid), getPlayerMagLevel(cid)

local frompos, topos = getThingPos(cid), getThingPos(target)

local minDmg = (lvl * 2 + maglv *3) * 1.2 - 30

local maxDmg = (lvl * 2 + maglv *3) * 1.6

 

doTargetCombatHealth(cid, target, attackType, minDmg, maxDmg, hitEffect)

doSendDistanceShoot(frompos, topos, distanceEffect)

return true

end

 

return false

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Dalvorsn, testei a fórmula, mas deu erro na interface:

 

Data/spells/scripts/atack/sudden death.lua:10: attempt to perform arithmetic on global 'level' - a nil value

Stack trackback:

Data/spells/scripts/atack/sudden death.lua:10: in function <data/spells/cripts/atack/sudden death.lua:5>

 

 

E agora?

 

Obrigado pela ajuda.

 

Foi uma variavel que declarei com um nome e usei com outro, falta de atenção.

 

2buZXaKQ[/pastebin]

Link para o comentário
Compartilhar em outros sites

  • 0

Testei os dois, e ambos deram o mesmo problema! Ah, e pela ajuda, depois vou dar rep pros dois, muito obrigado!

 

O problema foi esse:

 

[25/02/2013 13:36:57] [Error - Spell Interface]

[25/02/2013 13:36:57] data/spells/scripts/attack/sudden death.lua:onCastSpell

[25/02/2013 13:36:57] Description:

[25/02/2013 13:36:57] (luaDoTargetCombatHealth) Creature not found

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta:

 

 

local attackType = COMBAT_PHYSICALDAMAGE

local hitEffect = CONST_ME_MORTAREA

local distanceEffect = CONST_ANI_DEATH

 

function onCastSpell(cid, var)

local target = getCreatureTarget(cid)

if target then

local lvl, maglv = getPlayerLevel(cid), getPlayerMagLevel(cid)

local frompos, topos = getThingPos(cid), getThingPos(target)

local minDmg = (lvl * 2 + maglv *3) * 1.2 - 30

local maxDmg = (lvl * 2 + maglv *3) * 1.6

 

doTargetCombatHealth(cid, target, type, min, max, effect, false)

doSendDistanceShoot(frompos, topos, distanceEffect)

return true

end

 

return false

end

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Agora deu isso:

 

[25/02/2013 14:26:02] [Error - Spell Interface]

[25/02/2013 14:26:02] data/spells/scripts/attack/sudden death.lua:onCastSpell

[25/02/2013 14:26:02] Description:

[25/02/2013 14:26:02] (luaDoTargetCombatHealth) Creature not found

 

Quando uso manualmente, sem hotkey, a sd não funciona.

 

Quando uso com hotkey a SD vai, mas não da nenhum damage.

 

Continua tentando por favor!

Link para o comentário
Compartilhar em outros sites

  • 0

 

local attackType = COMBAT_PHYSICALDAMAGE

local hitEffect = CONST_ME_MORTAREA

local distanceEffect = CONST_ANI_DEATH

 

function onCastSpell(cid, var)

local target = getCreatureTarget(cid)

if target then

local lvl, maglv = getPlayerLevel(cid), getPlayerMagLevel(cid)

local frompos, topos = getThingPos(cid), getThingPos(target)

local minDmg = (lvl * 2 + maglv *3) * 1.2 - 30

local maxDmg = (lvl * 2 + maglv *3) * 1.6

 

doTargetCombatHealth(cid, target, type, min, max, effect, true)

doSendDistanceShoot(frompos, topos, distanceEffect)

return true

end

 

return false

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Esqueci que retornava um thing, enfim ajustado.

vxyzKZEd[/pastebin]

 

foi editado, tava com um errinho

 

Olá novamente Dalvorsn, obrigado por tentar ajudar! Deu isso agora:

 

[25/02/2013 14:49:53] [Error - Spell Interface]

[25/02/2013 14:49:53] data/spells/scripts/attack/sudden death.lua:onCastSpell

[25/02/2013 14:49:53] Description:

[25/02/2013 14:49:53] data/spells/scripts/attack/sudden death.lua:9: attempt to index local 'target' (a number value)

[25/02/2013 14:49:53] stack traceback:

[25/02/2013 14:49:53] data/spells/scripts/attack/sudden death.lua:9: in function <data/spells/scripts/attack/sudden death.lua:5>

 

 

local attackType = COMBAT_PHYSICALDAMAGE

local hitEffect = CONST_ME_MORTAREA

local distanceEffect = CONST_ANI_DEATH

 

function onCastSpell(cid, var)

local target = getCreatureTarget(cid)

if target then

local lvl, maglv = getPlayerLevel(cid), getPlayerMagLevel(cid)

local frompos, topos = getThingPos(cid), getThingPos(target)

local minDmg = (lvl * 2 + maglv *3) * 1.2 - 30

local maxDmg = (lvl * 2 + maglv *3) * 1.6

 

doTargetCombatHealth(cid, target, type, min, max, effect, true)

doSendDistanceShoot(frompos, topos, distanceEffect)

return true

end

 

return false

end

 

 

Continou igual a da última vez, quando usado manualmente, com o "use with", a runa nem sai; quando a hotkey é usada a runa sai, mas não faz nenhum dano.

 

Por favor não desista!!

Link para o comentário
Compartilhar em outros sites

  • 0

Agora vai ne possível.

76F9hmND[/pastebin]

 

Boaa funcionou!

 

Mas com dois poréns.

 

Primeiro ela ta healando, não tirando dano, imagino que seja só tirar o sinal ali, sei lá.

 

Segundo ela não funciona sem ser com a hotkey...

 

Pode dar mais essa maozinha?

Link para o comentário
Compartilhar em outros sites

  • 0

Agora vai ne possível.

76F9hmND[/pastebin]

 

Boaa funcionou!

 

Mas com dois poréns.

 

Primeiro ela ta healando, não tirando dano, imagino que seja só tirar o sinal ali, sei lá.

 

Segundo ela não funciona sem ser com a hotkey...

 

Pode dar mais essa maozinha?

 

Quanto ao fato de estar healando é fácil, é só substituir isso:

doTargetCombatHealth(cid, target, attackType, minDmg, maxDmg, hitEffect)

Por isso:

doTargetCombatHealth(cid, target, attackType, -minDmg, -maxDmg, hitEffect)

Basicamente mudar o sinal, agora quanto o outro problema eu não sei cara, eu teria que pesquisar primeiro porque é estranho só a hotkey ativar a spell sendo que se não me engano ambas enviam pacotes de 'use'

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...