Add files via upload
parent
9519ba2241
commit
ddccb36c52
|
@ -1,4 +1,4 @@
|
|||
vexcazer_con={jobs={},user={},max_admin=3000,max_mod=495,max_default=99,max_dis_admin=6,max_dis_mod=3,max_dis_default=2}
|
||||
vexcazer_con={jobs={},user={},max_dis=100000,dis_done=0,max_jobs_done=1000,jobs_done=0,max_world=30000,max_admin=3000,max_mod=495,max_default=99,max_dis_admin=6,max_dis_mod=3,max_dis_default=2}
|
||||
|
||||
vexcazer_con.counter=function(a)
|
||||
local b=0
|
||||
|
@ -9,8 +9,9 @@ vexcazer_con.counter=function(a)
|
|||
end
|
||||
|
||||
vexcazer_con.run=function()
|
||||
vexcazer_con.jobs_done=0
|
||||
vexcazer_con.dis_done=0
|
||||
for i, a in pairs(vexcazer_con.user) do
|
||||
|
||||
if not (a.name and a.count>1 and vexcazer_con.counter(a.jobs)>0) then
|
||||
vexcazer_con.user[a.name]=nil
|
||||
vexcazer_con.run()
|
||||
|
@ -18,7 +19,7 @@ vexcazer_con.run=function()
|
|||
end
|
||||
|
||||
for xyz, pos in pairs(a.jobs) do
|
||||
if os.clock()-a.time>5 then
|
||||
if os.clock()-a.time>a.maxdelay then
|
||||
minetest.chat_send_player(a.name, "<Vexcazer> using aborted, took more then 5 sec (" .. (os.clock()-a.time) ..")")
|
||||
vexcazer_con.user[a.name]=nil
|
||||
vexcazer_con.run()
|
||||
|
@ -41,11 +42,22 @@ vexcazer_con.run=function()
|
|||
if minetest.get_node(n).name==a.node then
|
||||
vexcazer_con.user[a.name].jobs[n.x .. "." .. n.y .."." ..n.z]=n
|
||||
end
|
||||
vexcazer_con.dis_done=vexcazer_con.dis_done+1
|
||||
end
|
||||
end
|
||||
end
|
||||
vexcazer_con.user[a.name].jobs[xyz]=nil
|
||||
vexcazer_con.jobs_done=vexcazer_con.jobs_done+1
|
||||
|
||||
if vexcazer_con.jobs_done>vexcazer_con.max_jobs_done or vexcazer_con.dis_done>vexcazer_con.max_dis then
|
||||
minetest.after(0.1, function()
|
||||
vexcazer_con.run()
|
||||
return
|
||||
end)
|
||||
return
|
||||
end
|
||||
end
|
||||
vexcazer_con.dis_done=0
|
||||
if vexcazer_con.counter(vexcazer_con.user[a.name].jobs)<1 then
|
||||
vexcazer_con.user[a.name]=nil
|
||||
vexcazer_con.run()
|
||||
|
@ -53,8 +65,9 @@ vexcazer_con.run=function()
|
|||
end
|
||||
end
|
||||
if vexcazer_con.counter(vexcazer_con.user)>0 then
|
||||
|
||||
minetest.after((0.1), function()
|
||||
vexcazer_con.jobs_done=0
|
||||
vexcazer_con.dis_done=0
|
||||
minetest.after(0.1, function()
|
||||
vexcazer_con.run()
|
||||
return
|
||||
end)
|
||||
|
@ -75,10 +88,13 @@ vexcazer.registry_mode({
|
|||
if pointed_thing.type~="node" then return itemstack end
|
||||
local count=user:get_inventory():get_stack("main", input.index-1):get_count()
|
||||
local dis=user:get_inventory():get_stack("main", input.index+1):get_count()
|
||||
local maxdelay=5
|
||||
if count==0 then
|
||||
count=9
|
||||
elseif count>input.max_amount then
|
||||
if input.admin then
|
||||
elseif count>=input.max_amount then
|
||||
if input.world then
|
||||
count=vexcazer_con.max_world
|
||||
elseif input.admin then
|
||||
count=vexcazer_con.max_admin
|
||||
elseif input.mod then
|
||||
count=vexcazer_con.max_mod
|
||||
|
@ -86,10 +102,13 @@ vexcazer.registry_mode({
|
|||
count=vexcazer_con.max_default
|
||||
end
|
||||
end
|
||||
|
||||
if input.world then
|
||||
maxdelay=30
|
||||
end
|
||||
|
||||
dis=dis+1
|
||||
--if dis==0 then
|
||||
-- dis=1
|
||||
--else
|
||||
|
||||
if input.admin and dis>vexcazer_con.max_dis_admin then
|
||||
dis=vexcazer_con.max_dis_admin
|
||||
elseif input.mod and dis>vexcazer_con.max_dis_mod then
|
||||
|
@ -115,7 +134,7 @@ vexcazer.registry_mode({
|
|||
return
|
||||
end
|
||||
|
||||
vexcazer_con.user[name]={time=os.clock(),node=node,input=input,count=count,dis=dis,name=name,jobs={}}
|
||||
vexcazer_con.user[name]={maxdelay=maxdelay,time=os.clock(),node=node,input=input,count=count,dis=dis,name=name,jobs={}}
|
||||
vexcazer_con.user[name].jobs[pos.x .."." .. pos.y .."." ..pos.z]=pos
|
||||
vexcazer_con.run()
|
||||
return itemstack
|
||||
|
@ -126,15 +145,21 @@ vexcazer.registry_mode({
|
|||
local count=user:get_inventory():get_stack("main", input.index-1):get_count()
|
||||
local item=user:get_inventory():get_stack("main", input.index-1):get_name()
|
||||
local dis=user:get_inventory():get_stack("main", input.index+1):get_count()
|
||||
|
||||
local maxdelay=5
|
||||
if not minetest.registered_nodes[item] then
|
||||
item=input.lazer
|
||||
if input.world then
|
||||
item="air"
|
||||
else
|
||||
item=input.lazer
|
||||
end
|
||||
end
|
||||
|
||||
if count==0 then
|
||||
count=9
|
||||
elseif count>input.max_amount then
|
||||
if input.admin then
|
||||
elseif count>=input.max_amount then
|
||||
if input.world then
|
||||
count=vexcazer_con.max_world
|
||||
elseif input.admin then
|
||||
count=vexcazer_con.max_admin
|
||||
elseif input.mod then
|
||||
count=vexcazer_con.max_mod
|
||||
|
@ -142,10 +167,13 @@ vexcazer.registry_mode({
|
|||
count=vexcazer_con.max_default
|
||||
end
|
||||
end
|
||||
|
||||
if input.world then
|
||||
maxdelay=30
|
||||
end
|
||||
|
||||
dis=dis+1
|
||||
--if dis==0 then
|
||||
-- dis=1
|
||||
--else
|
||||
|
||||
if input.admin and dis>vexcazer_con.max_dis_admin then
|
||||
dis=vexcazer_con.max_dis_admin
|
||||
elseif input.mod and dis>vexcazer_con.max_dis_mod then
|
||||
|
@ -166,7 +194,7 @@ vexcazer.registry_mode({
|
|||
vexcazer_con.user[name].count=0
|
||||
return
|
||||
end
|
||||
vexcazer_con.user[name]={time=os.clock(),node=node,input=input,count=count,dis=dis,name=name,place={name=item},nolazer=true,jobs={}}
|
||||
vexcazer_con.user[name]={maxdelay=maxdelay,time=os.clock(),node=node,input=input,count=count,dis=dis,name=name,place={name=item},nolazer=true,jobs={}}
|
||||
vexcazer_con.user[name].jobs[pos.x .."." .. pos.y .."." ..pos.z]=pos
|
||||
vexcazer_con.run()
|
||||
return itemstack
|
||||
|
|
|
@ -19,12 +19,17 @@ local massive=function(itemstack, user, pointed_thing,input)
|
|||
if dig==false and minetest.registered_nodes[stack]==nil or stack_count==0 then return false end
|
||||
if stack_count_left==0 then stack_count_left=stack_count end
|
||||
if dig then pos=pointed_thing.under end
|
||||
|
||||
input.max_amount=vexcazer.round(input.max_amount/2)
|
||||
if stack_count_left>input.max_amount then stack_count_left=stack_count end
|
||||
if stack_count_left>input.max_amount then
|
||||
stack_count_left=input.max_amount
|
||||
end
|
||||
|
||||
if stack_count>input.max_amount then
|
||||
minetest.sound_play("vexcazer_error", {pos = user:get_pos(), gain = 1.0, max_hear_distance = 10,})
|
||||
stack_count=input.max_amount
|
||||
--minetest.sound_play("vexcazer_error", {pos = user:get_pos(), gain = 1.0, max_hear_distance = 10,})
|
||||
minetest.chat_send_player(input.user_name, "<vexcazer> Maximum count: " .. input.max_amount)
|
||||
return false
|
||||
--return false
|
||||
end
|
||||
|
||||
local allblocks=(stack_count*stack_count)*stack_count_left
|
||||
|
|
|
@ -10,31 +10,49 @@ local nuke=function(itemstack, user, pointed_thing,input,a,g)
|
|||
else
|
||||
pos=user:get_pos()
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, a)) do
|
||||
if not (ob:is_player() and ob:get_player_name()==name) then
|
||||
ob:set_hp(0)
|
||||
ob:punch(ob,1,{full_punch_interval=1,damage_groups={fleshy=9000}})
|
||||
c=c+1
|
||||
end
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, a)) do
|
||||
if not (ob:is_player() and ob:get_player_name()==name) then
|
||||
local pos2=ob:get_pos()
|
||||
local d=math.max(1,vector.distance(pos,pos2))
|
||||
local dmg=(8/d)*a
|
||||
if ob:get_luaentity() then
|
||||
ob:set_velocity({x=(pos2.x-pos.x)*dmg, y=(pos2.y-pos.y)*dmg, z=(pos2.z-pos.z)*dmg})
|
||||
elseif ob:is_player() then
|
||||
local d=dmg/4
|
||||
local pos3={x=(pos2.x-pos.x)*d, y=(pos2.y-pos.y)*d, z=(pos2.z-pos.z)*d}
|
||||
ob:set_pos({x=pos.x+pos3.x,y=pos.y+pos3.y,z=pos.z+pos3.z,})
|
||||
|
||||
if input.world then
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 500)) do
|
||||
if not (ob:is_player() and ob:get_player_name()==name) then
|
||||
|
||||
if ob:is_player() then
|
||||
ob:set_hp(0)
|
||||
else
|
||||
ob:remove()
|
||||
end
|
||||
c=c+1
|
||||
end
|
||||
c2=c2+1
|
||||
end
|
||||
minetest.chat_send_player(name, "<Vexcazer> removed objects: " .. c)
|
||||
else
|
||||
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, a)) do
|
||||
if not (ob:is_player() and ob:get_player_name()==name) then
|
||||
ob:set_hp(0)
|
||||
ob:punch(ob,1,{full_punch_interval=1,damage_groups={fleshy=9000}})
|
||||
c=c+1
|
||||
end
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, a)) do
|
||||
if not (ob:is_player() and ob:get_player_name()==name) then
|
||||
local pos2=ob:get_pos()
|
||||
local d=math.max(1,vector.distance(pos,pos2))
|
||||
local dmg=(8/d)*a
|
||||
if ob:get_luaentity() then
|
||||
ob:set_velocity({x=(pos2.x-pos.x)*dmg, y=(pos2.y-pos.y)*dmg, z=(pos2.z-pos.z)*dmg})
|
||||
elseif ob:is_player() then
|
||||
local d=dmg/4
|
||||
local pos3={x=(pos2.x-pos.x)*d, y=(pos2.y-pos.y)*d, z=(pos2.z-pos.z)*d}
|
||||
ob:set_pos({x=pos.x+pos3.x,y=pos.y+pos3.y,z=pos.z+pos3.z,})
|
||||
end
|
||||
c2=c2+1
|
||||
end
|
||||
end
|
||||
if c<0 then c=0 end
|
||||
minetest.chat_send_player(name, "<Vexcazer> punched objects: " .. c .." pushed objects: " .. c2)
|
||||
end
|
||||
if c<0 then c=0 end
|
||||
minetest.chat_send_player(name, "<Vexcazer> punched objects: " .. c .." pushed objects: " .. c2)
|
||||
minetest.sound_play("vexcazer_nuke", {pos=pos, gain = g, max_hear_distance = a})
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue