143 lines
4.9 KiB
Lua
143 lines
4.9 KiB
Lua
local gender_file = minetest.get_worldpath() .. "/player_genders"
|
|
local genders = {}
|
|
|
|
local function loadgenders()
|
|
local input = io.open(gender_file, "r")
|
|
if input then
|
|
repeat
|
|
local gender_choice = input:read("*n")
|
|
if gender_choice == nil then
|
|
break
|
|
end
|
|
local name = input:read("*l")
|
|
genders[name:sub(2)] = gender_choice
|
|
until input:read(0) == nil
|
|
io.close(input)
|
|
else
|
|
genders = {}
|
|
end
|
|
end
|
|
|
|
loadgenders()
|
|
|
|
local changed = false
|
|
|
|
minetest.register_chatcommand("player_male", {
|
|
description = "Sets your player model to the default male one",
|
|
func = function(name)
|
|
local player = minetest.env:get_player_by_name(name)
|
|
if player == nil then
|
|
return false
|
|
end
|
|
if true then
|
|
default.player_set_model(player, "character.b3d")
|
|
local filename = minetest.get_modpath("player_textures").."/textures/player_"..player:get_player_name()
|
|
local f = io.open(filename..".png")
|
|
if f then
|
|
f:close()
|
|
player:set_properties({
|
|
textures = {"player_"..player:get_player_name()..".png"},
|
|
})
|
|
end
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
minetest.chat_send_player(name, "Set player model to male!")
|
|
changed = true
|
|
if changed then
|
|
local output = io.open(gender_file, "w")
|
|
output:write("1".." "..player:get_player_name().."\n")
|
|
output:close()
|
|
end
|
|
changed = false
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("player_cloth", {
|
|
description = "Sets your player model to the Minecraft 1.8 one",
|
|
func = function(name)
|
|
local player = minetest.env:get_player_by_name(name)
|
|
if player == nil then
|
|
return false
|
|
end
|
|
if true then
|
|
default.player_set_model(player, "character_18.b3d")
|
|
local filename = minetest.get_modpath("player_textures").."/textures/player_"..player:get_player_name()
|
|
local f = io.open(filename..".png")
|
|
if f then
|
|
f:close()
|
|
player:set_properties({
|
|
textures = {"player_"..player:get_player_name()..".png"},
|
|
})
|
|
end
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
minetest.chat_send_player(name, "Set player model to 1.8 compat!")
|
|
changed = true
|
|
if changed then
|
|
local output = io.open(gender_file, "w")
|
|
output:write("2".." "..player:get_player_name().."\n")
|
|
output:close()
|
|
end
|
|
changed = false
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_chatcommand("player_female", {
|
|
description = "Sets your player model to the female one",
|
|
func = function(name)
|
|
local player = minetest.env:get_player_by_name(name)
|
|
if player == nil then
|
|
return false
|
|
end
|
|
if true then
|
|
default.player_set_model(player, "characterfemale.b3d")
|
|
local filename = minetest.get_modpath("player_textures").."/textures/player_"..player:get_player_name()
|
|
local f = io.open(filename..".png")
|
|
if f then
|
|
f:close()
|
|
player:set_properties({
|
|
textures = {"player_"..player:get_player_name()..".png"},
|
|
})
|
|
end
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
minetest.chat_send_player(name, "Set player model to female!")
|
|
changed = true
|
|
if changed then
|
|
local output = io.open(gender_file, "w")
|
|
output:write("0".." "..player:get_player_name().."\n")
|
|
output:close()
|
|
end
|
|
changed = false
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
loadgenders()
|
|
default.player_attached[player:get_player_name()] = false
|
|
if genders[player:get_player_name()] == 1 then
|
|
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)
|
|
elseif genders[player:get_player_name()] == 0 then
|
|
default.player_set_model(player, "characterfemale.b3d")
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
elseif genders[player:get_player_name()] == 2 then
|
|
default.player_set_model(player, "character_18.b3d")
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
elseif player:get_player_name() == "Hoodedice" then
|
|
default.player_set_model(player, "characterfemale.b3d")
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
elseif player:get_player_name() == "singleplayer" then
|
|
default.player_set_model(player, "character_18.b3d")
|
|
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
|
|
else
|
|
local filename = minetest.get_modpath("player_textures").."/textures/player_"..player:get_player_name()
|
|
|
|
local f = io.open(filename..".png")
|
|
|
|
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)
|
|
minetest.chat_send_player(player:get_player_name(), "Please set your gender via /player_male or /player_female, thank you. You can also ignore this message and use the ")
|
|
minetest.chat_send_player(player:get_player_name(), "default male model. This message will be shown again when you rejoin.")
|
|
end
|
|
end) |