NE
pedido

[Spell] Empurrar Player.

Por Newtonnotwen, 17 de ago. de 2012 em Scripts

armadilha
spell
12
3.5k
NewtonnotwenN
17 de agosto de 2012 às 13:31

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.

SkyLighS
NewtonnotwenN
17 de agosto de 2012 às 14:02

@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.

FlaahF
17 de agosto de 2012 às 14:45

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

NewtonnotwenN
17 de agosto de 2012 às 14:52

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.

FlaahF
17 de agosto de 2012 às 15:03

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.

NewtonnotwenN
17 de agosto de 2012 às 15:12

Não está empurrando e quero de fase.

 

Obrigado pela atenção.

FlaahF
17 de agosto de 2012 às 15:15

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 Agosto 17 por Flaah

NewtonnotwenN
17 de agosto de 2012 às 15:20

Eu espero, vou estar AFK.

 

Mais tarde testo.

brun123B
17 de agosto de 2012 às 15:52

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 Agosto 17 por brun123

NewtonnotwenN
17 de agosto de 2012 às 16:04

Vlws, REP+

 

Pedido atendido por: brun123

SkyLighS
17 de agosto de 2012 às 16:24

duvida sanada

reportado