summaryrefslogtreecommitdiff
path: root/data/artery/global/sh_stranded_tools.txt
diff options
context:
space:
mode:
Diffstat (limited to 'data/artery/global/sh_stranded_tools.txt')
-rw-r--r--data/artery/global/sh_stranded_tools.txt210
1 files changed, 210 insertions, 0 deletions
diff --git a/data/artery/global/sh_stranded_tools.txt b/data/artery/global/sh_stranded_tools.txt
new file mode 100644
index 0000000..c11241c
--- /dev/null
+++ b/data/artery/global/sh_stranded_tools.txt
@@ -0,0 +1,210 @@
+--This is a test file!
+if not nrequire then return end
+local reg = nrequire("item.lua")
+local pac
+if SERVER then
+ pac = nrequire("core/pac/sv_pac.lua")
+end
+
+local skil = nrequire("sh_skillcommon.lua")
+skil.RegisterSkill({"Sailing","Paddleing"})
+
+local paddleents = {}
+hook.Add("Tick","paddleents",function()
+ for k,v in pairs(paddleents) do
+ --Make sure the player is still on the boat
+ --Find the entity below the player
+ local tr = util.TraceLine({
+ start = v:GetPos() + Vector(0,0,20),
+ endpos = v:GetPos() + Vector(0,0,-20),
+ filter = v
+ })
+ --And Add some velocity to it
+ if tr.Entity and IsValid(tr.Entity) then
+ --Move the boat
+ local oldvel = tr.Entity:GetVelocity()
+ local eye = v:EyeAngles():Forward()
+ eye.z = 0
+ local newvel = oldvel + (eye * 5) * tr.Entity:GetPhysicsObject():GetMass()
+ k:GetPhysicsObject():SetVelocity(newvel)
+ print("newvel is", newvel)
+ v:AddSkill("Paddleing",0.1)
+ end
+ --Add skill for the player
+ --Turn the boat
+ --local angdif = v:EyeAngles().yaw - k:GetAngles().yaw
+ --k:GetPhysicsObject():SetAngleVelocity(Angle(0,angdif,0))
+ end
+end)
+
+local items = {
+ {
+ Name = "Axe",
+ Tooltip = "Usefull for cutting down trees",
+ Shape = {
+ {true,true},
+ {true},
+ {true}
+ },
+ Model = "error.mdl",
+ pacname = "stranded_axe",
+ onClick = function(self, ply) --Run server side
+ print("Trying to chop...")
+ local tr = ply:GetEyeTrace()
+ print("Mattype:",tr.MatType,"Needed:",MAT_WOOD)
+ if tr.MatType == MAT_WOOD then
+ print("Chopping....")
+ ply:ChopWood()
+ end
+ end
+ },
+ {
+ Name = "Pickaxe",
+ Tooltip = "Maybe you can dig up rocks with this",
+ Shape = {
+ {true,true,true},
+ {false,true},
+ {false, true},
+ },
+ Model = "error.mdl",
+ pacname = "stranded_pickaxe",
+ onClick = function(self, ply) --Run server side
+ print("Trying to pick...")
+ local tr = ply:GetEyeTrace()
+ print("Mattype:",tr.MatType,"Needed:",MAT_CONCRETE)
+ if tr.MatType == MAT_CONCRETE then
+ print("Chopping....")
+ ply:MineRock()
+ end
+ end
+ },
+ {
+ Name = "Hammer",
+ Tooltip = "You should be able to build things with this",
+ Shape = {
+ {true,true,true},
+ {false,true},
+ {false,true},
+ },
+ Model = "error.mdl",
+ pacname = "stranded_hammer",
+ onClick = function(self,ply)
+ print("trying to hammer")
+ local tr = ply:GetEyeTrace()
+ local tents = {}
+ local cursor = 0
+ local firstsucpos = nil
+ while IsValid(tr.Entity) and tr.Entity != game.GetWorld() and cursor < 4 do
+ firstsucpos = firstsucpos or tr.HitPos
+ tents[#tents+1] = tr.Entity
+ tnents = table.Copy(tents)
+ tnents[#tnents + 1] = ply
+ tr = util.TraceLine({
+ start = tr.HitPos,
+ endpos = tr.HitPos + ply:EyeAngles():Forward() * 10,
+ filter = tnents
+ })
+ cursor = cursor + 1
+ end
+ print("found ents:")
+ PrintTable(tents)
+ --See if the player has nails
+ local nloc = ply:HasItem("Nail")
+ if nloc then
+ print("nlock was truthy, hammering...")
+ ply:RemoveItem(nloc)
+ local nail = ents.Create("prop_dynamic")
+ print("Setting pos to:",firstsucpos)
+ nail:SetPos(firstsucpos)
+ nail:SetAngles(ply:EyeAngles())
+ nail:SetModel("models/crossbow_bolt.mdl")
+ nail:Spawn()
+ for k,v in pairs(tents) do
+ for i,j in pairs(tents) do
+ if v != j then
+ print("Welding ",j," to ", v)
+ constraint.Weld(j,v,0,0,100000,true,false)
+ end
+ end
+ end
+ nail:SetParent(tents[1])
+ end
+ end
+ },
+ {
+ Name = "Paddle",
+ Tooltip = "Row Row Row your boat",
+ Shape = {
+ {true},
+ {true},
+ {true}
+ },
+ Model = "error.mdl",
+ pacname = "stranded_axe",
+ onClick = function(self, ply) --Run server side
+ --If we're current paddleing, stop
+ if self.paddleing then
+ print("paddleing ent removed")
+ paddleents[self.paddleing] = nil
+ self.paddleing = nil
+ return
+ end
+
+ --Find the entity below the player
+ local tr = util.TraceLine({
+ start = ply:GetPos() + Vector(0,0,20),
+ endpos = ply:GetPos() + Vector(0,0,-20),
+ filter = ply
+ })
+ --And Add some velocity to it
+ if tr.Entity and IsValid(tr.Entity) then
+ print("Paddleing ent added")
+ self.paddleing = tr.Entity
+ paddleents[tr.Entity] = ply
+ end
+ end
+ },
+}
+
+local base = {}
+
+function base:Serialize()
+ return ""
+end
+
+function base:DeSerialize()
+ return self
+end
+
+function base:DoOnPanel(dmodelpanel)
+ dmodelpanel:SetModel(self.Model)
+end
+
+function base:DoOnEquipPanel(dmodelpanel)
+ dmodelpanel:SetModel(self.Model)
+end
+
+base.Equipable = "Right Hand"
+
+function base:onDropped(ent)
+ if CLIENT then return end
+ pac.ApplyPac(ent,self.pacname)
+ ent:SetAngles(Angle(180,0,0))
+ ent:SetColor(Color(0,0,0,0))
+end
+
+function base:onEquip(ent)
+ if CLIENT then return end
+ pac.ApplyPac(ent,self.pacname)
+end
+
+function base:onUnEquip(ent)
+ if CLIENT then return end
+ pac.RemovePac(ent,self.pacname)
+end
+
+for k,v in pairs(items) do
+ local tbase = table.Copy(base)
+ for i,j in pairs(v) do tbase[i] = j end
+ reg.RegisterItem(tbase)
+end