Noch mehr mods
This commit is contained in:
parent
a063db5d3b
commit
cf017b2ca1
527 changed files with 21113 additions and 181 deletions
168
mods/airutils/pilot_skin_manager.lua
Normal file
168
mods/airutils/pilot_skin_manager.lua
Normal file
|
@ -0,0 +1,168 @@
|
|||
local S = airutils.S
|
||||
|
||||
airutils.pilot_textures = {"pilot_clothes1.png","pilot_clothes2.png","pilot_clothes3.png","pilot_clothes4.png",
|
||||
"pilot_novaskin_girl.png","pilot_novaskin_girl_steampunk.png","pilot_novaskin_girl_2.png","pilot_novaskin_girl_steampunk_2.png"}
|
||||
local skinsdb_mod_path = minetest.get_modpath("skinsdb")
|
||||
|
||||
minetest.register_chatcommand("au_uniform", {
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
|
||||
if player then
|
||||
if skinsdb_mod_path then
|
||||
local skdb_skin = skins.get_player_skin(player)
|
||||
if skdb_skin:get_meta("format") == "1.8" then
|
||||
minetest.chat_send_player(name, S("Sorry, but uniform cannot be applied to format 1.8 skins."))
|
||||
return
|
||||
end
|
||||
end
|
||||
airutils.uniform_formspec(name)
|
||||
else
|
||||
minetest.chat_send_player(name, S("Something isn't working..."))
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local set_player_textures =
|
||||
minetest.get_modpath("player_api") and player_api.set_textures
|
||||
or default.player_set_textures
|
||||
|
||||
if skinsdb_mod_path then
|
||||
-- Enhance apply_skin_to_player for all skins
|
||||
local orig_apply_skin_to_player = skins.skin_class.apply_skin_to_player
|
||||
function skins.skin_class:apply_skin_to_player(player)
|
||||
local orig_texture = self:get_texture()
|
||||
local player_meta = player:get_meta()
|
||||
local pilot_skin = player_meta:get_string("pilot_skin")
|
||||
if pilot_skin ~= "" then
|
||||
if self:get_meta("format") == "1.8" then
|
||||
-- format 1.8 is not suported
|
||||
orig_apply_skin_to_player(self, player)
|
||||
else
|
||||
local orig_get_texture = self.get_texture
|
||||
function self:get_texture()
|
||||
return "[combine:64x32:0,0="..orig_texture.."^"..pilot_skin
|
||||
end
|
||||
orig_apply_skin_to_player(self, player)
|
||||
self.get_texture = orig_get_texture
|
||||
end
|
||||
else
|
||||
orig_apply_skin_to_player(self, player)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function airutils.set_player_skin(player, skin)
|
||||
if not player then return end
|
||||
|
||||
-- use skinsdb enhancement
|
||||
if skinsdb_mod_path then
|
||||
local player_meta = player:get_meta()
|
||||
player_meta:set_string("pilot_skin", skin)
|
||||
local skdb_skin = skins.get_player_skin(player)
|
||||
skdb_skin:apply_skin_to_player(player)
|
||||
return
|
||||
end
|
||||
|
||||
-- manage byself
|
||||
local player_properties = player:get_properties()
|
||||
if not player_properties then return end
|
||||
|
||||
local texture = player_properties.textures
|
||||
local name = player:get_player_name()
|
||||
if texture then
|
||||
local player_meta = player:get_meta()
|
||||
if skin then
|
||||
--get current texture
|
||||
texture = texture[1]
|
||||
|
||||
--backup current texture
|
||||
local backup = player_meta:get_string("backup")
|
||||
if backup == nil or backup == "" then
|
||||
--player:set_attribute(backup, texture) --texture backup
|
||||
player_meta:set_string("backup",texture)
|
||||
else
|
||||
texture = backup
|
||||
end
|
||||
|
||||
--combine the texture
|
||||
texture = texture.."^"..skin
|
||||
|
||||
--sets the combined texture
|
||||
if texture ~= nil and texture ~= "" then
|
||||
set_player_textures(player, {texture})
|
||||
player_meta:set_string("curr_skin",texture)
|
||||
--player:set_attribute(curr_skin, texture)
|
||||
end
|
||||
else
|
||||
--remove texture
|
||||
local old_texture = player_meta:get_string("backup")
|
||||
if minetest.global_exists("set_skin") then --checking if set_skin is available
|
||||
if player:get_attribute("set_skin:player_skin") ~= nil and player:get_attribute("set_skin:player_skin") ~= "" then
|
||||
old_texture = player:get_attribute("set_skin:player_skin")
|
||||
end
|
||||
elseif minetest.global_exists("wardrobe") then --checking if wardrobe is available
|
||||
if wardrobe.playerSkins then
|
||||
if wardrobe.playerSkins[name] ~= nil then
|
||||
old_texture = wardrobe.playerSkins[name]
|
||||
end
|
||||
end
|
||||
end
|
||||
--minetest.chat_send_all(dump(old_texture))
|
||||
if old_texture ~= nil and old_texture ~= "" then
|
||||
set_player_textures(player, { old_texture })
|
||||
end
|
||||
player_meta:set_string("backup","")
|
||||
player_meta:set_string("curr_skin","")
|
||||
|
||||
--player:set_attribute(backup, nil)
|
||||
--player:set_attribute(curr_skin, nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function airutils.uniform_formspec(name)
|
||||
local basic_form = table.concat({
|
||||
"formspec_version[5]",
|
||||
"size[5,2.9]",
|
||||
}, "")
|
||||
|
||||
--minetest.chat_send_all(dump(airutils.pilot_textures))
|
||||
|
||||
local textures = ""
|
||||
if airutils.pilot_textures then
|
||||
for k, v in pairs( airutils.pilot_textures ) do
|
||||
textures = textures .. v .. ","
|
||||
end
|
||||
|
||||
basic_form = basic_form.."dropdown[0.5,0.5;4,0.8;textures;".. textures ..";0;false]"
|
||||
basic_form = basic_form.."button[0.5,1.6;4,0.8;set_texture;" .. S("Set Player Texture") .. "]"
|
||||
|
||||
minetest.show_formspec(name, "airutils:change", basic_form)
|
||||
else
|
||||
minetest.chat_send_player(name, S("The isn't activated as secure. Aborting"))
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname == "airutils:change" then
|
||||
local name = player:get_player_name()
|
||||
if fields.textures or fields.set_texture then
|
||||
airutils.set_player_skin(player, fields.textures)
|
||||
end
|
||||
minetest.close_formspec(name, "airutils:change")
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_meta = player:get_meta()
|
||||
local skin = player_meta:get_string("curr_skin")
|
||||
--minetest.chat_send_all(">>>"..skin)
|
||||
|
||||
if skin and skin ~= "" and skin ~= nil then
|
||||
-- setting player skin on connect has no effect, so delay skin change
|
||||
minetest.after(3, function(player1, skin1)
|
||||
airutils.set_player_skin(player1, skin1)
|
||||
end, player, skin)
|
||||
end
|
||||
end)
|
Loading…
Add table
Add a link
Reference in a new issue