Ir para conteúdo
  • 0

Spell's - "pular" "esquivar" "puxar" "empurrar"


beddy

Pergunta

Bem, não sou muito bom com spells por isso estou pedindo ajuda.

 

Pular - Queria que ao utilizar a spell, o seu char iria pular 3 SQM para frente da posicao de onde voce está. (Sendo que não seria possivel pular para PZ, nem para dentro de casas)

 

Esquivar - Queria que ao utilizar a spell, o seu char iria pular 3 SQM para traz da posicao de onde voce está. (Sendo que não seria possivel pular para PZ, nem para dentro de casas)

 

Puxar - Utilizando efeito em uma area de 4x4, queria uma magia para poder puxar o player inimigo ou o monstro inimigo, para proximo de voce.

 

Empurrar - Utilizando efeito em uma area de 4x4, queria uma magia para poder empurrar o player inimigo ou o monstro inimigo, para mais distance de voce, 6 SQM.

 

Agradeço desde já. Estou no Aguardo.

 

Irá me ajudar muito. REP+ para o scripter!

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Pular - Queria que ao utilizar a spell, o seu char iria pular 3 SQM para frente da posicao de onde voce está. (Sendo que não seria possivel pular para PZ, nem para dentro de casas)

 

 

Créditos : Jhon992

local quantSqm = 3 -- quantidade de sqms

function teleportPlayer(cid, position)
if (isPlayer(cid)) then
local o = 1
local positions = {}
	for i=1, quantSqm do	
					if getPlayerLookDir(cid) == 0 then
									position = {x=position.x, y=position.y-1, z=position.z}
					elseif getPlayerLookDir(cid) == 1 then
									position = {x=position.x+1, y=position.y, z=position.z}								
					elseif getPlayerLookDir(cid) == 2 then
									position = {x=position.x, y=position.y+1, z=position.z}
					elseif getPlayerLookDir(cid) == 3 then
									position = {x=position.x-1, y=position.y, z=position.z}
					end
					if isWalkable(position) then
							o = o+1
					end
					positions[#positions+1] = position				
	end
	if o > quantSqm then
					doTeleportThing(cid, position)
			for i=1, #positions do
					doSendMagicEffect(positions[i], CONST_ME_TELEPORT)
			end
					return true
	else
					doPlayerSendCancel(cid, "Você não pode atravesar isso!")
					return false
	end
end
end

function isWalkable(pos, creature, pz, proj) -- nord
	if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	local creature = getTopCreature(pos)
	if creature.type > 0 then	   return false end
	if getTilePzInfo(pos) and not pz then return false end
	local n = not proj and 3 or 2
	for i = 0, 255 do
					pos.stackpos = i
					local tile = getTileThingByPos(pos)
					if tile.itemid ~= 0 and not isCreature(tile.uid) then
									if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
													return false
									end
					end
	end
return true
end

function onCastSpell(cid, var)
	if teleportPlayer(cid, getPlayerPosition(cid)) then
					return true
	end
end

 

OBS: Ele salta para dentro da PZ. Não sei consertar. Espero que outra pessoa possa te ajudar.

 

 

Puxar - Utilizando efeito em uma area de 4x4, queria uma magia para poder puxar o player inimigo ou o monstro inimigo, para proximo de voce.

 

Créditos : yazoo (######)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)


arr = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function abs(i)
if(i>0) then
return i
else return (i*(-1))
end
end

function onCastSpell(cid, var)
pos=getPlayerPosition(cid)
player = getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos= 253})
raio=5 -- alcance do buraco negro
i=((pos.x)-raio)
while(i<=((pos.x)+raio)) do
j=((pos.y)-raio)
while(j<=((pos.y)+raio)) do
player=getThingfromPos({x=i,y=j,z=pos.z,stackpos=2 53})
if(((getPlayerLevel(player.uid)>0) or (isCreature(player.uid)==1))and ((abs(i-(pos.x)) > 1) or (abs(j-(pos.y)) > 1))) then

-- calcula novo X
if(i<pos.x) then
newx=i+1
elseif(i==pos.x) then
newx=i
else newx=i-1
end

-- calcula novo Y
if(j<pos.y) then
newy=j+1
elseif(j==pos.y) then
newy=j
else newy=j-1
end

npos={x=newx,y=newy,z=pos.z}
doSendMagicEffect(npos,12)
doTeleportThing(player.uid,npos)
end
j=j+1
end
i=i+1
end
doCombat(cid, combat, var)
end

 

OBS: Coloque a área desejada dentro do "arr".

Abraços !! happy.png

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

  • 0

Muito obrigado amigo. Jaja eu testo e te reputo, ainda espero pelas outras spells!

Um abraço!

 

up

 

Beddy, favor não upar o tópico, isso é considerado flood. Espere alguém te responder.

Link para o comentário
Compartilhar em outros sites

  • 0

 

<br>
<strong>Pular</strong> - Queria que ao utilizar a spell, o seu char iria pular <strong>3 SQM para frente</strong> da posicao de onde voce está. <em>(Sendo que não seria possivel pular para PZ, nem para dentro de casas)</em>
<br><br><br><span style="font-size: 10px;"><em>Créditos : <strong>Jhon992</strong></em></span><br>
local quantSqm = 3 -- quantidade de sqms<br><br>function teleportPlayer(cid, position)<br>if (isPlayer(cid)) then<br>local o = 1<br>local positions = {}<br>        for i=1, quantSqm do    <br>                        if getPlayerLookDir(cid) == 0 then<br>                                        position = {x=position.x, y=position.y-1, z=position.z}<br>                        elseif getPlayerLookDir(cid) == 1 then<br>                                        position = {x=position.x+1, y=position.y, z=position.z}                                <br>                        elseif getPlayerLookDir(cid) == 2 then<br>                                        position = {x=position.x, y=position.y+1, z=position.z}<br>                        elseif getPlayerLookDir(cid) == 3 then<br>                                        position = {x=position.x-1, y=position.y, z=position.z}<br>                        end<br>                        if isWalkable(position) then<br>                                o = o+1<br>                        end<br>                        positions[#positions+1] = position                <br>        end<br>        if o > quantSqm then<br>                        doTeleportThing(cid, position)<br>                for i=1, #positions do<br>                        doSendMagicEffect(positions[i], CONST_ME_TELEPORT)<br>                end<br>                        return true<br>        else<br>                        doPlayerSendCancel(cid, "Você não pode atravesar isso!")<br>                        return false<br>        end<br>end<br>end<br><br>function isWalkable(pos, creature, pz, proj) -- nord<br>        if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end<br>        local creature = getTopCreature(pos)<br>        if creature.type > 0 then       return false end<br>        if getTilePzInfo(pos) and not pz then return false end<br>        local n = not proj and 3 or 2<br>        for i = 0, 255 do<br>                        pos.stackpos = i<br>                        local tile = getTileThingByPos(pos)<br>                        if tile.itemid ~= 0 and not isCreature(tile.uid) then<br>                                        if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then<br>                                                        return false<br>                                        end<br>                        end<br>        end<br>return true<br>end<br><br>function onCastSpell(cid, var)<br>        if teleportPlayer(cid, getPlayerPosition(cid)) then<br>                        return true<br>        end<br>end

<br><br><span style="color: #ff0000"><strong>OBS: Ele salta para dentro da PZ. Não sei consertar. Espero que outra pessoa possa te ajudar.</strong></span><br><br><br>

<strong>Puxar</strong> - Utilizando efeito em uma area de 4x4, queria uma magia para poder <strong>puxar o player inimigo ou o monstro inimigo</strong>, para proximo de voce.
<br><br><span style="font-size: 10px;"><em>Créditos : <strong>yazoo (######)</strong></em></span><br>
local combat = createCombatObject()<br>setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)<br>setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)<br><br><br>arr = {<br>{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},<br>{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},<br>{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},<br>{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},<br>{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},<br>{0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},<br>{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},<br>{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},<br>{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},<br>{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},<br>{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},<br>}<br><br>local area = createCombatArea(arr)<br>setCombatArea(combat, area)<br><br>function abs(i)<br>if(i>0) then<br>return i<br>else return (i*(-1))<br>end<br>end<br><br>function onCastSpell(cid, var)<br>pos=getPlayerPosition(cid)<br>player = getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos= 253})<br>raio=5 -- alcance do buraco negro<br>i=((pos.x)-raio)<br>while(i<=((pos.x)+raio)) do<br>j=((pos.y)-raio)<br>while(j<=((pos.y)+raio)) do<br>player=getThingfromPos({x=i,y=j,z=pos.z,stackpos=2 53})<br>if(((getPlayerLevel(player.uid)>0) or (isCreature(player.uid)==1))and ((abs(i-(pos.x)) > 1) or (abs(j-(pos.y)) > 1))) then<br><br>-- calcula novo X<br>if(i<pos.x) then<br>newx=i+1<br>elseif(i==pos.x) then<br>newx=i<br>else newx=i-1<br>end<br><br>-- calcula novo Y<br>if(j<pos.y) then<br>newy=j+1<br>elseif(j==pos.y) then<br>newy=j<br>else newy=j-1<br>end<br><br>npos={x=newx,y=newy,z=pos.z}<br>doSendMagicEffect(npos,12)<br>doTeleportThing(player.uid,npos)<br>end<br>j=j+1<br>end<br>i=i+1<br>end<br>doCombat(cid, combat, var)<br>end

<br><br><span style="color: #ff0000"><strong>OBS: Coloque a área desejada dentro do "arr".</strong></span><br><em>Abraços !!</em> <span rel="lightbox"><img data-cke-saved-src="http://www.xtibia.com/forum//public/style_emoticons/default/happy.png" src="http://www.xtibia.com/forum//public/style_emoticons/default/happy.png" alt="Imagem Postada" class="bbc_img"></span><br>

 

 

Não funcionou amigo /\.

 

Estava pensando em algumas magias tipo assim (as de empurrar e puxar)

 

 

Ajuda PLX

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

  • 0

 

 

function getRepelTiles(cid)

local tile = {

{20, 3},

{40, 4},

{50, 5},

{80, 6},

{100, 7},

{120, 8}

}

table.sort(tile, function(a, b) return a[1] > b[1] end)

for _, t in ipairs(tile) do

if(getPlayerLevel(cid) >= t[1]) then

return t[2]

end

end

return tile[1][2]

end

 

function getNextPos(cid, tiles)

p = getCreaturePosition(cid)

x,y,z = p.x,p.y,p.z

local places = {

[0] = {x=x, y=(y-tiles), z=z, stackpos = 253},

[1] = {x=(x+tiles), y=y, z=z, stackpos = 253},

[2] = {x=x, y=(y+tiles), z=z, stackpos = 253},

[3] = {x=(x-tiles), y=y, z=z, stackpos = 253}}

return places[getPlayerLookDir(cid)]

end

 

function doRepel(cid, target, tiles)

if queryTileAddThing(cid, getNextPos(cid, 2)) == RETURNVALUE_NOERROR then

doCreatureSetLookDirection(target, getCreatureLookDirection(cid))

repeat

doTeleportThing(target, getNextPos(target, 1), true)

doSendMagicEffect(getCreaturePosition(target), CONST_ME_GROUNDSHAKER)

tiles = tiles-1

until tiles == 0 or queryTileAddThing(target, getNextPos(target, 1)) ~= RETURNVALUE_NOERROR

end

end

 

function onCastSpell(cid, var)

targ = getThingfromPos(getNextPos(cid, 1))

if (isPlayer(targ.uid)) or (isMonster(targ.uid)) then

if queryTileAddThing(cid, getNextPos(cid, 2)) == RETURNVALUE_NOERROR then

if (isPlayer(targ.uid)) or (isMonster(targ.uid)) and getTilePzInfo(getCreaturePosition(cid)) == FALSE then

doRepel(cid, targ.uid, getRepelTiles(cid))

doCreatureAddHealth(targ.uid, -getPlayerLevel(cid))

doCreatureAddMana(cid, -10)

end

else

doPlayerSendCancel(cid, "Something is in the way to repel the target.")

end

else

doPlayerSendCancel(cid, "There is no target to repel.")

end

end

 

 

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

  • 0

Com esta magia que voce passou, ele esta empurrando apenas o que esta em sua frente.

Preciso que ele use uma magia e empurre em um circulo para fora.

 

E não teleporte o que esta sendo atacado, e sim empurre ele. Como no video.

 

Ajuda Plx!

 

up, saudade de vodkart, jhon992 e caotic...

Link para o comentário
Compartilhar em outros sites

  • 0

Com esta magia que voce passou, ele esta empurrando apenas o que esta em sua frente.

Preciso que ele use uma magia e empurre em um circulo para fora.

 

E não teleporte o que esta sendo atacado, e sim empurre ele. Como no video.

 

Ajuda Plx!

 

up, saudade de vodkart, jhon992 e caotic...

 

Beddy, novamente vou te avisar. Não upe o tópico, espere alguém te responder. Se o tópico passar 7 dias sem resposta, simplesmente crie outro.

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, voce conhece as regras?!?!?!

 

 

Só é considerado flood se 2 ou mais postagens são feitas no mesmo dia...

Então depois de 24h eu posso upar o topico.

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, voce conhece as regras?!?!?!

 

 

Só é considerado flood se 2 ou mais postagens são feitas no mesmo dia...

Então depois de 24h eu posso upar o topico.

 

Você está errado, não importa se é no mesmo dia ou no outro, é proibido upar tópico, espere alguem responder sua dúvida.

 

Considere como seu ultimo aviso.

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, voce conhece as regras?!?!?!

 

 

Só é considerado flood se 2 ou mais postagens são feitas no mesmo dia...

Então depois de 24h eu posso upar o topico.

 

Jovem, você por acaso já teve a mínima vontade de ver os tópicos em destaque novos? Veja esse aqui: [importante] Regras Atualizadas

 

• Upar um tópico é considerado flood, e caso o erro se repita, o usuário poderá ser punido.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...