Colex
print("LUA Scripter")
- Joined
- Jun 14, 2007
- Messages
- 7
- Reaction score
- 0
PLASTIC BOMB BY COLEX
How does it work?
The player does use in a Plastic Bomb (I use the item 4825), and he will be unmoveable for a certain time(default is 5 seconds) setting the bomb up, after the bomb has been set up the player will be able to move and the bomb will take a determinated time to explode (default 5 seconds). the explosion will take place in a 3x3 area where the player who is in the middle of the explosion will always take the highest demage possible and the players around will take a random demage between the highest and the lowest demage (the demages are defined in the script in MAX_HIT and MIN_HIT).
1st Step: in the directory data/actions/scripts create a new file named bomb.lua and insert the following script into it:
2º Step: open teh folder data/actions and add the following line into actions.xml:
That's it! You Plastic Bomb should be working now...
(if your ot doesn't have the functions mayNotMove and mayNotLogout, just remove them from the script)
It was only tested in the version 8.0
Yours,
Colex
How does it work?
The player does use in a Plastic Bomb (I use the item 4825), and he will be unmoveable for a certain time(default is 5 seconds) setting the bomb up, after the bomb has been set up the player will be able to move and the bomb will take a determinated time to explode (default 5 seconds). the explosion will take place in a 3x3 area where the player who is in the middle of the explosion will always take the highest demage possible and the players around will take a random demage between the highest and the lowest demage (the demages are defined in the script in MAX_HIT and MIN_HIT).
1st Step: in the directory data/actions/scripts create a new file named bomb.lua and insert the following script into it:
Code:
----------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º Step: open teh folder data/actions and add the following line into actions.xml:
Code:
<action itemid="4852" script="bomb.lua" />
That's it! You Plastic Bomb should be working now...
(if your ot doesn't have the functions mayNotMove and mayNotLogout, just remove them from the script)
It was only tested in the version 8.0
Yours,
Colex
Last edited: