cg72_game/mods/default/gender.lua

149 lines
6.2 KiB
Lua

------------------------------------------------------------------------------
------------------------------------------------------------------------------
--------------boy/girl skins-- crazyginger72--rewrite by Krock----------------
------------------------------------------------------------------------------
---special thanks to kaeza, nore, Zeno`, and jordach for help with the code---
------------------------------------------------------------------------------
------------------------------------------------------------------------------
local gender = {}
gender.players = {}
gender.file = minetest.get_worldpath() .. "/player_genders"
gender.changed = false
gender.formname = "gender:selection"
gender.formspec = (
"size[8,2]label[2.1,0;Do you want boy or a girl skin?]"..
"button_exit[0,0;4,4;boy;Boy]"..
"button_exit[4,0;4,4;girl;Girl]"
)
function gender.load_data()
local input = io.open(gender.file, "r")
if not input then return end
for line in input:lines() do
if line ~= "" then
local data = line:split(" ")
gender.players[data[1]] = data[2]
end
end
io.close(input)
end
function gender.save_data()
if not gender.changed then return end
local output = io.open(gender.file, "w")
for k,v in pairs(gender.players) do
output:write(k.." "..v.."\n")
end
io.close(output)
gender.changed = false
end
gender.load_data()
minetest.register_on_player_receive_fields(function(player, formname, fields)
if gender.formname ~= formname then return end
local plname = player:get_player_name()
--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)
if fields.boy then -- Change skin to boy.
player:set_properties({
visual = "mesh",
mesh = "character.b3d",
textures = {"characterm.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Set player skin to boy!")
gender.changed = true
gender.players[plname] = "m"
elseif fields.girl then -- Change skin to girl.
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"characterf.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Set player skin to girl!")
gender.changed = true
gender.players[plname] = "f"
end
gender.save_data()
end)
minetest.register_chatcommand("gender", {
description = "Set your player skin.",
func = function(name)
minetest.show_formspec(name, gender.formname, gender.formspec)
end
})
minetest.register_on_joinplayer(function(player)
local plname = player:get_player_name()
--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)
if plname == "crazyginger72" then
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"charactercg.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your skin has been set ginger :D")
elseif plname == "shadowzone" then
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"charactersz.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your skin has been set selah :D")
elseif plname == "ChubbaBubba" then
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"charactercb.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your skin has been set darcie :D")
elseif plname == "Memow" then
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"characterM.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your skin has been set sexy kitty girl :D")
else
if gender.players[plname] == "m" then
player:set_properties({
visual = "mesh",
mesh = "character.b3d",
textures = {"characterm.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your gender is set to boy, to change type /gender ")
elseif gender.players[plname] == "f" then
player:set_properties({
visual = "mesh",
mesh = "characterf.b3d",
textures = {"characterf.png"},
visual_size = {x=1, y=1},
})
minetest.chat_send_player(plname, "Your gender is set to girl, to change type /gender ")
else
minetest.chat_send_player(plname, "Please set your gender via /boy or /girl, thank you. You can also ignore this message and use the default male model. This message will be shown again when you rejoin.")
minetest.show_formspec(plname, gender.formname, gender.formspec)
end
end
end)
print("[MOD] Gender choices are loaded")