null
nil
-
true
true
0.0939477235
-0.206212491
0.560361266
0.837946475
-0.0272410847
0.545072019
-0.0256806612
0.995679021
0.0892403126
-0.545147896
-0.0887763947
0.833626151
Luger
http://www.roblox.com/asset/?id=95356596
-
false
Firescript
-- Made by Stickmasterluke
-- edited by fusroblox
local GoreOn=true
function WaitForChild(parent,child)
while not parent:FindFirstChild(child) do print("2waiting for " .. child) wait() end
return parent[child]
end
local GunObject = {
Tool = script.Parent,
Handle = WaitForChild(script.Parent,'Handle'),
check = true,
GunDamage = 20, -- Base output damage per shot.
FireRate = .2, -- How often the weapon can fire.
Automatic = false, -- hold down to continue firing
Range = 250, -- Max distance that the weapon can fire.
Spread = 1, -- The bigger the spread, the more inaccurate the shots will be.
ClipSize = 8, -- Shots in a clip
ReloadTime = 3, -- Time it takes to reload the tool.
StartingClips = 10, -- If you want infinit clips, remove the IntValue named "Clips" from the tool.
SegmentLength = 40, -- How long the shot segments are, or the speed of the shot.
FadeDelayTime = 1/60,
BarrelPos = CFrame.new(0, 0, - 1.2), -- L, F, U
Rate = 1/30,
--local Colors = {BrickColor.new("Bright red"), BrickColor.new("Really red"), BrickColor.new("Dusty Rose"), BrickColor.new("Medium red")}
Colors = {BrickColor.new("Bright yellow"),BrickColor.new("Mid gray"), BrickColor.new("Medium stone grey"), BrickColor.new("Dark stone grey")},
FlashColors = {"Medium red", "Dusty Rose", "Bright red", "Really red"},
Reloading = false,
Debris = game:GetService("Debris"),
Ammo,
Clips,
LaserObj,
SparkEffect,
ShellPart,
--tool children
DownVal=WaitForChild(script.Parent, 'Down'),
AimVal=WaitForChild(script.Parent, 'Aim'),
ReloadingVal=WaitForChild(script.Parent, 'Reloading'),
DoFireAni = WaitForChild(script.Parent,'DoFireAni'),
--handlechildren
Fire,
}
--[[Member functions]]
function GunObject:Initialize()
self.Fire=WaitForChild(self.Handle, 'Fire')
self.Ammo = self.Tool:FindFirstChild("Ammo")
if self.Ammo ~= nil then
self.Ammo.Value = self.ClipSize
end
self.Clips = self.Tool:FindFirstChild("Clips")
if self.Clips ~= nil then
self.Clips.Value = self.StartingClips
end
self.Tool.Equipped:connect(function()
self.Tool.Handle.Fire:Stop()
self.Tool.Handle.Reload:Stop()
end)
self.Tool.Unequipped:connect(function()
self.Tool.Handle.Fire:Stop()
self.Tool.Handle.Reload:Stop()
end)
self.LaserObj = Instance.new("Part")
self.LaserObj.Name = "Bullet"
self.LaserObj.Anchored = true
self.LaserObj.CanCollide = false
self.LaserObj.Shape = "Block"
self.LaserObj.formFactor = "Custom"
self.LaserObj.Material = Enum.Material.Plastic
self.LaserObj.Locked = true
self.LaserObj.TopSurface = 0
self.LaserObj.BottomSurface = 0
--local tshellmesh=WaitForChild(script.Parent,'BulletMesh'):Clone()
--tshellmesh.Scale=Vector3.new(4,4,4)
--tshellmesh.Parent=self.LaserObj
local tSparkEffect = Instance.new("Part")
tSparkEffect.Name = "Effect"
tSparkEffect.Anchored = false
tSparkEffect.CanCollide = false
tSparkEffect.Shape = "Block"
tSparkEffect.formFactor = "Custom"
tSparkEffect.Material = Enum.Material.Plastic
tSparkEffect.Locked = true
tSparkEffect.TopSurface = 0
tSparkEffect.BottomSurface = 0
self.SparkEffect=tSparkEffect
local tshell = Instance.new('Part')
tshell.Name='effect'
tshell.FormFactor='Custom'
tshell.Size=Vector3.new(1, 0.4, 0.33)
tshell.BrickColor=BrickColor.new('Bright yellow')
tshellmesh=WaitForChild(script.Parent,'BulletMesh'):Clone()
tshellmesh.Parent=tshell
self.ShellPart = tshell
self.DownVal.Changed:connect(function()
while self.DownVal.Value and self.check and not self.Reloading do
self.check = false
local humanoid = self.Tool.Parent:FindFirstChild("Humanoid")
local plr1 = game.Players:GetPlayerFromCharacter(self.Tool.Parent)
if humanoid ~= nil and plr1 ~= nil then
if humanoid.Health > 0 then
local spos1 = (self.Tool.Handle.CFrame * self.BarrelPos).p
delay(0, function() self:SendBullet(spos1, self.AimVal.Value, self.Spread, self.SegmentLength, self.Tool.Parent, self.Colors[1], self.GunDamage, self.FadeDelayTime) end)
else
self.check = true
break
end
else
self.check = true
break
end
wait(self.FireRate)
self.check = true
if not self.Automatic then
break
end
end
end)
self.ReloadingVal.Changed:connect(function() if self.ReloadingVal.Value then self:Reload() end end)
end
function GunObject:Reload()
self.Reloading = true
self.ReloadingVal.Value = true
if self.Clips ~= nil then
if self.Clips.Value > 0 then
self.Clips.Value = Clips.Value - 1
else
self.Reloading = false
self.ReloadingVal.Value = false
return
end
end
self.Tool.Handle.Reload:Play()
for i = 1, self.ClipSize do
wait(self.ReloadTime/self.ClipSize)
self.Ammo.Value = i
end
self.Reloading = false
self.Tool.Reloading.Value = false
end
function GunObject:SpawnShell()
local tshell=self.ShellPart:Clone()
tshell.CFrame=self.Handle.CFrame
tshell.Parent=Workspace
game.Debris:AddItem(tshell,2)
end
function KnockOffHats(tchar)
for _,i in pairs(tchar:GetChildren()) do
if i:IsA('Hat') then
i.Parent=game.Workspace
end
end
end
function KnockOffTool(tchar)
for _,i in pairs(tchar:GetChildren()) do
if i:IsA('Tool') then
i.Parent=game.Workspace
end
end
end
function GunObject:SendBullet(boltstart, targetpos, fuzzyness, SegmentLength, ignore, clr, damage, fadedelay)
if self.Ammo.Value <=0 then return end
self.Ammo.Value = self.Ammo.Value - 1
self:SpawnShell()
self.Fire.Pitch = (math.random() * .5) + .75
self.Fire:Play()
self.DoFireAni.Value = not self.DoFireAni.Value
print(self.Fire.Pitch)
local boltdist = self.Range
local clickdist = (boltstart - targetpos).magnitude
local targetpos = targetpos + (Vector3.new(math.random() - .5, math.random() - .5, math.random() - .5) * (clickdist/100) * self.fuzzyness)
local boltvec = (targetpos - boltstart).unit
local totalsegments = math.ceil(boltdist/SegmentLength)
local lastpos = boltstart
for i = 1, totalsegments do
local newpos = (boltstart + (boltvec * (boltdist * (i/totalsegments))))
local segvec = (newpos - lastpos).unit
local boltlength = (newpos - lastpos).magnitude
local bolthit, endpos = CastRay(lastpos, segvec, boltlength, ignore, false)
DrawBeam(lastpos, endpos, clr, fadedelay, self.LaserObj)
if bolthit ~= nil then
local h = bolthit.Parent:FindFirstChild("Zombie")
if h ~= nil then
local plr = game.Players:GetPlayerFromCharacter(self.Tool.Parent)
if plr ~= nil then
local creator = Instance.new("ObjectValue")
creator.Name = "creator"
creator.Value = plr
creator.Parent = h
end
if hit.Parent:FindFirstChild("BlockShot") then
hit.Parent:FindFirstChild("BlockShot"):Fire(newpos)
delay(0, function() self:HitEffect(endpos, BrickColor.new('Medium stone grey'),5) end)
else
if(hit.Name=='Head') then
KnockOffHats(hit.Parent)
elseif hit.Name=='Left Leg' or hit.Name=='Right Leg' then
h.WalkSpeed=h.WalkSpeed/1.5
elseif hit.Name=='Left Arm' or hit.Name=='Right Arm' then
KnockOffTool(hit.Parent)
end
if GoreOn then delay(0,function() self:HitEffect(endpos, BrickColor.new('Bright red'),20) end) end
h:TakeDamage(damage)
end
else
delay(0, function() self:HitEffect(endpos, BrickColor.new('Medium stone grey'),5) end)
end
break
end
lastpos = endpos
wait(Rate)
end
if self.Ammo.Value < 1 then
self:Reload()
end
end
function GunObject:MakeSpark(pos,tcolor)
local effect=self.SparkEffect:Clone()
effect.BrickColor = tcolor
effect.CFrame = CFrame.new(pos)
effect.Parent = game.Workspace
local effectVel = Instance.new("BodyVelocity")
effectVel.maxForce = Vector3.new(99999, 99999, 99999)
effectVel.velocity = Vector3.new(math.random() * 15 * SigNum(math.random( - 10, 10)), math.random() * 15 * SigNum(math.random( - 10, 10)), math.random() * 15 * SigNum(math.random( - 10, 10)))
effectVel.Parent = effect
effect.Size = Vector3.new(math.abs(effectVel.velocity.x)/30, math.abs(effectVel.velocity.y)/30, math.abs(effectVel.velocity.z)/30)
wait()
effectVel:Destroy()
local effecttime = .5
game.Debris:AddItem(effect, effecttime * 2)
local startTime = time()
while time() - startTime < effecttime do
if effect ~= nil then
effect.Transparency = (time() - startTime)/effecttime
end
wait()
end
if effect ~= nil then
effect.Parent = nil
end
end
function GunObject:HitEffect(pos,tcolor,numSparks)
for i = 0, numSparks, 1 do
Spawn(function() self:MakeSpark(pos,tcolor) end)
end
end
--[[/Member functions]]
--[[Static functions]]
function Round(number, decimal)
decimal = decimal or 0
local mult = 10^decimal
return math.floor(number * mult + .5)/mult
end
function SigNum(num)
if num == 0 then return 1 end
return math.abs(num)/num
end
--this is a little bad, but shouldn't really be part of the 'class' of the gun
local Intangibles = {shock=1, bolt=1, bullet=1, plasma=1, effect=1, laser=1, handle=1, effects=1, flash=1,}
function CheckIntangible(hitObj)
print(hitObj.Name)
return Intangibles[(string.lower(hitObj.Name))] or hitObj.Transparency == 1
end
function CastRay(startpos, vec, length, ignore, delayifhit)
if length > 999 then
length = 999
end
hit, endpos2 = game.Workspace:FindPartOnRay(Ray.new(startpos, vec * length), ignore)
if hit ~= nil then
if CheckIntangible(hit) then
if delayifhit then
wait()
end
hit, endpos2 = CastRay(endpos2 + (vec * .01), vec, length - ((startpos - endpos2).magnitude), ignore, delayifhit)
end
end
return hit, endpos2
end
function DrawBeam(beamstart, beamend, clr, fadedelay, templatePart)
local dis = 2 --(beamstart - beamend).magnitude
local tlaser=templatePart:Clone()
tlaser.BrickColor = clr
tlaser.Size = Vector3.new(.12, .12, dis + .2)
tlaser.CFrame = CFrame.new((beamend+beamstart)/2, beamstart) * CFrame.new(0, 0, - dis/2)
tlaser.Parent = game.Workspace
game.Debris:AddItem(tlaser, fadedelay)
end
--[[/Static functions]]
GunObject:Initialize()
-
false
LocalScript
-- Made by Stickmasterluke
-- edited by fusroblox
function WaitForChild(obj, name)
while not obj:FindFirstChild(name) do
wait()
print("1waiting for " .. name)
end
return obj:FindFirstChild(name)
end
local function FindCharacterAncestor(subject)
if subject and subject ~= Workspace then
if subject:FindFirstChild('Humanoid') then
return subject
else
return FindCharacterAncestor(subject.Parent)
end
end
return nil
end
local Tool = script.Parent
local GunObj ={
Reloading = "http://www.roblox.com/asset/?id=94155503",
Cursors = {
"http://www.roblox.com/asset/?id=94154683", -- black
"http://www.roblox.com/asset/?id= 94154829", -- red
"http://www.roblox.com/asset/?id=94155503",
"http://www.roblox.com/asset/?id=94155569"
},
ClipSize = 8,
Equipped = false,
Player = game.Players.localPlayer,
Ammo = WaitForChild(script.Parent,"Ammo"),
Clips,
Gui = WaitForChild(Tool,"AmmoHud"),
NumberImages={},
IdleAni,
MyMouse
}
local ChestWeld
Tool.Equipped:connect(function(mouse) GunObj:OnEquipped(mouse) end)
local initialized=false
function GunObj:Initialize()
if initialized then return end
initialized=true
self.Ammo.Changed:connect(function()self:UpdateGui()end)
WaitForChild(Tool, "Reloading")
print('got to connections!!!!! ')
Tool.Reloading.Changed:connect(function() self:UpdateGui() end)
Tool.Unequipped:connect(function() self:OnUnequipped() end)
Tool.DoFireAni.Changed:connect(PlayFireAni)
self.NumberImages['0']=94105090
self.NumberImages['1']=94099941
self.NumberImages['2']=94105282
self.NumberImages['3']=94105353
self.NumberImages['4']=94105393
self.NumberImages['5']=94105402
self.NumberImages['6']=94105413
self.NumberImages['7']=94105478
self.NumberImages['8']=94105560
self.NumberImages['9']=94105576
local bar=WaitForChild(self.Gui,'Bar')
self:UpdateNumbers(self.ClipSize..'', WaitForChild(bar,'TotalAmmo'))
end
function GunObj:UpdateNumbers(data,frame)
if string.len(data)==0 then
data= '0'..data
end
if string.len(data)==1 then
data= '0'..data
end
local digit=WaitForChild(WaitForChild(frame,'1'),'digit')
if digit.Image ~='http://www.roblox.com/asset/?id='..self.NumberImages[string.sub(data,1,1)] then
local ndigit=digit:Clone()
ndigit.Position=UDim2.new(ndigit.Position.X.Scale,ndigit.Position.X.Offset,ndigit.Position.Y.Scale,ndigit.Position.Y.Offset-65)
ndigit.Image='http://www.roblox.com/asset/?id='..self.NumberImages[string.sub(data,1,1)]
ndigit.Parent=digit.Parent
ndigit:TweenPosition(digit.Position, "Out", "Quad", .1)
digit.Name='oldDigit'
digit:TweenPosition(UDim2.new(digit.Position.X.Scale,digit.Position.X.Offset,digit.Position.Y.Scale,digit.Position.Y.Offset+65), "Out", "Quad", .25)
game.Debris:AddItem(digit,1)
end
digit=WaitForChild(WaitForChild(frame,'2'),'digit')
if digit.Image ~='http://www.roblox.com/asset/?id='..self.NumberImages[string.sub(data,2,2)] then
ndigit=digit:Clone()
ndigit.Position=UDim2.new(ndigit.Position.X.Scale,ndigit.Position.X.Offset,ndigit.Position.Y.Scale,ndigit.Position.Y.Offset-65)
ndigit.Image='http://www.roblox.com/asset/?id='..self.NumberImages[string.sub(data,2,2)]
ndigit.Parent=digit.Parent
ndigit:TweenPosition(UDim2.new(digit.Position.X.Scale,digit.Position.X.Offset,digit.Position.Y.Scale,0), "Out", "Quad", .25)
digit.Name='oldDigit'
digit:TweenPosition(UDim2.new(digit.Position.X.Scale,digit.Position.X.Offset,digit.Position.Y.Scale,digit.Position.Y.Offset+65), "Out", "Quad", .25)
game.Debris:AddItem(digit,1)
end
end
function GunObj:UpdateGui()
if self.Equipped then
local Player = game.Players.localPlayer
if Player ~= nil then
if self.Ammo == nil then
--self.Gui.Bar.GunLabel.Text ="Futuro Heavy Pistol"
--self.Gui.Bar.AmmoLabel.Text = ""
else
--self.Gui.Bar.GunLabel.Text ="Futuro Heavy Pistol"
--self.Gui.Bar.AmmoLabel.Text = tostring(self.Ammo.Value).."/"..tostring(self.ClipSize)
self:UpdateNumbers(tostring(self.Ammo.Value),WaitForChild(self.Gui.Bar,'AmmoLeft'))
end
if Tool.Reloading.Value then
--self.Gui.Bar.AmmoLabel.Text = "Reloading"
end
end
end
end
function GunObj:CursorUpdate(mouse)
local reloadCounter=0
while self.Equipped do
if Tool.Reloading.Value then
reloadCounter=reloadCounter+1
if reloadCounter%20<10 then
mouse.Icon = self.Cursors[3]
else
mouse.Icon = self.Cursors[4]
end
elseif mouse.Target and FindCharacterAncestor(mouse.Target) then
mouse.Icon = self.Cursors[2]
else
mouse.Icon = self.Cursors[1]
end
wait(1/30)
end
end
local InReload=false
function GunObj:OnEquipped(mouse)
self:Initialize()
if mouse ~= nil then
self.Equipped = true
local Player = game.Players.LocalPlayer
if Player ~= nil then
local humanoid=WaitForChild(Player.Character,'Humanoid')
if not self.IdleAni then
self.IdleAni = humanoid:LoadAnimation(WaitForChild(script.Parent,'idle'))
self.IdleAni:Play()
end
local plrgui = WaitForChild(Player,"PlayerGui")
self.Gui.Parent = plrgui
mouse.Button1Down:connect(function()
if not Tool.Down.Value then
Tool.Aim.Value = mouse.Hit.p
Tool.Down.Value = true
while Tool.Down.Value do
Tool.Aim.Value = mouse.Hit.p
wait()
end
end
end)
mouse.Button1Up:connect(function()
Tool.Down.Value = false
end)
mouse.KeyDown:connect(function(key)
if key=='r' and not Tool.Reloading.Value and not Tool.Down.Value and self.Ammo.Value ~=8 and self.Ammo.Value ~=0 and not InReload then
Tool.Reloading.Value=true
end
end)
--mouse.Icon = self.Cursors[1]
Tool.Reloading.Changed:connect(function(val)
if mouse ~= nil and self.Equipped then
if val then
--mouse.Icon = self.Cursors.Reloading
else
--mouse.Icon = self.Cursors[1]
end
local Player = game.Players.LocalPlayer
if Player ~= nil then
local gui = WaitForChild(Player.PlayerGui, "AmmoHud")
local humanoid=WaitForChild(Player.Character,'Humanoid')
self:UpdateGui()
if Tool.Reloading.Value then
--gui.Bar.AmmoLabel.Text = "Reloading"
end
end
end
end)
self:UpdateGui()
MyMouse=mouse
Spawn(function() self:CursorUpdate(mouse) end )
end
end
end
function GunObj:OnUnequipped()
if self.IdleAni then
self.IdleAni:Stop()
self.IdleAni:Destroy()
self.IdleAni=nil
end
self.Gui.Parent = Tool
self.Equipped = false
print('in unequipp')
if ChestWeld then
print('chestweldexists')
ChestWeld:Destroy()
end
local Player = game.Players.localPlayer
if Player ~= nil then
local gui = WaitForChild(Player.PlayerGui,"AmmoHud")
--gui.Bar.GunLabel.Text = ""
--gui.Bar.AmmoLabel.Text = ""
end
end
function PlayFireAni()
wait(.1)
local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.FireAni)
aniTrack:Play(0,1,1)
end
local function weldBetween(a, b)
local weld = Instance.new("Weld")
weld.Part0 = a
weld.Part1 = b
weld.C0 = CFrame.new()
weld.C1 = b.CFrame:inverse() * a.CFrame
weld.Parent = a
return weld;
end
function PlayReloadAni()
InReload=true
local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.Reload)
local torso=WaitForChild(Tool.Parent,'Torso')
local oldWeld
for _,i in pairs(WaitForChild(Tool.Parent,'Right Arm'):GetChildren()) do
if i:IsA('Weld') and i.Part1==Tool.Handle then
oldWeld=i
end
end
if not oldWeld then
print('What... no old weld!')
return
end
ChestWeld= weldBetween(torso,Tool.Handle)
oldWeld.Part1=nil
aniTrack:Play(0,1,2)
wait(4)
oldWeld.Part1=Tool.Handle
ChestWeld:Destroy()
ChestWeld=nil
InReload=false
end
Tool.Reloading.Changed:connect(function() if Tool.Reloading.Value then PlayReloadAni() end end)
-
false
-0.5
0.5
0
0
-0.5
0.5
4
0
107
-0.300000012
0
-0.300000012
0
0
-1
0
1
-0
1
0
-0
true
0.5
0.300000012
-0.5
0.5
0
0
-0.5
0.5
0
0
true
256
Handle
0
-0.5
0.5
0
0
0
0
0
-0.5
0.5
3
0
0
0
0
0
3
1
0.510000467
1.18000245
1.34999704
-
2
2
http://www.roblox.com/asset/?id=95356090
5
Mesh
0
0
0
1.79999995
1.79999995
1.79999995
http://www.roblox.com/asset/?id=95387789
1
1
1
-
false
Fire
0.821169138
false
http://www.roblox.com/asset/?id=95309366
1
-
false
Reload
1
false
http://www.roblox.com/asset/?id=95309699
1
-
Aim
7370.47461
-428.252258
-6819.59961
-
Ammo
25
-
Down
false
-
NoClips
0
-
Reloading
false
-
http://www.roblox.com/Asset?ID=95383980
FireAni
-
DoFireAni
false
-
AmmoHud
-
false
4288914085
1
4279970357
1
true
false
Bar
1
-200
1
-170
0
200
0
60
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
AmmoLeft
0
10
0
5
0
65
0
50
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
1
0
0
0
0
0
30
0
40
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94130434
ImageLabel
0
0
0
0
1
0
1
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94099941
digit
0.0500000007
0
0.0500000007
0
0.899999976
0
0.899999976
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
2
1
-30
0
0
0
30
0
40
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94130434
ImageLabel
0
0
0
0
1
0
1
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94099941
digit
0.0500000007
0
0.0500000007
0
0.899999976
0
0.899999976
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94100300
slash
0.5
-20
0
5
0
30
0
40
0
true
2
-
false
4288914085
1
4279970357
1
false
false
TotalAmmo
0.5
10
0
5
0
65
0
50
0
0
true
1
-
false
4288914085
1
4279970357
1
true
false
1
0
0
0
0
0
30
0
40
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94130434
ImageLabel
0
0
0
0
1
0
1
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94099941
digit
0.0500000007
0
0.0500000007
0
0.899999976
0
0.899999976
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
2
1
-30
0
0
0
30
0
40
0
0
true
1
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94130434
ImageLabel
0
0
0
0
1
0
1
0
0
true
2
-
false
4288914085
1
4279970357
1
false
false
http://www.roblox.com/asset/?id=94099941
digit
0.0500000007
0
0.0500000007
0
0.899999976
0
0.899999976
0
0
true
2
-
http://www.roblox.com/Asset?ID=95383474
idle
-
http://www.roblox.com/Asset?ID=95384819
Reload
-
2
2
http://www.roblox.com/asset/?id=95387759
5
BulletMesh
0
0
0
3
3
3
http://www.roblox.com/asset/?id=95387789
1
1
1
-
[null]
0
-0.314913273
-0.104227833
1.40682602
0.999961853
-0.00053252076
-0.00872084685
-0
0.998140872
-0.0609494448
0.00873709004
0.0609471202
0.998102784
70
-0.300000012
0
-0.300000012
1
0
0
0
1
0
0
0
1
ThumbnailCamera