PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SWep: Wie Variable "lokal" speichern?



CGamer
23.09.2009, 16:04
Ich erstelle immoment einen neuen gamemode(Ein neuen RP Gamemode) und erstelle mir dafür auch waffen.
Nun fehlt mir das wissen, Variablen für bestimmte Waffen zu haben(nur für diese eine Waffe und auch nur für die ID der Waffe, also so das andere gleiche waffen die variable nicht verändern können).

Kann den code jemand so verändern, dass es wie oben beschrieben ist?
Die Basis der Waffe ist weapon_base("base" gamemode)

Edit: Die Variable BanTime soll so wie oben beschrieben sein


cl_init.lua:include('shared.lua')


SWEP.PrintName = "Kickstick" // 'Nice' Weapon name (Shown on HUD)
SWEP.Slot = 0 // Slot in the weapon selection menu
SWEP.SlotPos = 10 // Position in the slot
SWEP.DrawAmmo = true // Should draw the default HL2 ammo counter
SWEP.DrawCrosshair = true // Should draw the default crosshair
SWEP.DrawWeaponInfoBox = true // Should draw the weapon info box
SWEP.BounceWeaponIcon = true // Should the weapon icon bounce?
SWEP.SwayScale = 1.0 // The scale of the viewmodel sway
SWEP.BobScale = 1.0 // The scale of the viewmodel bob

SWEP.RenderGroup = RENDERGROUP_OPAQUE

// Override this in your SWEP to set the icon in the weapon selection
SWEP.WepSelectIcon = surface.GetTextureID( "weapons/swep" )

// This is the corner of the speech bubble
SWEP.SpeechBubbleLid = surface.GetTextureID( "gui/speech_lid" )

/*---------------------------------------------------------
You can draw to the HUD here - it will only draw when
the client has the weapon deployed..
---------------------------------------------------------*/
function SWEP:DrawHUD()
local XS = ScrW()/2 + 50
local YS = ScrH()/2

draw.RoundedBox( 5, XS, YS, 50, 30, Color( 102, 102, 102, 153 ) )
draw.DrawText( "Ban Time:", "", XS+5, YS+5, Color( 255, 255, 255, 153 ) )
draw.DrawText( tostring(BanTime), "", XS+5, YS+5, Color( 255, 255, 255, 153 ) )
end


/*---------------------------------------------------------
Checks the objects before any action is taken
This is to make sure that the entities haven't been removed
---------------------------------------------------------*/
function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha )

// Set us up the texture
surface.SetDrawColor( 255, 255, 255, alpha )
surface.SetTexture( self.WepSelectIcon )

// Lets get a sin wave to make it bounce
local fsin = 0

if ( self.BounceWeaponIcon == true ) then
fsin = math.sin( CurTime() * 10 ) * 5
end

// Borders
y = y + 10
x = x + 10
wide = wide - 20

// Draw that mother
surface.DrawTexturedRect( x + (fsin), y - (fsin), wide-fsin*2 , ( wide / 2 ) + (fsin) )

// Draw weapon info box
self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha )

end


/*---------------------------------------------------------
This draws the weapon info box
---------------------------------------------------------*/
function SWEP:PrintWeaponInfo( x, y, alpha )

if ( self.DrawWeaponInfoBox == false ) then return end

if (self.InfoMarkup == nil ) then
local str
local title_color = "<color=230,230,230,255>"
local text_color = "<color=150,150,150,255>"

str = "<font=HudSelectionText>"
if ( self.Author != "" ) then str = str .. title_color .. "Author:</color>\t"..text_color..self.Author.."</color>\n" end
if ( self.Contact != "" ) then str = str .. title_color .. "Contact:</color>\t"..text_color..self.Contact.."</color>\n\n" end
if ( self.Purpose != "" ) then str = str .. title_color .. "Purpose:</color>\n"..text_color..self.Purpose.."</color>\n\n" end
if ( self.Instructions != "" ) then str = str .. title_color .. "Instructions:</color>\n"..text_color..self.Instructions.."</color>\n" end
str = str .. "</font>"

self.InfoMarkup = markup.Parse( str, 250 )
end

surface.SetDrawColor( 60, 60, 60, alpha )
surface.SetTexture( self.SpeechBubbleLid )

surface.DrawTexturedRect( x, y - 64 - 5, 128, 64 )
draw.RoundedBox( 8, x - 5, y - 6, 260, self.InfoMarkup:GetHeight() + 18, Color( 60, 60, 60, alpha ) )

self.InfoMarkup:Draw( x+5, y+5, nil, nil, alpha )

end


/*---------------------------------------------------------
Name: SWEP:FreezeMovement()
Desc: Return true to freeze moving the view
---------------------------------------------------------*/
function SWEP:FreezeMovement()
return false
end


/*---------------------------------------------------------
Name: SWEP:ViewModelDrawn()
Desc: Called straight after the viewmodel has been drawn
---------------------------------------------------------*/
function SWEP:ViewModelDrawn()
end


/*---------------------------------------------------------
Name: OnRestore
Desc: Called immediately after a "load"
---------------------------------------------------------*/
function SWEP:OnRestore()
end

/*---------------------------------------------------------
Name: OnRemove
Desc: Called just before entity is deleted
---------------------------------------------------------*/
function SWEP:OnRemove()
end

/*---------------------------------------------------------
Name: CustomAmmoDisplay
Desc: Return a table
---------------------------------------------------------*/
function SWEP:CustomAmmoDisplay()
end

/*---------------------------------------------------------
Name: GetViewModelPosition
Desc: Allows you to re-position the view model
---------------------------------------------------------*/
function SWEP:GetViewModelPosition( pos, ang )

return pos, ang

end

/*---------------------------------------------------------
Name: TranslateFOV
Desc: Allows the weapon to translate the player's FOV (clientside)
---------------------------------------------------------*/
function SWEP:TranslateFOV( current_fov )

return current_fov

end


/*---------------------------------------------------------
Name: DrawWorldModel
Desc: Draws the world model (not the viewmodel)
---------------------------------------------------------*/
function SWEP:DrawWorldModel()

self.Weapon:DrawModel()

end


/*---------------------------------------------------------
Name: DrawWorldModelTranslucent
Desc: Draws the world model (not the viewmodel)
---------------------------------------------------------*/
function SWEP:DrawWorldModelTranslucent()

self.Weapon:DrawModel()

end


/*---------------------------------------------------------
Name: AdjustMouseSensitivity()
Desc: Allows you to adjust the mouse sensitivity.
---------------------------------------------------------*/
function SWEP:AdjustMouseSensitivity()

return nil

end

/*---------------------------------------------------------
Name: GetTracerOrigin()
Desc: Allows you to override where the tracer comes from (in first person view)
returning anything but a vector indicates that you want the default action
---------------------------------------------------------*/
function SWEP:GetTracerOrigin()

/*
local ply = self:GetOwner()
local pos = ply:EyePos() + ply:EyeAngles():Right() * -5
return pos
*/

end

init.lua:AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "shared.lua" )

include( "shared.lua" )

SWEP.Weight = 1 // Decides whether we should switch from/to this
SWEP.AutoSwitchTo = true // Auto switch to if we pick it up
SWEP.AutoSwitchFrom = true // Auto switch from if you pick up a better weapon

local ActIndex = {}
ActIndex[ "pistol" ] = ACT_HL2MP_IDLE_PISTOL
ActIndex[ "smg" ] = ACT_HL2MP_IDLE_SMG1
ActIndex[ "grenade" ] = ACT_HL2MP_IDLE_GRENADE
ActIndex[ "ar2" ] = ACT_HL2MP_IDLE_AR2
ActIndex[ "shotgun" ] = ACT_HL2MP_IDLE_SHOTGUN
ActIndex[ "rpg" ] = ACT_HL2MP_IDLE_RPG
ActIndex[ "physgun" ] = ACT_HL2MP_IDLE_PHYSGUN
ActIndex[ "crossbow" ] = ACT_HL2MP_IDLE_CROSSBOW
ActIndex[ "melee" ] = ACT_HL2MP_IDLE_MELEE
ActIndex[ "slam" ] = ACT_HL2MP_IDLE_SLAM
ActIndex[ "normal" ] = ACT_HL2MP_IDLE


/*---------------------------------------------------------
Name: SetWeaponHoldType
Desc: Sets up the translation table, to translate from normal
standing idle pose, to holding weapon pose.
---------------------------------------------------------*/
function SWEP:SetWeaponHoldType( t )

local index = ActIndex[ t ]

if (index == nil) then
Msg( "SWEP:SetWeaponHoldType - ActIndex[ \""..t.."\" ] isn't set!\n" )
return
end

self.ActivityTranslate = {}
self.ActivityTranslate [ ACT_HL2MP_IDLE ] = index
self.ActivityTranslate [ ACT_HL2MP_WALK ] = index+1
self.ActivityTranslate [ ACT_HL2MP_RUN ] = index+2
self.ActivityTranslate [ ACT_HL2MP_IDLE_CROUCH ] = index+3
self.ActivityTranslate [ ACT_HL2MP_WALK_CROUCH ] = index+4
self.ActivityTranslate [ ACT_HL2MP_GESTURE_RANGE_ATTACK ] = index+5
self.ActivityTranslate [ ACT_HL2MP_GESTURE_RELOAD ] = index+6
self.ActivityTranslate [ ACT_HL2MP_JUMP ] = index+7
self.ActivityTranslate [ ACT_RANGE_ATTACK1 ] = index+8
end

// Default hold pos is the melee
SWEP:SetWeaponHoldType( "melee" )

/*---------------------------------------------------------
Name: weapon:TranslateActivity( )
Desc: Translate a player's Activity into a weapon's activity
So for example, ACT_HL2MP_RUN becomes ACT_HL2MP_RUN_PISTOL
Depending on how you want the player to be holding the weapon
---------------------------------------------------------*/
function SWEP:TranslateActivity( act )

if ( self.Owner:IsNPC() ) then
if ( self.ActivityTranslateAI[ act ] ) then
return self.ActivityTranslateAI[ act ]
end
return -1
end

if ( self.ActivityTranslate[ act ] != nil ) then
return self.ActivityTranslate[ act ]
end

return -1

end

/*---------------------------------------------------------
Name: OnRestore
Desc: The game has just been reloaded. This is usually the right place
to call the GetNetworked* functions to restore the script's values.
---------------------------------------------------------*/
function SWEP:OnRestore()
end


/*---------------------------------------------------------
Name: AcceptInput
Desc: Accepts input, return true to override/accept input
---------------------------------------------------------*/
function SWEP:AcceptInput( name, activator, caller, data )
return false
end


/*---------------------------------------------------------
Name: KeyValue
Desc: Called when a keyvalue is added to us
---------------------------------------------------------*/
function SWEP:KeyValue( key, value )
end


/*---------------------------------------------------------
Name: OnRemove
Desc: Called just before entity is deleted
---------------------------------------------------------*/
function SWEP:OnRemove()
end

/*---------------------------------------------------------
Name: Equip
Desc: A player or NPC has picked the weapon up
---------------------------------------------------------*/
function SWEP:Equip( NewOwner )

end

/*---------------------------------------------------------
Name: EquipAmmo
Desc: The player has picked up the weapon and has taken the ammo from it
The weapon will be removed immidiately after this call.
---------------------------------------------------------*/
function SWEP:EquipAmmo( NewOwner )

end


/*---------------------------------------------------------
Name: OnDrop
Desc: Weapon was dropped
---------------------------------------------------------*/
function SWEP:OnDrop()

end

/*---------------------------------------------------------
Name: ShouldDropOnDie
Desc: Should this weapon be dropped when its owner dies?
---------------------------------------------------------*/
function SWEP:ShouldDropOnDie()
return true
end

shared.lua:

// Variables that are used on both client and server

SWEP.Author = "Xaymar"
SWEP.Contact = "perfectdeath545"
SWEP.Purpose = "Adminstick"
SWEP.Instructions = "Kick(P)/Ban(S) Stick for Admins"

SWEP.ViewModelFOV = 62
SWEP.ViewModelFlip = false
SWEP.ViewModel = "models/weapons/v_stunstick.mdl"
SWEP.WorldModel = "models/weapons/w_stunstick.mdl"
SWEP.AnimPrefix = "python"

SWEP.Spawnable = false
SWEP.AdminSpawnable = false

SWEP.Primary.ClipSize = 1 // Size of a clip
SWEP.Primary.DefaultClip = 1 // Default number of bullets in a clip
SWEP.Primary.Automatic = false // Automatic/Semi Auto
SWEP.Primary.Ammo = "Pistol"

SWEP.Secondary.ClipSize = 1 // Size of a clip
SWEP.Secondary.DefaultClip = 1 // Default number of bullets in a clip
SWEP.Secondary.Automatic = false // Automatic/Semi Auto
SWEP.Secondary.Ammo = "Pistol"

BanTime = 5
/*---------------------------------------------------------
Name: SWEP:Initialize( )
Desc: Called when the weapon is first loaded
---------------------------------------------------------*/
function SWEP:Initialize()
end


/*---------------------------------------------------------
Name: SWEP:Precache( )
Desc: Use this function to precache stuff
---------------------------------------------------------*/
function SWEP:Precache()
end


/*---------------------------------------------------------
Name: SWEP:PrimaryAttack( )
Desc: +attack1 has been pressed
---------------------------------------------------------*/
function SWEP:PrimaryAttack()

// Make sure we can shoot first
if ( !self:CanPrimaryAttack() ) then return end

// Play shoot sound
self.Weapon:EmitSound("Weapon_Stunstick.Single")

local trace = {}
trace.start = self.Owner:GetShootPos()
trace.endpos = trace.start + (self.Owner:GetAimVector() * 150)
trace.filter = self.Owner

local tr = util.TraceLine(trace)
if !tr.HitNonWorld then return end
if !tr.Entity then return end

if tr.Entity:IsPlayer() then
local ply = player.GetByID( tr.Entity:EntIndex() )
ply:Kick("Kicked by ".. self.Owner:GetName() .."!(KickStick)" )
end
end


/*---------------------------------------------------------
Name: SWEP:SecondaryAttack( )
Desc: +attack2 has been pressed
---------------------------------------------------------*/
function SWEP:SecondaryAttack()
local BanText = ""
// Make sure we can shoot first
if ( !self:CanSecondaryAttack() ) then return end

// Play shoot sound
self.Weapon:EmitSound("Weapon_Stunstick.Single")

local trace = {}
trace.start = self.Owner:GetShootPos()
trace.endpos = trace.start + (self.Owner:GetAimVector() * 150)
trace.filter = self.Owner

local tr = util.TraceLine(trace)
if !tr.HitNonWorld then return end
if !tr.Entity then return end

if tr.Entity:IsPlayer() then
if BanTime > 0 then
BanText = "for ".. tostring(BanTime) .." minutes"
else
BanText = "permanently"
end

local ply = player.GetByID( tr.Entity:EntIndex() )
ply:Ban(BanTime, "Banned by ".. self.Owner:GetName() .." ".. BanText .."!(KickStick)" )
else
BanTime = BanTime +5
if BanTime > 30 then
BanTime = 0
end
end
end

/*---------------------------------------------------------
Name: SWEP:CheckReload( )
Desc: CheckReload
---------------------------------------------------------*/
function SWEP:CheckReload()

end

/*---------------------------------------------------------
Name: SWEP:Reload( )
Desc: Reload is being pressed
---------------------------------------------------------*/
function SWEP:Reload()

end


/*---------------------------------------------------------
Name: SWEP:Think( )
Desc: Called every frame
---------------------------------------------------------*/
function SWEP:Think()
end


/*---------------------------------------------------------
Name: SWEP:Holster( weapon_to_swap_to )
Desc: Weapon wants to holster
RetV: Return true to allow the weapon to holster
---------------------------------------------------------*/
function SWEP:Holster( wep )
return true
end

/*---------------------------------------------------------
Name: SWEP:Deploy( )
Desc: Whip it out
---------------------------------------------------------*/
function SWEP:Deploy()
return true
end


/*---------------------------------------------------------
Name: SWEP:ShootBullet( )
Desc: A convenience function to shoot bullets
---------------------------------------------------------*/
function SWEP:ShootEffects()

self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) // View model animation
self.Owner:MuzzleFlash() // Crappy muzzle light
self.Owner:SetAnimation( PLAYER_ATTACK1 ) // 3rd Person Animation

end


/*---------------------------------------------------------
Name: SWEP:ShootBullet( )
Desc: A convenience function to shoot bullets
---------------------------------------------------------*/
function SWEP:ShootBullet( damage, num_bullets, aimcone )

local bullet = {}
bullet.Num = num_bullets
bullet.Src = self.Owner:GetShootPos() // Source
bullet.Dir = self.Owner:GetAimVector() // Dir of bullet
bullet.Spread = Vector( aimcone, aimcone, 0 ) // Aim Cone
bullet.Tracer = 5 // Show a tracer on every x bullets
bullet.Force = 1 // Amount of force to give to phys objects
bullet.Damage = damage
bullet.AmmoType = "Pistol"

self.Owner:FireBullets( bullet )

self:ShootEffects()

end


/*---------------------------------------------------------
Name: SWEP:TakePrimaryAmmo( )
Desc: A convenience function to remove ammo
---------------------------------------------------------*/
function SWEP:TakePrimaryAmmo( num )

// Doesn't use clips
if ( self.Weapon:Clip1() <= 0 ) then

if ( self:Ammo1() <= 0 ) then return end

self.Owner:RemoveAmmo( num, self.Weapon:GetPrimaryAmmoType() )

return end

self.Weapon:SetClip1( self.Weapon:Clip1() - num )

end


/*---------------------------------------------------------
Name: SWEP:TakeSecondaryAmmo( )
Desc: A convenience function to remove ammo
---------------------------------------------------------*/
function SWEP:TakeSecondaryAmmo( num )

// Doesn't use clips
if ( self.Weapon:Clip2() <= 0 ) then

if ( self:Ammo2() <= 0 ) then return end

self.Owner:RemoveAmmo( num, self.Weapon:GetSecondaryAmmoType() )

return end

self.Weapon:SetClip2( self.Weapon:Clip2() - num )

end


/*---------------------------------------------------------
Name: SWEP:CanPrimaryAttack( )
Desc: Helper function for checking for no ammo
---------------------------------------------------------*/
function SWEP:CanPrimaryAttack()
return true
end


/*---------------------------------------------------------
Name: SWEP:CanSecondaryAttack( )
Desc: Helper function for checking for no ammo
---------------------------------------------------------*/
function SWEP:CanSecondaryAttack()
return true
end


/*---------------------------------------------------------
Name: ContextScreenClick( aimvec, mousecode, pressed, ply )
---------------------------------------------------------*/
function SWEP:ContextScreenClick( aimvec, mousecode, pressed, ply )
end


/*---------------------------------------------------------
Name: OnRemove
Desc: Called just before entity is deleted
---------------------------------------------------------*/
function SWEP:OnRemove()
end


/*---------------------------------------------------------
Name: OwnerChanged
Desc: When weapon is dropped or picked up by a new player
---------------------------------------------------------*/
function SWEP:OwnerChanged()
end


/*---------------------------------------------------------
Name: Ammo1
Desc: Returns how much of ammo1 the player has
---------------------------------------------------------*/
function SWEP:Ammo1()
return self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() )
end


/*---------------------------------------------------------
Name: Ammo2
Desc: Returns how much of ammo2 the player has
---------------------------------------------------------*/
function SWEP:Ammo2()
return self.Owner:GetAmmoCount( self.Weapon:GetSecondaryAmmoType() )
end

/*---------------------------------------------------------
Name: SetDeploySpeed
Desc: Sets the weapon deploy speed.
This value needs to match on client and server.
---------------------------------------------------------*/
function SWEP:SetDeploySpeed( speed )
self.m_WeaponDeploySpeed = tonumber( speed )
end