Ir para conteúdo
Entre para seguir isso  
Colex

Plastic Bomb

Recommended Posts

Colex    0
Colex

PLASTIC BOMB BY COLEX

Como funciona?

O player faz use em uma Plastic Bomb (eu uso o item 4825), e ficará imóvel um certo tempo (default é 5 segundos) instalando a bomba, depois de a bomba estar instalada o player poderá mover-se e a bomba irá demorar um certo tempo para explodir (default 5 segundos). A explosão será causada numa área 3x3 (alteravel na variavel area) em que o player que estiver no centro da explosão levará sempre os danos mais elevados possiveis e os outros players que estiverem à volta será aleatório entre os danos maiores e menores (os danos são definidos no inicio do script em MAX_HIT e MIN_HIT).

 

1º Passo: na pasta data/actions/scripts crie um novo arquivo com o nome bomb.lua e insira o seguinte texto dentro dele:

----------Plastic Bomb by Colex-----------
local PLANTING_DELAY = 5 --seconds
local EXPLOSION_DELAY = 5000 --milliseconds
local MAX_HIT = 500
local MIN_HIT = 100
local PVP = true -- true for PVP, false for Non-PVP

local PLAYERS = {}
function isInArray(table, valor)
 for i,j in pairs(table) do
if (j == valor) then
  return i
end
 end
 return 0
end
function explosion(info)
  area = {
 {0,0,0,0,0},
 {0,1,1,1,0},
 {0,1,1,1,0},
 {0,1,1,1,0}, 
 {0,0,0,0,0},
   }
hitpos = {x=info.pos.x, y=info.pos.y, z=info.pos.z, stackpos=253}
 center = {}
 center.y = math.floor(table.getn(area)/2)+1
for i in ipairs(area) do
   center.x = math.floor(table.getn(area[i])/2)+1
   for j, v in ipairs(area[i]) do
  if (v == 1) then
   hitpos.x = info.pos.x + (j - center.x)
   hitpos.y = info.pos.y + (i - center.y)
   if (getTilePzInfo(hitpos) == 0) then   
  victim = getThingfromPos(hitpos)
 effect = 4
 if ((j == center.x) and (i == center.y)) then
   doSendAnimatedText(hitpos,"KABOOOOOM",TEXTCOLOR_RED)
   hitpoints = MAX_HIT
   effect = 5
 else
   hitpoints = math.random(MIN_HIT,MAX_HIT)
 end
   if (isPlayer(victim.uid) == 1) then
   if (PVP == true) then
     doPlayerSendTextMessage(victim.uid,20,"You have lost "..hitpoints.." hitpoints by "..getPlayerName(info.player).."'s plastic bomb") 
     else
    hitpoints = 0
     end
   end
 if (isCreature(victim.uid) == 1) then
   doPlayerAddHealth(victim.uid,-hitpoints)
   end
  doSendMagicEffect(hitpos,effect)
    end
  end
  end
end
 PLAYERS[isInArray(PLAYERS, info.player)] = 0
 mayNotLogout(info.player, 0)
 return 1
end
function planting(info)
 if info.num == PLANTING_DELAY then
doPlayerSendTextMessage(info.player,22,"Plastic Bomb successfully planted!")
mayNotMove(info.player,0)
addEvent(explosion,EXPLOSION_DELAY,info)
 else
info.num = info.num + 1
doPlayerSendTextMessage(info.player,22,info.num.."...")
addEvent(planting,1000,info)
 end
 return 1
end
function onUse(cid, item, frompos, item2, topos) 
 position = getThingPos(item.uid)
 if (getTilePzInfo(position) == 0) then
   if (isInArray(PLAYERS, cid) == 0) then 
 table.insert(PLAYERS, cid) 
 doSendMagicEffect(frompos,3) 
 info = {player = cid, pos = position, num = 1} 
 doPlayerSendTextMessage(cid,22,"Planting the bomb...")
 doPlayerSendTextMessage(cid,22,"1...")
 mayNotMove(cid,1)
 mayNotLogout(cid, 1)
 doRemoveItem(item.uid,1)
 addEvent(planting,1000,info)
else
 doPlayerSendCancel(cid,"You can only plant one bomb at the same time.")
end
 else
doPlayerSendCancel(cid,"You can not plant this bomb in a PZ!")
 end 
 return 1
end

2º Passo: abra a pasta data/actions e adicione a seguinte linha dentro do arquivo actions.xml:

<action itemid="4852" script="bomb.lua"  />

Pronto! Sua plastic bomb deve estar funcional...

 

Alguma dúvida? poste e eu tentarei ajuda-lo!

(Esta action foi apenas testado em um server 8.0)

 

alguns OTS poderão não ter as funções mayNotMove e mayNotLogout, caso o seu OT não tenha, apague todas as ocorrencias dessas funções do Script

 

Colex

Compartilhar este post


Link para o post
Johnnie    2
Johnnie

Muito bom.

Obrigado pela contribuição.

Movido para Actions.

Compartilhar este post


Link para o post
Mionzinho    0
Mionzinho

Que massa ;o

Bem interessante ^^

Colex sempre!

Parabens ae...

só uma duvida, É pra versão 8.0?

Abraços

Compartilhar este post


Link para o post
Colex    0
Colex

@up

Como dito no tópico foi apenas testado em 8.0

lembrando que se seu OT não tiver as funções mayNotMove e mayNotLogout o script irá funcionar na mesma, mas voce deverá apagar essas funções do script

 

Atenciosamente,

Colex

Compartilhar este post


Link para o post
radayka    0
radayka

Muito criativo vc ein :)

tah de parabens o seu script funciono legalzinhu ake :)

:**

 

Radayka~

Compartilhar este post


Link para o post
Neer    0
Neer

Muito massa, mais você poderia colocar uma contagem regressiva na bomba, tipo de 1 em 1 segundo ela mandar uma menssagem onde ela tá como uma contagem regressiva, e os numeros da contagem regressiva tipo se faltar uns 5 segundos é de uma cor, mais qndo tiver chegando no 0 podia ser vermelha a contagem regressiva... Mais mesmo assim ficou muito bom!

Compartilhar este post


Link para o post
Neksus    0
Neksus

massa essa bomba XD

~~>Aprovado<~~

Compartilhar este post


Link para o post
Colex    0
Colex

@Neer

Gostei da tua idéia, eu agora não tenho muito tempo, mas quando eu tiver eu faço isso e atualizo aqui.

 

Obrigado,

Colex

Compartilhar este post


Link para o post
Zarevock    0
Zarevock

Cara.. LINDO script.. continue assim... hum.. e... tem como vc dar uma força fazendo aquilo que o cara ali pediu? xD é que eu tb to curioso pra saber como que ficaria xD

Compartilhar este post


Link para o post
plomentes    0
plomentes

ótimo tutorial mais axo q isso sai um poko do estilo RPG intao nem vo por no meu ot mais que eu vo testa isso eu vo

suASAHuisAhsuasAUHS

Compartilhar este post


Link para o post
Moykano    0
Moykano

Parabens Colex, funcionou perfeitamente.

 

Testada Em: Yurots 0.3 Versão 0.8

Status: Funcionando

 

Só pra você editar lá no começo do seu Post:

 

PLASTIC BOMB BY COLEX

Como funciona?

O player faz use em uma Plastic Bomb (eu uso o item 4825),

 

Você colocou "eu uso o item 4825" é "4852", mas isso não é problema porque no Script e na Actions.xml ta certo.

 

Mais uma vez parabens Colex.

 

[Moykano]

Compartilhar este post


Link para o post
f@bio    0
f@bio

Cara vc h mo fera, tah de parabéns, vc teria um post especial com todas as coisas q vc jah criou??? se tiver mostra ai pra eu dah uma olhada..... vlwsssss

Compartilhar este post


Link para o post
Zephyr6219    0
Zephyr6219

Ai cara, meu ot não tem aqueles negócios de MayNotMove e MayNotLoggout, tem como vc me passar o script sem essas coisas ? Pq eu fui tentar apagar e não deu certo !!

 

Vlww !!

Ótimo script cara :D

Compartilhar este post


Link para o post
BrUNiNhU KiLLeR    0
BrUNiNhU KiLLeR

~Ae!

~Mais Um Otimo Script Do Colex!!

~Unica Coisa Que Falta Eh Uma Foto!!

~Para As Pessoas Ver Antes De Baixar Ou De Copiar!!

~Parabens~

 

~Flw!!

~Ateh Mais!!

~Bk

Compartilhar este post


Link para o post
Macher    0
Macher

Como sempre, um script desses so com o Colex...Aprovado!

Compartilhar este post


Link para o post
Felipevm    0
Felipevm

fiko bem legal parabens!!

Compartilhar este post


Link para o post
Blaozazem Rhakeylom    0
Blaozazem Rhakeylom

Mais qual e a id do item da plastic?

Compartilhar este post


Link para o post
Blaozazem Rhakeylom    0
Blaozazem Rhakeylom

pro favor alguem ke mexe com script tira esse may not logout eu n sei tira tentei e deu isso:

:: Loading actions.xml...Warning: [Event::loadScript] Can not load script. data/

actions/scripts/bomb.lua

data/actions/scripts/bomb.lua:90: 'end' expected (to close 'function' at line 17

) near '<eof>'

Compartilhar este post


Link para o post
Machine!    2
Machine!

umm, cara muito bom gostei, naum achei nehum bug!

Criativo voce!

Colex nota 10!

Flws

Compartilhar este post


Link para o post
Jester    0
Jester

Só podia ser o Colex mesmo...Parabéns adorei

 

Aprovado

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×