Ir para conteúdo

[0.3.6-0.4] Explosive mine


Crypter

Posts Recomendados

Sistema simples que ao pisar em "X" item com a action id ele explode //

 

 

Em data/lib

 

Crie um arquivo chamado Mine.lua

 

function setItemAid(uid, value)return doItemSetAttribute(uid, 'aid', value)endfunction removeBomba(pos, id)local item = getTileItemById(pos, id)    if item.uid > 0 then        doRemoveItem(item.uid)    endreturn trueend

 

Em data/movements/scripts

 

Crie um arquivo chamado Mine.lua

local config = {effect1 = 4, -- efeito ao pisareffect2 = 5, -- efeito ao explodirmsg = "Você foi acertado pela bomba.", -- msg que manda pra quem for acertadomindmg = 100, -- dmg minimo que tira (nao é necessariamente o dano que vai sair do cara pois precisa desconsiderar as defesas dele antes)maxdmg = 300, -- dmg maximo que tira (nao é o dano que vai sair do cara)self = true -- true/false pra ativar/desativar dano no cara que colocou a bomba caso ele mesmo passe na bomba.}local arr = {{0, 1, 0},{1, 3, 1}, -- area que vai acertar ao explodir a bomba{0, 1, 0},}local area = createCombatArea(arr)function onStepIn(cid, item, position)    local player = getPlayerByNameWildcard(getItemAttribute(item.uid, 'ref'))    doSendMagicEffect(position, config.effect1)    if isCreature(player) then        doAreaCombatHealth(player, COMBAT_FIREDAMAGE, position, area, -config.mindmg, -config.maxdmg, config.effect2)    end    if ((cid == player and config.self) or (not isPlayer(cid)) or (not isCreature(player))) then        doCreatureAddHealth(cid, -1 * math.random(config.mindmg, config.maxdmg))        doSendMagicEffect(position, config.effect2)    end    if isPlayer(cid) then        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msg)    end    doRemoveItem(item.uid)return trueend

 

Em movements.xml

<movevent type="StepIn" actionid="13245" event="script" value="Mine.lua"/>

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Caso voce queira rodar esse movements em uma spell

 

data/spells/scripts:

 

Crie um arquivo chamado mine.lua

 

local config = {itemid = 2180, -- Id do item que ira explodir duration = 10, -- duração para ser removidaactionid = 13245, --Nao mechaeffect = 1, -- efeitomsg = "Planted explosive mine!" -- mensagemcooldown = 120,  --- tempo entre um uso e outro em segundo}function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, 55695) >= config.cooldown then	  setPlayerStorageValue(cid, 55695, os.time())    local position = getCreaturePosition(cid)    local item = doCreateItem(config.itemid, 1, position)    setItemAid(item, config.actionid)    doItemSetAttribute(item, 'ref', getCreatureName(cid))    doCreatureSay(cid, config.msg, 20)    doSendMagicEffect(position, config.effect)    addEvent(removeBomba, config.duration * 1000, position, config.itemid)  elsedoPlayerSendCancel(cid, "Aguarde "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55695))).." segundos para plantar outra bomba!")	endreturn trueend

Em Spells.xml

 

<instant name="Explosive Mine" words="Explosive Mine" lvl="1" mana="1" prem="0" aggressive="1" exhaustion="1000" needlearn="0" event="script" value="mine.lua">   <vocation id="1"/></instant>

 

 

          Se Voce Gostou da script da um REP+ e me Segui .!

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

8 minutos atrás, Lenhador disse:

Como assim "explode?"

Voce Pisa nela e ela causa um dano em Area.

 

Voce tambem pode editar a o tamanho da area:

local arr = {{0, 1, 0},{1, 3, 1},{0, 1, 0},}
Editado por Crypter
Link para o comentário
Compartilhar em outros sites

Agora, Crypter disse:

Voce Pisa nela e ela causa um dano em Area.

 

Voce tambem pode editar a o tamanho da area:

local arr = {{0, 1, 0},{1, 3, 1},{0, 1, 0},}

Entendi entendi, gostei bastante. REP ++

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...