Add teleport feature to teleport to most lessons
This commit is contained in:
parent
34b8e3ea1f
commit
2bcdb44d55
@ -42,7 +42,7 @@ default.gui_suvival_form = "size[8,10]"..
|
|||||||
default.gui_bg..
|
default.gui_bg..
|
||||||
default.gui_bg_img..
|
default.gui_bg_img..
|
||||||
default.gui_slots..
|
default.gui_slots..
|
||||||
"button_exit[-0.1,-0.3;3,1;gotostart;"..minetest.formspec_escape(S("Back to start")).."]"..
|
"button[-0.1,-0.3;3,1;teleport;"..minetest.formspec_escape(S("Teleport")).."]"..
|
||||||
music ..
|
music ..
|
||||||
"label[0,3.75;"..minetest.formspec_escape(S("Player inventory:")).."]"..
|
"label[0,3.75;"..minetest.formspec_escape(S("Player inventory:")).."]"..
|
||||||
"list[current_player;main;0,4.25;8,1;]"..
|
"list[current_player;main;0,4.25;8,1;]"..
|
||||||
|
@ -49,7 +49,7 @@ Chest inventory:
|
|||||||
Player inventory:
|
Player inventory:
|
||||||
This furnace is active and constantly burning its fuel.
|
This furnace is active and constantly burning its fuel.
|
||||||
This furnace is inactive. Please read the sign above.
|
This furnace is inactive. Please read the sign above.
|
||||||
Back to start
|
Teleport
|
||||||
Toggle music
|
Toggle music
|
||||||
Crafting grid:
|
Crafting grid:
|
||||||
Output slot:
|
Output slot:
|
||||||
|
@ -907,6 +907,31 @@ If you do not understand IRC, see the Community Wiki for help.]]
|
|||||||
|
|
||||||
tutorial.captions = {}
|
tutorial.captions = {}
|
||||||
|
|
||||||
|
tutorial.locations = {
|
||||||
|
intro = { { x = 42, y = 0.5, z = 28 }, math.pi * 0.5 },
|
||||||
|
jumpup = { { x = 64, y = 0.5, z = 30 }, math.pi * 1.5, math.pi * 0.2 },
|
||||||
|
ladder = { { x = 70, y = 0.5, z = 37 }, math.pi * 0.5 },
|
||||||
|
swim = { { x = 85, y = 0.5 , z = 50 }, math.pi * 0.5 },
|
||||||
|
dive = { { x = 59, y = 0.5 , z = 62 }, math.pi * 0.5 },
|
||||||
|
sneak = { { x = 33, y = 0.5, z = 41 }, math.pi * 0.5 },
|
||||||
|
eat = { { x = 67, y = -3.5, z = 60}, 0 },
|
||||||
|
health = { { x = 50, y = 0.5, z = 58 }, 0 },
|
||||||
|
viscosity = { { x = 44, y = 0.5, z = 53 }, 0, math.pi * 0.2 },
|
||||||
|
waterfall = { { x = 40, y = 0.5 , z = 81 }, 0 },
|
||||||
|
pointing1 = { { x = 89, y = 0.5, z = 62 }, math.pi * 0.5 },
|
||||||
|
items = { { x = 70, y = 0.5, z = 65 }, math.pi },
|
||||||
|
craft1 = { { x = 74, y = 0.5, z = 59 }, math.pi * 1.5 },
|
||||||
|
repair = { { x = 80, y = 0.5, z = 59 }, math.pi },
|
||||||
|
smelt = { { x = 78, y = 4.5, z = 63 }, math.pi * 1.5 },
|
||||||
|
mine = { { x = 79, y = 0.5, z = 75 }, 0, math.pi * 0.2 },
|
||||||
|
build = { { x = 66, y = 0.5, z = 83 }, math.pi },
|
||||||
|
goodbye = { { x = 22.5, y = 0.5, z = 73 }, math.pi * 0.5 },
|
||||||
|
}
|
||||||
|
|
||||||
|
tutorial.locations_order = {
|
||||||
|
"intro", "jumpup", "pointing1", "items", "eat", "craft1", "repair", "smelt", "mine", "build", "swim", "dive", "viscosity", "waterfall", "health", "sneak", "goodbye"
|
||||||
|
}
|
||||||
|
|
||||||
tutorial.register_infosign("intro", "Introduction", tutorial.texts.intro)
|
tutorial.register_infosign("intro", "Introduction", tutorial.texts.intro)
|
||||||
tutorial.register_infosign("minetest", "Minetest", tutorial.texts.minetest)
|
tutorial.register_infosign("minetest", "Minetest", tutorial.texts.minetest)
|
||||||
tutorial.register_infosign("cam", "Player Camera", tutorial.texts.cam)
|
tutorial.register_infosign("cam", "Player Camera", tutorial.texts.cam)
|
||||||
@ -1346,15 +1371,49 @@ minetest.register_on_joinplayer(function(player)
|
|||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
local teleport_dialog = function(player)
|
||||||
|
local formspec = "size[10,10]" ..
|
||||||
|
"label[0,0;"..minetest.formspec_escape(S("Select teleport destination:")).."]"
|
||||||
|
local y = 1
|
||||||
|
local x = 0
|
||||||
|
local id, data
|
||||||
|
for i = 1, #tutorial.locations_order do
|
||||||
|
local id = tutorial.locations_order[i]
|
||||||
|
local data = tutorial.locations[id]
|
||||||
|
local caption
|
||||||
|
if id == "goodbye" then
|
||||||
|
caption = S("Good-Bye room")
|
||||||
|
else
|
||||||
|
caption = S(tutorial.captions[id])
|
||||||
|
end
|
||||||
|
formspec = formspec .. "button_exit["..x..","..y..";5,1;".."teleport_"..id..";"..minetest.formspec_escape(caption).."]"
|
||||||
|
y = y + 1
|
||||||
|
if y > 9 then
|
||||||
|
y = 1
|
||||||
|
x = x + 5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
minetest.show_formspec(player:get_player_name(), "tutorial_teleport", formspec)
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
if(fields.leave) then
|
if(fields.leave) then
|
||||||
minetest.kick_player(player:get_player_name(), S("You have voluntarily exited the tutorial."))
|
minetest.kick_player(player:get_player_name(), S("You have voluntarily exited the tutorial."))
|
||||||
end
|
return
|
||||||
if(fields.gotostart) then
|
elseif(fields.teleport) then
|
||||||
tutorial.back_to_start(player)
|
teleport_dialog(player)
|
||||||
end
|
return
|
||||||
if(fields.gotoend) then
|
elseif(fields.gotoend) then
|
||||||
tutorial.go_to_end(player)
|
tutorial.go_to_end(player)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if formname == "tutorial_teleport" then
|
||||||
|
for id, data in pairs(tutorial.locations) do
|
||||||
|
if(fields["teleport_"..id]) then
|
||||||
|
tutorial.teleport(player, data[1], data[2], data[3])
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -1450,16 +1509,21 @@ minetest.register_globalstep(function(dtime)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
function tutorial.teleport(player, pos, look_horizontal, look_vertical)
|
||||||
|
player:setpos(pos)
|
||||||
|
player:set_look_horizontal(look_horizontal)
|
||||||
|
if not look_vertical then
|
||||||
|
look_vertical = 0
|
||||||
|
end
|
||||||
|
player:set_look_vertical(look_vertical)
|
||||||
|
end
|
||||||
|
|
||||||
function tutorial.back_to_start(player)
|
function tutorial.back_to_start(player)
|
||||||
player:setpos({x=42,y=0.5,z=28})
|
tutorial.teleport(player, tutorial.locations.intro[1], tutorial.locations.intro[2])
|
||||||
player:set_look_yaw(math.atan(1)*2)
|
|
||||||
player:set_look_pitch(0)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function tutorial.go_to_end(player)
|
function tutorial.go_to_end(player)
|
||||||
player:setpos({x=23,y=0.5,z=73})
|
tutorial.teleport(player, tutorial.locations.goodbye[1], tutorial.locations.goodbye[2])
|
||||||
player:set_look_yaw(math.atan(1)*2)
|
|
||||||
player:set_look_pitch(0)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
|
@ -85,6 +85,10 @@ Close
|
|||||||
Leave tutorial
|
Leave tutorial
|
||||||
Go to Good-Bye room
|
Go to Good-Bye room
|
||||||
|
|
||||||
|
# Teleport dialog
|
||||||
|
Select teleport destination:
|
||||||
|
Good-Bye room
|
||||||
|
|
||||||
# Items
|
# Items
|
||||||
reinforced wall
|
reinforced wall
|
||||||
reinforced glass
|
reinforced glass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user