forked from Mirrorlandia_minetest/portalgun
_
This commit is contained in:
parent
c0ccf3afca
commit
ff70d2e461
@ -48,7 +48,7 @@ minetest.register_entity(
|
||||
time = 0.1,
|
||||
portalgun_power = 1,
|
||||
portalgun = 1,
|
||||
lifelime = 100,
|
||||
lifetime = 100,
|
||||
on_activate = function(self, staticdata)
|
||||
if portalgun_power.user then
|
||||
self.user = portalgun_power.user
|
||||
@ -78,8 +78,8 @@ minetest.register_entity(
|
||||
end
|
||||
end
|
||||
if self.player then
|
||||
self.lifelime = self.lifelime - 1
|
||||
if self.lifelime < 0 then
|
||||
self.lifetime = self.lifetime - 1
|
||||
if self.lifetime < 0 then
|
||||
self.target:set_detach()
|
||||
return self
|
||||
end
|
||||
@ -118,7 +118,7 @@ minetest.register_entity(
|
||||
time = 0.025,
|
||||
portalgun_power = 1,
|
||||
portalgun = 1,
|
||||
lifelime = 1000,
|
||||
lifetime = 1000,
|
||||
v = 0.3,
|
||||
ltime = 0,
|
||||
on_activate = function(self, staticdata)
|
||||
@ -150,16 +150,16 @@ minetest.register_entity(
|
||||
self.ltime = self.ltime - self.v
|
||||
|
||||
if self.ltime < self.v or (v2.x + v2.y + v2.z == 0) then
|
||||
self.lifelime = -1
|
||||
self.lifetime = -1
|
||||
end
|
||||
|
||||
local nexpos = {x = pos.x + (v.x * 0.05), y = pos.y + (v.y * 0.05) + 1, z = pos.z + (v.z * 0.05)}
|
||||
if minetest.registered_nodes[minetest.get_node(nexpos).name].walkable then
|
||||
self.lifelime = -1
|
||||
self.lifetime = -1
|
||||
end
|
||||
|
||||
self.lifelime = self.lifelime - 1
|
||||
if self.lifelime < 0 then
|
||||
self.lifetime = self.lifetime - 1
|
||||
if self.lifetime < 0 then
|
||||
self.target:set_detach()
|
||||
end
|
||||
|
||||
|
@ -3,7 +3,7 @@ portalgun_portal_tmp_user_abort = 0
|
||||
portalgun_portal_tmp_user = ""
|
||||
local portalgun_timer = 1.2
|
||||
local portalgun_time = 0
|
||||
portalgun_lifelime = 1200 --deletes portals that not used after a while
|
||||
portalgun_lifetime = 1200 --deletes portals that not used after a while
|
||||
portalgun_max_rage = 100
|
||||
portalgun_max_use_per_secund_time = 4 --destroys the portal if excessive used
|
||||
portalgun_max_use_per_secund = 25 --4 & 25 is default = teleported (teleported 25 times in 4 sec)
|
||||
@ -101,15 +101,15 @@ portalgun_on_step = function(self, dtime)
|
||||
return self
|
||||
end
|
||||
|
||||
if portalgun_portal[name].lifelime < 0 then
|
||||
if portalgun_portal[name].lifetime < 0 then
|
||||
portal_delete(name, 0)
|
||||
return self
|
||||
end
|
||||
|
||||
if portalgun_portal[name].portal1_active and portalgun_portal[name].portal2_active then -- makes lifetime equal when both is acive, or it will be half
|
||||
portalgun_portal[name].lifelime = portalgun_portal[name].lifelime - 0.5
|
||||
portalgun_portal[name].lifetime = portalgun_portal[name].lifetime - 0.5
|
||||
else
|
||||
portalgun_portal[name].lifelime = portalgun_portal[name].lifelime - 1
|
||||
portalgun_portal[name].lifetime = portalgun_portal[name].lifetime - 1
|
||||
return self -- abort when only 1 is active (saves cpu)
|
||||
end
|
||||
|
||||
@ -274,7 +274,7 @@ portalgun_on_step = function(self, dtime)
|
||||
portalgun_portal[name].timer = 0.2
|
||||
self.portal_max_use = self.portal_max_use + 1
|
||||
ob:set_pos(obpos, false)
|
||||
portalgun_portal[name].lifelime = portalgun_lifelime
|
||||
portalgun_portal[name].lifetime = portalgun_lifetime
|
||||
minetest.sound_play(
|
||||
"portalgun_teleport",
|
||||
{pos = portalgun_portal[name].portal1_pos, max_hear_distance = 10, gain = 30}
|
||||
@ -433,8 +433,6 @@ local function rnd(r)
|
||||
return math.floor(r + 0.5)
|
||||
end
|
||||
|
||||
minetest.register_privilege("allblocksportal", "Can use place portals everywhere")
|
||||
|
||||
function portalgun_onuse(itemstack, user, pointed_thing, mode) -- using the gun
|
||||
if pointed_thing.type == "object" then
|
||||
portalgun_gravity(itemstack, user, pointed_thing)
|
||||
@ -449,7 +447,7 @@ function portalgun_onuse(itemstack, user, pointed_thing, mode) -- using the gun
|
||||
local item = itemstack:to_table()
|
||||
local ob = {}
|
||||
ob.project = 1
|
||||
ob.lifelime = portalgun_lifelime
|
||||
ob.lifetime = portalgun_lifetime
|
||||
ob.portal1 = 0
|
||||
ob.portal2 = 0
|
||||
ob.portal1_dir = 0
|
||||
@ -460,7 +458,7 @@ function portalgun_onuse(itemstack, user, pointed_thing, mode) -- using the gun
|
||||
|
||||
if portalgun_portal[name] == nil then -- new portal profile
|
||||
portalgun_portal[name] = {
|
||||
lifelime = portalgun_lifelime,
|
||||
lifetime = portalgun_lifetime,
|
||||
project = 1,
|
||||
timer = 0,
|
||||
portal1_active = false,
|
||||
@ -480,19 +478,16 @@ function portalgun_onuse(itemstack, user, pointed_thing, mode) -- using the gun
|
||||
-- the project
|
||||
|
||||
for i = 1, portalgun_max_rage, 0.5 do
|
||||
local nname =
|
||||
minetest.get_node({x = pos.x + (dir.x * i), y = pos.y + (dir.y * i), z = pos.z + (dir.z * i)}).name
|
||||
local nname = minetest.get_node({x = pos.x + (dir.x * i), y = pos.y + (dir.y * i), z = pos.z + (dir.z * i)}).name
|
||||
if minetest.registered_nodes[nname].walkable then
|
||||
portalgun_portal[name].lifelime = portalgun_lifelime
|
||||
portalgun_portal[name].lifetime = portalgun_lifetime
|
||||
|
||||
-- if minetest.get_node_group(nname, "antiportal") > 0 then
|
||||
-- minetest.sound_play("portalgun_error", {pos = pos, max_hear_distance = 5, gain = 3})
|
||||
-- return itemstack
|
||||
-- end
|
||||
--check if the name doesnt start with portalgun:testblock or if has priv allblocksportal
|
||||
local allplace = minetest.check_player_privs(user:get_player_name(), {allblocksportal = true})
|
||||
local istestblock = string.find(nname, "portalgun:testblock", 1)
|
||||
if not istestblock and not allplace then
|
||||
if not istestblock then
|
||||
minetest.sound_play("portalgun_error", {pos = pos, max_hear_distance = 5, gain = 3})
|
||||
return itemstack
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user