This commit is contained in:
HybridDog 2016-02-17 19:08:21 +01:00
parent 36c0a5ffa5
commit aaa54a0ef5
11 changed files with 187 additions and 46 deletions

View File

@ -1,4 +1,6 @@
if diplazer_Enable_pick then
minetest.register_tool("diplazer:pick", { minetest.register_tool("diplazer:pick", {
description ="Diplazer pick", description ="Diplazer pick",
range = 10, range = 10,
@ -15,15 +17,15 @@ minetest.register_tool("diplazer:pick", {
crumbly={times={[1]=0,[2]=0,[3]=0},uses=100,maxlevel=3}, crumbly={times={[1]=0,[2]=0,[3]=0},uses=100,maxlevel=3},
snappy={times={[1]=0,[2]=0,[3]=0},uses=0,maxlevel=3}, snappy={times={[1]=0,[2]=0,[3]=0},uses=0,maxlevel=3},
}, },
damage_groups={fleshy=8}, damage_groups={fleshy=8}, },
},
}) })
end
minetest.register_tool("diplazer:adpick", { minetest.register_tool("diplazer:adpick", {
description ="Diplazer ad pick", description ="Diplazer ad pick",
range = 15, range = 15,
inventory_image = "diplazer_adpick.png", inventory_image = "diplazer_adpick.png",
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = diplazer_hide_stuff},
tool_capabilities = { tool_capabilities = {
full_punch_interval = 0.20, full_punch_interval = 0.20,
max_drop_level = 3, max_drop_level = 3,

View File

@ -1,15 +1,15 @@
See the version in the init.lua or type /dihelp in game See the version in the init.lua or type /dihelp in game
Diplazer is a advanced build / digging tool, and it can even teleport, object teleporter and gravitygun, and more!
Rename this folder to diplazer Rename this folder to diplazer
More info: https://forum.minetest.net/viewtopic.php?f=9&t=12395 More info: https://forum.minetest.net/viewtopic.php?f=9&t=12395
Other info: type /dihelp in game Other info: type /dihelp in game
type /di_dropme to drop you self from mode7 and mode8 (or drop all with diplazer_admin priv /di_dropall) type /di_dropme to drop you self from mode7 and mode8 (or drop all with diplazer_admin priv /di_dropall)
You can easy toogle / functions and see all items in the init.lua
Diplazer is a kind of lasergun / fast placing / diging tool, and it can even teleport, object teleporter and gravitygun, and more!!
To change modes: Use while sneaking / hold shift and left click To change modes: Use while sneaking / hold shift and left click
To change modes backward: Use while sneaking and jump / hold shift+jump and left click To change modes backward: Use while sneaking and jump / hold shift+jump and left click
@ -152,14 +152,28 @@ are inside a block (not water)
if you are in daylight if you are in daylight
and if you chnage its possition in the inventory and if you chnage its possition in the inventory
The Portable chest: The Portable chest:
the title says all, put down the blue chest, put in stuff, pick up the chest, put it somewhere else, and you stuff are there. the title says all, put down the blue chest, put in stuff, pick up the chest, put it somewhere else, and you stuff are there.
the chest cant save metadata / info from tools, that means it will be restored, but tool damage. the chest cant save metadata / info from tools, that means it will be restored, but tool damage.
You can easy toogle / functions and see all items in the init.lua Lighfix:
It's basically lava but will not cause any damage or on players.
just put it near unnatural darkness and it will disappear!
In tool:
based on the gbpinvisible mod, but works better, 1 use and the glitch making you 99.99% invisible.
why only 99.99? your player (mesh) and the title will disappear, but the collision box is still visible if someone point you.
people can see you if they join after you used the tool, or if you become attached to something, or die.
require kick to use.
Changes log: Changes log:
V19
Fixed: crash in service bot
Added: lighfix
Added: in (Invisible) imported from the gbpinvisiable mod
Added: setting diplazer_Enable_pick (enable the green pick)
Added: setting diplazer_hide_stuff
Fixed: di_sb aliases error
V18: V18:
Fixed shadows from lazer Fixed shadows from lazer
Added: portable chest (imported from pollution) Added: portable chest (imported from pollution)
@ -219,7 +233,7 @@ Fixed: full inventory cant dig wirh no free slot
Fixed: mode8: crash when pick up stuff Fixed: mode8: crash when pick up stuff
Fixed: mode8: performance bug, shift mode while hold something Fixed: mode8: performance bug, shift mode while hold something
V11.4 V11.4
Fixed: :com placing over unbreakabel blocks without colision Fixed: :com placing over unbreakabel blocks without collision
V11.3 V11.3
Fixed: warning for :com Fixed: warning for :com
Fixed: com: craft recipe for mode 11 & 12 Fixed: com: craft recipe for mode 11 & 12

View File

@ -1741,7 +1741,7 @@ minetest.register_tool("diplazer:gun", {
description = "Diplazer gun", description = "Diplazer gun",
range = diplazer_amount, range = diplazer_amount,
inventory_image = "diplazer.png", inventory_image = "diplazer.png",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=diplazer_hide_stuff},
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
diplazer_onuse(itemstack,user,pointed_thing,0,1) diplazer_onuse(itemstack,user,pointed_thing,0,1)
return itemstack return itemstack
@ -1752,7 +1752,7 @@ minetest.register_tool("diplazer:admin", {
description = "Diplazer Admin", description = "Diplazer Admin",
range = diplazer_amount, range = diplazer_amount,
inventory_image = "diplazeradmin.png", inventory_image = "diplazeradmin.png",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=diplazer_hide_stuff},
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
diplazer_onuse(itemstack,user,pointed_thing,1,1) diplazer_onuse(itemstack,user,pointed_thing,1,1)
return itemstack return itemstack
@ -1763,7 +1763,7 @@ minetest.register_tool("diplazer:adminno", {
description = "Diplazer Admin no drops", description = "Diplazer Admin no drops",
range = diplazer_amount, range = diplazer_amount,
inventory_image = "diplazeradminno.png", inventory_image = "diplazeradminno.png",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=diplazer_hide_stuff},
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
diplazer_onuse(itemstack,user,pointed_thing,1,0) diplazer_onuse(itemstack,user,pointed_thing,1,0)
return itemstack return itemstack
@ -1896,13 +1896,13 @@ minetest.register_tool("diplazer:orba", {
description = "Healing Admin Orb", description = "Healing Admin Orb",
range = 0, range = 0,
inventory_image = "diplazer_orba.png", inventory_image = "diplazer_orba.png",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=diplazer_hide_stuff},
}) })
minetest.register_tool("diplazer:orbg", { minetest.register_tool("diplazer:orbg", {
description = "Healing Moderator Orb", description = "Healing Moderator Orb",
range = 0, range = 0,
inventory_image = "diplazer_orbg.png", inventory_image = "diplazer_orbg.png",
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=diplazer_hide_stuff},
}) })
minetest.register_tool("diplazer:orbc", { minetest.register_tool("diplazer:orbc", {
description = "Healing Orb", description = "Healing Orb",

BIN
craft.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

@ -37,6 +37,11 @@ minetest.register_globalstep(function(dtime)
local pos=diplazer_flashlight.users[i].player:getpos() local pos=diplazer_flashlight.users[i].player:getpos()
pos.y=pos.y+1.5 pos.y=pos.y+1.5
local n=minetest.get_node(pos).name local n=minetest.get_node(pos).name
local light=minetest.get_node_light(pos)
if light==nil then
table.remove(diplazer_flashlight.users,i)
return false
end
if diplazer_flashlight.users[i].inside>10 or name==nil or name~="diplazer:flashlight" or minetest.get_node_light(pos)>12 then if diplazer_flashlight.users[i].inside>10 or name==nil or name~="diplazer:flashlight" or minetest.get_node_light(pos)>12 then
table.remove(diplazer_flashlight.users,i) table.remove(diplazer_flashlight.users,i)
elseif n=="air" or n=="diplazer:flht" then elseif n=="air" or n=="diplazer:flht" then

View File

@ -1,4 +1,4 @@
diplazer_vesrion=18 diplazer_vesrion="19"
diplazer_Tele={} diplazer_Tele={}
diplazer_UserTele={} diplazer_UserTele={}
@ -21,9 +21,6 @@ GGunInUse=0
if minetest.get_modpath("pipeworks") then diplazer_pipeworks=1 end if minetest.get_modpath("pipeworks") then diplazer_pipeworks=1 end
dofile(minetest.get_modpath("diplazer") .. "/settings.lua") dofile(minetest.get_modpath("diplazer") .. "/settings.lua")
dofile(minetest.get_modpath("diplazer") .. "/base.lua") dofile(minetest.get_modpath("diplazer") .. "/base.lua")
dofile(minetest.get_modpath("diplazer") .. "/dipbox.lua") dofile(minetest.get_modpath("diplazer") .. "/dipbox.lua")
@ -32,14 +29,15 @@ dofile(minetest.get_modpath("diplazer") .. "/3d2shield.lua")
dofile(minetest.get_modpath("diplazer") .. "/pchest.lua") dofile(minetest.get_modpath("diplazer") .. "/pchest.lua")
dofile(minetest.get_modpath("diplazer") .. "/flashlight.lua") dofile(minetest.get_modpath("diplazer") .. "/flashlight.lua")
dofile(minetest.get_modpath("diplazer") .. "/serbot.lua") dofile(minetest.get_modpath("diplazer") .. "/serbot.lua")
dofile(minetest.get_modpath("diplazer") .. "/lighfix.lua")
dofile(minetest.get_modpath("diplazer") .. "/invis.lua")
if diplazer_Enable_gravity==true then if diplazer_Enable_gravity==true then
dofile(minetest.get_modpath("diplazer") .. "/digrav.lua") dofile(minetest.get_modpath("diplazer") .. "/digrav.lua")
end end
minetest.register_alias("di_in", "diplazer:in")
minetest.register_alias("di_lightfix", "diplazer:lightfixer")
minetest.register_alias("di_ch", "diplazer:chip")
minetest.register_alias("di_sb", "diplazer:serbotcon") minetest.register_alias("di_sb", "diplazer:serbotcon")
minetest.register_alias("di_chest", "diplazer:pchest") minetest.register_alias("di_chest", "diplazer:pchest")
minetest.register_alias("di_adpick", "diplazer:adpick") minetest.register_alias("di_adpick", "diplazer:adpick")
@ -59,8 +57,8 @@ minetest.register_alias("di_orba", "diplazer:orba")
minetest.register_alias("di_orbg", "diplazer:orbg") minetest.register_alias("di_orbg", "diplazer:orbg")
minetest.register_alias("di_orbc", "diplazer:orbc") minetest.register_alias("di_orbc", "diplazer:orbc")
minetest.register_alias("di_lcom", "diplazer:lazerblock_com") minetest.register_alias("di_lcom", "diplazer:lazerblock_com")
minetest.register_alias("di_lcomg", "diplazer:lazerblock_com") minetest.register_alias("di_lcomg", "diplazer:lazerblock_comg")
minetest.register_alias("di_lcomc", "diplazer:lazerblock_com") minetest.register_alias("di_lcomc", "diplazer:lazerblock_comc")
minetest.register_alias("di_lgun", "diplazer:lazerblock_gun") minetest.register_alias("di_lgun", "diplazer:lazerblock_gun")
minetest.register_alias("di_lad", "diplazer:lazerblock_admin") minetest.register_alias("di_lad", "diplazer:lazerblock_admin")
minetest.register_alias("di_ladno", "diplazer:lazerblock_adminno") minetest.register_alias("di_ladno", "diplazer:lazerblock_adminno")

34
invis.lua Normal file
View File

@ -0,0 +1,34 @@
minetest.register_tool("diplazer:in", {
description = "In",
groups = {not_in_creative_inventory=diplazer_hide_stuff},
inventory_image = "diplazer_in.png",
on_use = function(itemstack, user, pointed_thing)
local pos=user:getpos()
if minetest.check_player_privs(user:get_player_name(), {kick=true})==false then
minetest.chat_send_player(user:get_player_name(), "You need kick to use this")
return itemstack
end
local en=minetest.add_entity(pos, "diplazer:invis")
user:set_attach(en, "",pos, pos)
minetest.after(1,function(en)
en:set_hp(0)
en:punch(en, 1, "default:diamond_pick")
end,en)
return itemstack
end,
})
minetest.register_entity("diplazer:invis",{
hp_max = 1000,
physical =false,
weight = 0,
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
visual = "sprite",
visual_size = {x=0.01, y=0.01},
textures = {"diplazer_in.png"},
colors = {},
spritediv = {x=1, y=1},
initial_sprite_basepos = {x=0, y=0},
is_visible = true,
makes_footstep_sound = false,
automatic_rotate = false,
})

85
lighfix.lua Normal file
View File

@ -0,0 +1,85 @@
minetest.register_craft({
output = "diplazer:lightfixer",
recipe = {
{"default:steel_ingot","default:torch", "default:steel_ingot"},
{"","default:steel_ingot",""},
}
})
minetest.register_tool("diplazer:lightfixer", {
description = "Light fixer (put on or into unnatural darkness)",
range = 10,
inventory_image = "default_lava.png^[colorize:#00dd99aa",
on_place=function(itemstack, user, pointed_thing)
if pointed_thing.type=="node" and minetest.is_protected(pointed_thing.above, user:get_player_name())==false and minetest.get_node(pointed_thing.above).name=="air" then
minetest.set_node(pointed_thing.above,{name="diplazer:lightfix"})
end
return itemstack
end,
})
minetest.register_node("diplazer:lightfix", {
description = "Lightfixt",
drawtype = "liquid",
tiles = {"default_lava.png^[colorize:#00dd99aa"},
alpha = 160,
light_source = default.LIGHT_MAX - 1,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
drop = "",
liquid_viscosity = 2,
liquidtype = "source",
liquid_alternative_flowing="diplazer:lightfix2",
liquid_alternative_source="diplazer:lightfix",
liquid_renewable = false,
liquid_range = 0,
sunlight_propagates = true,
groups = {liquid = 3,not_in_creative_inventory = 1},
on_construct=function(pos)
minetest.env:get_node_timer(pos):start(5)
end,
on_timer = function (pos, elapsed)
for i=0,50,1 do
local np=minetest.find_node_near(pos, 20,{"diplazer:lightfix2"})
if np~=nil then
minetest.set_node(np, {name="air"})
else
minetest.set_node(pos, {name="air"})
return false
end
end
end,
})
minetest.register_node("diplazer:lightfix2", {
description = "Lightfixt",
drawtype = "flowingliquid",
tiles = {"default_lava.png^[colorize:#00dd99aa"},
special_tiles = {
{
name = "default_lava.png^[colorize:#00dd99aa",
},
},
paramtype = "light",
paramtype2 = "flowingliquid",
light_source = default.LIGHT_MAX - 1,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
sunlight_propagates = true,
is_ground_content = false,
drop = "",
liquid_range = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "diplazer:lightfix2",
liquid_alternative_source = "diplazer:lightfix",
liquid_viscosity = 2,
liquid_renewable = false,
groups = {liquid = 3,not_in_creative_inventory = 1},
})

View File

@ -119,10 +119,11 @@ end
local diplazer_serbot=function(self, dtime) local diplazer_serbot=function(self, dtime)
self.timer=self.timer+dtime self.timer=self.timer+dtime
self.timer2=self.timer2+dtime self.timer2=self.timer2+dtime
if self.timer2>=0.2 then if self.timer2>=0.2 then
self.timer2=0 self.timer2=0
if self.uname==nil or diplazer_disb[self.uname]==nil then
return self
end
-- set status by controler -- set status by controler
if diplazer_disb[self.uname].status~="" then if diplazer_disb[self.uname].status~="" then
@ -402,9 +403,10 @@ local diplazer_serbot=function(self, dtime)
end end
end end
--place --place
if self.status_curr=="place" and minetest.is_protected(self.status_target3, self.uname)==false then if self.status_curr=="place" and minetest.is_protected(self.status_target3, self.uname)==false then
local stack=self.user:get_inventory():get_stack("main", self.user:get_wield_index()-1):get_name() local stack=self.user:get_inventory():get_stack("main", self.user:get_wield_index()-1):get_name()
if stack~="" then if minetest.registered_nodes[stack] then
minetest.set_node(self.status_target3, {name=stack}) minetest.set_node(self.status_target3, {name=stack})
self.user:get_inventory():remove_item("main",stack) self.user:get_inventory():remove_item("main",stack)
minetest.sound_play("default_place_node_hard", {pos = self.object:getpos(), gain = 1.1, max_hear_distance = 5,}) minetest.sound_play("default_place_node_hard", {pos = self.object:getpos(), gain = 1.1, max_hear_distance = 5,})
@ -471,9 +473,16 @@ local diplazer_serbot=function(self, dtime)
for i, ob in pairs(minetest.get_objects_inside_radius(pos, self.distance)) do for i, ob in pairs(minetest.get_objects_inside_radius(pos, self.distance)) do
if ((ob:is_player() and ob:get_player_name()~=self.uname) or (ob:get_luaentity() and ob:get_luaentity().team~=self.team and ob:get_luaentity().uname~=self.uname)) and not (ob:get_attach()) then if ((ob:is_player() and ob:get_player_name()~=self.uname) or (ob:get_luaentity() and ob:get_luaentity().team~=self.team and ob:get_luaentity().uname~=self.uname)) and not (ob:get_attach()) then
if diplazer_visiable(pos,ob) and ((not ob:get_luaentity()) or (ob:get_luaentity() and (not(self.status_curr=="attack" and ob:get_luaentity().name=="__builtin:item")))) then if diplazer_visiable(pos,ob) and ((not ob:get_luaentity()) or (ob:get_luaentity() and (not(self.status_curr=="attack" and ob:get_luaentity().name=="__builtin:item")))) then
if self.status_static=="protect" then if self.status_static=="protect" and self.status_target3~=nil then
if self.status_target3:get_luaentity()==nil and self.status_target3:is_player()==nil then
return self
end
local op=ob:getpos() local op=ob:getpos()
local tp=self.status_target3:getpos() local tp=self.status_target3:getpos()
if tp==nil then
return self
end
if not (op.x==tp.x and op.z==tp.z and ob:get_hp()==self.status_target3:get_hp()) then if not (op.x==tp.x and op.z==tp.z and ob:get_hp()==self.status_target3:get_hp()) then
self.status_target1=ob self.status_target1=ob
self.status_curr="attack" self.status_curr="attack"

View File

@ -1,19 +1,17 @@
--priv for moderator: diplazer_gun --priv for moderator: diplazer_gun
--priv for admin: diplazer_admin --priv for admin: diplazer_admin
diplazer_mode1314_Max=20 --limetation for mode 13 & 14 20x20x20 as default diplazer_hide_stuff=1
diplazer_mode1314_Max=20 --limetation for mode 13 & 14 20x20x20 as default
diplazer_Enable_warning_mode11_12=true
diplazer_mode11_max=30 --limetation for mode12 30x30 as default diplazer_mode11_max=30 --limetation for mode12 30x30 as default
diplazer_mode12_max=30 diplazer_mode12_max=30
diplazer_Enable_di3Dt_for_all=true diplazer_Enable_di3Dt_for_all=true
diplazer_Enable_mode8=true --gravitygun takes little more when used, then its off again diplazer_Enable_mode8=true --gravitygun takes little more when used, then its off again
diplazer_Enable_warning_mode11_12=true diplazer_Enable_warning_mode11_12=true
diplazer_warning_mode11_12=11 diplazer_warning_mode11_12=11
diplazer_Enable_com_mode8=false diplazer_Enable_com_mode8=false
diplazer_Enable_gravity=true diplazer_Enable_gravity=true
diplazer_gravity_to_use=0.5 diplazer_gravity_to_use=0.5
diplazer_Enable_orbs=true diplazer_Enable_orbs=true
@ -21,14 +19,10 @@ diplazer_Enable_com=true
diplazer_Enable_com_limeted=true diplazer_Enable_com_limeted=true
diplazer_Enable_com_limeted_uses=150 diplazer_Enable_com_limeted_uses=150
diplazer_com_mode8_time=10 diplazer_com_mode8_time=10
diplazer_Enable_gun_limitation=true -- removes stuff from inventory from :gun users diplazer_Enable_gun_limitation=true -- removes stuff from inventory from :gun users
diplazer_orb={admin=150, gun=250,com=500, atime=0, gtime=0, ctime=0} diplazer_orb={admin=150, gun=250,com=500, atime=0, gtime=0, ctime=0}
diplazer_restore_gravity_to=1 diplazer_restore_gravity_to=1
diplazer_UpdateGGun=3 -- (from 1 to 10 [interval]) diplazer_UpdateGGun=3 -- (from 1 to 10 [interval])
diplazer_amount=15 diplazer_amount=15
diplazer_com_amount=7 diplazer_com_amount=7
diplazer_Enable_pick=true -- enable the green pick

BIN
textures/diplazer_in.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B