BwLua / Events.txt
Yourmom123's picture
Upload 6 files
758cb70 verified
-- Events
-- BlockPlace
Parameters
player: Player | nil
Player placing the block (if placed by a player).
position: Vector3
Position in the world the block is being placed at.
blockType: ItemType
The type of the block being placed
cancelled: bool [modifiable]
If set to true, the block place will be denied.
-- Here is a script using this event:
-- Fortify all blocks placed by players to Stone Brick
Events.BlockPlace(function(event)
-- Only fortify player blocks
if (not event.player) then
return
end
-- Only replace wool blocks
if not string.includes(event.blockType, "wool") then
return
end
BlockService.placeBlock(ItemType.STONE_BRICK, event.position)
SoundService.playSound(Sound.FORTIFY_BLOCK, event.position)
event.cancelled = true
end)
-- BlockBreak
Parameters
player: Player | nil
Player who broke the block.
position: Vector3
Position in the world the block was broken at.
blockType: ItemType
The type of the block being placed
-- Here is an example of a script using this event:
Events.BlockBreak(function(event)
if (not event.player) then
return
end
-- Only consider ceramic block breaks
if (event.blockType == ItemType.BLASTPROOF_CERAMIC) then
InventoryService.giveItem(event.player, ItemType.FIREBALL, 1, true)
end
end)
-- BedAlarmTriggered
Parameters
intruder: Player
The intruder player that triggered the bed alarm.
team: Team
The team whose bed alarm went off.
-- Here is an example of a script that uses this event:
-- Send out a broadcast to the game server when a bed alarm is triggered
Events.BedAlarmTriggered(function(event)
local alert = event.intruder.displayName .. " invaded " .. event.team.name .. "'s base!"
MessageService.broadcast(alert)
end)
-- ConsumeItem
Parameters
player: Player
The player that consumed the item.
itemType: ItemType
The item that was consumed by the player.
cancelled: bool [modifiable]
If set to true the item consume will be cancelled.
-- Here is a script that uses this event:
-- Make a player jump twice as high every time they eat a pie item
Events.ConsumeItem(function(event)
if (event.item == ItemType.PIE) then
event.player:registerJumpHeightMultiplier("pie_jumps", 2)
end
end)
-- Enchant
Parameters
player: Player
The player who researched the enchant.
enchant: EnchantType
Type of enchant researched by the player.
cancelled: bool [modifiable]
If set to true, the enchant research will be cancelled.
-- Here is a script that uses this event:
Events.Enchant(function(event)
-- Play the Learn Fire sound if a player receives a Fire 3 Enchant
if (event.enchant == EnchantType.FIRE_3) then
SoundService.playSound(Sound.WHIM_LEARN_FIRE)
end
end)
-- EntityDamage
Parameters
entity: Entity
The entity getting damaged.
fromEntity: Entity | nil
The attacker (if one exists).
damage: number [modifiable]
Amount of damage that will be dealt.
knockback: Knockback [modifiable]
Amount of knockback that will be applied.
cancelled: bool [modifiable]
If set to true the damage will be cancelled.
-- Here is a script using this event:
Events.EntityDamage(function(event)
local matchDurationSec = MatchService.getMatchDurationSec()
-- Double all damage in the game after 15 minutes
if (matchDurationSec > 15 * 60) then
event.damage = event.damage * 2
end
-- Disable damage in first 45s of the game
if (matchDurationSec < 45) then
event.cancelled = true;
end
end)
-- EntityDeath
Parameters
entity: Entity
The killed entity.
killer: Entity | nil
The killer (or nil if not killed by anyone).
assists: Entity[]
List of entities who damaged the victim within the last 15s.
finalKill: bool
True if the killed entity is going to be eliminated after this kill.
-- Here is a script that uses this event:
-- Give players 10 emeralds when they eliminate another player
Events.EntityDeath(function(event)
-- Only give payout if this is a player entity
if (event.entity:getPlayer() == nil) then
return
end
-- Only give payout if this is an elimination
if not event.finalKill then
return
end
-- Pay all assisting players 10 emeralds
for i, entity in ipairs(event.assists) do
if not entity:getPlayer() then
continue
end
InventoryService.giveItem(entity:getPlayer(), ItemType.EMERALD, 10, true)
end
end)
-- EntitySpawn
Parameters
entity: Entity
The spawning entity
-- Here is a script that uses this event:
-- Make all entities have only 1 health
Events.EntitySpawn(function(event)
event.entity:setMaxHealth(1)
end)
-- Forged
Parameters
player: Player
The player who forged the upgrade.
upgrade: ForgeUpgrade
Type of upgrade researched by the player.
level: number
The level of upgrade forged by the player.
-- Here is a script that uses this event:
Events.Forged(function(event)
if (event.upgrade == ForgeUpgrade.SCYTHE) then
-- Give the player the Life Steal effect if they forge a Scythe upgrade
StatusEffectService.giveEffect(event.player:getEntity(), StatusEffect.LIFE_STEAL_3)
-- Give the player a Sky Scythe item if they don't already have one
local currentAmount = InventoryService.getAmount(event.player, ItemType.SKY_SCYTHE)
if (currentAmount == 0) then
InventoryService.giveItem(event.player, ItemType.SKY_SCYTHE, 1, false)
end
end
end)
-- InventoryItemAdded
Parameters
player: Player
The player who received a new item.
item: ItemType
The type of item received by the player.
amount: number
The amount of the item received by the player.
-- Here is a script using this event:
Events.InventoryItemAdded(function(event)
-- Sends a notification to a player that receives the Laser Sword item
if (event.item == ItemType.LASER_SWORD) then
MessageService.sendInfo(event.player, "You have unlocked the power of the force!")
end
end)
-- ItemPurchase
Parameters
player: Player
The player who received a new item.
itemType: ItemType
The type of item received by the player.
amount: number
The amount of the item received by the player.
costItem: ItemType
The type of item used to purchase the specified item.
price: number
The amount of the cost item used to purchase the specified item.
-- Here is a script using this event:
-- Refund 50% of all Iron purchases in the shop
Events.ItemPurchase(function(event)
-- Only refund the player if the resource used to purchase the item is Iron
if (event.costItem == ItemType.IRON) then
-- Round 50% of the price to the closest smaller integer
local refund = math.floor(event.price * 0.5);
InventoryService.giveItem(event.player, ItemType.IRON, refund, true)
end
end)
-- MatchStart
-- Here is an example of a script that uses this event:
-- Play halloween music at the start of the game
Events.MatchStart(function(event)
SoundService.playSound(Sound.HALLOWEEN_2022_BOSS_MUSIC)
end)
-- PlayerChatted
Parameters
player: Player
The player that sent the message
message: string
The message sent by the player
-- Here is a script that uses this event:
-- Add "/rain {item}" command that rains a resource on all players
Events.PlayerChatted(function(event)
-- Split out command from args
local commandArgs = string.split(event.message, " ")
local command = string.lower(commandArgs[1])
-- Check that command is "/rain"
if string.lower(command) ~= "/rain" then
return
end
-- Verify message at least has 2 arguments (command & item type)
if #commandArgs < 2 then
MessageService.sendInfo(event.player, 'Format: /rain <Item Type>')
return
end
local itemType = string.lower(commandArgs[2])
-- Check that item exists
if not ItemType[itemType] then
MessageService.sendInfo(event.player, 'No item exists named ' .. itemType)
return
end
local numDrops = 25
task.spawn(function()
for i=1,numDrops,1 do
for i,player in ipairs(PlayerService.getPlayers()) do
local entity = player:getEntity()
if not entity then
continue
end
local pos = entity:getPosition()
pos = pos + Vector3.new(math.random(-5, 5), 8, math.random(-5, 5))
ItemService.dropItem(itemType, pos)
end
task.wait(0.2)
end
end)
end)
-- PlayerAdded
Parameters
player: Player
The player that joined the game server.
-- Here is a script that uses this event:
Events.PlayerAdded(function (event)
ChatService.sendMessage(event.player.name .. " joined the game!")
end)
Events.PlayerRemoving(function (event)
ChatService.sendMessage(event.player.name .. " left the game.")
end)
-- PlayerRemoving
Parameters
player: Player
The player that is about to leave the game server.
-- Here is a script that uses this event:
Events.PlayerAdded(function (event)
ChatService.sendMessage(event.player.displayName .. " joined the game!")
end)
Events.PlayerRemoving(function (event)
ChatService.sendMessage(event.player.displayName .. " left the game.")
end)
-- PlayerDropItem
Parameters
player: Player
The player that is dropping the item.
itemType: ItemType
The type of item being dropped by the player.
amount: number
The amount of the item being dropped by the player.
cancelled: bool [modifiable]
If set to true, the item drop event will be cancelled.
-- Here is a script that uses this event:
Events.PlayerDropItem(function(event)
if (event.itemType == ItemType.TENNIS_BALL) then
event.cancelled = true
MessageService.sendInfo(event.player, "Be more careful! Those can explode!")
end
end)
-- PlayerPickupItem
Parameters
player: Player
The player that is picking up the item.
itemType: ItemType
The type of item that is being picked up by the player.
amount: number
The amount of the item that is being picked up by the player.
cancelled: bool [modifiable]
If set to true, the item pickup event will be cancelled.
-- Here is a script that uses this event:
Events.PlayerPickupItem(function(event)
if (event.player:getEntity() == nil) then
return
end
if (event.itemType == ItemType.GLITCH_TRUMPET) then
EntityService.spawnKitEntity(KitType.MELODY, event.player:getEntity():getPosition())
AnnouncementService.sendAnnouncement("Let's jam!")
end
end)