Ir para conteúdo
  • 0

Erro ao usar uma magia em protection zone


AdilsonHacker

Pergunta

Bom, estou com um problema ao usar uma magia de range dentro do pz, coloquei para nao fazer efeito ao usar ela dentro do protection zone, apenas fora de pz q ele deve fazer efeito, funciona de boas só que da o seguinte erro:

25owidg.png

 

Spell:

 

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 80)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 20)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB,20)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD,20)
setConditionParam(condition, CONDITION_PARAM_TICKS, 40000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
 
function getWalkableTiles(cid, pos, radius) --Function util :­)
local ret={}
for x=0, math.abs(pos.x-radius-(pos.x+radius)) do for y=0, math.abs(pos.y-radius-(pos.y+radius)) do
local npos={x=pos.x-radius+x, y=pos.y-radius+y,z=pos.z,stackpos=253} local temp=nil
if cid~=0 and (getThingFromPos(npos).uid==0 or getThingFromPos(npos).uid==cid) then temp=true elseif cid==0 then temp=true end 
if temp and not getTilePzInfo(npos) then table.insert(ret, npos) end end end
return #ret>0 and ret or false end
 
function onCastSpell(cid, var)
doCreatureSay(cid,"For Garrosh!", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid),CONST_ME_STONES)
tiles=getWalkableTiles(cid, getPlayerPosition(cid), 1)
for a=1,#tiles do doSendMagicEffect(tiles[a],0) end
return doAddCondition(cid, condition)
end

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Tente assim:

 

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 80)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 20)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB,20)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD,20)
setConditionParam(condition, CONDITION_PARAM_TICKS, 40000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
 
function getWalkableTiles(cid, pos, radius)
	local ret = {}
	for x = 0, math.abs(pos.x - radius - (pos.x + radius)) do
		for y=0, math.abs(pos.y - radius - (pos.y + radius)) do
			local npos = {x = pos.x - radius + x, y = pos.y - radius + y, z = pos.z, stackpos=253}
			local temp = nil
			if cid ~= 0 and (getThingFromPos(npos).uid == 0 or getThingFromPos(npos).uid == cid) then
				temp = true
			elseif cid == 0 then
				temp = true
			end 
			if temp then
				table.insert(ret, npos)
			end
		end
	end
	return #ret > 0 and ret or false
end
 
function onCastSpell(cid, var)
	if getTilePzInfo(getPlayerPosition(cid)) then return false end
	doCreatureSay(cid,"For Garrosh!", TALKTYPE_ORANGE_1)
	doSendMagicEffect(getPlayerPosition(cid),CONST_ME_STONES)
	tiles = getWalkableTiles(cid, getPlayerPosition(cid), 1)
	for a=1,#tiles do
		doSendMagicEffect(tiles[a], 0)
	end
	return doAddCondition(cid, condition)
end 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou, porém queria que ao tentar usar a magia em uma protection zone falasse uma mensagem tipo "você não pode usar essa magia em uma protection zone e aparecesse um efeito spoof"

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

  • 0

Funcionou, porém queria que ao tentar usar a magia em uma protection zone falasse uma mensagem tipo "você não pode usar essa magia em uma protection zone e aparecesse um efeito spoof"

Segue:

 

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 80)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 20)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB,20)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD,20)
setConditionParam(condition, CONDITION_PARAM_TICKS, 40000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
 
function getWalkableTiles(cid, pos, radius)
	local ret = {}
	for x = 0, math.abs(pos.x - radius - (pos.x + radius)) do
		for y=0, math.abs(pos.y - radius - (pos.y + radius)) do
			local npos = {x = pos.x - radius + x, y = pos.y - radius + y, z = pos.z, stackpos=253}
			local temp = nil
			if cid ~= 0 and (getThingFromPos(npos).uid == 0 or getThingFromPos(npos).uid == cid) then
				temp = true
			elseif cid == 0 then
				temp = true
			end 
			if temp then
				table.insert(ret, npos)
			end
		end
	end
	return #ret > 0 and ret or false
end
 
function onCastSpell(cid, var)
	if getTilePzInfo(getPlayerPosition(cid)) then 
		doPlayerSendCancel(cid, "Essa magia nao pode ser usada em protection zone.")
		return false
	end
	doCreatureSay(cid,"For Garrosh!", TALKTYPE_ORANGE_1)
	doSendMagicEffect(getPlayerPosition(cid),CONST_ME_STONES)
	tiles = getWalkableTiles(cid, getPlayerPosition(cid), 1)
	for a=1,#tiles do
		doSendMagicEffect(tiles[a], 0)
	end
	return doAddCondition(cid, condition)
end 

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...