Ir para conteúdo

[Action] Weapon Drive !


Ivomec

Posts Recomendados

Eu estava entediado hoje (como sempre), mas hoje eu senti como se dando, por isso decidi fazer um feitiço um pouco como o sistema de carro, mas em vez de usar um objeto, você usa um monstro = D

 

Eu sei que o script é um pouco confuso, eu vou limpá-lo algum dia, se bem me lembro: P

 

Testado em "The Forgotten Server, versão 0.3.5

 

Video Aqui !

 

vá em spells\scrips e nomeá-la WeaponDrive.lua

 

local BlockedMonsters = {

"Deathslicer",

"Flamethrower",

"Magicthrower",

"Plaguethrower",

"Poisonthrower",

"Shredderthrower"

}

local MaximumHits = 20

local AllowSameTeam = false

local AllowSameGuild = false

local AllowPlayers = true

local useDirection = true

 

local finishercombat = createCombatObject()

setCombatParam(finishercombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(finishercombat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(finishercombat, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(finishercombat, COMBAT_FORMULA_SKILL, 2, -100, 2, -0)

setCombatArea(finishercombat, createCombatArea(AREA_CIRCLE3X3))

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(combat1, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 2, -100, 2, -0)

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, -0, 1.0, -0)

 

function Drive(cid,var,times,target,oDir,opos)

if (not isCreature(target) and isCreature(cid)) or not isCreature(cid) then

doCreatureSetNoMove(target, false)

doCreatureSetNoMove(cid, false)

return doCombat(cid,finishercombat,var)

end

local TargetPos = 0

local PlayerDirection = 0

local nextPos = 0

if oDir == 99 then

TargetPos = getCreaturePosition(target)

PlayerDirection = getCreatureLookDirection(cid)

nextPos = getPosByDir(TargetPos,PlayerDirection)

else

TargetPos = getCreaturePosition(target)

PlayerDirection = oDir

nextPos = getPosByDir(TargetPos,PlayerDirection)

end

if not isWalkable(cid,nextPos) then

doCreatureSetNoMove(target, false)

doCreatureSetNoMove(cid, false)

return doCombat(cid,combat1,var)

end

local PlayerPos = getCreaturePosition(cid)

doTeleportThing(target,nextPos)

doTeleportThing(cid,opos)

doCombat(cid,combat,var)

doSendDistanceShoot(PlayerPos, TargetPos, getWeaponDistanceEffect(getPlayerWeapon(cid).uid))

if getCreatureHealth(target) <= 1 or not isCreature(target) then

doTeleportThing(cid,nextPos)

if isCreature(target) then

doCreatureSetNoMove(target, false)

end

doCreatureSetNoMove(cid, false)

return doCombat(cid,finishercombat,var)

end

if times == MaximumHits then

doCreatureSetNoMove(target, false)

doCreatureSetNoMove(cid, false)

return doCombat(cid,finishercombat,var)

else

return addEvent(Drive,100,cid,var,times+1,target,oDir,TargetPos)

end

end

 

function onCastSpell(cid, var)

local Target = getCreatureTarget(cid)

if isInArray(BlockedMonsters,getCreatureName(Target)) then

doPlayerSendCancel(cid, "You cannot use this spell on that monster!")

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)

return false

elseif not AllowPlayers and isPlayer(Target) then

doPlayerSendCancel(cid, "You cannot use this spell on players!")

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)

return false

elseif AllowSameTeam and isPlayer(Target) and isInParty(cid) and isInParty(Target) then

local PlayerParty = getPlayerParty(cid)

local TargetParty = getPlayerParty(Target)

if PlayerParty == TargetParty then

doPlayerSendCancel(cid, "You cannot use this spell on a party member!")

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)

return false

end

elseif AllowSameGuild and isPlayer(Target) and getPlayerGuildId(cid) > 0 and getPlayerGuildId(Target) > 0 then

local PlayerGuild = getPlayerGuildId(cid)

local TargetGuild = getPlayerGuildId(Target)

if PlayerGuild == TargetGuild then

doPlayerSendCancel(cid, "You cannot use this spell on your guildmate!")

doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)

return false

end

end

doCreatureSetNoMove(Target, true)

doCreatureSetNoMove(cid, true)

if useDirection then

return addEvent(Drive,1,cid,var,1,Target,99,getCreaturePosition(Target))

else

return addEvent(Drive,1,cid,var,1,Target,getCreatureLookDirection(cid),getCreaturePosit

ion(Target))

end

end

 

Adicione a isto spells.xml :

 

<instant name="Weapon Drive" words="Weapon Drive" lvl="30" mana="100" range="1" needtarget="1" needweapon="1" exhaustion="0" needlearn="0" event="script" value="WeaponDrive.lua">

<vocation id="4"/>

<vocation id="8"/>

</instant>

 

IMPORTANTE

Adicione em seu global.lua:

 

function isWalkable(cid,pos)

local aux = pos

aux.stackpos = 253

if doTileQueryAdd(cid, pos) == 1 and getTilePzInfo(pos) == FALSE and isCreature(getThingFromPos(aux).uid) == FALSE then

return TRUE

end

return FALSE

end

function getWeaponDistanceEffect(uid)

local WeaponType = getItemWeaponType(uid)

if WeaponType == WEAPON_CLUB then

return CONST_ANI_WHIRLWINDCLUB

elseif WeaponType == WEAPON_SWORD then

return CONST_ANI_WHIRLWINDSWORD

elseif WeaponType == WEAPON_AXE then

return CONST_ANI_WHIRLWINDAXE

else

return CONST_ANI_NONE

end

end

 

-----------< AJUDA >-----------

 

-> Se você quiser, não um monstro para poder ser usáveis por este script, basta adicioná-lo à matriz BlockedMonsters

-> MaximumHits é onde diz quantos hits o jogador pode dar antes de usar a greve terminar, é com 10 atm, então você só pode empurrar o monstro 10 vezes, você pode fazê-lo como 1000 e você provavelmente vai empurrar o monstro até que a morte ou até que você bater em alguma coisa (bloqueio objeto, criatura, pz) - (O vídeo foi feito com 100)

-> Para ativar apenas segure a tecla CTRL + direção até que completelly mudanças de direcção.

 

-----------< UPDATE 1,1 >-----------

Cleaned the code a bit Limpo o código um pouco

Adicionado AllowSameTeam (se for falsa, o trabalho costuma feitiço contra o mesmo time-membros) (Não Testado)

Adicionado AllowSameGuild (se for falsa, o trabalho costuma feitiço contra guildmates mesmo) (Não Testado)

Adicionado AllowPlayers (se for falsa, o trabalho costuma feitiço contra outros jogadores) (Não Testado)

UseDirection Acrescentado (se for falsa, o feitiço irá sempre em linha reta (Turning))

 

Créditos para Ayxmirdyrer (de OTFans) para a Direcção Idea

E alguns para mim por ter concertado o script , que estava com pequenos bugs.

 

 

Qualquer dúvida não hesite em perguntar =)

Link para o comentário
Compartilhar em outros sites

Sim,mais esses scripts que eu to trazendo aqui,eu peguei so o formato,mais modifiquei , todos que eu estou trazendo,e ainda postei em area errada,pq deu 1 bug aki, valeu !

Link para o comentário
Compartilhar em outros sites

você botou no global.lua como ele falou?

 

 

function isWalkable(cid,pos)

local aux = pos

aux.stackpos = 253

if doTileQueryAdd(cid, pos) == 1 and getTilePzInfo(pos) == FALSE and isCreature(getThingFromPos(aux).uid) == FALSE then

return TRUE

end

return FALSE

end

function getWeaponDistanceEffect(uid)

local WeaponType = getItemWeaponType(uid)

if WeaponType == WEAPON_CLUB then

return CONST_ANI_WHIRLWINDCLUB

elseif WeaponType == WEAPON_SWORD then

return CONST_ANI_WHIRLWINDSWORD

elseif WeaponType == WEAPON_AXE then

return CONST_ANI_WHIRLWINDAXE

else

return CONST_ANI_NONE

end

end

Link para o comentário
Compartilhar em outros sites

o bug que eu falei acima foi quando postei , e mais uma coisa, ele estava arrancando muito,eu diminui o atack

 

beijos ;*

 

a sim acredito como você mesmo citou aqui né?

Créditos para Ayxmirdyrer (de OTFans) para a Direcção Idea

E alguns para mim por ter concertado o script , que estava com pequenos bugs.

 

e quanto ao hit sim eu vi nossa como tava hitando muito né?

só pra compararmos as diferenças esse aqui é o original compare então com o seu e vemos que tem muita diferença nos hits.

local finishercombat = createCombatObject()

setCombatParam(finishercombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(finishercombat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(finishercombat, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(finishercombat, COMBAT_FORMULA_SKILL, 2, -100, 2, -0)

setCombatArea(finishercombat, createCombatArea(AREA_CIRCLE3X3))

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(combat1, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 2, -100, 2, -0)

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)

setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, -0, 1.0, -0)

Link para o comentário
Compartilhar em outros sites

Eu estava entediado hoje (como sempre), mas hoje eu senti como se dando, por isso decidi fazer um feitiço um pouco como o sistema de carro, mas em vez de usar um objeto, você usa um monstro = D

 

Eu sei que o script é um pouco confuso, eu vou limpá-lo algum dia, se bem me lembro: P

 

Testado em "The Forgotten Server, versão 0.3.5

 

Video Aqui !

 

vá em spells\scrips e nomeá-la WeaponDrive.lua

 

 

Adicione a isto spells.xml :

 

 

 

IMPORTANTE

Adicione em seu global.lua:

 

 

-----------< AJUDA >-----------

 

-> Se você quiser, não um monstro para poder ser usáveis por este script, basta adicioná-lo à matriz BlockedMonsters

-> MaximumHits é onde diz quantos hits o jogador pode dar antes de usar a greve terminar, é com 10 atm, então você só pode empurrar o monstro 10 vezes, você pode fazê-lo como 1000 e você provavelmente vai empurrar o monstro até que a morte ou até que você bater em alguma coisa (bloqueio objeto, criatura, pz) - (O vídeo foi feito com 100)

-> Para ativar apenas segure a tecla CTRL + direção até que completelly mudanças de direcção.

 

-----------< UPDATE 1,1 >-----------

Cleaned the code a bit Limpo o código um pouco

Adicionado AllowSameTeam (se for falsa, o trabalho costuma feitiço contra o mesmo time-membros) (Não Testado)

Adicionado AllowSameGuild (se for falsa, o trabalho costuma feitiço contra guildmates mesmo) (Não Testado)

Adicionado AllowPlayers (se for falsa, o trabalho costuma feitiço contra outros jogadores) (Não Testado)

UseDirection Acrescentado (se for falsa, o feitiço irá sempre em linha reta (Turning))

 

Créditos para Ayxmirdyrer (de OTFans) para a Direcção Idea

E alguns para mim por ter concertado o script , que estava com pequenos bugs.

 

 

Qualquer dúvida não hesite em perguntar =)

 

aff aki em ksa n deu

O OT aki e 7.92 tem algum script show ai pra 7.92

 

 

se tiver post por favor vlws ae!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...