DU

Mina Terrestre *-*

Por DuuhCarvalho, 21 de mar. de 2012 em Actions e Talkactions

movements
script
4
1.5k
21 de março de 2012 às 23:49

Como funciona:

Ao usar a shovel em algum lugar 'no piso, tipo implanta uma Mina terrestre e quando algum player pisa em cima explode :D

 

Primeiro Vá em "Data/actions/scripts" copie algum arquivo, cole e renomeie para "mina_terrestre.lua" e coloque isso dentro:

 

 

function isWalkable(pos, creature, proj, pz)

if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end

if getTopCreature(pos).uid > 0 and creature then return false end

if getTileInfo(pos).protection and pz then return false, true 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 getTime(s)

local n = math.floor(s / 60)

s = s - (60 * n)

return n, s

end

local items = {

[2554] = {

storagetime = 6423356224333,

time = 13,

aid = 4444

}

}

local bombstorage = 3847757422

function onUse(cid, item, fromPosition, itemEx, toPosition)

local m = items[item.itemid]

if m then

if not isWalkable(toPosition, false, false, false) then

return doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You cannot throw the ".. getItemNameById(item.itemid) .." here!.")

end

if getTilePzInfo(getCreaturePosition(cid)) or getTilePzInfo(toPosition) then

return doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You cannot use this weapon in a protection zone!.")

end

local time = m.time

if os.time()-getPlayerStorageValue(cid, m.storagetime)+1 <= time then

minutes,seconds = getTime(time-(os.time()-getPlayerStorageValue(cid, m.storagetime)))

return doPlayerSendTextMessage(cid, 27, "Wait "..seconds.." seconds.")

end

doItemSetAttribute(itemEx.uid, "aid", m.aid)

doItemSetAttribute(itemEx.uid, "description", getPlayerName(cid))

setPlayerStorageValue(cid, m.storagetime, os.time())

doPlayerAddSkillTry(cid, 5, 1)

end

return true

end

 

 

 

Agora vá em "Data/Actions.Xml" e cole a seguinte tag:

 

<action itemid="2554" event="script" value="mina_terrestre.lua" allowfaruse="1"/>

 

agora vamos para Movements

 

Agora vá em "Data/Movements/script" copie algum arquivo, cole e renomeie para "mina_terrestre" e cole isso dentro:

 

local mina = {

[4444] = {delay = 1, -- seconds

mindamage = -346,

maxdamage = -756,

damagetype = COMBAT_FIREDAMAGE}

}

 

function onStepIn(cid, item, position, fromPosition)

local m = mina[item.actionid]

local function boom(cid, min, max, damagetype, pos)

-- COMBAT FUNCTION --

local area = {

{x = pos.x+1, y = pos.y, z = pos.z},

{x = pos.x, y = pos.y+1, z = pos.z},

{x = pos.x-1, y = pos.y, z = pos.z},

{x = pos.x+1, y = pos.y+1, z = pos.z},

{x = pos.x-1, y = pos.y-1, z = pos.z},

{x = pos.x, y = pos.y-1, z = pos.z},

{x = pos.x+1, y = pos.y-1, z = pos.z},

{x = pos.x-1, y = pos.y+1, z = pos.z},

{x = pos.x, y = pos.y, z = pos.z}

}

for i = 1,#area do

doAreaCombatHealth(0, damagetype, area, 0, min, max, 0)

end

return true

end

if getPlayerName(cid) == getItemAttribute(item.uid, "description") then

return doPlayerSendCancel(cid, "This is your bomb.")

end

addEvent(boom, m.delay * 100, cid, m.min, m.max, m.damagetype, position)

doTargetCombatHealth(boom, cid, COMBAT_PHYSICALDAMAGE, -501, -902, CONST_ME_NONE)

doItemEraseAttribute(item.uid, "aid")

return true

end

 

 

Observação:

mindamage = -234 --Como podem notar, é o dano minimo que a mina causará'

maxdamage = -543 --Como podem notar, é o dano máximo que a mina causará'

damagetype = COMBAT_FIREDAMAGE --Tipo de dano que causará no monster ou player.

 

doTargetCombatHealth(boom, cid, COMBAT_PHYSICALDAMAGE, -501, -902, CONST_ME_NONE)

Configure o dano aqui, que no caso está... mínimo de 501 e máximo de 902.

E o que está em azul é o tipo de dano.

 

 

Agora vá em "Data/Movements.Xml" e coloque a seguinte tag:

 

<movevent type="StepIn" actionid="4444" event="script" value="mina_terrestre.lua"/>

 

é isso pessoal espero que tenham gostado xD

Editado Março 21 por DuuhCarvalho

SkyDangerousS
22 de março de 2012 às 08:11

opa.

Cadê os créditos?

 

Vi esse script em outro fórum.

22 de março de 2012 às 08:34

esqueci que quando trais de outro forum tem que postar creditos 'rsrs

mais vou postar ;p

 

Créditos pelo Script: Faisher'

Créditos pela edição do Script: Adriano Swatt

Editado Março 24 por DuuhCarvalho

gonorreiaswatG
24 de março de 2012 às 09:25

:o

 

Vixe, este Script foi feito pelo Faisher e foi editado por mim'

Como postei no outro forum que você sabe qual é'

 

Mesmo assim, obrigado por compartilhar, mas coloque os devidos créditos no Post Principal.

 

 

Abraços'

Editado Março 24 por Gonorreia