From 5bea54276cf861920b92820adfdc0fbfaf492751 Mon Sep 17 00:00:00 2001 From: cale Date: Mon, 26 Dec 2016 11:05:28 +0100 Subject: [PATCH] added new clan system --- mods/character_editor/init.lua | 64 +++---- mods/clans/depends.txt | 1 + mods/clans/init.lua | 215 +++++++++++------------- mods/default/craft.lua | 7 + mods/default/textures/default_water.png | Bin 269 -> 292 bytes 5 files changed, 135 insertions(+), 152 deletions(-) create mode 100644 mods/clans/depends.txt diff --git a/mods/character_editor/init.lua b/mods/character_editor/init.lua index 1b84efb..30306e5 100644 --- a/mods/character_editor/init.lua +++ b/mods/character_editor/init.lua @@ -32,38 +32,38 @@ function character_editor.set_texture(player, pos, texture) character_editor.update_character(player) end -default.player_inventory.register_tab({ - name = "Settings", - type = "normal", - formspec = "size[8,7.5;]" .. - default.gui_colors .. - default.gui_bg .. - "label[0,0;Language:]" .. - "button[0,0.5;1,1;lang_EN;EN]" .. - "button[1,0.5;1,1;lang_DE;DE]" .. - "button[2,0.5;1,1;lang_FR;FR]" .. - "button[3,0.5;1,1;lang_ID;ID]" .. - "button[4,0.5;1,1;lang_TR;TR]", - on_event = function(player, fields) - local name = player:get_player_name() - if fields["lang_EN"] then - print("EN") - character_editor.language[name] = "" - elseif fields["lang_DE"] then - print("DE") - character_editor.language[name] = "de/" - elseif fields["lang_FR"] then - print("FR") - character_editor.language[name] = "fr/" - elseif fields["lang_ID"] then - print("ID") - character_editor.language[name] = "id/" - elseif fields["lang_TR"] then - print("TR") - character_editor.language[name] = "tr/" - end - end -}) +--default.player_inventory.register_tab({ +-- name = "Settings", +-- type = "normal", +-- formspec = "size[8,7.5;]" .. +-- default.gui_colors .. +-- default.gui_bg .. +-- "label[0,0;Language:]" .. +-- "button[0,0.5;1,1;lang_EN;EN]" .. +-- "button[1,0.5;1,1;lang_DE;DE]" .. +-- "button[2,0.5;1,1;lang_FR;FR]" .. +-- "button[3,0.5;1,1;lang_ID;ID]" .. +-- "button[4,0.5;1,1;lang_TR;TR]", +-- on_event = function(player, fields) +-- local name = player:get_player_name() +-- if fields["lang_EN"] then +-- print("EN") +-- character_editor.language[name] = "" +-- elseif fields["lang_DE"] then +-- print("DE") +-- character_editor.language[name] = "de/" +-- elseif fields["lang_FR"] then +-- print("FR") +-- character_editor.language[name] = "fr/" +-- elseif fields["lang_ID"] then +-- print("ID") +-- character_editor.language[name] = "id/" +-- elseif fields["lang_TR"] then +-- print("TR") +-- character_editor.language[name] = "tr/" +-- end +-- end +--}) minetest.register_chatcommand("shirt", { params = "", diff --git a/mods/clans/depends.txt b/mods/clans/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/clans/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/clans/init.lua b/mods/clans/init.lua index 76a0c9a..b689911 100644 --- a/mods/clans/init.lua +++ b/mods/clans/init.lua @@ -1,47 +1,67 @@ clans = {} +clans.players = {} clans.all_clans = {} clans.clans_file = minetest.get_worldpath() .. "/clans" -function clans.create_clan(plname, clan_name) - clans.all_clans[clan_name] = {plname} - clans.save_clans() -end - -function clans.add_member(clan_name, plname) - table.insert(clans.all_clans[clan_name], plname) - clans.save_clans() -end - -function clans.remove_member(clan_name, plname) - for k,v in pairs(clans.all_clans[clan_name]) do - if v == plname then - table.remove(clans.all_clans[clan_name], k) - clans.save_clans() - break - end +function clans.create_clan(clan_name) + if not(clans.all_clans[clan_name]) then + clans.all_clans[clan_name] = {} + clans.save_clans() + return true + else + return false end end -function clans.show_my_clans(plname) - local str = "" - for k,v in pairs(clans.all_clans) do - for m,n in pairs(clans.all_clans[k]) do - if n == plname then - str = str .. k .. "," - break - end - end +function clans.join_clan(clan_name, name) + if clans.all_clans[clan_name] then + clans.players[name] = clan_name + clans.save_clans() + return true + else + clans.save_clans() + return false end - return str end +function clans.leave_clan(name) + clans.players[name] = "" + clans.save_clans() +end + +function clans.get_members(clan_name) + local members = {} + + for name, clan in pairs(clans.players) do + if clan == clan_name then + table.insert(members, name) + end + end + + return members +end + +function clans.list_clans() + local all_clans = {} + + for name, _ in pairs(clans.all_clans) do + table.insert(all_clans, name) + end + + return all_clans +end + + +--TODO function clans.load_clans() local input = io.open(clans.clans_file, "r") if input then local str = input:read() if str then if minetest.deserialize(str) then - clans.all_clans = minetest.deserialize(str) + local data = minetest.deserialize(str) + clans.all_clans = data.all_clans + clans.players = data.players end end io.close(input) @@ -50,8 +70,12 @@ end function clans.save_clans() if clans.all_clans then + local data = {} + data.all_clans = clans.all_clans + data.players = clans.players + local output = io.open(clans.clans_file, "w") - local str = minetest.serialize(clans.all_clans) + local str = minetest.serialize(data) output:write(str) io.close(output) end @@ -59,98 +83,49 @@ end clans.load_clans() -minetest.register_chatcommand("create_clan", { - params = "", - description = "Creates a clan", - privs = {}, +minetest.register_chatcommand("clan", { + params = "join/leave/new/show/all ()", + description = "", + privs = {interact = true}, func = function(name, text) - if clans.all_clans[text] then - return true, "There already is a clan named " .. text - end - local player = minetest.get_player_by_name(name) - if player then - clans.create_clan(name, text) - return true, "Added a clan named " .. text + local params = string.split(text, " ") + + if #params > 0 then + if params[1] == "join" and #params > 1 then + local out = clans.join_clan(params[2], name) + if out then + clans.join_clan(params[2], name) + return true, "Done" + else + return false, "Error" + end + + elseif params[1] == "leave" then + clans.leave_clan(name) + return true, "Done" + + elseif (params[1] == "new" or params[1] == "add" or params[1] == "create") and #params > 1 then + local out = clans.create_clan(params[2]) + if out then + clans.join_clan(params[2], name) + return true, "Done" + else + return false, "Error" + end + + elseif params[1] == "show" then + if clans.players[name] then + return true, "Members: " .. table.concat(clans.get_members(clans.players[name]), ", ") + else + return false, "Error" + end + + elseif (params[1] == "all" or params[1] == "list") then + return true, "Clans: " .. table.concat(clans.list_clans(), ", ") + + else + return false, "/clan join/leave/new/show/all ()" + end end - return true, "Error couldnt find player " .. name - end, -}) - -minetest.register_chatcommand("join_clan", { - params = "", - description = "Join a clan", - privs = {}, - func = function(name, text) - if not clans.all_clans[text] then - return true, "There is no clan named " .. text - end - local player = minetest.get_player_by_name(name) - if player then - clans.add_member(text, name) - return true, "Joined clan " .. text - end - return true, "Error couldnt find player " .. name - end, -}) - -minetest.register_chatcommand("leave_clan", { - params = "", - description = "Leave a clan", - privs = {}, - func = function(name, text) - if not clans.all_clans[text] then - return true, "There is no clan named " .. text - end - local player = minetest.get_player_by_name(name) - if player then - clans.remove_member(text, name) - return true, "Left clan " .. text - end - return true, "Error couldnt find player " .. name - end, -}) - -minetest.register_chatcommand("list_clans", { - params = "", - description = "Shows all clans", - privs = {}, - func = function(name, text) - if not clans.all_clans then - return true, "Error" - end - local keys = {} - local i = 0 - for k,_ in pairs(clans.all_clans) do - keys[i] = k - i= i+1 - end - if not keys then - return true, "Error" - end - minetest.chat_send_player(name, table.concat(keys, ",")) - return true, "type /join_clan to join a clan" - end, -}) - -minetest.register_chatcommand("show_clan", { - params = "", - description = "Shows the clan", - privs = {}, - func = function(name, text) - if not clans.all_clans[text] then - return true, "There is no clan named " .. text - end - minetest.chat_send_player(name, table.concat(clans.all_clans[text], ",")) - return true, "type /join_clan " .. text .." to join this clan" - end, -}) - -minetest.register_chatcommand("my_clans", { - params = "", - description = "Shows the clan", - privs = {}, - func = function(name, text) - minetest.chat_send_player(name, clans.show_my_clans(name)) - return true, "type /leave_clan to leave a clan" end, }) diff --git a/mods/default/craft.lua b/mods/default/craft.lua index 9ec3abf..5136c16 100644 --- a/mods/default/craft.lua +++ b/mods/default/craft.lua @@ -315,6 +315,13 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "default:workbench", + recipe = { + {"default:birch_wood", "default:birch_wood", "default:birch_wood"}, + } +}) + minetest.register_craft({ output = "default:workbench_v2", recipe = { diff --git a/mods/default/textures/default_water.png b/mods/default/textures/default_water.png index 7cd639802338e49f0284ac5ff44cffe624e40fac..f3e4702f028b8ca34c0eaf2a55ef7be8315ce8c4 100644 GIT binary patch delta 212 zcmV;_04x8E0;B?v85#xv0047(dh`GQ00v@9M??Vs0RI60puMM)ks%)m3>gd(Fl9#l zEs;qme~d{)K~z}7V=S3?bTh*M0w#t521CaIzkmH;`2Fk0@CyMJVimHoagb~{EX45X z9XcUEj8D;hOH8OS(KEpfohTqR!I6_dM@zzy=>TlGi;0$o)2$$)B)728(r~JU0Is5T zG#5}KQL@l7eg`xc5bNmCqIlE+EVL?sh-ncIBA-?Qm1E delta 216 zcmV;}04M*X0*wNY8889>008_L?V|ty010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-~ta3I1P;X`xTK}D1V1ZL_t(Y$73v+c$9&bfQf;|V4yAd{p-i?Uq1%54_NR^v$Amz zV+zEVSQQVn5Ae7b*~xf3%0%^89q1q;CRT}z`4N(n2crdO>5z#krcgPfk(9<*sA3A4 zKENyzhG{CoAK@(2DiUazitxK*w5S-YtqPK|7@j7@U~N^9lpRc2XqUz46hr_b4=*6u S)!vE#0000