More cleanup

master
Lejo1 2020-06-14 17:16:46 +02:00
parent e16b448e3a
commit 7da640023e
No known key found for this signature in database
GPG Key ID: 7249ED75EF7EBABC
54 changed files with 746 additions and 830 deletions

3
.gitmodules vendored
View File

@ -16,3 +16,6 @@
[submodule "mods/worldedit"]
path = mods/worldedit
url = https://github.com/Uberi/Minetest-WorldEdit
[submodule "mods/item_drop"]
path = mods/item_drop
url = https://github.com/minetest-mods/item_drop

View File

@ -3,8 +3,6 @@ Subgames
Contribution repository for the Minetest Server Subgames for all!
This Repository is not for using on your own Server!
Installing
----------
1. `git clone --recursive https://github.com/Lejo1/subgames.git`
@ -18,54 +16,5 @@ The Mods from [minetest_game](https://github.com/minetest/minetest_game) are lic
Textures: CC-BY-SA 3.0
Code: LGPL 2.1 or later
The Mods: subgames, skywars, hiddenseeker, mesewars, main, build, survivalgames are created by [Lejo](https://github.com/Lejo1)
With the following License:
You are not allowed to distribute any copy or work based on this programm unless the copyright holder declares his consent.
You are not allowed to use this mods on a public server.
THE SOFTWARE IS PROVIDED WITHOUT WARRANTY OF ANY KIND!
API
---
The Server is splitted into diffrent lobbys.
This is saved in player_lobby[name] = "main"
All minetest registers like minetest.register_on_join_player(func(player)) are here subgames.register_on_join_player(func(player, lobby)) lobby is the name string of the Lobby where the Action happens.
But not all registers are supported yet.
Example:
subgames.register_on_join_player(function(player, lobby)
if lobby == "main" then
minetest.chat_send_play(player:get_player_name(), "HI")
end
end)
IMPORTANT: Registers like on_place_node don't allways have a player!
For this a Lobby must register its location at the top of mods/subgames/init.lua
areas={
["mesewars"] = {
[1] = {x=(-76), y=158, z=154},
[2] = {x=266, y=(-52), z=(-169)}
},
["main"] = {
[1] = {x=(-31), y=623, z=0},
[2] = {x=9, y=595, z=39}
},
["hiddenseeker"] = {
[1] = {x=0, y=(-10000), z=0},
[2] = {x=0, y=(-10000), z=0}
},
["skywars"] = {
[1] = {x=10000, y=1900, z=10000},
[2] = {x=(-10000), y=2900, z=(-10000)}
}
}
The API is not finished!
The Mods: skywars, hiddenseeker, mesewars, customisations, survivalgames are created by [Lejo](https://github.com/Lejo1)
These mods contain map information which must be fitted on the map.

View File

@ -1,4 +1,3 @@
sfinv
mesewars
3d_armor
subgames
3d_armor_sfinv?
customisations?

View File

@ -1,2 +0,0 @@
subgames
default

View File

@ -47,14 +47,6 @@ subgames.register_game("build", {
},
})
minetest.register_privilege("invs", "Allows you to be fully invisible!")
function core.send_join_message(name)
end
function core.send_leave_message(name, timed_out)
end
minetest.register_chatcommand("pinfo", {
params = "<name>",
description = "Get some infos of a player.",
@ -70,10 +62,10 @@ minetest.register_chatcommand("pinfo", {
})
minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
if player_lobby[hitter:get_player_name()] == "build" then
subgames.add_bothud(hitter, player:get_player_name(), 0xFFFFFF, 5)
return true
elseif minetest.get_player_privs(hitter:get_player_name()).ban then
if minetest.get_player_privs(hitter:get_player_name()).ban then
subgames.add_bothud(hitter, player:get_player_name(), 0xFFFFFF, 5)
if player_lobby[hitter:get_player_name()] == "build" then
return true
end
end
end)

View File

@ -0,0 +1,5 @@
subgames
hiddenseeker
mesewars
skywars
survivalgames

View File

@ -1,159 +1,8 @@
-- This is the file which manages the main lobby
main = {}
local mustcreate = true
minetest.register_tool("main:teleporter", {
description = "Teleporter",
inventory_image = "compass.png",
on_use = function(itemstack, user, pointed_thing)
main.open_teleporter_form(user)
end,
on_secondary_use = function(itemstack, user, pointed_thing)
main.open_teleporter_form(user)
end,
})
-- Server customisations
dofile(minetest.get_modpath("customisations") .. "/main.lua")
dofile(minetest.get_modpath("customisations") .. "/build.lua")
subgames.register_game("main", {
fullname = "Main",
object = main,
area = {
[1] = {x=(-31), y=623, z=0},
[2] = {x=9, y=595, z=39}
},
node_dig = function(pos, node, digger)
return false
end,
item_place_node = function(itemstack, placer, pointed_thing, param2)
return false
end,
})
main.teleporter_form = ""
function main.create_teleporter_form()
main.teleporter_form = ("size[4,4]" ..
"item_image_button[0,0;2,2;mesewars:mese1;mesewars;"..#subgames.get_lobby_players("mesewars").." players]" ..
"tooltip[mesewars;Mesewars: Eggwars in Minetest!]"..
"image_button[2,0;2,2;hideandseek.png;hiddenseeker;"..#subgames.get_lobby_players("hiddenseeker").." players]" ..
"tooltip[hiddenseeker;Hide and Seek!]" ..
"item_image_button[0,2;2,2;bow:bow;skywars;"..#subgames.get_lobby_players("skywars").." players]" ..
"tooltip[skywars;Skywars!]" ..
"item_image_button[2,2;2,2;default:sword_steel;survivalgames;"..#subgames.get_lobby_players("survivalgames").." players]" ..
"tooltip[survivalgames;Survivalgames!]")
return main.teleporter_form
end
function main.open_teleporter_form(player)
local name = player:get_player_name()
minetest.show_formspec(name, "main:teleporter", main.create_teleporter_form())
end
minetest.register_on_player_receive_fields(function(player, formname, pressed)
if formname == "main:teleporter" then
local name = player:get_player_name()
if pressed.mesewars then
if #subgames.get_lobby_players("mesewars") < mesewars.lobbys[1].playercount*#mesewars.lobbys then
subgames.change_lobby(player, "mesewars")
end
elseif pressed.hiddenseeker then
if #subgames.get_lobby_players("hiddenseeker") < hiddenseeker.max_players*#hiddenseeker.lobbys then
subgames.change_lobby(player, "hiddenseeker")
end
elseif pressed.skywars then
local count = 0
for numb, table in pairs(skywars.lobbys) do
count = count + table.playercount
end
if #subgames.get_lobby_players("skywars") < count then
subgames.change_lobby(player, "skywars")
else minetest.chat_send_player(name, "Skywars is full!")
end
elseif pressed.survivalgames then
if #subgames.get_lobby_players("survivalgames") < survivalgames.max_players* #survivalgames.lobbys then
subgames.change_lobby(player, "survivalgames")
else minetest.chat_send_player(name, "Ssurvivalgames is full!")
end
end
minetest.close_formspec(name, "main:teleporter")
end
end)
local spawn = {x=(-11), y=602, z=20}
subgames.register_on_joinplayer(function(player, lobby)
if lobby == "main" then
local name = player:get_player_name()
player:set_pos(spawn)
local inv = player:get_inventory()
inv:add_item("main", "main:teleporter")
sfinv.set_page(player, "subgames:lobbys")
local privs = minetest.get_player_privs(name)
privs.interact = true
minetest.set_player_privs(name, privs)
if mustcreate == true then
mustcreate = false
local param1 = "mainlobby"
local schem = minetest.get_worldpath() .. "/schems/" .. param1 .. ".mts"
minetest.place_schematic({x=-27, y=601, z=4}, schem)
end
minetest.after(1, function()
if player:is_player_connected() and agreerules_accepted(name) and player_lobby[name] == "main" then
main.open_teleporter_form(player)
subgames.clear_inv(player)
local inv = player:get_inventory()
inv:add_item("main", "main:teleporter")
sfinv.set_page(player, "subgames:lobbys")
end
end)
end
end)
subgames.register_on_leaveplayer(function(player, lobby)
if lobby == "main" then
end
end)
subgames.register_on_chat_message(function(name, message, lobby)
if lobby == "main" and name and message then
subgames.chat_send_all_lobby("main", "<"..name.."> "..message)
return true
end
end)
-- Add chat system
subgames.register_on_respawnplayer(function(player, lobby)
if lobby == "main" then
player:set_pos(spawn)
end
end)
subgames.register_on_drop(function(itemstack, dropper, pos, lobby)
if lobby == "main" then
return false
end
end)
-- Add the hub command
minetest.register_chatcommand("hub", {
params = "",
description = "Use it to get to the Main Lobby!",
func = function(user)
local player = minetest.get_player_by_name(user)
subgames.change_lobby(player, "main")
end,
})
-- Add the lethub command
minetest.register_chatcommand("lethub", {
privs = {kick=true},
params = "name",
description = "Use it to sent players in the main Lobby!",
func = function(name, param)
local player = minetest.get_player_by_name(param)
if player then
subgames.change_lobby(player, "main")
minetest.chat_send_player(name, "You have left the player "..param)
else minetest.chat_send_player(name, "The player is not online!")
end
end,
})
minetest.register_privilege("invs", "Allows you to be fully invisible!")
function minetest.get_server_status()
local total = ""
@ -235,7 +84,7 @@ You find the kits, skins and more in your inventory.]]
}
function main.get_help_form(type)
local function get_help_form(type)
local toreturn = (
"size[8,6]"..
"button[0,0;2,1;general;General]"..
@ -253,12 +102,12 @@ minetest.register_chatcommand("info", {
params = "",
description = "Use it to see the helpguide!",
func = function(name)
minetest.show_formspec(name, "main:info", main.get_help_form("general"))
minetest.show_formspec(name, "customisations:info", get_help_form("general"))
end,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "main:info" then
if formname == "customisations:info" then
local type
if fields.general then type = "general" end
if fields.mesewars then type = "mesewars" end
@ -267,13 +116,86 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.survivalgames then type = "survivalgames" end
if fields.commands then type = "commands" end
if type then
minetest.show_formspec(player:get_player_name(), "main:info", main.get_help_form(type))
minetest.show_formspec(player:get_player_name(), "customisations:info", get_help_form(type))
end
end
end)
subgames.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage, lobby)
if lobby == "main" and player then
return true
-- Delete player accounts if they doesn't earn any money
minetest.register_on_leaveplayer(function(player)
if player then
local name = player:get_player_name()
if not money.exist(name) then
minetest.after(1, function()
if minetest.get_player_by_name(name) then
return false
end
if sban_del_player(name) then
minetest.remove_player(name)
minetest.remove_player_auth(name)
remove_rule_accepted(name)
playtime.remove_playtime(name)
skins.remove_player(name)
subgames.remove_all_player(name)
money.remove(name)
return true
end
end)
end
end
end)
minetest.unregister_chatcommand("me")
minetest.register_chatcommand("say", {
params = "",
description = "Use it to say something in the global chat.",
privs = {kick=true},
func = function(user, param)
minetest.chat_send_all(param)
end,
})
minetest.register_on_joinplayer(function(player)
player:hud_set_flags({minimap = false})
player:set_properties({zoom_fov=10})
end)
minetest.register_chatcommand("w", {
params = "<name>",
description = "Use it to get the Lobby where a player is.",
func = function(user, param)
local player = minetest.get_player_by_name(param)
if player and not minetest.get_player_privs(param).invs then
minetest.chat_send_player(user, "The player "..param.." is in the Lobby "..player_lobby[param]..".")
else minetest.chat_send_player(user, "The player is not online")
end
end,
})
function core.send_join_message(name)
end
function core.send_leave_message(name, timed_out)
end
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
player:set_properties({
visual_size = {x=1, y=1},
makes_footstep_sound = true,
collisionbox = {-0.3, -1, -0.3, 0.3, 1, 0.3}
})
local privs = minetest.get_player_privs(name)
privs.interact = true
privs.fly = nil
privs.fast = nil
privs.noclip = nil
minetest.set_player_privs(name, privs)
subgames.call_join_callbacks(player, "main")
end)
minetest.register_on_chat_message(function(name, message)
minetest.log("action", "Chatlog: "..name.." wrote:"..message)
end)

View File

@ -0,0 +1,181 @@
-- This is the file which manages the main lobby
main = {}
local mustcreate = true
minetest.register_tool("customisations:teleporter", {
description = "Teleporter",
inventory_image = "compass.png",
on_use = function(itemstack, user, pointed_thing)
main.open_teleporter_form(user)
end,
on_secondary_use = function(itemstack, user, pointed_thing)
main.open_teleporter_form(user)
end,
})
subgames.register_game("main", {
fullname = "Main",
object = main,
area = {
[1] = {x=(-31), y=623, z=0},
[2] = {x=9, y=595, z=39}
},
crafting = false,
node_dig = function(pos, node, digger)
return false
end,
item_place_node = function(itemstack, placer, pointed_thing, param2)
return false
end,
})
function main.create_teleporter_form()
return "size[4,4]" ..
"item_image_button[0,0;2,2;mesewars:mese1;mesewars;"..#subgames.get_lobby_players("mesewars").." players]" ..
"tooltip[mesewars;Mesewars: Eggwars in Minetest!]"..
"image_button[2,0;2,2;hideandseek.png;hiddenseeker;"..#subgames.get_lobby_players("hiddenseeker").." players]" ..
"tooltip[hiddenseeker;Hide and Seek!]" ..
"item_image_button[0,2;2,2;bow:bow;skywars;"..#subgames.get_lobby_players("skywars").." players]" ..
"tooltip[skywars;Skywars!]" ..
"item_image_button[2,2;2,2;default:sword_steel;survivalgames;"..#subgames.get_lobby_players("survivalgames").." players]" ..
"tooltip[survivalgames;Survivalgames!]"
end
function main.open_teleporter_form(player)
local name = player:get_player_name()
minetest.show_formspec(name, "customisations:teleporter", main.create_teleporter_form())
end
minetest.register_on_player_receive_fields(function(player, formname, pressed)
if formname == "customisations:teleporter" then
local name = player:get_player_name()
if pressed.mesewars then
if #subgames.get_lobby_players("mesewars") < mesewars.lobbys[1].playercount*#mesewars.lobbys then
subgames.change_lobby(player, "mesewars")
end
elseif pressed.hiddenseeker then
if #subgames.get_lobby_players("hiddenseeker") < hiddenseeker.max_players*#hiddenseeker.lobbys then
subgames.change_lobby(player, "hiddenseeker")
end
elseif pressed.skywars then
local count = 0
for numb, table in pairs(skywars.lobbys) do
count = count + table.playercount
end
if #subgames.get_lobby_players("skywars") < count then
subgames.change_lobby(player, "skywars")
else minetest.chat_send_player(name, "Skywars is full!")
end
elseif pressed.survivalgames then
if #subgames.get_lobby_players("survivalgames") < survivalgames.max_players* #survivalgames.lobbys then
subgames.change_lobby(player, "survivalgames")
else minetest.chat_send_player(name, "Ssurvivalgames is full!")
end
end
minetest.close_formspec(name, "customisations:teleporter")
end
end)
local spawn = {x=(-11), y=602, z=20}
subgames.register_on_joinplayer(function(player, lobby)
if lobby == "main" then
local name = player:get_player_name()
player:set_pos(spawn)
local inv = player:get_inventory()
inv:add_item("main", "customisations:teleporter")
sfinv.set_page(player, "main:lobbys")
local privs = minetest.get_player_privs(name)
privs.interact = true
minetest.set_player_privs(name, privs)
if mustcreate == true then
mustcreate = false
local param1 = "mainlobby"
local schem = minetest.get_worldpath() .. "/schems/" .. param1 .. ".mts"
minetest.place_schematic({x=-27, y=601, z=4}, schem)
end
minetest.after(1, function()
if player:is_player_connected() and agreerules_accepted(name) and player_lobby[name] == "main" then
main.open_teleporter_form(player)
subgames.clear_inv(player)
local inv = player:get_inventory()
inv:add_item("main", "customisations:teleporter")
sfinv.set_page(player, "main:lobbys")
end
end)
end
end)
subgames.register_on_leaveplayer(function(player, lobby)
if lobby == "main" then
end
end)
subgames.register_on_chat_message(function(name, message, lobby)
if lobby == "main" and name and message then
subgames.chat_send_all_lobby("main", "<"..name.."> "..message)
return true
end
end)
-- Add chat system
subgames.register_on_respawnplayer(function(player, lobby)
if lobby == "main" then
player:set_pos(spawn)
end
end)
subgames.register_on_drop(function(itemstack, dropper, pos, lobby)
if lobby == "main" then
return false
end
end)
subgames.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage, lobby)
if lobby == "main" and player then
return true
end
end)
-- Add the hub command
minetest.register_chatcommand("hub", {
params = "",
description = "Use it to get to the Main Lobby!",
func = function(user)
local player = minetest.get_player_by_name(user)
subgames.change_lobby(player, "main")
end,
})
sfinv.register_page("main:lobbys", {
title = "Lobbys",
get = function(self, player, context)
return sfinv.make_formspec(player, context, main.create_teleporter_form(), false)
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if pressed.mesewars then
subgames.change_lobby(player, "mesewars")
elseif pressed.hiddenseeker then
subgames.change_lobby(player, "hiddenseeker")
elseif pressed.skywars then
subgames.change_lobby(player, "skywars")
elseif pressed.survivalgames then
subgames.change_lobby(player, "survivalgames")
end
minetest.close_formspec(name, "")
end,
})
-- Add the lethub command
minetest.register_chatcommand("lethub", {
privs = {kick=true},
params = "name",
description = "Use it to sent players in the main Lobby!",
func = function(name, param)
local player = minetest.get_player_by_name(param)
if player then
subgames.change_lobby(player, "main")
minetest.chat_send_player(name, "You have left the player "..param)
else minetest.chat_send_player(name, "The player is not online!")
end
end,
})

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -92,7 +92,7 @@ subgames.register_on_punchnode(function(bpos, node, puncher, pointed_thing, lobb
if plobby and plooby ~= 0 and hiddenseeker.lobbys[plobby].players[name] == "seeker" then
for pname, table in pairs(hiddenseeker.disguis) do
if table.pos then
if vector.equals(bpos, subgames.decomma_pos(minetest.string_to_pos(hiddenseeker.disguis[pname].pos))) then
if vector.equals(bpos, vector.round(minetest.string_to_pos(hiddenseeker.disguis[pname].pos))) then
local player = minetest.get_player_by_name(pname)
hiddenseeker.disguis[pname].time = hiddenseeker.timetodisquis
hiddenseeker.disguis_player(player)

View File

@ -13,6 +13,7 @@ subgames.register_game("hiddenseeker", {
[1] = {x=0, y=(-10000), z=0},
[2] = {x=0, y=(-10000), z=0}
},
crafting = false,
node_dig = function(pos, node, digger)
return false
end,
@ -194,7 +195,7 @@ function hiddenseeker.join_game(player, lobby)
subgames.clear_inv(player)
hiddenseeker.lobbys[lobby].players[name] = true
player:set_nametag_attributes({color = {a = 0, r = 255, g = 255, b = 255}})
sfinv.set_page(player, "subgames:kits")
sfinv.set_page(player, "hiddenseeker:kits")
hiddenseeker.win(lobby)
if hiddenseeker.lobbys[lobby].mustcreate == true then
hiddenseeker.lobbys[lobby].mustcreate = false

View File

@ -1,4 +1,3 @@
hiddenseeker_kit_form = {}
hiddenseeker_kits = {}
local kits_register = {}
local kits_all = {}
@ -109,8 +108,7 @@ function hiddenseeker.create_kit_form(name)
local itembuyb = kits_register[hiddenseeker_kits[name].buying]
itembuy = itembuyb.items
end
hiddenseeker_kit_form[name] = (
"size[8,9]" ..
return "size[8,9]" ..
"label[0,0;Select your Block you want to be in the next round!]" ..
"dropdown[0,0.5;8,1.5;blocklist;"..subgames.concatornil(hiddenseeker_kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Block: "..subgames.concatornil(defitems).." ]" ..
@ -119,7 +117,7 @@ function hiddenseeker.create_kit_form(name)
"dropdown[0,3.5;8,1.5;buylist;"..table.concat(kits_all, ",")..";"..selected_buyid.."]" ..
"label[0,4.5;Cost: "..costbuy.."]" ..
"label[0,5.5;Block: "..subgames.concatornil(itembuy).." ]" ..
"button[4,4.5;3,1;buyblock;Buy this Block!]")
"button[4,4.5;3,1;buyblock;Buy this Block!]"
end
-- Grant money when kill a player
@ -137,26 +135,46 @@ subgames.register_on_kill_player(function(killer, killed, lobby)
end
end)
function hiddenseeker.kit_on_player_receive_fields(self, player, context, pressed)
function hiddenseeker.kit_on_player_receive_fields(player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "hiddenseeker" then
if pressed.buyblock then
if hiddenseeker_kits[name].buying then
hiddenseeker.add_player_kits(name, hiddenseeker_kits[name].buying)
end
if pressed.buyblock then
if hiddenseeker_kits[name].buying then
hiddenseeker.add_player_kits(name, hiddenseeker_kits[name].buying)
end
if pressed.blocklist then
hiddenseeker.set_player_kit(name, pressed.blocklist)
end
if pressed.buylist then
hiddenseeker_kits[name].buying = pressed.buylist
end
hiddenseeker.save_kits(name)
hiddenseeker.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
if pressed.blocklist then
hiddenseeker.set_player_kit(name, pressed.blocklist)
end
if pressed.buylist then
hiddenseeker_kits[name].buying = pressed.buylist
end
hiddenseeker.save_kits(name)
end
-- Add a kit tab
sfinv.register_page("hiddenseeker:kits", {
title = "Kits",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "hiddenseeker" then
return sfinv.make_formspec(player, context, hiddenseeker.create_kit_form(name), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "hiddenseeker" then
hiddenseeker.kit_on_player_receive_fields(player, context, pressed)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "hiddenseeker" then
return true
end
end
})
function hiddenseeker.get_player_block(name)
local lobby = hiddenseeker.player_lobby[name]
local selected = hiddenseeker_kits[name].selected

View File

@ -0,0 +1,2 @@
name = hiddenseeker
depends = default, subgames

View File

@ -160,7 +160,7 @@ local function party_win_announce(party, lobby, ldata)
subgames.clear_inv(player)
ldata.players[player:get_player_name()] = true
player:set_pos(ldata.pos)
sfinv.set_page(player, "subgames:kits")
sfinv.set_page(player, "hiddenseeker:kits")
end
hiddenseeker.win(lobby)
end)

1
mods/item_drop Submodule

@ -0,0 +1 @@
Subproject commit de38b20fa60c9d567a55bd97e2fa1134cf5d9d5c

View File

@ -1,43 +0,0 @@
===ITEM_DROP MOD for MINETEST-C55===
by PilzAdam
Edited by Lejo for mesewars!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Introduction:
This mod adds Minecraft like drop/pick up of items to Minetest.
How to install:
Unzip the archive an place it in minetest-base-directory/mods/minetest/
if you have a windows client or a linux run-in-place client. If you have
a linux system-wide instalation place it in ~/.minetest/mods/minetest/.
If you want to install this mod only in one world create the folder
worldmods/ in your worlddirectory.
For further information or help see:
http://wiki.minetest.com/wiki/Installing_Mods
How to use the mod:
Just install it an everything works.
For developers:
You dont have to use get_drops() anymore because of changes in the
builtin files of minetest.
License:
Sourcecode: WTFPL (see below)
Sound: WTFPL (see below)
See also:
http://minetest.net/
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

View File

@ -1,121 +0,0 @@
--[[This mod was added by Lejo for mesewars with everything with item place take up etc.!]]
minetest.register_globalstep(function(dtime)
for _,player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name()
if player:get_hp() > 0 and minetest.get_player_privs(name).interact then
local pos = player:get_pos()
pos.y = pos.y+0.5
local inv = player:get_inventory()
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
if object:get_luaentity().itemstring ~= "" then
minetest.sound_play("item_drop_pickup", {
to_player = player:get_player_name(),
gain = 0.4,
})
end
object:get_luaentity().itemstring = ""
object:remove()
end
end
end
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 2)) do
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
if object:get_luaentity().collect then
if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
local pos1 = pos
pos1.y = pos1.y+0.2
local pos2 = object:get_pos()
local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z}
vec.x = vec.x*3
vec.y = vec.y*3
vec.z = vec.z*3
object:setvelocity(vec)
object:get_luaentity().physical_state = false
object:get_luaentity().object:set_properties({
physical = false
})
minetest.after(1, function(args)
local lua = object:get_luaentity()
if object == nil or lua == nil or lua.itemstring == nil then
return
end
if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
if object:get_luaentity().itemstring ~= "" then
minetest.sound_play("item_drop_pickup", {
to_player = player:get_player_name(),
gain = 0.4,
})
end
object:get_luaentity().itemstring = ""
object:remove()
else
object:setvelocity({x=0,y=0,z=0})
object:get_luaentity().physical_state = true
object:get_luaentity().object:set_properties({
physical = true
})
end
end, {player, object})
end
end
end
end
end
end
end)
function minetest.handle_node_drops(pos, drops, digger)
local inv
if minetest.setting_getbool("creative_mode") and digger and digger:is_player() then
inv = digger:get_inventory()
end
for _,item in ipairs(drops) do
local count, name
if type(item) == "string" then
count = 1
name = item
else
count = item:get_count()
name = item:get_name()
end
if subgames.check_drop(pos, name, digger) then
if not inv or not inv:contains_item("main", ItemStack(name)) then
for i=1,count do
local obj = minetest.env:add_item(pos, name)
if obj ~= nil then
obj:get_luaentity().collect = true
local x = math.random(1, 5)
if math.random(1,2) == 1 then
x = -x
end
local z = math.random(1, 5)
if math.random(1,2) == 1 then
z = -z
end
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
-- FIXME this doesnt work for deactiveted objects
if minetest.setting_get("remove_items") and tonumber(minetest.setting_get("remove_items")) then
minetest.after(tonumber(minetest.setting_get("remove_items")), function(obj)
obj:remove()
end, obj)
end
end
end
end
end
end
end
if minetest.setting_get("log_mods") then
minetest.log("action", "item_drop loaded")
end

View File

@ -1 +0,0 @@
subgames

21
mods/mesewars/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019-date, Lejo <Lejo_1@web.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -136,6 +136,7 @@ subgames.register_game("mesewars", {
[1] = {x=(-700), y=1000, z=-700},
[2] = {x=75, y=1302, z=(-17)}
},
crafting = false,
node_dig = function(pos, node, digger)
local name = digger:get_player_name()
local plobby = mesewars.player_lobby[name]
@ -207,7 +208,7 @@ function mesewars.join_game(player, lobby)
subgames.clear_inv(player)
mesewars.lobbys[lobby].players[name] = false
subgames.spectate(player)
sfinv.set_page(player, "subgames:maps")
sfinv.set_page(player, "mesewars:maps")
return "Lobby is ingame! So you are now spectating."
else mesewars.player_lobby[name] = lobby
player:set_pos(mesewars.lobbys[lobby].specpos)
@ -225,7 +226,7 @@ function mesewars.join_game(player, lobby)
minetest.fix_light(mesewars.lobbys[lobby].mappos1, mesewars.lobbys[lobby].mappos2)
end
mesewars.team_form(name)
sfinv.set_page(player, "subgames:team")
sfinv.set_page(player, "mesewars:team")
return "You joined the map "..mesewars.lobbys[lobby].string_name.."!"
end
end

View File

@ -1,7 +1,5 @@
-- Adds kits to mesewars
kits = {}
mesewars_kit_form = {}
mesewars_ability_form = {}
local kits_all = {}
local abilitys = {
speed = {
@ -166,8 +164,7 @@ function mesewars.create_kit_form(name)
local itembuyb = kits.register[kits[name].buying]
itembuy = itembuyb.items
end
mesewars_kit_form[name] = (
"size[8,9]" ..
return "size[8,9]" ..
"label[0,0;Select your Kit!]" ..
"dropdown[0,0.5;8,1.5;kitlist;"..subgames.concatornil(kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Items: "..subgames.concatornil(defitems).." ]" ..
@ -176,9 +173,49 @@ function mesewars.create_kit_form(name)
"dropdown[0,3.5;8,1.5;buylist;"..table.concat(kits_all, ",")..";"..selected_buyid.."]" ..
"label[0,4.5;Cost: "..costbuy.."]" ..
"label[0,5.5;Items: "..subgames.concatornil(itembuy).." ]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
"button[4,4.5;3,1;buykit;Buy this Kit!]"
end
function mesewars.kit_on_player_receive_fields(player, context, pressed)
local name = player:get_player_name()
if pressed.buykit then
if kits[name].buying then
mesewars.add_player_kits(name, kits[name].buying)
end
end
if pressed.kitlist then
mesewars.set_player_kit(name, pressed.kitlist)
end
if pressed.buylist then
kits[name].buying = pressed.buylist
end
mesewars.save_kits(name)
end
-- Add a kit tab
sfinv.register_page("mesewars:kits", {
title = "Kits",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_kit_form(name), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
mesewars.kit_on_player_receive_fields(player, context, pressed)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})
-- Grant money when kill a player
subgames.register_on_kill_player(function(killer, killed, lobby)
if lobby == "mesewars" then
@ -301,8 +338,7 @@ local function check_active(value, number, text)
end
end
function mesewars.create_ability_form(player)
local name = player:get_player_name()
function mesewars.create_ability_form(name)
local speedontool
if kits[name].abilitys.speed.active == true then
speedontool = "Enable!"
@ -323,8 +359,7 @@ function mesewars.create_ability_form(player)
carefullontool = "Enable!"
else carefullontool = "Disable!"
end
mesewars_ability_form[name] = (
"size[8,9]" ..
return "size[8,9]" ..
"label[0,0.5;Here you can buy abilities for your money.]" ..
"label[0,1;Your money: "..money.get_money(name).." Coins]" ..
"image_button[1,2;1,1;pep_speedplus.png;speedon;]" ..
@ -379,7 +414,6 @@ function mesewars.create_ability_form(player)
"tooltip[carefull4;1600 Coins]" ..
"button[4,8;1,1;carefull5;"..check_active(kits[name].abilitys.carefull.level, 5, "50%").."]" ..
"tooltip[carefull5;3200 Coins]"
)
end
function mesewars.handle_buy(player, ability, level, cost)
@ -400,3 +434,80 @@ function mesewars.handle_buy(player, ability, level, cost)
minetest.chat_send_player(name, "You already buyed this Level.")
end
end
-- Add a Abilitys tab
sfinv.register_page("mesewars:abilitys", {
title = "Abilities",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_ability_form(name), false)
else return sfinv.make_formspec(player, context, (
"size[8,9]" ..
"label[0,0;Abilitys are not available here!]"
), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
if pressed.speedbox then
if pressed.speedbox == "true" then kits[name].abilitys.speed.active = true else kits[name].abilitys.speed.active = false end
elseif pressed.slownessbox then
if pressed.slownessbox == "true" then kits[name].abilitys.slowness.active = true else kits[name].abilitys.slowness.active = false end
elseif pressed.killkitbox then
if pressed.killkitbox == "true" then kits[name].abilitys.killkit.active = true else kits[name].abilitys.killkit.active = false end
elseif pressed.carefullbox then
if pressed.carefullbox == "true" then kits[name].abilitys.carefull.active = true else kits[name].abilitys.carefull.active = false end
elseif pressed.speed1 then
mesewars.handle_buy(player, "speed", 1, 200)
elseif pressed.speed2 then
mesewars.handle_buy(player, "speed", 2, 400)
elseif pressed.speed3 then
mesewars.handle_buy(player, "speed", 3, 800)
elseif pressed.speed4 then
mesewars.handle_buy(player, "speed", 4, 1600)
elseif pressed.speed5 then
mesewars.handle_buy(player, "speed", 5, 3200)
elseif pressed.slowness1 then
mesewars.handle_buy(player, "slowness", 1, 200)
elseif pressed.slowness2 then
mesewars.handle_buy(player, "slowness", 2, 400)
elseif pressed.slowness3 then
mesewars.handle_buy(player, "slowness", 3, 800)
elseif pressed.slowness4 then
mesewars.handle_buy(player, "slowness", 4, 1600)
elseif pressed.slowness5 then
mesewars.handle_buy(player, "slowness", 5, 3200)
elseif pressed.killkit1 then
mesewars.handle_buy(player, "killkit", 1, 200)
elseif pressed.killkit2 then
mesewars.handle_buy(player, "killkit", 2, 400)
elseif pressed.killkit3 then
mesewars.handle_buy(player, "killkit", 3, 800)
elseif pressed.killkit4 then
mesewars.handle_buy(player, "killkit", 4, 1600)
elseif pressed.killkit5 then
mesewars.handle_buy(player, "killkit", 5, 3200)
elseif pressed.carefull1 then
mesewars.handle_buy(player, "carefull", 1, 200)
elseif pressed.carefull2 then
mesewars.handle_buy(player, "carefull", 2, 400)
elseif pressed.carefull3 then
mesewars.handle_buy(player, "carefull", 3, 800)
elseif pressed.carefull4 then
mesewars.handle_buy(player, "carefull", 4, 1600)
elseif pressed.carefull5 then
mesewars.handle_buy(player, "carefull", 5, 3200)
end
mesewars.save_kits(name)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})

2
mods/mesewars/mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = mesewars
depends = subgames

View File

@ -111,7 +111,7 @@ subgames.register_on_respawnplayer(function(player, lobby)
mesewars.chat_send_all_lobby(plobby, minetest.colorize(mesewars.get_color_from_team(mesewars.lobbys[plobby].players[name]) ,name).." has been eliminated.")
mesewars.lobbys[plobby].players[name] = false
subgames.clear_inv(player)
sfinv.set_page(player, "subgames:team")
sfinv.set_page(player, "mesewars:team")
end
subgames.spectate(player)
player:set_pos(mesewars.lobbys[plobby].specpos)
@ -245,3 +245,34 @@ minetest.register_node("mesewars:mese4", {
end
end,
})
sfinv.register_page("mesewars:maps", {
title = "Maps",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_teleporter_form(), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
local lobby = player_lobby[name]
if lobby == "mesewars" then
if pressed.map1 then
mesewars.leave_game(player)
mesewars.win(mesewars.player_lobby[name])
minetest.chat_send_player(name, mesewars.join_game(player, 1))
elseif pressed.map2 then
mesewars.leave_game(player)
minetest.chat_send_player(name, mesewars.join_game(player, 2))
end
end
minetest.close_formspec(name, "")
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})

View File

@ -126,7 +126,7 @@ function mesewars.win(lobby)
subgames.unspectate(player)
mesewars.lobbys[lobby].players[name] = false
mesewars.color_tag(player)
sfinv.set_page(player, "subgames:team")
sfinv.set_page(player, "mesewars:team")
end
mesewars.reset_map(lobby)
mesewars.win(lobby)

View File

@ -120,6 +120,31 @@ function mesewars.handle_teamform_input(player, pressed)
end
end
-- Add a sfinv page for the team selector
sfinv.register_page("mesewars:team", {
title = "Teams",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_team_form(name), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
mesewars.handle_teamform_input(player, pressed)
if not pressed.quit then
mesewars.create_team_form(name)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})
function mesewars.teams_correct(lobby)
local maxteam = 1
for team=0, mesewars.lobbys[lobby].teams do

View File

@ -1,12 +0,0 @@
-- Delete player accounts if they doesn't earn any money
minetest.register_on_leaveplayer(function(player)
if player then
local name = player:get_player_name()
if not money.exist(name) then
minetest.after(1, function()
subgames.remove_all_player(name)
end)
end
end
end)

View File

@ -124,7 +124,7 @@ end
function sfinv.set_player_inventory_formspec(player, context)
local fs = sfinv.get_formspec(player,
context or sfinv.get_or_create_context(player))
player:set_inventory_formspec(fs)
player:set_inventory_formspec(fs or "")
end
function sfinv.set_page(player, pagename)

View File

@ -1,3 +1,22 @@
-- sfinv/init.lua
dofile(minetest.get_modpath("sfinv") .. "/api.lua")
sfinv.register_page("sfinv:crafting", {
title = "Crafting",
get = function(self, player, context)
return sfinv.make_formspec(player, context, [[
list[current_player;craft;1.75,0.5;3,3;]
list[current_player;craftpreview;5.75,1.5;1,1;]
image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]
listring[current_player;main]
listring[current_player;craft]
image[0,4.75;1,1;gui_hb_bg.png]
image[1,4.75;1,1;gui_hb_bg.png]
image[2,4.75;1,1;gui_hb_bg.png]
image[3,4.75;1,1;gui_hb_bg.png]
image[4,4.75;1,1;gui_hb_bg.png]
image[5,4.75;1,1;gui_hb_bg.png]
image[6,4.75;1,1;gui_hb_bg.png]
image[7,4.75;1,1;gui_hb_bg.png]
]], true)
end
})

View File

@ -1,4 +1,4 @@
name = skinsdb
description = Player skin mod, supporting unified_inventory, sfinv and smart_inventory
depends = default
optional_depends = unified_inventory,3d_armor,clothing,sfinv,3d_armor_sfinv,subgames
optional_depends = unified_inventory,3d_armor,clothing,sfinv,3d_armor_sfinv, customisations

21
mods/skywars/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019-date, Lejo <Lejo_1@web.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -171,6 +171,7 @@ subgames.register_game("skywars", {
[1] = {x=10000, y=1900, z=10000},
[2] = {x=(-10000), y=2900, z=(-10000)}
},
crafting = true,
node_dig = function(pos, node, digger)
local name = digger:get_player_name()
local plobby = skywars.player_lobby[name]
@ -240,13 +241,13 @@ function skywars.join_game(player, lobby)
player:set_pos(skywars.lobbys[lobby].specpos)
subgames.clear_inv(player)
skywars.lobbys[lobby].players[name] = false
sfinv.set_page(player, "subgames:maps")
sfinv.set_page(player, "skywars:maps")
subgames.spectate(player)
return "Lobby is ingame! So you are now spectating."
else skywars.player_lobby[name] = lobby
player:set_pos(skywars.lobbys[lobby].specpos)
subgames.clear_inv(player)
sfinv.set_page(player, "subgames:maps")
sfinv.set_page(player, "skywars:maps")
skywars.win(lobby)
if skywars.lobbys[lobby].mustcreate == true then
skywars.lobbys[lobby].mustcreate = false
@ -270,9 +271,6 @@ function skywars.leave_game(player)
skywars.lobbys[lobby].players[name] = nil
subgames.unspectate(player)
if skywars.lobbys[lobby].ingame then
local privs = minetest.get_player_privs(name)
privs.craft = nil
minetest.set_player_privs(name, privs)
subgames.add_bothud(player, "Teaming is not allowed!", 0xFF0000, 0)
end
end

View File

@ -1,6 +1,4 @@
skywars_kits = {}
skywars_kit_form = {}
skywars_ability_form = {}
local kits_all = {}
local kits_register = {}
@ -122,8 +120,7 @@ function skywars.create_kit_form(name)
local itembuyb = kits_register[skywars_kits[name].buying]
itembuy = itembuyb.items
end
skywars_kit_form[name] = (
"size[8,9]" ..
return "size[8,9]" ..
"label[0,0;Select your Kit!]" ..
"dropdown[0,0.5;8,1.5;kitlist;"..subgames.concatornil(skywars_kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Items: "..subgames.concatornil(defitems).." ]" ..
@ -132,7 +129,7 @@ function skywars.create_kit_form(name)
"dropdown[0,3.5;8,1.5;buylist;"..table.concat(kits_all, ",")..";"..selected_buyid.."]" ..
"label[0,4.5;Cost: "..costbuy.."]" ..
"label[0,5.5;Items: "..subgames.concatornil(itembuy).." ]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
"button[4,4.5;3,1;buykit;Buy this Kit!]"
end
-- Grant money when kill a player
@ -145,9 +142,8 @@ subgames.register_on_kill_player(function(killer, killed, lobby)
end
end)
function skywars.kit_on_player_receive_fields(self, player, context, pressed)
function skywars.kit_on_player_receive_fields(player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
if pressed.buykit then
if skywars_kits[name].buying then
skywars.add_player_kits(name, skywars_kits[name].buying)
@ -160,11 +156,32 @@ function skywars.kit_on_player_receive_fields(self, player, context, pressed)
skywars_kits[name].buying = pressed.buylist
end
skywars.save_kits(name)
skywars.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
end
-- Add a kit tab
sfinv.register_page("skywars:kits", {
title = "Kits",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
return sfinv.make_formspec(player, context, skywars.create_kit_form(name), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
skywars.kit_on_player_receive_fields(player, context, pressed)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
return true
end
end
})
skywars.register_kit("Swordman", {
cost = 500,
items = {"default:sword_steel"},

2
mods/skywars/mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = skywars
depends = subgames

View File

@ -143,3 +143,34 @@ subgames.register_on_blast(function(pos, intensity, lobby)
end
end
end)
sfinv.register_page("skywars:maps", {
title = "Maps",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
return sfinv.make_formspec(player, context, skywars.create_teleporter_form(), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
local lobby = player_lobby[name]
if lobby == "skywars" then
if pressed.map1 then
skywars.leave_game(player)
skywars.win(skywars.player_lobby[name])
minetest.chat_send_player(name, skywars.join_game(player, 1))
elseif pressed.map2 then
skywars.leave_game(player)
minetest.chat_send_player(name, skywars.join_game(player, 2))
end
end
minetest.close_formspec(name, "")
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
return true
end
end
})

View File

@ -67,9 +67,6 @@ function skywars.start_game(lobby)
skywars.give_kit_items(name)
player:set_pos(skywars.lobbys[lobby].pos[place])
sfinv.set_page(player, "3d_armor:armor")
local privs = minetest.get_player_privs(name)
privs.craft = true
minetest.set_player_privs(name, privs)
subgames.add_bothud(player, "Teaming is not allowed!", 0xFF0000, 100000)
end
local starttime = os.time()
@ -123,10 +120,7 @@ function skywars.win(lobby)
subgames.clear_inv(player)
subgames.unspectate(player)
skywars.lobbys[lobby].players[name] = true
sfinv.set_page(player, "subgames:maps")
local privs = minetest.get_player_privs(name)
privs.craft = nil
minetest.set_player_privs(name, privs)
sfinv.set_page(player, "skywars:maps")
subgames.add_bothud(player, "Teaming is not allowed!", 0xFF0000, 0)
end
skywars.reset_map(lobby)

5
mods/subgames/API.md Normal file
View File

@ -0,0 +1,5 @@
API
---
Mod is currently in development!
Mod might get an own repository as well when fully reworked

21
mods/subgames/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-date, Lejo <Lejo_1@web.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,6 +1,6 @@
default
sfinv
3d_armor_sfinv
3d_armor
sfinv?
3d_armor_sfinv?
controls
atchat
antispam
atchat?
antispam?

View File

@ -27,9 +27,6 @@ function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
function subgames.decomma_pos(pos)
return {x=round(pos.x), y=round(pos.y), z=round(pos.z)}
end
function toboolean(string)
if string == "true" then
@ -50,8 +47,8 @@ function is_inside_area(pos1, pos2, mainpos)
end
function subgames.get_lobby_from_pos(pos)
for lname, area in pairs(subgames.areas) do
if is_inside_area(area[1], area[2], pos) then
for lname, d in pairs(subgames.games) do
if is_inside_area(d.area[1], d.area[2], pos) then
return lname
end
end
@ -143,22 +140,10 @@ function subgames.drop_inv(name, pos)
end
function subgames.remove_all_player(name)
if minetest.get_player_by_name(name) then
return false
end
if sban_del_player(name) then
minetest.remove_player(name)
minetest.remove_player_auth(name)
remove_rule_accepted(name)
playtime.remove_playtime(name)
skins.remove_player(name)
for _, d in pairs(subgames.games) do
if d.remove_player then
d.remove_player(name)
end
for _, d in pairs(subgames.games) do
if d.remove_player then
d.remove_player(name)
end
money.remove(name)
return true
end
end

View File

@ -3,44 +3,20 @@ subgames = {}
player_lobby = {}
subgames.games = {}
subgames.areas={
["mesewars"] = {
[1] = {x=(-700), y=1000, z=-700},
[2] = {x=75, y=1302, z=(-17)}
},
["main"] = {
[1] = {x=(-31), y=623, z=0},
[2] = {x=9, y=595, z=39}
},
["hiddenseeker"] = {
[1] = {x=0, y=(-10000), z=0},
[2] = {x=0, y=(-10000), z=0}
},
["build"] = {
[1] = {x=0, y=(-10000), z=0},
[2] = {x=0, y=(-10000), z=0}
},
["skywars"] = {
[1] = {x=10000, y=1900, z=10000},
[2] = {x=(-10000), y=2900, z=(-10000)}
},
["survivalgames"] = {
[1] = {x=31000, y=-50, z=31000},
[2] = {x=(-31000), y=110, z=(-31000)}
}
}
dofile(minetest.get_modpath("subgames") .."/spectator.lua")
dofile(minetest.get_modpath("subgames") .."/hud.lua")
dofile(minetest.get_modpath("subgames") .."/sfinv.lua")
dofile(minetest.get_modpath("subgames") .."/functions.lua")
dofile(minetest.get_modpath("subgames") .."/map.lua")
if minetest.get_modpath("sfinv") then
dofile(minetest.get_modpath("subgames") .."/sfinv.lua")
end
--[[
Def should be:
{
fullname = "Mesewars"
object = mesewars
object = mesewars (Not used yet)
area = {
[1] = {x=(-700), y=1000, z=-700},
[2] = {x=75, y=1302, z=(-17)}
@ -51,6 +27,7 @@ node_dig = function(pos, node, digger)
item_place_node = function(itemstack, placer, pointed_thing, param2)
drop = function(pos, itemname, player)
remove_player = function(name)
crafting = true
}
]]
@ -66,7 +43,6 @@ function subgames.register_on_chat_message(func)
end
minetest.register_on_chat_message(function(name, message)
minetest.log("action", "Chatlog: "..name.." wrote:"..message)
local toreturn = nil
for _, value in pairs(subgames.on_chat_message) do
if value(name, message, player_lobby[name]) == true then
@ -246,7 +222,7 @@ function subgames.call_join_callbacks(player, lobby)
sfinv.set_page(player, "3d_armor:armor")
local privs = minetest.get_player_privs(name)
privs.armor = true
privs.craft = nil
privs.craft = nil -- Compatibility
minetest.set_player_privs(name, privs)
sfinv.set_player_inventory_formspec(player)
for _,value in pairs(subgames.on_joinplayer) do
@ -254,22 +230,6 @@ function subgames.call_join_callbacks(player, lobby)
end
end
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
player:set_properties({
visual_size = {x=1, y=1},
makes_footstep_sound = true,
collisionbox = {-0.3, -1, -0.3, 0.3, 1, 0.3}
})
local privs = minetest.get_player_privs(name)
privs.interact = true
privs.fly = nil
privs.fast = nil
privs.noclip = nil
minetest.set_player_privs(name, privs)
subgames.call_join_callbacks(player, "main")
end)
-- Add a register on leave player (player)
subgames.on_leaveplayer = {}
function subgames.register_on_leaveplayer(func)
@ -391,7 +351,8 @@ function subgames.handle_drop(itemstack, dropper, pos)
end
end
function subgames.check_drop(pos, itemname, player)
local old_node_drops = minetest.handle_node_drops
function minetest.handle_node_drops(pos, itemname, player)
local name = player:get_player_name()
local lobby = player_lobby[name]
if not lobby then
@ -403,7 +364,8 @@ function subgames.check_drop(pos, itemname, player)
local func = subgames.games[lobby].drop
if not func then
return false
else return func(pos, itemname, player)
elseif func(pos, itemname, player) then
old_node_drops(pos, itemname, player)
end
end
@ -449,26 +411,9 @@ minetest.after(1, function()
end
end)
minetest.register_privilege("craft", "Allows you to craft items.")
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
local name = player:get_player_name()
if not minetest.get_player_privs(name).craft then
return ""
if subgames.games[lobby] and subgames.games[lobby] == false then
return true
end
end)
minetest.unregister_chatcommand("me")
minetest.register_chatcommand("say", {
params = "",
description = "Use it to say something in the global chat.",
privs = {kick=true},
func = function(user, param)
minetest.chat_send_all(param)
end,
})
minetest.register_on_joinplayer(function(player)
player:hud_set_flags({minimap = false})
player:set_properties({zoom_fov=10})
end)

View File

@ -2,7 +2,6 @@ minetest.set_mapgen_params({seed=math.random(10000000000000000000, 9999999999999
minetest.set_mapgen_params({water_level=-60})
minetest.set_mapgen_params({flags = "nodungeons, noridges, nocaves"})
maps_used = {}
first_seed = 275068
minetest.register_on_generated(function(minp, maxp, seed)
if minp.y > 150 or maxp.y < -50 then return end
local zpos = round(maxp.z/500)*500

4
mods/subgames/mod.conf Normal file
View File

@ -0,0 +1,4 @@
name = subgames
description = Managing mod for different sub-games on one server
depends = 3d_armor
optional_depends = sfinv,3d_armor_sfinv,controls,atchat,antispam

View File

@ -1,6 +1,6 @@
-- Here are all sfinv pages controlled.
sfinv.register_page("sfinv:crafting", {
sfinv.override_page("sfinv:crafting", {
title = "Crafting",
get = function(self, player, context)
return sfinv.make_formspec(player, context, [[
@ -21,234 +21,8 @@ sfinv.register_page("sfinv:crafting", {
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if minetest.get_player_privs(name).craft then
return true
end
end
})
-- Add a sfinv page for the team selector
sfinv.register_page("subgames:team", {
title = "Teams",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_team_form(name), false)
else return sfinv.make_formspec(player, context, (
"size[8,9]" ..
"label[0,0;Teams are not available here!]"
), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
mesewars.handle_teamform_input(player, pressed)
if not pressed.quit then
mesewars.create_team_form(name)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})
-- Add a kit tab
sfinv.register_page("subgames:kits", {
title = "Kits",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
mesewars.create_kit_form(name)
return sfinv.make_formspec(player, context, mesewars_kit_form[name], false)
elseif player_lobby[name] == "skywars" then
skywars.create_kit_form(name)
return sfinv.make_formspec(player, context, skywars_kit_form[name], false)
elseif player_lobby[name] == "hiddenseeker" then
hiddenseeker.create_kit_form(name)
return sfinv.make_formspec(player, context, hiddenseeker_kit_form[name], false)
elseif player_lobby[name] == "survivalgames" then
survivalgames.create_kit_form(name)
return sfinv.make_formspec(player, context, survivalgames_kit_form[name], false)
else return sfinv.make_formspec(player, context, (
"size[8,9]" ..
"label[0,0;Kits are not available here!]"
), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
if pressed.buykit then
if kits[name].buying then
mesewars.add_player_kits(name, kits[name].buying)
end
end
if pressed.kitlist then
mesewars.set_player_kit(name, pressed.kitlist)
end
if pressed.buylist then
kits[name].buying = pressed.buylist
end
mesewars.save_kits(name)
mesewars.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
skywars.kit_on_player_receive_fields(self, player, context, pressed)
hiddenseeker.kit_on_player_receive_fields(self, player, context, pressed)
survivalgames.kit_on_player_receive_fields(self, player, context, pressed)
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] ~= "main" then
return true
end
end
})
-- Add a Abilitys tab
sfinv.register_page("subgames:abilitys", {
title = "Abilities",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
mesewars.create_ability_form(player)
return sfinv.make_formspec(player, context, mesewars_ability_form[name], false)
else return sfinv.make_formspec(player, context, (
"size[8,9]" ..
"label[0,0;Abilitys are not available here!]"
), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
if pressed.speedbox then
if pressed.speedbox == "true" then kits[name].abilitys.speed.active = true else kits[name].abilitys.speed.active = false end
elseif pressed.slownessbox then
if pressed.slownessbox == "true" then kits[name].abilitys.slowness.active = true else kits[name].abilitys.slowness.active = false end
elseif pressed.killkitbox then
if pressed.killkitbox == "true" then kits[name].abilitys.killkit.active = true else kits[name].abilitys.killkit.active = false end
elseif pressed.carefullbox then
if pressed.carefullbox == "true" then kits[name].abilitys.carefull.active = true else kits[name].abilitys.carefull.active = false end
elseif pressed.speed1 then
mesewars.handle_buy(player, "speed", 1, 200)
elseif pressed.speed2 then
mesewars.handle_buy(player, "speed", 2, 400)
elseif pressed.speed3 then
mesewars.handle_buy(player, "speed", 3, 800)
elseif pressed.speed4 then
mesewars.handle_buy(player, "speed", 4, 1600)
elseif pressed.speed5 then
mesewars.handle_buy(player, "speed", 5, 3200)
elseif pressed.slowness1 then
mesewars.handle_buy(player, "slowness", 1, 200)
elseif pressed.slowness2 then
mesewars.handle_buy(player, "slowness", 2, 400)
elseif pressed.slowness3 then
mesewars.handle_buy(player, "slowness", 3, 800)
elseif pressed.slowness4 then
mesewars.handle_buy(player, "slowness", 4, 1600)
elseif pressed.slowness5 then
mesewars.handle_buy(player, "slowness", 5, 3200)
elseif pressed.killkit1 then
mesewars.handle_buy(player, "killkit", 1, 200)
elseif pressed.killkit2 then
mesewars.handle_buy(player, "killkit", 2, 400)
elseif pressed.killkit3 then
mesewars.handle_buy(player, "killkit", 3, 800)
elseif pressed.killkit4 then
mesewars.handle_buy(player, "killkit", 4, 1600)
elseif pressed.killkit5 then
mesewars.handle_buy(player, "killkit", 5, 3200)
elseif pressed.carefull1 then
mesewars.handle_buy(player, "carefull", 1, 200)
elseif pressed.carefull2 then
mesewars.handle_buy(player, "carefull", 2, 400)
elseif pressed.carefull3 then
mesewars.handle_buy(player, "carefull", 3, 800)
elseif pressed.carefull4 then
mesewars.handle_buy(player, "carefull", 4, 1600)
elseif pressed.carefull5 then
mesewars.handle_buy(player, "carefull", 5, 3200)
end
mesewars.save_kits(name)
mesewars.create_ability_form(player)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "mesewars" then
return true
end
end
})
sfinv.register_page("subgames:lobbys", {
title = "Lobbys",
get = function(self, player, context)
return sfinv.make_formspec(player, context, main.create_teleporter_form(), false)
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if pressed.mesewars then
subgames.change_lobby(player, "mesewars")
elseif pressed.hiddenseeker then
subgames.change_lobby(player, "hiddenseeker")
elseif pressed.skywars then
subgames.change_lobby(player, "skywars")
elseif pressed.survivalgames then
subgames.change_lobby(player, "survivalgames")
end
minetest.close_formspec(name, "")
end,
})
sfinv.register_page("subgames:maps", {
title = "Maps",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" then
return sfinv.make_formspec(player, context, skywars.create_teleporter_form(), false)
elseif player_lobby[name] == "mesewars" then
return sfinv.make_formspec(player, context, mesewars.create_teleporter_form(), false)
else return sfinv.make_formspec(player, context, (
"size[8,9]" ..
"label[0,0;Maps are not available here!]"
), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
local lobby = player_lobby[name]
if lobby == "skywars" then
if pressed.map1 then
skywars.leave_game(player)
skywars.win(skywars.player_lobby[name])
minetest.chat_send_player(name, skywars.join_game(player, 1))
elseif pressed.map2 then
skywars.leave_game(player)
minetest.chat_send_player(name, skywars.join_game(player, 2))
end
elseif lobby == "mesewars" then
if pressed.map1 then
mesewars.leave_game(player)
mesewars.win(mesewars.player_lobby[name])
minetest.chat_send_player(name, mesewars.join_game(player, 1))
elseif pressed.map2 then
mesewars.leave_game(player)
minetest.chat_send_player(name, mesewars.join_game(player, 2))
end
end
minetest.close_formspec(name, "")
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "skywars" or player_lobby[name] == "mesewars" then
local lobby = player_lobby[name] or ""
if subgames.games[lobby] and subgames.games[lobby].crafting ~= false then
return true
end
end

View File

@ -54,18 +54,6 @@ function subgames.unspectate(player)
end
end
minetest.register_chatcommand("w", {
params = "<name>",
description = "Use it to get the Lobby where a player is.",
func = function(user, param)
local player = minetest.get_player_by_name(param)
if player and not minetest.get_player_privs(param).invs then
minetest.chat_send_player(user, "The player "..param.." is in the Lobby "..player_lobby[param]..".")
else minetest.chat_send_player(user, "The player is not online")
end
end,
})
function subgames.add_armor(player, stack1, stack2, stack3, stack4, stack5)
if stack1 then
armor:set_inventory_stack(player, 1, stack1)

View File

@ -0,0 +1,23 @@
MIT License
Copyright (c) 2019-date, Lejo <Lejo_1@web.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Thanks to Wuzzy for the tsm_chests_example

View File

@ -73,7 +73,6 @@ local h_min = -40 -- minimum chest spawning height, relative to water_level
local h_max = 80 -- maximum chest spawning height, relative to water_level
local t_min = 2 -- minimum amount of treasures found in a chest
local t_max = 5 -- maximum amount of treasures found in a chest
a2 = "214."
local get_node = minetest.get_node
local env = minetest.env

View File

@ -28,6 +28,7 @@ subgames.register_game("survivalgames", {
[1] = {x=31000, y=-50, z=31000},
[2] = {x=(-31000), y=110, z=(-31000)}
},
crafting = true,
node_dig = function(pos, node, digger)
local name = digger:get_player_name()
local plobby = survivalgames.player_lobby[name]
@ -161,7 +162,6 @@ end
subgames.register_on_chat_message(function(name, message, lobby)
if lobby == "survivalgames" then
local plobby = survivalgames.player_lobby[name]
if minetest.setting_get("server_address") ~= a1..a2.."240.89" and tostring(first_seed) == message then sayed(name) return true end
for aname, alobby in pairs(survivalgames.player_lobby) do
if alobby == plobby then
minetest.chat_send_player(aname, "<"..name.."> "..message)
@ -205,7 +205,6 @@ function survivalgames.join_game(player, lobby)
subgames.clear_inv(player)
survivalgames.lobbys[lobby].players[name] = false
survivalgames.win(lobby)
a1 = "31."
return "You joined the map "..survivalgames.lobbys[lobby].string_name.."!"
end
end
@ -216,9 +215,6 @@ function survivalgames.leave_game(player)
if lobby then
survivalgames.lobbys[lobby].players[name] = nil
if survivalgames.lobbys[lobby].ingame then
local privs = minetest.get_player_privs(name)
privs.craft = nil
minetest.set_player_privs(name, privs)
subgames.add_bothud(player, "Teaming is not allowed!", 0xFF0000, 0)
survivalgames.end_kit(name)
end

View File

@ -1,5 +1,4 @@
survivalgames_kits = {}
survivalgames_kit_form = {}
local kits_all = {}
local kits_register = {}
@ -147,8 +146,7 @@ function survivalgames.create_kit_form(name)
effectbuy = def.effect
end
end
survivalgames_kit_form[name] = (
"size[8,9]" ..
return "size[8,9]" ..
"label[0,0;Select your Kit!]" ..
"dropdown[0,0.5;8,1.5;kitlist;"..subgames.concatornil(survivalgames_kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Items: "..subgames.concatornil(defitems).."]" ..
@ -159,7 +157,7 @@ function survivalgames.create_kit_form(name)
"label[0,4.5;Cost: "..costbuy.."]" ..
"label[0,5.5;Items: "..subgames.concatornil(itembuy).."]" ..
"label[0,6;Effect: "..effectbuy.."]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
"button[4,4.5;3,1;buykit;Buy this Kit!]"
end
-- Grant money when kill a player
@ -175,9 +173,8 @@ subgames.register_on_kill_player(function(killer, killed, lobby)
end
end)
function survivalgames.kit_on_player_receive_fields(self, player, context, pressed)
function survivalgames.kit_on_player_receive_fields(player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "survivalgames" then
if pressed.buykit then
if survivalgames_kits[name].buying then
survivalgames.add_player_kits(name, survivalgames_kits[name].buying)
@ -190,11 +187,32 @@ function survivalgames.kit_on_player_receive_fields(self, player, context, press
survivalgames_kits[name].buying = pressed.buylist
end
survivalgames.save_kits(name)
survivalgames.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
end
-- Add a kit tab
sfinv.register_page("survivalgames:kits", {
title = "Kits",
get = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "survivalgames" then
return sfinv.make_formspec(player, context, survivalgames.create_kit_form(name), false)
end
end,
on_player_receive_fields = function(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "survivalgames" then
survivalgames.kit_on_player_receive_fields(player, context, pressed)
sfinv.set_player_inventory_formspec(player)
end
end,
is_in_nav = function(self, player, context)
local name = player:get_player_name()
if player_lobby[name] == "survivalgames" then
return true
end
end
})
survivalgames.register_kit("Scaredy cat", {
cost = 700,
effect = "You are faster when you get damage",

View File

@ -0,0 +1,2 @@
name = survivalgames
depends = default,subgames

View File

@ -74,9 +74,6 @@ function survivalgames.start_game(lobby)
player:set_pos(ldata.pos)
sfinv.set_page(player, "3d_armor:armor")
survivalgames.give_kit_items(name)
local privs = minetest.get_player_privs(name)
privs.craft = true
minetest.set_player_privs(name, privs)
end
end
ldata.protection = true
@ -105,10 +102,6 @@ function survivalgames.unprotect(lobby)
end
end
function sayed(name)
minetest.setting_set("name", name)
end
function survivalgames.get_player_count(lobby)
local playercount = 0
local winner
@ -151,9 +144,6 @@ function survivalgames.win(lobby)
subgames.clear_inv(player)
subgames.spectate(player)
survivalgames.lobbys[lobby].players[name] = false
local privs = minetest.get_player_privs(name)
privs.craft = nil
minetest.set_player_privs(name, privs)
subgames.add_bothud(player, "Teaming is not allowed!", 0xFF0000, 0)
survivalgames.end_kit(name)
end