add new named overrides for special features (default, min, max, force)
This commit is contained in:
parent
af80ee2db6
commit
98459a4294
15
README.md
15
README.md
@ -8,13 +8,15 @@ Pova gives mod makers a set of easy to use functions that safely apply overrides
|
|||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
pova.set_override_defaults = function(name, def)
|
|
||||||
|
|
||||||
- Sets default speed, jump and gravity for a player that additional overrides are then added onto.
|
|
||||||
|
|
||||||
pova.add_override = function(name, item, def)
|
pova.add_override = function(name, item, def)
|
||||||
|
|
||||||
- Adds a named override which can be used to add or subtract from speed, jump and gravity effects.
|
- Adds a named override which can be used to add or subtract from speed, jump and gravity effects.
|
||||||
|
- custom overrides are also used for specific tasks:
|
||||||
|
|
||||||
|
-- "default" sets default values for speed, jump and gravity.
|
||||||
|
-- "min" provides a minimum level for each of the settings.
|
||||||
|
-- "max" provides a maximum level for each of the settings.
|
||||||
|
-- "force" overrides all and forces a value for each setting (for sleeping in bed)
|
||||||
|
|
||||||
pova.get_override = function(name, item)
|
pova.get_override = function(name, item)
|
||||||
|
|
||||||
@ -39,3 +41,8 @@ pova.do_override(player)
|
|||||||
|
|
||||||
- Added pova.do_override(player) to instantly set overrides on list.
|
- Added pova.do_override(player) to instantly set overrides on list.
|
||||||
- Added 'pova_loop' setting in minetest.conf to disable override calc loop
|
- Added 'pova_loop' setting in minetest.conf to disable override calc loop
|
||||||
|
|
||||||
|
###0.3
|
||||||
|
|
||||||
|
- Added custom override names for special functions "default", "min", "max", "force"
|
||||||
|
- Tweaked test axe to use new settings.
|
||||||
|
72
init.lua
72
init.lua
@ -12,14 +12,16 @@ local pova_loop = minetest.settings:get_bool("pova_loop") ~= false
|
|||||||
-- set player table and defaults on join
|
-- set player table and defaults on join
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
pova_list[ player:get_player_name() ] = {
|
pova_list[ player:get_player_name() ] = {
|
||||||
default = {speed = 1, jump = 1, gravity = 1}}
|
default = {speed = 1, jump = 1, gravity = 1},
|
||||||
|
min = {speed = 0, jump = 0, gravity = 0}}
|
||||||
pova.do_override(player)
|
pova.do_override(player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- reset player table and defaults on respawn
|
-- reset player table and defaults on respawn
|
||||||
minetest.register_on_respawnplayer(function(player)
|
minetest.register_on_respawnplayer(function(player)
|
||||||
pova_list[ player:get_player_name() ] = {
|
pova_list[ player:get_player_name() ] = {
|
||||||
default = {speed = 1, jump = 1, gravity = 1}}
|
default = {speed = 1, jump = 1, gravity = 1},
|
||||||
|
min = {speed = 0, jump = 0, gravity = 0}}
|
||||||
pova.do_override(player)
|
pova.do_override(player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -29,23 +31,15 @@ minetest.register_on_leaveplayer(function(player)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
-- global command functions
|
|
||||||
pova.set_override_defaults = function(name, def)
|
|
||||||
pova_list[name]["default"] = def
|
|
||||||
end
|
|
||||||
|
|
||||||
pova.add_override = function(name, item, def)
|
pova.add_override = function(name, item, def)
|
||||||
if item == "default" then return end
|
|
||||||
pova_list[name][item] = def
|
pova_list[name][item] = def
|
||||||
end
|
end
|
||||||
|
|
||||||
pova.get_override = function(name, item)
|
pova.get_override = function(name, item)
|
||||||
if item == "default" then return end
|
|
||||||
return pova_list[name][item]
|
return pova_list[name][item]
|
||||||
end
|
end
|
||||||
|
|
||||||
pova.del_override = function(name, item)
|
pova.del_override = function(name, item)
|
||||||
if item == "default" then return end
|
|
||||||
pova_list[name][item] = nil
|
pova_list[name][item] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -60,9 +54,15 @@ pova.do_override = function(player)
|
|||||||
local jump = pova_list[name]["default"].jump or 1
|
local jump = pova_list[name]["default"].jump or 1
|
||||||
local gravity = pova_list[name]["default"].gravity or 1
|
local gravity = pova_list[name]["default"].gravity or 1
|
||||||
|
|
||||||
|
-- loop through list of added overrides
|
||||||
for id, var in pairs(pova_list[name]) do
|
for id, var in pairs(pova_list[name]) do
|
||||||
|
|
||||||
if var and id ~= "default" then
|
-- skip any custom sets
|
||||||
|
if var
|
||||||
|
and id ~= "default"
|
||||||
|
and id ~= "min"
|
||||||
|
and id ~= "max"
|
||||||
|
and id ~= "force" then
|
||||||
|
|
||||||
-- add any additional changes
|
-- add any additional changes
|
||||||
speed = speed + (pova_list[name][id].speed or 0)
|
speed = speed + (pova_list[name][id].speed or 0)
|
||||||
@ -71,11 +71,33 @@ pova.do_override = function(player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- minimum checks
|
||||||
|
if pova_list[name]["min"] then
|
||||||
|
speed = math.max(pova_list[name]["min"].speed or speed, speed)
|
||||||
|
jump = math.max(pova_list[name]["min"].jump or jump, jump)
|
||||||
|
gravity = math.max(pova_list[name]["min"].gravity or gravity, gravity)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- maximum checks
|
||||||
|
if pova_list[name]["max"] then
|
||||||
|
speed = math.min(pova_list[name]["max"].speed or speed, speed)
|
||||||
|
jump = math.min(pova_list[name]["max"].jump or jump, jump)
|
||||||
|
gravity = math.min(pova_list[name]["max"].gravity or gravity, gravity)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- force values (for things like sleeping in bed)
|
||||||
|
if pova_list[name]["force"] then
|
||||||
|
speed = pova_list[name]["force"].speed or speed
|
||||||
|
jump = pova_list[name]["force"].jump or jump
|
||||||
|
gravity = pova_list[name]["force"].gravity or gravity
|
||||||
|
end
|
||||||
|
|
||||||
-- for testing only
|
-- for testing only
|
||||||
if name == "singleplayer" then
|
if name == "singleplayer" then
|
||||||
print ("speed: " .. speed .. " / jump: " .. jump .. " / gravity: " .. gravity)
|
print ("speed: " .. speed .. " / jump: " .. jump .. " / gravity: " .. gravity)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- set new overrides
|
||||||
player:set_physics_override(speed, jump, gravity)
|
player:set_physics_override(speed, jump, gravity)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -116,13 +138,25 @@ minetest.register_craftitem("pova:axe", {
|
|||||||
local name = user:get_player_name()
|
local name = user:get_player_name()
|
||||||
|
|
||||||
-- set new defaults
|
-- set new defaults
|
||||||
pova.set_override_defaults(name, {
|
pova.add_override(name, "default", {
|
||||||
speed = 2, jump = 3, gravity = 1.0})
|
speed = 2, jump = 3, gravity = 1.0})
|
||||||
|
|
||||||
-- define changes that are added onto defaults
|
-- define changes that are added onto defaults
|
||||||
pova.add_override(name, "test", {
|
pova.add_override(name, "test", {
|
||||||
speed = 1, jump = -1, gravity = 0.5})
|
speed = 1, jump = -1, gravity = 0.5})
|
||||||
|
|
||||||
|
-- set new minimum for jump
|
||||||
|
pova.add_override(name, "min", {
|
||||||
|
jump = 3})
|
||||||
|
|
||||||
|
-- add new maximum for speed
|
||||||
|
pova.add_override(name, "max", {
|
||||||
|
speed = 2})
|
||||||
|
|
||||||
|
-- add force value for gravity
|
||||||
|
pova.add_override(name, "force", {
|
||||||
|
gravity = 1.2})
|
||||||
|
|
||||||
-- apply override
|
-- apply override
|
||||||
pova.do_override(user)
|
pova.do_override(user)
|
||||||
end,
|
end,
|
||||||
@ -131,13 +165,19 @@ minetest.register_craftitem("pova:axe", {
|
|||||||
|
|
||||||
local name = user:get_player_name()
|
local name = user:get_player_name()
|
||||||
|
|
||||||
-- reset defaults
|
|
||||||
pova.set_override_defaults(name, {
|
|
||||||
speed = 1, jump = 1, gravity = 1})
|
|
||||||
|
|
||||||
-- remove changes
|
-- remove changes
|
||||||
|
pova.del_override(name, "max")
|
||||||
|
pova.del_override(name, "force")
|
||||||
pova.del_override(name, "test")
|
pova.del_override(name, "test")
|
||||||
|
|
||||||
|
-- reset min for jump
|
||||||
|
pova.add_override(name, "min", {
|
||||||
|
jump = 0})
|
||||||
|
|
||||||
|
-- reset defaults
|
||||||
|
pova.add_override(name, "default", {
|
||||||
|
speed = 1, jump = 1, gravity = 1})
|
||||||
|
|
||||||
-- apply override
|
-- apply override
|
||||||
pova.do_override(user)
|
pova.do_override(user)
|
||||||
end,
|
end,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user