X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=mods%2Fdefault%2Fplayer.lua;h=cd89a24c5c3361d1a4d8b6defee3db4c766b4683;hb=63b3542d00805bf976fc809f2e8f092ea1f5c942;hp=cad11059b5e7c3c27cf638cf623ea6851472bd88;hpb=4c0c7ae146bb57f56eb03e804853db73d31ed957;p=oweals%2Fminetest_game.git diff --git a/mods/default/player.lua b/mods/default/player.lua index cad11059..cd89a24c 100644 --- a/mods/default/player.lua +++ b/mods/default/player.lua @@ -1,55 +1,6 @@ -- Minetest 0.4 mod: player -- See README.txt for licensing and other information. ---[[ - -API ---- - -default.player_register_model(name, def) -^ Register a new model to be used by players. -^ is the model filename such as "character.x", "foo.b3d", etc. -^ See Model Definition below for format of . - -default.registered_player_models[name] -^ See Model Definition below for format. - -default.player_set_model(player, model_name) -^ is a PlayerRef. -^ is a model registered with player_register_model. - -default.player_set_animation(player, anim_name [, speed]) -^ is a PlayerRef. -^ is the name of the animation. -^ is in frames per second. If nil, default from the model is used - -default.player_set_textures(player, textures) -^ is a PlayerRef. -^ is an array of textures -^ If is nil, the default textures from the model def are used - -default.player_get_animation(player) -^ is a PlayerRef. -^ Returns a table containing fields "model", "textures" and "animation". -^ Any of the fields of the returned table may be nil. - -Model Definition ----------------- - -model_def = { - animation_speed = 30, -- Default animation speed, in FPS. - textures = {"character.png", }, -- Default array of textures. - visual_size = {x=1, y=1,}, -- Used to scale the model. - animations = { - -- = { x=, y=, }, - foo = { x= 0, y=19, }, - bar = { x=20, y=39, }, - -- ... - }, -} - -]] - -- Player animation blending -- Note: This is currently broken due to a bug in Irrlicht, leave at 0 local animation_blend = 0 @@ -64,7 +15,7 @@ function default.player_register_model(name, def) end -- Default player appearance -default.player_register_model("character.x", { +default.player_register_model("character.b3d", { animation_speed = 30, textures = {"character.png", }, animations = { @@ -74,7 +25,6 @@ default.player_register_model("character.x", { walk = { x=168, y=187, }, mine = { x=189, y=198, }, walk_mine = { x=200, y=219, }, - -- Extra animations (not currently used by the game). sit = { x= 81, y=160, }, }, }) @@ -84,6 +34,7 @@ local player_model = {} local player_textures = {} local player_anim = {} local player_sneak = {} +default.player_attached = {} function default.player_get_animation(player) local name = player:get_player_name() @@ -140,11 +91,29 @@ end -- Update appearance when the player joins minetest.register_on_joinplayer(function(player) - default.player_set_model(player, "character.x") + default.player_attached[player:get_player_name()] = false + default.player_set_model(player, "character.b3d") + player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) + + -- set GUI + if not (creative and creative.is_enabled_for + and creative.is_enabled_for(player:get_player_name())) then + player:set_inventory_formspec(default.gui_survival_form) + end + player:hud_set_hotbar_image("gui_hotbar.png") + player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") +end) + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + player_model[name] = nil + player_anim[name] = nil + player_textures[name] = nil end) -- Localize for better performance. local player_set_animation = default.player_set_animation +local player_attached = default.player_attached -- Check each player and apply animations minetest.register_globalstep(function(dtime) @@ -152,7 +121,7 @@ minetest.register_globalstep(function(dtime) local name = player:get_player_name() local model_name = player_model[name] local model = model_name and models[model_name] - if model then + if model and not player_attached[name] then local controls = player:get_player_control() local walking = false local animation_speed_mod = model.animation_speed or 30