Ir para conteúdo
  • 0

[Ajuda] Action - Granada


gonorreiaswat

Pergunta

Seguinte, eu tenho um Script / Action, feito pelo usuário "xotservx" que funciona perfeitamente bem,

funciona como uma granada mesmo...

 

Você clica com o botão direito e depois com o esquerdo e ela vai para o tile onde você a jogou, no entanto em 5 segundos ela explode.

 

Indo ao assunto, eu não quero que mude nada disso, mas gostaria que o Hit dela pegasse em Player (em todos) os que estiverem na área da Explosão... até mesmo em quem a jogou.

 

 

o Script é o seguinte:

 

Action.xml

<action itemid="2278" script="granada.lua" allowfaruse="1"/>

 

 

granada.lua

 

 

local area = createCombatArea{

{0, 1, 1, 1, 0},

{1, 1, 1, 1, 1},

{1, 1, 3, 1, 1},

{1, 1, 1, 1, 1},

{0, 1, 1, 1, 0}

}

 

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

 

local configs = {

sec = 5, -- segundos para explodir

typex = COMBAT_FIREDAMAGE, -- tipo da explosão

min = 400, -- dano minimo da explosão

max = 1129, -- dano maximo da explosão

ef = 6, -- efeito da explosão

item = 2278, -- item ki vai criar no chão

level = 10, -- level para usar o item

}

 

if getPlayerLevel(cid) >= configs.level then

doCreateItem(configs.item, toPosition)

for i = 1, configs.sec do

local x = configs.sec - i

local n = math.random(256)

if i == 1 and x ~= 0 then

 

elseif i <= configs.sec and i ~= 1 and x ~= 0 then

 

end

end

addEvent(doCleanTile, 1000*configs.sec, toPosition, false)

addEvent(doAreaCombatHealth, 1000*configs.sec, cid, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)

doRemoveItem(item.uid, 1)

else

doPlayerSendCancel(cid, "Voce precisa ser level ".. configs.level .." para usar este item.")

end

 

 

return true

end

 

 

 

 

Desde já, obrigado ae!

 

Abraços

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

11 respostass a esta questão

Posts Recomendados

  • 0

testa aê

 

local area = createCombatArea{
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}
}

function onUse(cid, item, frompos, itemEx, toPosition)
local configs = {
	sec = 5, -- segundos para explodir
	typex = COMBAT_FIREDAMAGE, -- tipo da explosão
	min = 400, -- dano minimo da explosão
	max = 1129, -- dano maximo da explosão
	ef = 6, -- efeito da explosão
	item = 2278, -- item ki vai criar no chão
	level = 10, -- level para usar o item
}

if getPlayerLevel(cid) >= configs.level then
	doCreateItem(configs.item, toPosition)
	addEvent(doCleanTile, 1000*configs.sec, toPosition, false)
	addEvent(doAreaCombatHealth, 1000*configs.sec, 0, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)
	doRemoveItem(item.uid, 1)
else
	doPlayerSendCancel(cid, "Voce precisa ser level ".. configs.level .." para usar este item.")
end
return true
end

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

  • 0

testa aê

 

 

 

local area = createCombatArea{
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}
}

function onUse(cid, item, frompos, itemEx, toPosition)
local configs = {
	sec = 5, -- segundos para explodir
	typex = COMBAT_FIREDAMAGE, -- tipo da explosão
	min = 400, -- dano minimo da explosão
	max = 1129, -- dano maximo da explosão
	ef = 6, -- efeito da explosão
	item = 2278, -- item ki vai criar no chão
	level = 10, -- level para usar o item
}

if getPlayerLevel(cid) >= configs.level then
	doCreateItem(configs.item, toPosition)
	addEvent(doCleanTile, 1000*configs.sec, toPosition, false)
	addEvent(doAreaCombatHealth, 1000*configs.sec, 0, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)
	doRemoveItem(item.uid, 1)
else
	doPlayerSendCancel(cid, "Voce precisa ser level ".. configs.level .." para usar este item.")
end
return true
end

 

 

 

 

 

Ow, funcionou sim... valeu mesmo aee...

 

 

------------@@EDITED

 

Achei um Bug... Tipo, se o Player jogá-la no chão e pegá-la devolta, mesmo ela não estando no chão ela estoura... Assim o cara não gasta ela.

--

Outra coisa, se você clica para jogar em uma escada por exemplo... ela vai para o outro andar... porém, ela não estoura... Se tivesse como fazer com que ela estourasse, seria excelente!

 

 

Abraços

 

 

Valendo outro...

Rep+

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

  • 0

o 1° bug é bem simples, o item que cria no chão, não pode ser o mesmo que vc jogou, eles pode ser iguais, mais ñ o mesmo ids, ai vc coloca o que cria no chão immoveable.

 

---

 

o 2° bug estou providenciando. se conseguir arrumar já posto aki.

Link para o comentário
Compartilhar em outros sites

  • 0

o 1° bug é bem simples, o item que cria no chão, não pode ser o mesmo que vc jogou, eles pode ser iguais, mais ñ o mesmo ids, ai vc coloca o que cria no chão immoveable.

 

---

 

o 2° bug estou providenciando. se conseguir arrumar já posto aki.

 

Ahh pode crer, nem tinha pensado nisso... coisa simples... burro_detectado!

 

Vou fazer aqui já... cara, já disse que te amo hoje?

 

ASUIehIAUHehASUIehuiAHSuiehasuih

 

 

valeu ae... fico no aguardo da segunda parte.

 

 

@@@@ EDITED

 

Ow, tem como fazer para que o player que atirar a granada ganhe a EXP dos monstros que morrerem?

 

 

 

 

Abraços

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

  • 0

ai o cara toma hit :|

 

 

seu sv tá pvp-en ?

 

Não...

 

Mas não faz mal acertar outros players... é pra ficar bem realista mesmo.

 

 

@@@EDITED

 

De qualquer forma, já está tirando hit de mim mesmo a granada!

 

mas assim tah bom

 

Abraços

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

  • 0

mall's falei errado ali, se for pro cara ganhar exp, ele não vai tomar hit qndo lançar a granada.

 

kk

 

 

Vixe, aí complicou... :confused:

 

Oh shiit, impossível um meio?

:/

 

 

@@@@EDITED

 

 

Olha nesse tópico... pra por isso Catapulta (o player ganhar EXP) tem como neh?

Aí num tem problema do player não receber hit pq ele já fica longe do dano mesmo... porém, ranca hit dos restos dos player neh?

 

http://www.xtibia.com/forum/topic/154106-%26-9668%3B-catapult-system-%26-9658%3B/page__gopid__1060568#entry1060568

 

Abraços

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

  • 0

Acho que é só trocar essa linha:

 

addEvent(doAreaCombatHealth, 1000*configs.sec, 0, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)

 

Por essa:

 

addEvent(doAreaCombatHealth, 1000*configs.sec, cid, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)

 

Estou enganado? Não testei nem nada.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que é só trocar essa linha:

 

addEvent(doAreaCombatHealth, 1000*configs.sec, 0, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)

 

Por essa:

 

addEvent(doAreaCombatHealth, 1000*configs.sec, cid, configs.typex, toPosition, area, -configs.min, -configs.max, configs.ef)

 

Estou enganado? Não testei nem nada.

 

Ahh, então... como o "xotservx" havia falado, se por para ganhar EXP dos monstros, não acerta quem a taca, ou vice-versa!

:/

 

 

Vixe, pior qe seria importante se fosse os dois viu, ganhando EXP e ainda acertando quem a taca.

 

 

Mas valeu mesmo assim... :smile_positivo:

 

 

 

@@@EDITED !

 

Eu fiquei fuçando aqui e achei um jeito de como configurar para ganhar a EXP dos monstros e ainda rancar hit de player.

 

 

valeu pela força ae galera. :thumbsupsmiley2:

 

 

abraços

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

×
×
  • Criar Novo...