Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Script Para Não Usar Magic Wall em Tal Área


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Olá amigos, estou com problema em dois eventos autómaticos, o DOTA EVENT e o ZOMBIE EVENT, o problema é o seguinte, como é uma area no pvp a magic wall fica por tempo infinito ao ser usada por algum player, teria algum script para que não fosse possivel usar a magicwall em determinado lugar?

Obrigado :D

Quem resolver ganhará +rep todos os dias :D

Link para o post
Compartilhar em outros sites
  • Solução

Data > Spells > scripts > attack > energy wall.lua

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1495)
 
local area = createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD)
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
local block_area = {
{{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}}, -- pos começo e final da area
{{x=156,y=1019,z=7}, {x=200,y=1019,z=7}},
{{x=200,y=1019,z=7}, {x=300,y=1019,z=9}}
}
for _, var in ipairs(block_area) do
if isInRange(getCreaturePosition(cid), var[1], var[2]) then
doPlayerSendCancel(cid, "você não pode jogar magic wall nesta area.") return false
end
end
return doCombat(cid, combat, var)
end
Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
é só fazer no script de magic e wild tbm
 
faz assim para ficar mais fácil de editar:
 
na sua lib vc coloca essa função:
 
function BlockRunesInArea(cid)
local block_area = { -- defina as areas
{{x=135,y=53,z=7}, {x=140,y=56,z=7}}, -- com a pos começo e final da area
{{x=135,y=46,z=7}, {x=141,y=49,z=7}},
{{x=200,y=1019,z=7}, {x=300,y=1019,z=7}}
}
for _, var in ipairs(block_area) do
if isInRange(getCreaturePosition(cid), var[1], var[2]) then
return true
end
end
return false
end
 
 
 
Data > Spells > script > support
 
magic wall rune.lua
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497)
function onCastSpell(cid, var)
if BlockRunesInArea(cid) then
doPlayerSendCancel(cid, "você não pode jogar runas nesta area.") return false
end
return doCombat(cid, combat, var) 
end
 
wild growth rune.lua
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)
function onCastSpell(cid, var)
if BlockRunesInArea(cid) then
doPlayerSendCancel(cid, "você não pode jogar runas nesta area.") return false
end
return doCombat(cid, combat, var) 
end
 
pronto, e quando quiser bloquear uma spells ou runa na area só usar
 
if BlockRunesInArea(cid) then
doPlayerSendCancel(cid, "você não pode jogar runas nesta area.") return false
end
Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

adiciona na lib então 

 

function isInRange(pos, fromPos, toPos)
    return (pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x and pos.y <= toPos.y and pos.z <= toPos.z) and TRUE or FALSE
end

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

No meu ot pra não usar em certa área é assim

local combat = createCombatObject()


setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497)
local Zombie = {
frompos = {x=1136, y=1019, z=7},
topos = {x=1169, y=1039, z=7},
}
function onCastSpell(cid, var)

local position = variantToPosition(var)

if getTilePzInfo(position) then

return false

end
if not isInArea(getPlayerPosition(cid), Zombie.frompos, Zombie.topos) then
return doCombat(cid, combat, var)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não pode usar magic wall rune nesta area.")
end
end

 

Só que eu tbm tenho 2 eventos ai como adiciono mais um nesse?

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo