Feature: Settings compatibility.
parent
a75b37e09b
commit
a0f68e63f5
|
@ -8,8 +8,8 @@ minetest_wadsprint.SAVE_PLAYERS_STATS_TO_FILE = true
|
|||
minetest_wadsprint.PLAYERS_STATS_FILE_LIMIT_RECORDS = 1000
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS = 1
|
||||
minetest_wadsprint.PLAYER_CONTROLS_CHECK_PERIOD_SECONDS = 0.1
|
||||
minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT = 3.8
|
||||
minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT = 1.2
|
||||
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS = 380
|
||||
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS = 120
|
||||
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS = 0.05 -- % decrease
|
||||
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS = 0.01 -- % increase
|
||||
-- Config values for `hudbars` mod (totally optional, applied only if installed).
|
||||
|
|
33
init.lua
33
init.lua
|
@ -3,6 +3,8 @@
|
|||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_savetable.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_exists.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_eventemitter.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_get_contents.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_put_contents.lua")
|
||||
minetest_wadsprint =
|
||||
{
|
||||
api = { events = EventEmitter:new() },
|
||||
|
@ -22,29 +24,12 @@ minetest_wadsprint =
|
|||
-- <playername string>:
|
||||
-- stamina: <float>
|
||||
},
|
||||
version = io.open(minetest.get_modpath(minetest.get_current_modname()).."/VERSION","r"):read("*all"),
|
||||
version = file_get_contents(minetest.get_modpath(minetest.get_current_modname()).."/VERSION"),
|
||||
savepath = minetest.get_worldpath().."/mod_minetest_wadsprint_saved_players_stats.dat",
|
||||
worldconfig = minetest.get_worldpath().."/mod_minetest_wadsprint_config.lua",
|
||||
}
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/config.lua") -- Load default config.
|
||||
if file_exists(minetest_wadsprint.worldconfig) then -- Load world-specific config (if present).
|
||||
print("Loading minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
|
||||
dofile(minetest_wadsprint.worldconfig)
|
||||
else
|
||||
print("Creating minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
|
||||
io.open(minetest_wadsprint.worldconfig,"w") -- Create empty world config (for user's convenience).
|
||||
:write("-- World-specific config. Copy here values from `mods/minetest_wadsprint/config.lua`:\n")
|
||||
end
|
||||
-- Calculating decrease and increase rates per period, based on that of seconds.
|
||||
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
|
||||
( minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS / 100 )
|
||||
)
|
||||
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
|
||||
( minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS / 100 )
|
||||
)
|
||||
-- Initializing HUD bars.
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/config.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/init_config.lua")
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/init_hudbars.lua")
|
||||
----------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------- api.stats() --
|
||||
|
@ -192,15 +177,15 @@ function minetest_wadsprint.set_sprinting_physics(player,is_on)
|
|||
if is_on == true then
|
||||
player.obj:set_physics_override(
|
||||
{
|
||||
jump = physics.jump - 1 + minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT,
|
||||
speed = physics.speed - 1 + minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT,
|
||||
jump = physics.jump - 1 + minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT,
|
||||
speed = physics.speed - 1 + minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT,
|
||||
})
|
||||
else
|
||||
if player.is_sprinting_physics_on ~= nil then
|
||||
player.obj:set_physics_override(
|
||||
{
|
||||
jump = physics.jump + 1 - minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT,
|
||||
speed = physics.speed + 1 - minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT,
|
||||
jump = physics.jump + 1 - minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT,
|
||||
speed = physics.speed + 1 - minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
-- Processing in-game settings. In-game settings are preferrable
|
||||
-- over global config.lua values.
|
||||
function minetest_wadsprint.load_minetest_settings_key(key,type)
|
||||
if type == "int" then
|
||||
if minetest.settings:get("minetest_wadsprint."..key) ~= nil then
|
||||
minetest_wadsprint[key] = tonumber(minetest.settings:get("minetest_wadsprint."..key))
|
||||
end
|
||||
elseif type == "bool" then
|
||||
if minetest.settings:get_bool("minetest_wadsprint."..key) ~= nil then
|
||||
minetest_wadsprint[key] = minetest.settings:get_bool("minetest_wadsprint."..key)
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest_wadsprint.load_minetest_settings_key("ENABLE_INGAME_SETTINGS","bool")
|
||||
if minetest_wadsprint.ENABLE_INGAME_SETTINGS == true then
|
||||
print("In-game minetest settings are enabled. Loading them.")
|
||||
minetest_wadsprint.load_minetest_settings_key("HIDE_HUD_BARS","bool")
|
||||
minetest_wadsprint.load_minetest_settings_key("STAMINA_MAX_VALUE","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("DYSPNEA_THRESHOLD_VALUE","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("SAVE_PLAYERS_STATS_TO_FILE","bool")
|
||||
minetest_wadsprint.load_minetest_settings_key("PLAYERS_STATS_FILE_LIMIT_RECORDS","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("PLAYER_STATS_UPDATE_PERIOD_SECONDS","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("PLAYER_CONTROLS_CHECK_PERIOD_SECONDS","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("SPRINT_RUN_SPEED_BOOST_COEFFICIENT","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS","int")
|
||||
minetest_wadsprint.load_minetest_settings_key("SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS","int")
|
||||
else
|
||||
print("In-game minetest settings are disabled. Ignoring them.")
|
||||
end
|
||||
|
||||
-- Processing world-specific config. World-specific values are preferrable
|
||||
-- over both global config and in-game settings.
|
||||
if file_exists(minetest_wadsprint.worldconfig) then
|
||||
print("Loading minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
|
||||
dofile(minetest_wadsprint.worldconfig)
|
||||
else
|
||||
print("Creating minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
|
||||
file_put_contents(
|
||||
minetest_wadsprint.worldconfig,
|
||||
"-- World-specific config. Copy here values from `mods/minetest_wadsprint/config.lua`:\n"
|
||||
)
|
||||
end
|
||||
|
||||
-- Processing some config values to avoid further unnecessary calculations.
|
||||
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT = (
|
||||
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS / 100
|
||||
)
|
||||
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT = (
|
||||
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS / 100
|
||||
)
|
||||
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
|
||||
( minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS / 100 )
|
||||
)
|
||||
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
|
||||
( minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS / 100 )
|
||||
)
|
|
@ -0,0 +1,6 @@
|
|||
function file_get_contents(file)
|
||||
local fp = io.open(file,"r")
|
||||
local data = fp:read("*all")
|
||||
fp:close()
|
||||
return data
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
function file_put_contens(file,data)
|
||||
local fp = io.open(file,"w")
|
||||
fp:write(data)
|
||||
fp:close()
|
||||
end
|
|
@ -0,0 +1,35 @@
|
|||
# If this options is disabled, no other settings option will have effect over default global config values. In contrary, world-specific config values will be still preferred over this in-game settings.
|
||||
minetest_wadsprint.ENABLE_INGAME_SETTINGS (ENABLE ALL THE MOD SETTINGS BELOW) bool false
|
||||
|
||||
# If enabled, stamina HUD bar will not be shown.
|
||||
minetest_wadsprint.HIDE_HUD_BARS (Hide HUD bars) bool false
|
||||
|
||||
# Absolutely arbitrary value to make calculations more convenient.
|
||||
minetest_wadsprint.STAMINA_MAX_VALUE (Stamina max value in points) int 100
|
||||
|
||||
# Stamina minimum level when running will not be possible.
|
||||
minetest_wadsprint.DYSPNEA_THRESHOLD_VALUE (Dyspnea threshold value in points) int 3
|
||||
|
||||
# Saves stats to a special file in a world directory. If disabled, players will be able to reset their stamina to maximum by leaving and immediately joining a game.
|
||||
minetest_wadsprint.SAVE_PLAYERS_STATS_TO_FILE (Save players stats to file on disconnect) bool true
|
||||
|
||||
# Stats file limit to prevent HDD overflow or large file reading lag when player joins.
|
||||
minetest_wadsprint.PLAYERS_STATS_FILE_LIMIT_RECORDS (Stats save file records max limit) int 1000
|
||||
|
||||
# In-game cycle interval of players' stamina recalculation.
|
||||
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS (Player in-game stats update cycle period in seconds) float 1
|
||||
|
||||
# In-game cycle interval of reading players' controls.
|
||||
minetest_wadsprint.PLAYER_CONTROLS_CHECK_PERIOD_SECONDS (Player in-game controls check cycle period in seconds) float 0.1
|
||||
|
||||
# Running boost coefficient.
|
||||
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS (Sprint run speed boost percent %) float 380
|
||||
|
||||
# Jumping boost coefficient.
|
||||
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS (Sprint jump height boost percent %) float 120
|
||||
|
||||
# Calculated in percents % off STAMINA_MAX_VALUE.
|
||||
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS (Stamina decrease percent % per second when running) float 0.05
|
||||
|
||||
# Calculated in percents % off STAMINA_MAX_VALUE.
|
||||
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS (Stamina increase percent % per second when not running) float 0.01
|
BIN
util/version.png
BIN
util/version.png
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in New Issue