fixed crafting guide + limited mobs in the world to avoid lags
This commit is contained in:
parent
4dac1bd8e8
commit
8e3d28ebd1
@ -1,7 +1,7 @@
|
||||
crafting_guide = {}
|
||||
|
||||
crafting_guide.form = "size[3,3;]"..default.gui_colors..default.gui_bg.."item_image_button[0,0;1,1;item_11;btn1;]item_image_button[1,0;1,1;item_21;btn2;]item_image_button[2,0;1,1;item_31;btn3;]item_image_button[0,1;1,1;item_12;btn4;]item_image_button[1,1;1,1;item_22;btn5;]item_image_button[2,1;1,1;item_32;btn6;]item_image_button[0,2;1,1;item_13;btn7;]item_image_button[1,2;1,1;item_23;btn8;]item_image_button[2,2;1,1;item_33;btn9;]";
|
||||
crafting_guide.form_back = "size[3,4;]"..default.gui_colors..default.gui_bg.."item_image_button[0,0;1,1;item_11;btn1;]item_image_button[1,0;1,1;item_21;btn2;]item_image_button[2,0;1,1;item_31;btn3;]item_image_button[0,1;1,1;item_12;btn4;]item_image_button[1,1;1,1;item_22;btn5;]item_image_button[2,1;1,1;item_32;btn6;]item_image_button[0,2;1,1;item_13;btn7;]item_image_button[1,2;1,1;item_23;btn8;]item_image_button[2,2;1,1;item_33;btn9;]button[0,3;3,1;btn_back;Back]";
|
||||
crafting_guide.form = "size[3,3;]"..default.gui_colors..default.gui_bg;
|
||||
crafting_guide.form_back = "size[3,4;]"..default.gui_colors..default.gui_bg.."button[0,3;3,1;btn_back;Back]";
|
||||
|
||||
crafting_guide.form_items = "size[8,7]"..default.gui_colors..default.gui_bg.."button[0,6;3,1;btn_left;<]button[5,6;3,1;btn_right;>]"
|
||||
|
||||
@ -16,7 +16,15 @@ function crafting_guide.get_formspec(crafts,back_button)
|
||||
local y = 1
|
||||
local j = 1
|
||||
for i=1,9 do
|
||||
str = string.gsub(str,"item_"..x..y, crafts[1].items[j] or "")
|
||||
if (string.find((crafts[1].items[j] or ""),"group:") or 0) == 1 then
|
||||
if crafts[1].items[j] then
|
||||
str = str .. ("button["..(x-1)..","..(y-1)..";1,1;group_"..i..";"..string.sub(crafts[1].items[j], 7).."]")
|
||||
else
|
||||
str = str .. ("button["..(x-1)..","..(y-1)..";1,1;;]")
|
||||
end
|
||||
else
|
||||
str = str .. ("item_image_button["..(x-1)..","..(y-1)..";1,1;"..(crafts[1].items[j] or "")..";"..(crafts[1].items[j] or "")..";]")
|
||||
end
|
||||
j = j + 1
|
||||
|
||||
x = x+1
|
||||
@ -45,7 +53,7 @@ function crafting_guide.get_item_formspec(page)
|
||||
|
||||
for _,name in ipairs(items) do
|
||||
if minetest.get_all_craft_recipes(name) and i < (8*6)*(page+1) then
|
||||
if i > (8*6)*(page) then
|
||||
if i > (8*6)*(page)-1 then
|
||||
str = str .. "item_image_button["..x..","..y..";1,1;"..name..";"..name..";]"
|
||||
x = x + 1
|
||||
if x > 7 then
|
||||
@ -62,7 +70,16 @@ end
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname == "crafting_guide:book" then
|
||||
if fields.btn_back then
|
||||
minetest.show_formspec(player:get_player_name(), "crafting_guide:book_items", crafting_guide.get_item_formspec())
|
||||
minetest.show_formspec(player:get_player_name(), "crafting_guide:book_items", crafting_guide.get_item_formspec(crafting_guide.pages[player:get_player_name()]))
|
||||
elseif fields.quit then
|
||||
crafting_guide.pages[player:get_player_name()] = nil
|
||||
else
|
||||
for i,j in pairs(fields) do
|
||||
local crafts = minetest.get_all_craft_recipes(i)
|
||||
if crafts then
|
||||
minetest.show_formspec(player:get_player_name(), "crafting_guide:book", crafting_guide.get_formspec(crafts,true))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if formname == "crafting_guide:book_items" then
|
||||
@ -72,6 +89,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
elseif fields.btn_right then
|
||||
crafting_guide.pages[player:get_player_name()] = crafting_guide.pages[player:get_player_name()] +1
|
||||
minetest.show_formspec(player:get_player_name(), "crafting_guide:book_items", crafting_guide.get_item_formspec(crafting_guide.pages[player:get_player_name()]))
|
||||
elseif fields.quit then
|
||||
crafting_guide.pages[player:get_player_name()] = nil
|
||||
else
|
||||
for i,j in pairs(fields) do
|
||||
local crafts = minetest.get_all_craft_recipes(i)
|
||||
|
@ -1,5 +1,7 @@
|
||||
mobs = {}
|
||||
mobs.mobs = {}
|
||||
mobs.count = 0
|
||||
|
||||
function mobs.get_velocity(v, yaw, y)
|
||||
local x = -math.sin(yaw) * v
|
||||
local z = math.cos(yaw) * v
|
||||
@ -40,6 +42,7 @@ function mobs.register_mob(name, def)
|
||||
else
|
||||
minetest.spawn_item(self.object:getpos(), "money:silver_coin")
|
||||
end
|
||||
mobs.count = mobs.count - 1
|
||||
self.object:remove()
|
||||
end
|
||||
end
|
||||
@ -170,7 +173,14 @@ end
|
||||
local timer = 0
|
||||
minetest.register_globalstep(function(dtime)
|
||||
timer = timer + dtime;
|
||||
if timer >= 5 then
|
||||
if timer >= 10 then
|
||||
print("[mobs] mob count = " .. tostring(mobs.count))
|
||||
if mobs.count > (#minetest.get_connected_players())*2 then
|
||||
print("[mobs] canceled spawning")
|
||||
timer = 0
|
||||
return
|
||||
end
|
||||
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
local p = player:getpos()
|
||||
local a = {-1, 1}
|
||||
@ -179,6 +189,7 @@ minetest.register_globalstep(function(dtime)
|
||||
if minetest.get_node(vector.new(x, p.y+2, z)).name == "air" then
|
||||
local n = mobs.get_mob(xp.player_levels[player:get_player_name()])
|
||||
minetest.add_entity(vector.new(x, p.y+2, z), n)
|
||||
mobs.count = mobs.count +1
|
||||
end
|
||||
end
|
||||
timer = 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user