AD
dúvida

Erro ao usar uma magia em protection zone

Por AdilsonHacker, 11 de mai. de 2015 em Scripts

resolvido
6
1.1k
AdilsonHackerA
11 de maio de 2015 às 11:29

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

BrunoB
11 de maio de 2015 às 11:46

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 

 

 

AdilsonHackerA
11 de maio de 2015 às 11:51

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 Maio 11 por AdilsonTsunami

BrunoB
11 de maio de 2015 às 11:59
Melhor resposta

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 

 

 

AdilsonHackerA
11 de maio de 2015 às 12:05

Obrigado!

FurabioF
11 de maio de 2015 às 17:49

Tópico movido para a seção de dúvidas e pedidos resolvidos.