FANDOM


Lua-logo-nolabel.svg
This is some tutorials and available scripts for Lua function in Studio (mode).

FAQs

Luadust
Q1: How do I know a block's coordinate?

You can see a block's coordinate by pressing V+3 in Studio Creation mode.

game.lua

Change the player's numerical value

  • Change the player's value with the button.
button1 = Game.EntityBlock.Create({x=-42, y=-24, z=2})
function button1:OnUse(player)
	if self.onoff == true then
		player.health = 10
		player.armor = 10
	else
		player.health = 100
		player.armor = 100
	end
end

Analysis:

  • Row 1: "button1" is the name created for a lever device block at coordinate x=-42, y=-24, z=2.
  • Row 2: The lever can be used by the player.
  • Row 3-5: If the lever is turned on, the player health and armor will become 10.
  • Row 6-8: If the level is turned off, the player health and armor will become 100.

Chat Events

  • Open door with signal from player.
SIGNAL = { TRIGGER1 = 1 }
trigger2 = Game.EntityBlock.Create({x=-42, y=-31, z=2})
door2 = Game.EntityBlock.Create({x=-42, y=-35, z=1})
function Game.Rule:OnPlayerSignal(player, signal)
	-- start
	if signal == SIGNAL.TRIGGER1 then
		trigger2:Event({action="use"}, 0)
	end
end

Analysis:

  • Row 1: The signal is from "TRIGGER1 = 1" (From ui.lua)
  • Row 2: A new name is created that is "trigger2". It is a button.
  • Row 3: A door is named as "door2".
  • Row 4-6: If a player types "start" in chat, the door will open.
  • Row 7: If the player tried to open the door with [E] button, it is futile.

UI Display

  • Create and modify UI elements for players
sync1 = Game.SyncValue.Create("sync1")
button3_1 = Game.EntityBlock.Create({x=-45, y=-40, z=1})
function button3_1:OnUse(player)
	sync1.value = "1x"
end
button3_2 = Game.EntityBlock.Create({x=-45, y=-39, z=1})
function button3_2:OnUse(player)
	sync1.value = "2x"
end
button3_3 = Game.EntityBlock.Create({x=-45, y=-38, z=1})
function button3_3:OnUse(player)
	sync1.value = "3x"
end

Analysis:

  • Row 1-5: If a player press a button named as "button3_1", a "1x" text will appear on player screen.
  • Row 6-9: If a player press a button named as "button3_2", a "2x" text will appear on player screen.
  • Row 10-13: If a player press a button named as "button3_3", a "3x" text will appear on player screen.

Special device block

  • Some device blocks receive special events.
textboard = Game.EntityBlock.Create({x=-42, y=-48, z=2})
trigger4_1 = Game.EntityBlock.Create({x=-42, y=-47, z=1})
function trigger4_1:OnUse(player)
	textboard:Event({action="text", value="Hello"})
end
trigger4_2 = Game.EntityBlock.Create({x=-43, y=-47, z=1})
function trigger4_2:OnUse(player)
	textboard:Event({action="text", value="World"})
end

Analysis:

  • Row 1-5: When a button named as "trigger4_1" is pressed, a text board named as "textboard" will appear "Hello" on its board.
  • Row 6-9: When a button named as "trigger4_2" is pressed, a text board named as "textboard" will appear "World" on its board.

Scripted Victory

  • Use coins and scripts to satisfy victory conditions.
switch5 = Game.EntityBlock.Create({x=-52, y=-46, z=2})
function switch5:OnUse(player)
	if player.coin >= 2000 then
		player:Win()
	end
end

Analysis:

  • Row 1: A switch is named as "switch 5".
  • Row 2: If the switch is flipped by the player,
  • Row 3: AND the player has more than 2000 coins
  • Row 4: The player name will appear and win the game. The game ends in several seconds.

ui.lua

Room 2 Chat Event

SIGNAL = { TRIGGER1 = 1 }
function UI.Event:OnChat(msg)
	if string.find(msg, "start") then
		UI.Signal(SIGNAL.TRIGGER1)
	end
end
Analysis: The signal is active when a object named as "trigger1" is activated which is after the player typed "start" in the chat.

Room 3 UI

labelBG = UI.Box.Create()
labelBG:Set({x=50, y=50, width=100, height=100, r=50, g=50, b=50, a=200})
labelBG:Hide()
label = UI.Text.Create()
label:Set({font="large", align="center", x=50, y=50, width=100, height=100, r=255, g=255, b=255})
label:Hide()

sync1 = UI.SyncValue.Create("sync1")
function sync1:OnSync()
	labelBG:Show()
	label:Show()
	label:Set({text = self.value})
end

Analysis:

  • Row 1: The background of the label is created and named as "labelBG".
  • Row 2: The position, width, height and color of the label is set.
  • Row 3: The initial label is hidden until activated.
  • Row 7-11: The label will show itself when activated.

External links

Community content is available under CC-BY-SA unless otherwise noted.