Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

Olha, se eu não me engano, pois faz tempo que testei...

Tem que ser outro player passando em cima para explodir, e tenta não ser com o GOD'

Abraços, qualquer coisa post aqui'

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

Link para o post
Compartilhar em outros sites

Eu testei com o god e com o player... Nenhum dos 2 faz açao nenhuma ao usar a shovel... Tipo nao aparece brilho, fumaça nem nada... ai pensei que pudesse ser so a configuraçao, ai fui testar em bicho. eu usava a shovel em algum lugar e lurava o bicho no SQM... mas nada... =( to fuçando aqui

Link para o post
Compartilhar em outros sites

Tipo, se não me engano, quando você planta a mina, aparece a mensagem de que ela foi implantada...

Eu estou ocupado agora pra testar, mas mais tarde eu testo e te aviso sobre alguma conclusão'

Abraços'

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

Link para o post
Compartilhar em outros sites

Eu to tentando fazer parecido com esse script aqui que tipo ele "planta" uma bomba mas que explode com o tempo...

Esse ta funcionando perfeitamente... Aparece o efeito quando a bomba é plantada e aparecia o tempo (mas eu tirei), ai quando explode dá dano, exp, pega skull... Tudo certinho... Te ajuda?

abçs...

__________________________________________

function getTime(s) -- função by : mkalo

local n = math.floor(s / 60)

s = s - (60 * n)

return n, s

end

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, 1)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.4, 0, -1.7, 0)

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 6)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.4, 0, -1.7, 0)

arr1 = {

{0, 0, 0},

{0, 3, 0},

{0, 0, 0},

}

arr2 = {

{1, 1, 1},

{1, 3, 1},

{1, 1, 1},

}

local area1 = createCombatArea(arr1)

setCombatArea(combat1, area1)

local area2 = createCombatArea(arr2)

setCombatArea(combat2, area2)

local function onCastSpell1(parameters)

doCombat(parameters.cid, combat1, parameters.var)

end

local function onCastSpell2(parameters)

doCombat(parameters.cid, combat2, parameters.var)

end

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var}

local pos = getPlayerPosition(cid)

local storage = 15456

addEvent(onCastSpell1, 0, parameters)

-- Configs --

local tempo = 3 -- tempo em segundos para acontecer a explosão.

local cd = 0 -- tempo em segundos para usar a explosão.

-- daki para baixo , não mexer --

if os.time()-getPlayerStorageValue(cid, storage) <= cd then

minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage)))

return doPlayerSendTextMessage(cid, 27, "You need to wait " .. minutes .." minutes and ".. seconds .. " seconds to implant other bomb!")

end

local i = 0

local tempo2 = 0

while i <= tempo-1 do

addEvent(doSendAnimatedText, 0+tempo2, pos, "", 108)

tempo2 = tempo2+1000

i = i+1

end

addEvent(onCastSpell2, 1000*tempo, parameters)

addEvent(onCastSpell3, 1000*tempo, parameters)

addEvent(doSendAnimatedText, 1000*tempo, pos, "Boom!", TEXTCOLOR_RED)

setPlayerStorageValue(cid, storage, os.time()+cd)

return TRUE

end

_______________________________

Link para o post
Compartilhar em outros sites

Cuidado com o Double Post amigo...

No entanto, irei testar os dois, o que postei e o seu...

Aí se funfar certinho e tals, eu edito o tópico e coloco o crédito do seu a você'

Abraços'

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

Link para o post
Compartilhar em outros sites

fmzz... tentei mexer ontem mas nao consegui nenhum progresso... =(

Atualizei o tópico principal... agora está funfando...

Porém, só não adicionei o Skull, estou meio sem tempo'

:T

depois eu arrumo.

Abraços

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

Link para o post
Compartilhar em outros sites

aaee, man... vamos la, pros e contras... hehehe

o bom eh que agora ta funcionando. Nao aparece nenhuma mensagem quando poe a mina, mas da pra dar look no chao e ver que ela ta la.

Ela tira dano! Um dano bem alto hehehe mas ai eh so arrumar... poreeem todavia entretanto, eu ja tinha feito um script parecido... so que era pra "trap" mesmo... Aquele item que no global nao faz nada...

O grilo é: O cara num pode usar esse item pra hunt... Pq ele da dano, mas qd o bicho morre nao da exp... E como essa vai ser a skill inicial de rogue essa falha é fatal... =(

Será que se colocar um "createCombatObject" nao começa dar exp?

Assim da pra por base em algum skill...

Outra coisa, nao sei se foi proposital, mas qd vc usa o item, upa shielding... (??) kkk

Um amigo meu disse que nao pode misturar onStepIn com magia... procede isso?

Aiiiiinda estou procurando a soluçao... se eu achar posto aqui pra vcs...

Obrigado a todos que ajudaram!

abçs

Link para o post
Compartilhar em outros sites

aaee, man... vamos la, pros e contras... hehehe

o bom eh que agora ta funcionando. Nao aparece nenhuma mensagem quando poe a mina, mas da pra dar look no chao e ver que ela ta la.

Ela tira dano! Um dano bem alto hehehe mas ai eh so arrumar... poreeem todavia entretanto, eu ja tinha feito um script parecido... so que era pra "trap" mesmo... Aquele item que no global nao faz nada...

O grilo é: O cara num pode usar esse item pra hunt... Pq ele da dano, mas qd o bicho morre nao da exp... E como essa vai ser a skill inicial de rogue essa falha é fatal... =(

Será que se colocar um "createCombatObject" nao começa dar exp?

Assim da pra por base em algum skill...

Outra coisa, nao sei se foi proposital, mas qd vc usa o item, upa shielding... (??) kkk

Um amigo meu disse que nao pode misturar onStepIn com magia... procede isso?

Aiiiiinda estou procurando a soluçao... se eu achar posto aqui pra vcs...

Obrigado a todos que ajudaram!

abçs

Então, na verdade eu nem sei direito sobre...

Vou ver se consigo mexer e solucionar tudo isso muito breve.

E que estou com uma proposta para um outro emprego, aí estou meio que em teste o dia inteiro'

Se achar antes de mim a solução, posta aqui que analiso e te dou REP+.

Abraços'

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

Link para o post
Compartilhar em outros sites
  • 2 years later...

tipo ta fod@ pq tem q misturar onStepIn com onCombat, e um eh movement e o outro é spell...

Como faz pra misturar c tem noçao man?

Não entendi muito bem sua dúvida.

 

 

Como que faz para ninguém poder mover a mina quando ela é implantada?

Na verdade, já não é pra ser possível mexer nela quando implantada.

Mas da pra editar isso caso seu OTServ esteja apresentando este bug.

 

Plante uma Mina Terrestre e com o GOD dê look e veja se a mesma está com ActionID.

 

Poste o Resultado.

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

Link para o post
Compartilhar em outros sites

Não entendi muito bem sua dúvida.

 

 

Na verdade, já não é pra ser possível mexer nela quando implantada.

Mas da pra editar isso caso seu OTServ esteja apresentando este bug.

 

Plante uma Mina Terrestre e com o GOD dê look e veja se a mesma está com ActionID.

 

Poste o Resultado.

 

Sim, a mina ela para ser implantada ela precisa ser jogada no chão e clicar em cima com o botão direito. Depois que ela é implantada o item fica no chão, até aí tudo ótimo, achei até legal isso, mas depois eu vi que qualquer um pode pegar a mina, arrastar pra bag e arrastar para outros lugares e também pode usar ela novamente. Legal seria se ela sumisse depois que explodisse. Postarei aqui os atributtes do meu item no .otb:

 

:accept: moveable

:accept: pickupable

:accept: usable

 

Obs: Quando clicamos nela com o botão direito ela não fica com a mira.

Oi

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo