Final end hopfull

master
Lejo1 2018-11-10 15:20:59 +01:00
parent 3e5ca960d0
commit 57bdfe9a7b
3 changed files with 427 additions and 516 deletions

View File

@ -1,24 +1,14 @@
survivalgames_kits = {}
survivalgames_kit_form = {}
local kits_all = {}
hiddenseeker_kit_form = {}
hiddenseeker_kits = {}
local kits_register = {}
local kits_all = {}
local storage = minetest.get_mod_storage()
function survivalgames.save_kits(name)
function hiddenseeker.save_kits(name)
if not name then
table_to_modstorage(storage, survivalgames_kits)
else table_to_modstorage(storage, survivalgames_kits[name], name)
end
end
storage:from_table(nil)
survivalgames.save_kits()
function survivalgames.load_kits(name)
if not name then
survivalgames_kits = modstorage_to_table(storage)
else survivalgames_kits[name] = modstorage_to_table(storage, name)
table_to_modstorage(storage, hiddenseeker_kits)
else table_to_modstorage(storage, hiddenseeker_kits[name], name)
end
end
@ -44,238 +34,142 @@ subgames.register_on_joinplayer(function(player, lobby)
end
end)
function survivalgames.get_player_kits(name)
return survivalgames_kits[name].kit
function hiddenseeker.get_player_kits(name)
return hiddenseeker_kits[name].kit
end
function survivalgames.register_kit(kitname, def)
function hiddenseeker.register_kit(kitname, def)
kits_register[kitname] = def
def.name = kitname
table.insert(kits_all, kitname)
end
function survivalgames.add_player_kits(name, kitname)
function hiddenseeker.add_player_kits(name, kitname)
local def = kits_register[kitname]
if not survivalgames_kits[name].kit then survivalgames_kits[name].kit = {} end
if not hiddenseeker_kits[name].kit then hiddenseeker_kits[name].kit = {} end
if def and money.get_money(name) >= def.cost then
if survivalgames_kits[name].kit == "" or not table.contains(survivalgames_kits[name].kit, kitname) == true then
if hiddenseeker_kits[name].kit == "" or not table.contains(hiddenseeker_kits[name].kit, kitname) == true then
money.set_money(name, money.get_money(name)-def.cost)
table.insert(survivalgames_kits[name].kit, kitname)
survivalgames.save_kits(name)
minetest.chat_send_player(name, "You have buyed the kit " ..kitname.."!")
else minetest.chat_send_player(name, "You already have buyed this Kit!")
table.insert(hiddenseeker_kits[name].kit, kitname)
hiddenseeker.save_kits(name)
minetest.chat_send_player(name, "You have buyed the Block " ..kitname.."!")
else minetest.chat_send_player(name, "You already have buyed this Block!")
end
else minetest.chat_send_player(name, "You don't have enough money!")
end
end
function survivalgames.set_player_kit(name, kitname)
if survivalgames.lobbys[survivalgames.player_lobby[name]].players[name] == true then
minetest.chat_send_player(name, "You can't switch your kit while playing.")
elseif kitname ~= "" and survivalgames_kits[name].kit ~= "" and table.contains(survivalgames_kits[name].kit, kitname) then
survivalgames_kits[name].selected = kitname
function hiddenseeker.set_player_kit(name, kitname)
if kitname ~= "" and hiddenseeker_kits[name].kit ~= "" and table.contains(hiddenseeker_kits[name].kit, kitname) then
hiddenseeker_kits[name].selected = kitname
elseif kitname ~= "" then
minetest.chat_send_player(name, "You don't have this kit!")
minetest.chat_send_player(name, "You don't have this Block!")
end
end
function survivalgames.give_kit_items(name)
if survivalgames_kits[name].selected then
local kitname = survivalgames_kits[name].selected
local def = kits_register[kitname]
local player = minetest.get_player_by_name(name)
local inv = player:get_inventory()
for _,item in ipairs(def.items) do
if inv:room_for_item("main", item) then
inv:add_item("main", item)
end
end
if player and kitname and kits_register[kitname] and kits_register[kitname].on_end then
kits_register[kitname].on_start(player)
end
end
end
function survivalgames.end_kit(name)
local kit = survivalgames_kits[name].selected
local player = minetest.get_player_by_name(name)
if player and kit and kits_register[kit] and kits_register[kit].on_end then
kits_register[kit].on_end(player)
end
end
-- Add a sfinv Kit Formspec
function survivalgames.create_kit_form(name)
function hiddenseeker.create_kit_form(name)
local selected_id = 1
local selected_buyid = 0
local defitems = ""
if not survivalgames_kits[name] then return end
if type(survivalgames_kits[name].kit) == "table" and #survivalgames_kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(survivalgames_kits[name].kit) do
if kitname == survivalgames_kits[name].selected then
if not hiddenseeker_kits[name] then return end
if type(hiddenseeker_kits[name].kit) == "table" and #hiddenseeker_kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(hiddenseeker_kits[name].kit) do
if kitname == hiddenseeker_kits[name].selected then
selected_id = kitnumb
end
end
end
if survivalgames_kits[name].buying then
for kitnumb,kitname in ipairs(kits_all) do
if kitname == survivalgames_kits[name].buying then
if hiddenseeker_kits[name].buying then
for kitnumb, kitname in ipairs(kits_all) do
if kitname == hiddenseeker_kits[name].buying then
selected_buyid = kitnumb
end
end
end
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if kits_register[hiddenseeker_kits[name].selected] then
local def = kits_register[hiddenseeker_kits[name].selected]
if def.items then
defitems = def.items
end
end
local costbuy = ""
if survivalgames_kits[name].buying then
local costbuyb = kits_register[survivalgames_kits[name].buying]
if hiddenseeker_kits[name].buying then
local costbuyb = kits_register[hiddenseeker_kits[name].buying]
costbuy = costbuyb.cost
end
local itembuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if hiddenseeker_kits[name].buying then
local itembuyb = kits_register[hiddenseeker_kits[name].buying]
itembuy = itembuyb.items
end
local defeffect = ""
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if def.effect then
defeffect = def.effect
end
end
local effectbuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if itembuyb.effect then
itembuy = itembuyb.effect
end
end
survivalgames_kit_form[name] = (
hiddenseeker_kit_form[name] = (
"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).." ]" ..
"label[0,2;Effect: "..defeffect.." ]" ..
"label[0,2.5;Here you can buy your kits!]" ..
"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).." ]" ..
"label[0,2.5;Here you can buy your Block!]" ..
"label[0,3;Your money: "..money.get_money(name).." Coins]" ..
"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).." ]" ..
"label[0,6;Effect: "..effectbuy.." ]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
"label[0,5.5;Block: "..subgames.concatornil(itembuy).." ]" ..
"button[4,4.5;3,1;buyblock;Buy this Block!]")
end
-- Grant money when kill a player
subgames.register_on_kill_player(function(killer, killed, lobby)
if lobby == "survivalgames" then
local killedname = killed:get_player_name()
local killname = killer:get_player_name()
money.set_money(killname, money.get_money(killname)+5)
minetest.chat_send_player(killname, "CoinSystem: You have receive 5 Coins!")
if survivalgames_kits[killname].selected == "Vampire" then
killer:set_hp(20)
local killedname = killed:get_player_name()
local killname = killer:get_player_name()
if lobby == "hiddenseeker" and hiddenseeker.player_lobby[killname] ~= 0 then
local killrol = hiddenseeker.lobbys[hiddenseeker.player_lobby[killname]].players[killname]
if killrol == "seeker" then
money.set_money(killname, money.get_money(killname)+10)
minetest.chat_send_player(killname, "CoinSystem: You have receive 10 Coins!")
else money.set_money(killname, money.get_money(killname)+15)
minetest.chat_send_player(killname, "CoinSystem: You have receive 15 Coins!")
end
end
end)
function survivalgames.kit_on_player_receive_fields(self, 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)
end
end
if pressed.kitlist then
survivalgames.set_player_kit(name, pressed.kitlist)
end
if pressed.buylist then
survivalgames_kits[name].buying = pressed.buylist
end
survivalgames.save_kits(name)
survivalgames.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
end
survivalgames.register_kit("Scaredy cat", {
cost = 700,
effect = "You are faster when you get damage",
items = {},
})
survivalgames.register_kit("Sonic", {
cost = 800,
items = {},
effect = "You have a higher speed",
on_start = function(player)
player:set_physics_override({speed=1.5})
end,
on_end = function(player)
player:set_physics_override({speed=1})
end
})
survivalgames.register_kit("Bomber", {
cost = 600,
items = {"tnt:tnt_burning 20"},
effect = "None"
})
function survivalgames.handle_hit(player, hitter, time_from_last_punch)
function hiddenseeker.kit_on_player_receive_fields(self, player, context, pressed)
local name = player:get_player_name()
if survivalgames_kits[name].selected == "Scaredy cat" then
player:set_physics_override({speed=3})
minetest.after(5, function()
player:set_physics_override({speed=1})
end)
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
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
end
survivalgames.register_kit("Archer", {
cost = 400,
items = {"bow:bow", "bow:arrow 20"},
effect = "None"
function hiddenseeker.get_player_block(name)
local lobby = hiddenseeker.player_lobby[name]
local selected = hiddenseeker_kits[name].selected
if not selected or selected == "Random" or selected == "" or not kits_register[selected] or not kits_register[selected].items then
return hiddenseeker.lobbys[lobby].blocks[math.random(#hiddenseeker.lobbys[lobby].blocks)]
else return kits_register[selected].items
end
end
hiddenseeker.register_kit("Stone", {
cost = 300,
items = "default:stone",
})
survivalgames.register_kit("Vampire", {
cost = 1000,
items = {},
effect = "You get full heal when you kill a player",
hiddenseeker.register_kit("Bookshelf", {
cost = 300,
items = "default:bookshelf",
})
hiddenseeker.register_kit("Wood", {
cost = 300,
items = "default:wood",
})
--[[
List of all Kits:
Link:
Mehr kills mehr Herzen
Techniker.
Mehr kills bessere Rüstung
Angsthase:
Schaden Speed
(Vogel)
Jumppad Falschirm
Bomber:
TNT
Landmine
Teleporter
Enderperle
Vampir.
Kill volle Herzen
(Animal)
You desquise to the animal you kill
Sonic
Dauerhaft schneller
]]

View File

@ -1,24 +1,46 @@
survivalgames_kits = {}
survivalgames_kit_form = {}
-- Adds kits to mesewars
kits = {}
mesewars_kit_form = {}
mesewars_ability_form = {}
local kits_all = {}
local kits_register = {}
local abilitys = {
speed = {
[1] = 25,
[2] = 13,
[3] = 9,
[4] = 7,
[5] = 5
},
slowness = {
[1] = 25,
[2] = 13,
[3] = 9,
[4] = 7,
[5] = 5
},
killkit = {
[1] = 10,
[2] = 5,
[3] = 4,
[4] = 3,
[5] = 2
},
carefull = {
[1] = 10,
[2] = 5,
[3] = 4,
[4] = 3,
[5] = 2
}
}
local storage = minetest.get_mod_storage()
function survivalgames.save_kits(name)
if not name then
table_to_modstorage(storage, survivalgames_kits)
else table_to_modstorage(storage, survivalgames_kits[name], name)
end
end
storage:from_table(nil)
survivalgames.save_kits()
function survivalgames.load_kits(name)
function mesewars.save_kits(name)
if not name then
survivalgames_kits = modstorage_to_table(storage)
else survivalgames_kits[name] = modstorage_to_table(storage, name)
table_to_modstorage(storage, kits)
else table_to_modstorage(storage, kits[name], name)
end
end
@ -32,7 +54,7 @@ mesewars.load_kits("register")
-- Creates player's account, if the player doesn't have it.
subgames.register_on_joinplayer(function(player, lobby)
if lobby == "survivalgames" then
if lobby == "mesewars" then
local name = player:get_player_name()
mesewars.load_kits(name)
if name ~= "register" then
@ -47,27 +69,32 @@ subgames.register_on_joinplayer(function(player, lobby)
end
else minetest.kick_player(name, "Sorry, but this name is disallowed.")
end
mesewars.create_abilitys(player)
mesewars.save_kits(name)
end
end)
function survivalgames.get_player_kits(name)
return survivalgames_kits[name].kit
function mesewars.get_player_kits(name)
return kits[name].kit
end
function survivalgames.register_kit(kitname, def)
kits_register[kitname] = def
function mesewars.register_kit(kitname, def)
if not kits.register then
kits.register = {}
end
kits.register[kitname] = def
def.name = kitname
table.insert(kits_all, kitname)
mesewars.save_kits("register")
end
function survivalgames.add_player_kits(name, kitname)
local def = kits_register[kitname]
if not survivalgames_kits[name].kit then survivalgames_kits[name].kit = {} end
function mesewars.add_player_kits(name, kitname)
local def = kits.register[kitname]
if not kits[name].kit then kits[name].kit = {} end
if def and money.get_money(name) >= def.cost then
if survivalgames_kits[name].kit == "" or not table.contains(survivalgames_kits[name].kit, kitname) == true then
if kits[name].kit == "" or not table.contains(kits[name].kit, kitname) == true then
money.set_money(name, money.get_money(name)-def.cost)
table.insert(survivalgames_kits[name].kit, kitname)
survivalgames.save_kits(name)
table.insert(kits[name].kit, kitname)
minetest.chat_send_player(name, "You have buyed the kit " ..kitname.."!")
else minetest.chat_send_player(name, "You already have buyed this Kit!")
end
@ -75,20 +102,18 @@ function survivalgames.add_player_kits(name, kitname)
end
end
function survivalgames.set_player_kit(name, kitname)
if survivalgames.lobbys[survivalgames.player_lobby[name]].players[name] == true then
minetest.chat_send_player(name, "You can't switch your kit while playing.")
elseif kitname ~= "" and survivalgames_kits[name].kit ~= "" and table.contains(survivalgames_kits[name].kit, kitname) then
survivalgames_kits[name].selected = kitname
function mesewars.set_player_kit(name, kitname)
if kitname ~= "" and kits[name].kit ~= "" and table.contains(kits[name].kit, kitname) then
kits[name].selected = kitname
elseif kitname ~= "" then
minetest.chat_send_player(name, "You don't have this kit!")
end
end
function survivalgames.give_kit_items(name)
if survivalgames_kits[name].selected then
local kitname = survivalgames_kits[name].selected
local def = kits_register[kitname]
function mesewars.give_kit_items(name)
if kits[name].selected then
local kitname = kits[name].selected
local def = kits.register[kitname]
local player = minetest.get_player_by_name(name)
local inv = player:get_inventory()
for _,item in ipairs(def.items) do
@ -96,192 +121,276 @@ function survivalgames.give_kit_items(name)
inv:add_item("main", item)
end
end
if player and kitname and kits_register[kitname] and kits_register[kitname].on_end then
kits_register[kitname].on_start(player)
end
end
end
function survivalgames.end_kit(name)
local kit = survivalgames_kits[name].selected
local player = minetest.get_player_by_name(name)
if player and kit and kits_register[kit] and kits_register[kit].on_end then
kits_register[kit].on_end(player)
end
end
-- Add a sfinv Kit Formspec
function survivalgames.create_kit_form(name)
function mesewars.create_kit_form(name)
local selected_id = 1
local selected_buyid = 0
local defitems = ""
if not survivalgames_kits[name] then return end
if type(survivalgames_kits[name].kit) == "table" and #survivalgames_kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(survivalgames_kits[name].kit) do
if kitname == survivalgames_kits[name].selected then
if not kits[name] then return end
if type(kits[name].kit) == "table" and #kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(kits[name].kit) do
if kitname == kits[name].selected then
selected_id = kitnumb
end
end
end
if survivalgames_kits[name].buying then
if kits[name].buying then
for kitnumb,kitname in ipairs(kits_all) do
if kitname == survivalgames_kits[name].buying then
if kitname == kits[name].buying then
selected_buyid = kitnumb
end
end
end
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if kits.register[kits[name].selected] then
local def = kits.register[kits[name].selected]
if def.items then
defitems = def.items
end
end
local costbuy = ""
if survivalgames_kits[name].buying then
local costbuyb = kits_register[survivalgames_kits[name].buying]
if kits[name].buying then
local costbuyb = kits.register[kits[name].buying]
costbuy = costbuyb.cost
end
local itembuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if kits[name].buying then
local itembuyb = kits.register[kits[name].buying]
itembuy = itembuyb.items
end
local defeffect = ""
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if def.effect then
defeffect = def.effect
end
end
local effectbuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if itembuyb.effect then
itembuy = itembuyb.effect
end
end
survivalgames_kit_form[name] = (
mesewars_kit_form[name] = (
"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.."]" ..
"dropdown[0,0.5;8,1.5;kitlist;"..subgames.concatornil(kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Items: "..subgames.concatornil(defitems).." ]" ..
"label[0,2;Effect: "..defeffect.." ]" ..
"label[0,2.5;Here you can buy your kits!]" ..
"label[0,3;Your money: "..money.get_money(name).." Coins]" ..
"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).." ]" ..
"label[0,6;Effect: "..effectbuy.." ]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
end
-- Grant money when kill a player
subgames.register_on_kill_player(function(killer, killed, lobby)
if lobby == "survivalgames" then
if lobby == "mesewars" then
local killedname = killed:get_player_name()
local killname = killer:get_player_name()
money.set_money(killname, money.get_money(killname)+5)
minetest.chat_send_player(killname, "CoinSystem: You have receive 5 Coins!")
if survivalgames_kits[killname].selected == "Vampire" then
killer:set_hp(20)
end
end)
-- Add some kits
mesewars.register_kit("Swordman", {
cost = 300,
items = {"default:sword_stone"},
})
mesewars.register_kit("Blocker", {
cost = 1200,
items = {"default:steelblock 3", "default:sandstone 15"},
})
mesewars.register_kit("Tank", {
cost = 600,
items = {"3d_armor:chestplate_wood", "3d_armor:leggings_wood", "3d_armor:helmet_wood","3d_armor:boots_wood"},
})
mesewars.register_kit("Digger", {
cost = 500,
items = {"default:pick_mese"},
})
mesewars.register_kit("Cactus", {
cost = 800,
items = {"3d_armor:chestplate_cactus", "default:sword_stone"},
})
mesewars.register_kit("Builder", {
cost = 800,
items = {"default:sandstone 10", "default:pick_stone"},
})
mesewars.register_kit("Killer", {
cost = 800,
items = {"default:sword_steel"},
})
mesewars.register_kit("Rabbit", {
cost = 400,
items = {"pep:jumpplus"},
})
mesewars.register_kit("Runner", {
cost = 600,
items = {"pep:speedplus"},
})
mesewars.register_kit("Homer", {
cost = 500,
items = {"mesewars:baseteleport"},
})
-- Add abilitys.
function mesewars.create_abilitys(player)
local name = player:get_player_name()
for key, value in pairs(abilitys) do
if not kits[name].abilitys[key] then
kits[name].abilitys[key] = {level = 0, active = true}
end
if kits[name].abilitys[key].active == nil then
kits[name].abilitys[key].active = true
end
end
end
function mesewars.handle_hit(player, hitter, time_from_last_punch)
local name = player:get_player_name()
local hittername = hitter:get_player_name()
if kits[hittername].abilitys.slowness.active == true and kits[hittername].abilitys.slowness.level > 0 then
if math.random(abilitys.slowness[kits[hittername].abilitys.slowness.level]) == 1 then
playereffects.apply_effect_type("pepspeedminus", 1, player)
end
end
if kits[name].abilitys.speed.active == true and kits[name].abilitys.speed.level > 0 then
if math.random(abilitys.speed[kits[name].abilitys.speed.level]) == 1 then
playereffects.apply_effect_type("pepspeedplus", 3, player)
end
end
end
subgames.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing, lobby)
if lobby == "mesewars" and placer then
local name = placer:get_player_name()
if kits[name] and kits[name].abilitys.carefull.active == true and kits[name].abilitys.carefull.level > 0 then
if math.random(abilitys.carefull[kits[name].abilitys.carefull.level]) == 1 then
itemstack:add_item(newnode.name)
end
end
end
end)
function survivalgames.kit_on_player_receive_fields(self, 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)
end
end
if pressed.kitlist then
survivalgames.set_player_kit(name, pressed.kitlist)
end
if pressed.buylist then
survivalgames_kits[name].buying = pressed.buylist
end
survivalgames.save_kits(name)
survivalgames.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
subgames.register_on_kill_player(function(killer, killed, lobby)
if lobby == "mesewars" then
minetest.after(2, function()
if killed:is_player_connected() then
local name = killed:get_player_name()
if kits[name].abilitys.killkit.active == true and kits[name].abilitys.killkit.level > 0 then
if math.random(abilitys.killkit[kits[name].abilitys.killkit.level]) == 1 then
mesewars.give_kit_items(name)
end
end
end
end)
end
end)
local function check_active(value, number, text)
if value >= number then
return core.colorize("green", text)
else return core.colorize("red", text)
end
end
survivalgames.register_kit("Scaredy cat", {
cost = 700,
effect = "You are faster when you get damage",
items = {},
})
survivalgames.register_kit("Sonic", {
cost = 800,
items = {},
effect = "You have a higher speed",
on_start = function(player)
player:set_physics_override({speed=1.5})
end,
on_end = function(player)
player:set_physics_override({speed=1})
end
})
survivalgames.register_kit("Bomber", {
cost = 600,
items = {"tnt:tnt_burning 20"},
effect = "None"
})
function survivalgames.handle_hit(player, hitter, time_from_last_punch)
function mesewars.create_ability_form(player)
local name = player:get_player_name()
if survivalgames_kits[name].selected == "Scaredy cat" then
player:set_physics_override({speed=3})
minetest.after(5, function()
player:set_physics_override({speed=1})
end)
local speedontool
if kits[name].abilitys.speed.active == true then
speedontool = "Enable!"
else speedontool = "Disable!"
end
local slownessontool
if kits[name].abilitys.slowness.active == true then
slownessontool = "Enable!"
else slownessontool = "Disable!"
end
local killkitontool
if kits[name].abilitys.killkit.active == true then
killkitontool = "Enable!"
else killkitontool = "Disable!"
end
local carefullontool
if kits[name].abilitys.carefull.active == true then
carefullontool = "Enable!"
else carefullontool = "Disable!"
end
mesewars_ability_form[name] = (
"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;]" ..
"tooltip[speedon;"..speedontool.." A chance of getting speedbost when got hitted.]" ..
"checkbox[1,3;speedbox;Active;"..tostring(kits[name].abilitys.speed.active).."]" ..
"button[1,4;1,1;speed1;"..check_active(kits[name].abilitys.speed.level, 1, "4%").."]" ..
"tooltip[speed1;200 Coins]" ..
"button[1,5;1,1;speed2;"..check_active(kits[name].abilitys.speed.level, 2, "8%").."]" ..
"tooltip[speed2;400 Coins]" ..
"button[1,6;1,1;speed3;"..check_active(kits[name].abilitys.speed.level, 3, "12%").."]" ..
"tooltip[speed3;800 Coins]" ..
"button[1,7;1,1;speed4;"..check_active(kits[name].abilitys.speed.level, 4, "16%").."]" ..
"tooltip[speed4;1600 Coins]" ..
"button[1,8;1,1;speed5;"..check_active(kits[name].abilitys.speed.level, 5, "20%").."]" ..
"tooltip[speed5;3200 Coins]" ..
"image_button[2,2;1,1;pep_speedminus.png;slownesson;]" ..
"tooltip[slownesson;"..slownessontool.." A chance of slowing your target down.]" ..
"checkbox[2,3;slownessbox;Active;"..tostring(kits[name].abilitys.slowness.active).."]" ..
"button[2,4;1,1;slowness1;"..check_active(kits[name].abilitys.slowness.level, 1, "4%").."]" ..
"tooltip[slowness1;200 Coins]" ..
"button[2,5;1,1;slowness2;"..check_active(kits[name].abilitys.slowness.level, 2, "8%").."]" ..
"tooltip[slowness2;400 Coins]" ..
"button[2,6;1,1;slowness3;"..check_active(kits[name].abilitys.slowness.level, 3, "12%").."]" ..
"tooltip[slowness3;800 Coins]" ..
"button[2,7;1,1;slowness4;"..check_active(kits[name].abilitys.slowness.level, 4, "16%").."]" ..
"tooltip[slowness4;1600 Coins]" ..
"button[2,8;1,1;slowness5;"..check_active(kits[name].abilitys.slowness.level, 5, "20%").."]" ..
"tooltip[slowness5;3200 Coins]" ..
"image_button[3,2;1,1;default_tool_steelsword.png;killkiton;]" ..
"tooltip[killkiton;"..killkitontool.." A chance of receiving your kit when got killed.]" ..
"checkbox[3,3;killkitbox;Active;"..tostring(kits[name].abilitys.killkit.active).."]" ..
"button[3,4;1,1;killkit1;"..check_active(kits[name].abilitys.killkit.level, 1, "10%").."]" ..
"tooltip[killkit1;200 Coins]" ..
"button[3,5;1,1;killkit2;"..check_active(kits[name].abilitys.killkit.level, 2, "20%").."]" ..
"tooltip[killkit2;400 Coins]" ..
"button[3,6;1,1;killkit3;"..check_active(kits[name].abilitys.killkit.level, 3, "30%").."]" ..
"tooltip[killkit3;800 Coins]" ..
"button[3,7;1,1;killkit4;"..check_active(kits[name].abilitys.killkit.level, 4, "40%").."]" ..
"tooltip[killkit4;1600 Coins]" ..
"button[3,8;1,1;killkit5;"..check_active(kits[name].abilitys.killkit.level, 5, "50%").."]" ..
"tooltip[killkit5;3200 Coins]" ..
"item_image_button[4,2;1,1;default:sandstone;carefullon;]" ..
"tooltip[carefullon;"..carefullontool.." A chance of don't lose your block on place.]" ..
"checkbox[4,3;carefullbox;Active;"..tostring(kits[name].abilitys.carefull.active).."]" ..
"button[4,4;1,1;carefull1;"..check_active(kits[name].abilitys.carefull.level, 1, "10%").."]" ..
"tooltip[carefull1;200 Coins]" ..
"button[4,5;1,1;carefull2;"..check_active(kits[name].abilitys.carefull.level, 2, "20%").."]" ..
"tooltip[carefull2;400 Coins]" ..
"button[4,6;1,1;carefull3;"..check_active(kits[name].abilitys.carefull.level, 3, "30%").."]" ..
"tooltip[carefull3;800 Coins]" ..
"button[4,7;1,1;carefull4;"..check_active(kits[name].abilitys.carefull.level, 4, "40%").."]" ..
"tooltip[carefull4;1600 Coins]" ..
"button[4,8;1,1;carefull5;"..check_active(kits[name].abilitys.carefull.level, 5, "50%").."]" ..
"tooltip[carefull5;3200 Coins]"
)
end
survivalgames.register_kit("Archer", {
cost = 400,
items = {"bow:bow", "bow:arrow 20"},
effect = "None"
})
survivalgames.register_kit("Vampire", {
cost = 1000,
items = {},
effect = "You get full heal when you kill a player",
})
--[[
List of all Kits:
Link:
Mehr kills mehr Herzen
Techniker.
Mehr kills bessere Rüstung
Angsthase:
Schaden Speed
(Vogel)
Jumppad Falschirm
Bomber:
TNT
Landmine
Teleporter
Enderperle
Vampir.
Kill volle Herzen
(Animal)
You desquise to the animal you kill
Sonic
Dauerhaft schneller
]]
function mesewars.handle_buy(player, ability, level, cost)
local name = player:get_player_name()
local pmoney = money.get_money(name)
local kitfile = kits[name].abilitys[ability]
if kitfile.level < level then
if kitfile.level +1 == level then
if pmoney >= cost then
money.set_money(name, pmoney -cost)
kitfile.level = kitfile.level +1
minetest.chat_send_player(name, core.colorize("green", "You have buyed Level "..level.." of the Ability "..ability))
else minetest.chat_send_player(name, "You don't have enough money.")
end
else minetest.chat_send_player(name, "You first have to buy the previous Level.")
end
elseif kitfile.level >= level then
minetest.chat_send_player(name, "You already buyed this Level.")
end
end

View File

@ -1,24 +1,16 @@
survivalgames_kits = {}
survivalgames_kit_form = {}
skywars_kits = {}
skywars_kit_form = {}
skywars_ability_form = {}
local kits_all = {}
local kits_register = {}
local storage = minetest.get_mod_storage()
function survivalgames.save_kits(name)
function skywars.save_kits(name)
if not name then
table_to_modstorage(storage, survivalgames_kits)
else table_to_modstorage(storage, survivalgames_kits[name], name)
end
end
storage:from_table(nil)
survivalgames.save_kits()
function survivalgames.load_kits(name)
if not name then
survivalgames_kits = modstorage_to_table(storage)
else survivalgames_kits[name] = modstorage_to_table(storage, name)
table_to_modstorage(storage, skywars_kits)
else table_to_modstorage(storage, skywars_kits[name], name)
end
end
@ -31,33 +23,34 @@ end
-- Creates player's account, if the player doesn't have it.
subgames.register_on_joinplayer(function(player, lobby)
if lobby == "survivalgames" then
if lobby == "skywars" then
local name = player:get_player_name()
skywars.load_kits(name)
if not skywars_kits[name] then
skywars_kits[name] = {kit = {}}
end
skywars.save_kits(name)
end
end)
function survivalgames.get_player_kits(name)
return survivalgames_kits[name].kit
function skywars.get_player_kits(name)
return skywars_kits[name].kit
end
function survivalgames.register_kit(kitname, def)
function skywars.register_kit(kitname, def)
kits_register[kitname] = def
def.name = kitname
table.insert(kits_all, kitname)
end
function survivalgames.add_player_kits(name, kitname)
function skywars.add_player_kits(name, kitname)
local def = kits_register[kitname]
if not survivalgames_kits[name].kit then survivalgames_kits[name].kit = {} end
if not skywars_kits[name].kit then skywars_kits[name].kit = {} end
if def and money.get_money(name) >= def.cost then
if survivalgames_kits[name].kit == "" or not table.contains(survivalgames_kits[name].kit, kitname) == true then
if skywars_kits[name].kit == "" or not table.contains(skywars_kits[name].kit, kitname) == true then
money.set_money(name, money.get_money(name)-def.cost)
table.insert(survivalgames_kits[name].kit, kitname)
survivalgames.save_kits(name)
table.insert(skywars_kits[name].kit, kitname)
skywars.save_kits(name)
minetest.chat_send_player(name, "You have buyed the kit " ..kitname.."!")
else minetest.chat_send_player(name, "You already have buyed this Kit!")
end
@ -65,19 +58,17 @@ function survivalgames.add_player_kits(name, kitname)
end
end
function survivalgames.set_player_kit(name, kitname)
if survivalgames.lobbys[survivalgames.player_lobby[name]].players[name] == true then
minetest.chat_send_player(name, "You can't switch your kit while playing.")
elseif kitname ~= "" and survivalgames_kits[name].kit ~= "" and table.contains(survivalgames_kits[name].kit, kitname) then
survivalgames_kits[name].selected = kitname
function skywars.set_player_kit(name, kitname)
if kitname ~= "" and skywars_kits[name].kit ~= "" and table.contains(skywars_kits[name].kit, kitname) then
skywars_kits[name].selected = kitname
elseif kitname ~= "" then
minetest.chat_send_player(name, "You don't have this kit!")
end
end
function survivalgames.give_kit_items(name)
if survivalgames_kits[name].selected then
local kitname = survivalgames_kits[name].selected
function skywars.give_kit_items(name)
if skywars_kits[name].selected then
local kitname = skywars_kits[name].selected
local def = kits_register[kitname]
local player = minetest.get_player_by_name(name)
local inv = player:get_inventory()
@ -86,192 +77,109 @@ function survivalgames.give_kit_items(name)
inv:add_item("main", item)
end
end
if player and kitname and kits_register[kitname] and kits_register[kitname].on_end then
kits_register[kitname].on_start(player)
end
end
end
function survivalgames.end_kit(name)
local kit = survivalgames_kits[name].selected
local player = minetest.get_player_by_name(name)
if player and kit and kits_register[kit] and kits_register[kit].on_end then
kits_register[kit].on_end(player)
end
end
-- Add a sfinv Kit Formspec
function survivalgames.create_kit_form(name)
function skywars.create_kit_form(name)
local selected_id = 1
local selected_buyid = 0
local defitems = ""
if not survivalgames_kits[name] then return end
if type(survivalgames_kits[name].kit) == "table" and #survivalgames_kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(survivalgames_kits[name].kit) do
if kitname == survivalgames_kits[name].selected then
if not skywars_kits[name] then return end
if type(skywars_kits[name].kit) == "table" and #skywars_kits[name].kit >= 1 then
for kitnumb,kitname in ipairs(skywars_kits[name].kit) do
if kitname == skywars_kits[name].selected then
selected_id = kitnumb
end
end
end
if survivalgames_kits[name].buying then
if skywars_kits[name].buying then
for kitnumb,kitname in ipairs(kits_all) do
if kitname == survivalgames_kits[name].buying then
if kitname == skywars_kits[name].buying then
selected_buyid = kitnumb
end
end
end
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if kits_register[skywars_kits[name].selected] then
local def = kits_register[skywars_kits[name].selected]
if def.items then
defitems = def.items
end
end
local costbuy = ""
if survivalgames_kits[name].buying then
local costbuyb = kits_register[survivalgames_kits[name].buying]
if skywars_kits[name].buying then
local costbuyb = kits_register[skywars_kits[name].buying]
costbuy = costbuyb.cost
end
local itembuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if skywars_kits[name].buying then
local itembuyb = kits_register[skywars_kits[name].buying]
itembuy = itembuyb.items
end
local defeffect = ""
if kits_register[survivalgames_kits[name].selected] then
local def = kits_register[survivalgames_kits[name].selected]
if def.effect then
defeffect = def.effect
end
end
local effectbuy = ""
if survivalgames_kits[name].buying then
local itembuyb = kits_register[survivalgames_kits[name].buying]
if itembuyb.effect then
itembuy = itembuyb.effect
end
end
survivalgames_kit_form[name] = (
skywars_kit_form[name] = (
"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.."]" ..
"dropdown[0,0.5;8,1.5;kitlist;"..subgames.concatornil(skywars_kits[name].kit)..";"..selected_id.."]" ..
"label[0,1.5;Items: "..subgames.concatornil(defitems).." ]" ..
"label[0,2;Effect: "..defeffect.." ]" ..
"label[0,2.5;Here you can buy your kits!]" ..
"label[0,3;Your money: "..money.get_money(name).." Coins]" ..
"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).." ]" ..
"label[0,6;Effect: "..effectbuy.." ]" ..
"button[4,4.5;3,1;buykit;Buy this Kit!]")
end
-- Grant money when kill a player
subgames.register_on_kill_player(function(killer, killed, lobby)
if lobby == "survivalgames" then
if lobby == "skywars" then
local killedname = killed:get_player_name()
local killname = killer:get_player_name()
money.set_money(killname, money.get_money(killname)+5)
minetest.chat_send_player(killname, "CoinSystem: You have receive 5 Coins!")
if survivalgames_kits[killname].selected == "Vampire" then
killer:set_hp(20)
end
end
end)
function survivalgames.kit_on_player_receive_fields(self, player, context, pressed)
function skywars.kit_on_player_receive_fields(self, player, context, pressed)
local name = player:get_player_name()
if player_lobby[name] == "survivalgames" then
if player_lobby[name] == "skywars" then
if pressed.buykit then
if survivalgames_kits[name].buying then
survivalgames.add_player_kits(name, survivalgames_kits[name].buying)
if skywars_kits[name].buying then
skywars.add_player_kits(name, skywars_kits[name].buying)
end
end
if pressed.kitlist then
survivalgames.set_player_kit(name, pressed.kitlist)
skywars.set_player_kit(name, pressed.kitlist)
end
if pressed.buylist then
survivalgames_kits[name].buying = pressed.buylist
skywars_kits[name].buying = pressed.buylist
end
survivalgames.save_kits(name)
survivalgames.create_kit_form(name)
skywars.save_kits(name)
skywars.create_kit_form(name)
sfinv.set_player_inventory_formspec(player)
end
end
survivalgames.register_kit("Scaredy cat", {
skywars.register_kit("Swordman", {
cost = 500,
items = {"default:sword_steel"},
})
skywars.register_kit("Bomber", {
cost = 700,
effect = "You are faster when you get damage",
items = {},
items = {"tnt:tnt_burning 5"},
})
survivalgames.register_kit("Sonic", {
cost = 800,
items = {},
effect = "You have a higher speed",
on_start = function(player)
player:set_physics_override({speed=1.5})
end,
on_end = function(player)
player:set_physics_override({speed=1})
end
skywars.register_kit("Builder", {
cost = 0,
items = {"default:stone 99"},
})
survivalgames.register_kit("Bomber", {
cost = 600,
items = {"tnt:tnt_burning 20"},
effect = "None"
skywars.register_kit("Blocker", {
cost = 700,
items = {"default:obsidian 20"},
})
function survivalgames.handle_hit(player, hitter, time_from_last_punch)
local name = player:get_player_name()
if survivalgames_kits[name].selected == "Scaredy cat" then
player:set_physics_override({speed=3})
minetest.after(5, function()
player:set_physics_override({speed=1})
end)
end
end
survivalgames.register_kit("Archer", {
cost = 400,
items = {"bow:bow", "bow:arrow 20"},
effect = "None"
})
survivalgames.register_kit("Vampire", {
skywars.register_kit("Archer", {
cost = 1000,
items = {},
effect = "You get full heal when you kill a player",
items = {"bow:bow", "bow:arrow 20"},
})
--[[
List of all Kits:
Link:
Mehr kills mehr Herzen
Techniker.
Mehr kills bessere Rüstung
Angsthase:
Schaden Speed
(Vogel)
Jumppad Falschirm
Bomber:
TNT
Landmine
Teleporter
Enderperle
Vampir.
Kill volle Herzen
(Animal)
You desquise to the animal you kill
Sonic
Dauerhaft schneller
]]