Ir para conteúdo

Function Killmonsterfromarea


noobinhu

Posts Recomendados

Essa function pode ser usadas em diversos scripts, por exemplo, ao entrar na arena, para limpar todo respawn antes de sumonar os monstros, na anihilator, na DH e etc...

 

Esta function mata todos os monstros de uma certa área, somente os monstros.

 

Screenshoot de uso:

killmonsterfromareatz6.png

 

 

Adicionando no seu script:

Na verdade, a function é baseada por outras 2, que devem estar no mesmo script, aqui está:

 

function isMonster(itempos)

-- function by Yunie, returns if isMonster based in stackpos 253

if itempos.itemid == 1 and itempos.type == 2 then

return TRUE

else

return FALSE

end

end

 

 

function returnPositions(upperposition,lowerposition)

-- function by Yunie, return all positions items informations from an area

positionstable = {}

defaulty = upperposition.y

upperpos = upperposition

lowerpos = lowerposition

while (upperpos.x <= lowerpos.x) do

newpos = {}

newpos = {x=upperpos.x, y=upperpos.y, z=upperpos.z}

table.insert(positionstable,newpos)

while (upperpos.y < lowerpos.y) do

upperpos.y = upperpos.y+1

newpos = {}

newpos = {x=upperpos.x, y=upperpos.y, z=upperpos.z}

table.insert(positionstable,newpos)

end

upperpos.y = defaulty

upperpos.x = upperpos.x+1

end

return positionstable

end

 

function killMonsterFromArea(positionArray)

-- function by Yunie, kill all monsters from an area

for k,v in pairs(positionsArray) do

pos = {x=v['x'], y=v['y'], z=v['z'], stackpos=253}

itempos = getThingfromPos(pos)

if isMonster(itempos) == TRUE then

doAreaCombatHealth(0, COMBAT_PHYSICALDAMAGE, pos, 0, -9999999, -9999999, 5)

else

doSendMagicEffect(pos,2)

end

end

end

 

Exemplo de Implatação em Script:

function isMonster(itempos)

-- function by Yunie, returns if isMonster based in stackpos 253

if itempos.itemid == 1 and itempos.type == 2 then

return TRUE

else

return FALSE

end

end

 

 

function returnPositions(upperposition,lowerposition)

-- function by Yunie, return all positions items informations from an area

positionstable = {}

defaulty = upperposition.y

upperpos = upperposition

lowerpos = lowerposition

while (upperpos.x <= lowerpos.x) do

newpos = {}

newpos = {x=upperpos.x, y=upperpos.y, z=upperpos.z}

table.insert(positionstable,newpos)

while (upperpos.y < lowerpos.y) do

upperpos.y = upperpos.y+1

newpos = {}

newpos = {x=upperpos.x, y=upperpos.y, z=upperpos.z}

table.insert(positionstable,newpos)

end

upperpos.y = defaulty

upperpos.x = upperpos.x+1

end

return positionstable

end

 

function killMonsterFromArea(positionArray)

for k,v in pairs(positionsArray) do

pos = {x=v['x'], y=v['y'], z=v['z'], stackpos=253}

itempos = getThingfromPos(pos)

if isMonster(itempos) == TRUE then

doAreaCombatHealth(0, COMBAT_PHYSICALDAMAGE, pos, 0, -9999999, -9999999, 5)

else

doSendMagicEffect(pos,2)

end

end

end

 

function onSay(cid, words, param)

upperpos = {x=155, y=421, z=7}

lowerpos = {x=158, y=424, z=7}

positionsArray = returnPositions(upperpos,lowerpos)

killMonsterFromArea(positionsArray)

end

 

Em negrito, upperpos seria o SQM da parte superior da esquerda (em cima <<) e lowerpos seria o SQM da parte inferior da direita (embaixo >>).

 

Esta talkaction mata todos monstros desta área em negrito que seria um quadrado.

 

Bom proveito da function,

Até mais,

Yunie.

Link para o comentário
Compartilhar em outros sites

Zafor, este não é um script comum, é uma function para ser usada dentro de scripts.

 

Igual aquelas functions:

doPlayerSendTextMessage()

doSendMagicEffect()

E outras...

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...