Ir para conteúdo

Featured Replies

Postado

Funciona assim:

Você usa o "shovel" em um determinado lugar do solo, e é como se tivesse implantado uma Mina Terrestre, que ao passarem por cima, explodirá'

Vamos lá'

1º Passo'

Vá em "actions.xml" e adicione a tag abaixo:


<action itemid="2554" event="script" value="mina_terrestre.lua" allowfaruse="1"/>
Agora vá na pasta "Actions / Scripts" um arquivo chamado "mina_terrestre.lua", e cole o código abaixo dentro:

function isWalkable(pos, creature, proj, pz)-- by Nord

		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) -- Script by Xafterin

		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
Pronto, encerramos em Actions.
2º Passo'
Vá em "movements.xml" e adicione a tag abaixo:
<movevent type="StepIn" actionid="4444" event="script" value="mina_terrestre.lua"/>
Agora vá na pasta "Movements / Scripts" um arquivo chamado "mina_terrestre.lua", e cole o código abaixo 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[i], 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

Pronto, podem fechar a pasta Movements.

Observação & Configuraçã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.

Pronto, sua mina terrestre foi criada'

Espero que ajude.

Créditos pela origem do Script: Faisher'

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

Créditos pelo pequeno tuto: Adriano Swatt

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

  • Respostas 20
  • Visualizações 3k
  • Created
  • Última resposta

Top Posters In This Topic

Postado
  • Autor

q maneiro, vou usar.

depois edito comentando se funcionou... rep+ adiantado.

Faça um ótimo uso'

Abraços & boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo