Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if ( SERVER ) then AddCSLuaFile() return end
- /* --------------------------------------------------------- Presets --------------------------------------------------------- */
- /*
- This should be moved to the tool, into the Options={} stuff
- */
- // Sith
- presets.Add( "rb655_lightsaber", "Darth Maul Saberstaff", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_maul_saber_staff_hilt.mdl",
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "0",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.4",
- rb655_lightsaber_bladel = "45",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop7.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing2.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn2.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff2.wav"
- } )
- presets.Add( "rb655_lightsaber", "Darth Maul Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_maul_saber_half_hilt.mdl",
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "0",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.4",
- rb655_lightsaber_bladel = "45",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop7.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing2.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn2.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff2.wav"
- } )
- presets.Add( "rb655_lightsaber", "Darth Tyrannus Lightsaber (Count Dooku)", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_dooku_saber_hilt.mdl",
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "0",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop8.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing2.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn2.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff2.wav"
- } )
- presets.Add( "rb655_lightsaber", "Darth Sidious Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_sidious_saber_hilt.mdl",
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "0",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.2",
- rb655_lightsaber_bladel = "43",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop5.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing2.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn2.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff2.wav"
- } )
- presets.Add( "rb655_lightsaber", "Darth Vader Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_vader_saber_hilt.mdl",
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "0",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.25",
- rb655_lightsaber_bladel = "43",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop6.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing2.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn2.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff2.wav"
- } )
- // Jedi
- presets.Add( "rb655_lightsaber", "Master Yoda Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_yoda_saber_hilt.mdl",
- rb655_lightsaber_red = "64",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "64",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.3",
- rb655_lightsaber_bladel = "40",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop3.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "Qui-Gon Jinn Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_quigon_gin_saber_hilt.mdl",
- rb655_lightsaber_red = "32",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "32",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.2",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "Mace Windu Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_mace_windu_saber_hilt.mdl",
- rb655_lightsaber_red = "127",
- rb655_lightsaber_green = "0",
- rb655_lightsaber_blue = "255",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "[EP3] Obi-Wan Kenobi Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_obiwan_ep3_saber_hilt.mdl",
- rb655_lightsaber_red = "48",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "48",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.1",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "[EP1] Obi-Wan Kenobi Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_obiwan_ep1_saber_hilt.mdl",
- rb655_lightsaber_red = "48",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "48",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.1",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "[EP6] Luke Skywalker Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_luke_ep6_saber_hilt.mdl",
- rb655_lightsaber_red = "32",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "32",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.1",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "[EP2] Anakin Skywalker Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_anakin_ep2_saber_hilt.mdl",
- rb655_lightsaber_red = "0",
- rb655_lightsaber_green = "100",
- rb655_lightsaber_blue = "255",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.1",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "[EP3] Anakin Skywalker Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_anakin_ep3_saber_hilt.mdl",
- rb655_lightsaber_red = "0",
- rb655_lightsaber_green = "100",
- rb655_lightsaber_blue = "255",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.1",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- presets.Add( "rb655_lightsaber", "Common Jedi Lightsaber", {
- rb655_lightsaber_model = "models/sgg/starwars/weapons/w_common_jedi_saber_hilt.mdl",
- rb655_lightsaber_dark = "0",
- rb655_lightsaber_bladew = "2.2",
- rb655_lightsaber_bladel = "42",
- rb655_lightsaber_humsound = "lightsaber/SaberLoop1.wav",
- rb655_lightsaber_swingsound = "lightsaber/SaberSwing1.wav",
- rb655_lightsaber_onsound = "lightsaber/SaberOn1.wav",
- rb655_lightsaber_offsound = "lightsaber/SaberOff1.wav"
- } )
- // The Pre Vizsla's darksaber from clone wars, I LOVE IT
- presets.Add( "rb655_lightsaber", "Dark Saber", {
- rb655_lightsaber_red = "255",
- rb655_lightsaber_green = "255",
- rb655_lightsaber_blue = "255",
- rb655_lightsaber_dark = "1",
- rb655_lightsaber_humsound = "lightsaber/DarkSaberLoop.wav",
- rb655_lightsaber_swingsound = "lightsaber/DarkSaberSwing.wav",
- rb655_lightsaber_onsound = "lightsaber/DarkSaberOn.wav",
- rb655_lightsaber_offsound = "lightsaber/DarkSaberOff.wav"
- } )
- /* --------------------------------------------------------- Hilt On a Belt --------------------------------------------------------- */
- hook.Add( "PostPlayerDraw", "rb655_lightsaber", function( ply )
- for id, wep in pairs( ply:GetWeapons() ) do
- if ( IsValid( wep ) && wep:GetClass() == "weapon_lightsaber" && wep != ply:GetActiveWeapon() ) then
- if ( !ply.LightsaberMDL ) then
- ply.LightsaberMDL = ClientsideModel( wep.WorldModel, RENDERGROUP_BOTH ) --wep.WorldModel is nil?
- ply.LightsaberMDL:SetNoDraw( true )
- end
- ply.LightsaberMDL:SetModel( wep.WorldModel )
- local pos, ang = ply:GetBonePosition( 0 )
- ang:RotateAroundAxis( ang:Up(), 80 )
- local len = ply:GetVelocity():Length()
- if ( ply:GetVelocity():Distance( ply:GetForward() * len ) < ply:GetVelocity():Distance( ply:GetForward() * -len ) ) then
- ang:RotateAroundAxis( ang:Right(), math.min( ply:GetVelocity():Length() / 8, 55 ) - 5 ) // Forward
- else
- ang:RotateAroundAxis( ang:Right(), -math.min( ply:GetVelocity():Length() / 8, 55 ) + 5 )
- end
- if ( ply:GetVelocity():Distance( ply:GetRight() * len ) < ply:GetVelocity():Distance( ply:GetRight() * -len ) ) then
- //ang:RotateAroundAxis( ang:Right(), math.min( ply:GetVelocity():Length() / 8, 55 ) - 5 ) // Right
- else
- ang:RotateAroundAxis( ang:Up(), -math.min( ply:GetVelocity():Length() / 16, 30 ) + 5 )
- end
- pos = pos - ang:Right() * 8 - ang:Forward() * 16
- if ( wep.WorldModel == "models/sgg/starwars/weapons/w_maul_saber_hilt.mdl" ) then
- pos = pos - ang:Forward() * 10
- end
- ply.LightsaberMDL:SetPos( pos )
- ply.LightsaberMDL:SetAngles( ang )
- ply.LightsaberMDL:DrawModel()
- end
- end
- end)
- /* --------------------------------------------------------- Lightsaber blade rendering --------------------------------------------------------- */
- local HardLaser = Material( "lightsaber/hard_light" )
- local HardLaserInner = Material( "lightsaber/hard_light_inner" )
- local HardLaserTrail = Material( "lightsaber/hard_light_trail" )
- local HardLaserTrailInner = Material( "lightsaber/hard_light_trail_inner" )
- local HardLaserTrailEnd = Material( "lightsaber/hard_light_trail_end" )
- local HardLaserTrailEndInner = Material( "lightsaber/hard_light_trail_end_inner" )
- local gOldPositions = {}
- local gTrailLength = 1
- local lastTime = 0
- function rb655_RenderBlade( pos, dir, len, maxlen, width, color, black_inner, eid, underwater )
- //render.DrawLine( pos + dir * len*-5, pos + dir * len*10, color, true )
- if ( len <= 0 ) then rb655_SaberClean( eid ) return end
- if ( underwater ) then
- local ed = EffectData()
- ed:SetOrigin( pos )
- ed:SetNormal( dir )
- ed:SetRadius( len )
- util.Effect( "rb655_saber_underwater", ed )
- end
- local inner_color = color_white
- if ( black_inner ) then inner_color = Color( 0, 0, 0 ) end
- render.SetMaterial( HardLaser )
- render.DrawBeam( pos, pos + dir * len, width, 1, 0.01, color )
- render.SetMaterial( HardLaserInner )
- render.DrawBeam( pos, pos + dir * len, width * 1.2, 1, 0.01, inner_color )
- /* Dynamic light */
- local SaberLight = DynamicLight( eid )
- if ( SaberLight ) then
- SaberLight.Pos = pos + dir * ( len / 2 )
- SaberLight.r = color.r
- SaberLight.g = color.g
- SaberLight.b = color.b
- SaberLight.Brightness = 0.6
- SaberLight.Size = 176 * ( len / maxlen )
- SaberLight.Decay = 0
- SaberLight.DieTime = CurTime() + 0.1
- end
- local prevB = pos
- local prevT = pos + dir * len
- if ( !gOldPositions[ eid ] ) then gOldPositions[ eid ] = {} end
- for id, prevpos in ipairs( gOldPositions[ eid ] ) do
- if ( id == gTrailLength ) then
- HardLaserTrailEnd:SetVector( "$color", Vector( color.r / 255, color.g / 255, color.b / 255 ) )
- render.SetMaterial( HardLaserTrailEnd )
- else
- HardLaserTrail:SetVector( "$color", Vector( color.r / 255, color.g / 255, color.b / 255 ) )
- render.SetMaterial( HardLaserTrail )
- end
- render.DrawQuad( prevpos.pos, prevB, prevT, prevpos.pos + prevpos.dir * prevpos.len )
- if ( id == gTrailLength ) then
- HardLaserTrailEndInner:SetVector( "$color", Vector( inner_color.r / 255, inner_color.g / 255, inner_color.b / 255 ) )
- render.SetMaterial( HardLaserTrailEndInner )
- else
- HardLaserTrailInner:SetVector( "$color", Vector( inner_color.r / 255, inner_color.g / 255, inner_color.b / 255 ) )
- render.SetMaterial( HardLaserTrailInner )
- end
- //render.DrawQuad( prevpos.b, prevB, prevT, prevpos.t )
- render.DrawQuad( prevpos.pos, prevB, prevT, prevpos.pos + prevpos.dir * prevpos.len )
- prevB = prevpos.pos
- prevT = prevpos.pos + prevpos.dir * prevpos.len
- end
- end
- function rb655_SaberClean( eid )
- gOldPositions[ eid ] = nil
- gOldPositions[ eid + 655 ] = nil
- end
- // Extremely ugly hack workaround :(
- function rb655_ProcessEntity( eid, pos, dir, len )
- if ( !gOldPositions[ eid ] ) then gOldPositions[ eid ] = {} end
- for i = 0, gTrailLength - 1 do
- gOldPositions[ eid ][ gTrailLength - i ] = gOldPositions[ eid ][ gTrailLength - i - 1 ]
- if ( gTrailLength - i == 1 ) then
- gOldPositions[ eid ][ 1 ] = { dir = dir, len = len, pos = pos }
- //gOldPositions[ eid ][ 1 ] = { b = pos, t = pos + dir * len }
- end
- end
- end
- hook.Add( "Think", "rb655_lightsaber_ugly_fixes", function()
- for id, ent in pairs( ents.FindByClass( "weapon_lightsaber" ) ) do
- if ( !IsValid( ent:GetOwner() ) || ent:GetOwner():GetActiveWeapon() != ent || !ent.GetBladeLength || ent:GetBladeLength() <= 0 ) then continue end
- local pos, ang = ent:GetSaberPosAng()
- rb655_ProcessEntity( ent:EntIndex(), pos, ang, ent:GetBladeLength() )
- if ( ent:LookupAttachment( "blade2" ) > 0 ) then
- local pos, ang = ent:GetSaberPosAng( 2 )
- rb655_ProcessEntity( ent:EntIndex() + 655, pos, ang, ent:GetBladeLength() )
- end
- end
- for id, ent in pairs( ents.FindByClass( "ent_lightsaber" ) ) do
- if ( !ent.GetBladeLength || ent:GetBladeLength() <= 0 ) then continue end
- local pos, ang = ent:GetSaberPosAng()
- rb655_ProcessEntity( ent:EntIndex(), pos, ang, ent:GetBladeLength() )
- if ( ent:LookupAttachment( "blade2" ) > 0 ) then
- local pos, ang = ent:GetSaberPosAng( 2 )
- rb655_ProcessEntity( ent:EntIndex() + 655, pos, ang, ent:GetBladeLength() )
- end
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement