Ir para conteúdo

Featured Replies

Postado

.Qual servidor ou website você utiliza como base? 

otservbr-global

Qual o motivo deste tópico? 

Eu estou tentando fazer uma wand editada, a ideia é fazer ela bater em area, q nem era a burst arrow antigamente, aí fiz o script (anexado ai), só q tipo, eu queria q a area fosse aleatoria, n ficasse sempre batendo nos msm sqm tipo:

Ora bate assim                    Ora assim

❤️?❤️                             ?❤️?
❤️❤️❤️                             ❤️❤️?
??❤️                             ?❤️❤️

e por ai vai

 

Eu lembro q antigamente, qd ia escrever a area, dava pra por o 2 e ela servia como random, mas hj n dá em nda =\

Você tem o código disponível? Se tiver publique-o aqui: 

Spoiler

local area = createCombatArea({
     {1, 0, 1},
     {0, 3, 0},
     {1, 0, 1}
 })
 
 local combat = Combat()

 combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
 combat:setArea(area)

 
function onGetFormulaValues(player, level, maglevel)
    local min = (maglevel / 2)
    local max = (maglevel * 2)
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")


 function onUseWeapon(player, variant)
    
     return combat:execute(player, variant)
 end
 

 

Editado por Artur Henrique (veja o histórico de edições)

Resolvido por LeoTK

Ir para solução
Postado
  • Autor

 

1 hora atrás, LeoTK disse:

@Artur Henrique você precisar criar as variações e depois usar math.random para selecionar as áreas a cada hit porém existe várias maneiras de fazer o mesmo também

Então, só que tipo, independente doq eu faça, o setArea não pode ficar dentro de uma function, ou seja, vai ser carregado só quando o server abrir, entao meio q vai ser um "random" q vai ser sorteado só qd o server abre, vc consegue me dar um "norte" pra isso?

Postado
  • Solução

@Artur Henrique achei este código em outro fórum porém é de uma magia da uma estudada e tenta implementar no seu já é meio caminho andado

 

Spoiler




local acombat, combat = createCombatObject(), createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_NONE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ARROW)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -9, 0.3, -5)

local arr1 = {
	{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, 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, 1, 1, 1},
	{1, 1, 1, 1, 1, 1, 1, 3, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
}

setCombatArea(acombat, createCombatArea(arr1))

function onTargetTile(cid, pos)
	return math.random(2) == 1 and doCombat(cid, combat, positionToVariant(pos))
end
setCombatCallback(acombat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onCastSpell(cid, var)
	return doCombat(cid, acombat, var)
end


 

 


achei esse código também

 

Spoiler



local areaCombat, combat = createCombatObject(), createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 7)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 1, -0.3, 1)
local myArray = {{3}}
local area = createCombatArea(myArray)
setCombatArea(areaCombat, area)
function onTargetTile(cid, pos)
    local posx, posy = math.random(-1,1), math.random(-1,1)
    return doCombat(cid, combat, positionToVariant({x = pos.x + posx, y = pos.y + posy, z = pos.z}))
end
setCombatCallback(areaCombat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
function onCastSpell(cid, var)
    addEvent(doCombat, 100, cid, areaCombat, var)
    addEvent(doCombat, 200, cid, areaCombat, var)
    addEvent(doCombat, 300, cid, areaCombat, var)
    return doCombat(cid, areaCombat, var)
end


 

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Postado
  • Autor

Consegui, dei uma improvisada com os ifs e ficou bacana! brigadao ai ?
depois eu vou tentar arrumar pra n bater 2x no msm sqm
 

Spoiler

local areaCombat, combat = createCombatObject(), createCombatObject()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
 
function onGetFormulaValues(player, level, maglevel)
    local min = (maglevel / 2)
    local max = (maglevel * 2)
    return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local myArray = {{3}}
local area = createCombatArea(myArray)
setCombatArea(areaCombat, area)

function onTargetTile(cid, pos)
    local posx, posy = math.random(-1,1), math.random(-1,1)
    local posx2, posy2 = math.random(-1,1), math.random(-1,1)
    local posx3, posy3 = math.random(-1,1), math.random(-1,1)
    local posx4, posy4 = math.random(-1,1), math.random(-1,1)
    local posx5, posy5 = math.random(-1,1), math.random(-1,1)
    if posx == posy == 0 then
    local posx, posy = math.random(-1,1), math.random(-1,1)
        if posx == posy == 0 then    
            local posx, posy = 0, 1
        end
    end
    if posx2 == posy2 == 0 then
    local posx2, posy2 = math.random(-1,1), math.random(-1,1)
        if posx2 == posy2 == 0 then    
            local posx2, posy2 = 0, -1
        end
    end
    if posx3 == posy3 == 0 then
    local posx3, posy3 = math.random(-1,1), math.random(-1,1)
        if posx3 == posy3 == 0 then    
            local posx3, posy3 = 1, 0
        end
    end
    if posx4 == posy4 == 0 then
    local posx4, posy4 = math.random(-1,1), math.random(-1,1)
        if posx4 == posy4 == 0 then    
            local posx4, posy4 = -1, 0
        end
    end
    if posx5 == posy5 == 0 then
    local posx5, posy5 = math.random(-1,1), math.random(-1,1)
        if posx5 == posy5 == 0 then    
           local posx5, posy5 = math.random(-1,1), math.random(-1,1)
        end
    end
    return doCombat(cid, combat, positionToVariant({x = (pos.x + posx5), y = (pos.y + posy5), z = pos.z})), doCombat(cid, combat, positionToVariant({x = pos.x, y = pos.y, z = pos.z})), doCombat(cid, combat, positionToVariant({x = (pos.x + posx4), y = (pos.y + posy4), z = pos.z})), doCombat(cid, combat, positionToVariant({x = (pos.x + posx3), y = (pos.y + posy3), z = pos.z})), doCombat(cid, combat, positionToVariant({x = (pos.x + posx2), y = (pos.y + posy2), z = pos.z}))
end

setCombatCallback(areaCombat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onUseWeapon(cid, var)
    return doCombat(cid, areaCombat, var)
end


 

 

Editado por Artur Henrique (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo