Ir para conteúdo
  • 0

[Spell] Empurrar Player.


Newtonnotwen

Pergunta

Gostaria de uma spell com efeitos de fase, onde apos utiliza-la conforme o efeito agarre no player e o damage ele vá andando para atras, ate o final da magia.

 

Ex:

CASTER

 

-----1---- Magia usada na frente do caster

-----1 PLAYER ----Player se movendo para traz, de acordo com a magia que vem caminhado para sua direção.

-----1 PLAYER ----Player se movendo para traz, de acordo com a magia que vem caminhado para sua direção.

-----1 PLAYER ----Player se movendo para traz, de acordo com a magia que vem caminhado para sua direção.

-----1 PLAYER ----Player se movendo para traz, de acordo com a magia que vem caminhado para sua direção.

-----1 PLAYER ----Player se movendo para traz, de acordo com a magia que vem caminhado para sua direção.

 

Obs: A magia deve pegar no player, por exemplo:

 

-Se a magia (o efeito) passar a direita do player ele não se move.

-Se a magia (o efeito) passar em cima do player ele se move.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

@Skyligh

 

Não funcionou, e eu gostaria de uma mais complexa, como citei la em cima, uma spell que tenha fase ou seja os efeitos não acontecem todos na mesma hora e cada vez que o efeito ficar "em cima" do player ele anda uma casa pra traz.

 

Gostaria também que tira-se life e aparecesse o efeito.

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta esse:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -2500, -1.7, -0)

function onCastSpell(cid, var)
local max_sqm = 3 -- maximo de sqm que vai empurrar o player
local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1)
pos.stackpos = 253
if (isPlayer(getThingFromPos(pos).uid)) then
doTeleportThing(getThingFromPos(pos).uid, getClosestFreeTile(getThingFromPos(pos).uid, (getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), max_sqm))))
doSendMagicEffect(pos,10)
end
return FALSE
end

 

AJUDEI?! +REP happy.png

Link para o comentário
Compartilhar em outros sites

  • 0

Manda a tag talvez tenha botado errado.

 

Lembrando que quero o seguinte:

 

eu gostaria de uma mais complexa, como citei la em cima, uma spell que tenha fase ou seja os efeitos não acontecem todos na mesma hora e cada vez que o efeito ficar "em cima" do player ele anda uma casa pra traz.

 

Gostaria também que tira-se life e aparecesse o efeito.

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo eu fiz esse:

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 71)

setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 7)

 

function onCastSpell(cid, var)

local max_sqm = 3 -- maximo de sqm que vai empurrar o player

local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1)

pos.stackpos = 253

if (isPlayer(getThingFromPos(pos).uid)) then

doTeleportThing(getThingFromPos(pos).uid, getClosestFreeTile(getThingFromPos(pos).uid, (getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), max_sqm))))

end

return doCombat(cid, combat, var)

end

 

Tang:

<instant name="invocate" words="invocate" lvl="1" mana="20" prem="0" range="5" needtarget="1" exhaustion="1" blockwalls="1" needlearn="0" script="magia.lua">

 

O de empurra a cada vez que o inimigo resebe o dano ainda n fiz, vou tenta fazer aqui.

Link para o comentário
Compartilhar em outros sites

  • 0

OK' vou montar aqui.

 

---------- @EDIT ----------

 

Po cara so consegui esse mesmo, tipo ele empura mais só se estiver perto...

 

Desculpe não pode te ajudar. sad.png

 

Boa Tarde.

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

  • 0

Teste esse:

 

 

local slowCondition = createConditionObject(CONDITION_PARALYZE, 5000, 1, 1906)
setConditionFormula(slowCondition, -0.62, 0, -0.62, 0)

local searchDistance = 4		-- distância até onde o efeito procura um inimigo
local pushDistance = 3			-- quantos sqms o inimigo será puxado
local distanceEffect = 10		-- o efeito que será lançado
local damageType = COMBAT_DEATHDAMAGE	-- o tipo de combate do dano
local damageEffect = 71			-- o efeito que aparecerá no inimigo quando ele perde vida
local damageDelay = 950			-- o tempo em ms a cada vez que puxará o inimigo

local function doDamageAndPushTarget(cid, target, dir, pushes)
if not isCreature(target) or not isCreature(cid) then return false end
if pushes <= 0 then
	doRemoveCondition(target, CONDITION_PARALYZE, 1906)
	return true
elseif pushes == pushDistance then
	doAddCondition(target, slowCondition)
end
local level, magiclevel, lookdir = getPlayerLevel(cid), getPlayerMagLevel(cid), getCreatureLookDir(target)
local min = level * 2 + magiclevel * 5
local max = min * math.random(110, 130)/100
doTargetCombatHealth(cid, target, damageType, -min, -max, damageEffect)
local newPos = getPosByDir(getThingPos(target), dir)
if doTileQueryAdd(target, newPos) == 1 then
	doTeleportThing(target, newPos, true)
	doCreatureSetLookDir(target, lookdir)
end
addEvent(doDamageAndPushTarget, damageDelay, cid, target, dir, pushes - 1)
end

function onCastSpell(cid, var)

local target = 0
local dir = getCreatureLookDir(cid)
local pos = getThingPos(cid)

for s = 1, searchDistance do
	pos = getPosByDir(pos, dir)
	pos.stackpos = 253
	if isCreature(getThingFromPos(pos).uid) then
		target = getThingFromPos(pos).uid
		break
	end
end

doSendDistanceShoot(getThingPos(cid), pos, distanceEffect)

if target ~= 0 then
	addEvent(doDamageAndPushTarget, 1000, cid, target, dir, pushDistance)
end

return true
end

 

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

×
×
  • Criar Novo...