Fretta Game Mode problem and SWEP questions

I have a couple questions and a need for someone to check what’s wrong with my Fretta game mode that I’m messing with.

First off, the game mode. I’m sure it’s partly working, but for some reason the player class doesn’t seem to be. It starts with the default HL2:DM loadout when it’s supposed to have a custom revolver weapon, and it moves at the default speeds instead of walking at run speed.


GM.Name 	= "XWDeathmatch"
GM.Author 	= "XutaWoo"
GM.Email 	= ""
GM.Website 	= ""
GM.Help		= "A simple deathmatch gamemode."
GM.TeamBased = false					// Team based game or a Free For All game?
GM.AllowAutoTeam = true
GM.AllowSpectating = true
GM.SecondsBetweenTeamSwitches = 10
GM.GameLength = 15
GM.RoundLimit = 10					// Maximum amount of rounds to be played in round based games
GM.VotingDelay = 5					// Delay between end of game, and vote. if you want to display any extra screens before the vote pops up
GM.NoPlayerSuicide = false
GM.NoPlayerDamage = false
GM.NoPlayerSelfDamage = false		// Allow players to hurt themselves?
GM.NoPlayerTeamDamage = false		// Allow team-members to hurt each other?
GM.NoPlayerPlayerDamage = false 	// Allow players to hurt each other?
GM.NoNonPlayerPlayerDamage = false 	// Allow damage from non players (physics, fire etc)
GM.NoPlayerFootsteps = false		// When true, all players have silent footsteps
GM.PlayerCanNoClip = false			// When true, players can use noclip without sv_cheats
GM.TakeFragOnSuicide = false			// -1 frag on suicide
GM.MaximumDeathLength = 0			// Player will respawn if death length > this (can be 0 to disable)
GM.MinimumDeathLength = 3			// Player has to be dead for at least this long
GM.AutomaticTeamBalance = false     // Teams will be periodically balanced 
GM.ForceJoinBalancedTeams = false	// Players won't be allowed to join a team if it has more players than another team
GM.RealisticFallDamage = false
GM.AddFragsToTeamScore = false		// Adds player's individual kills to team score (must be team based)
GM.NoAutomaticSpawning = false		// Players don't spawn automatically when they die, some other system spawns them
GM.RoundBased = true				// Round based, like CS
GM.RoundLength = 60 * 4					// Round length, in seconds
GM.RoundPreStartTime = 5			// Preperation time before a round starts
GM.RoundPostLength = 5				// Seconds to show the 'x team won!' screen at the end of a round
GM.RoundEndsWhenOneTeamAlive = false	// CS Style rules
GM.EnableFreezeCam = true			// TF2 Style Freezecam
GM.DeathLingerTime = 3				// The time between you dying and it going into spectator mode, 0 disables
GM.SelectModel = true               // Can players use the playermodel picker in the F1 menu?
GM.SelectColor = true				// Can players modify the colour of their name? (ie.. no teams)
GM.PlayerRingSize = 48              // How big are the colored rings under the player's feet (if they are enabled) ?
GM.HudSkin = "SimpleSkin"
GM.ValidSpectatorEntities = { "player" }	// Entities we can spectate
GM.CanOnlySpectateOwnTeam = false // you can only spectate players on your own team

function GM:CreateTeams()
	if ( !GAMEMODE.TeamBased ) then return end
	team.SetUp( TEAM_HUMAN, "Players", Color( 50, 255, 50 ), true )
	team.SetSpawnPoint( TEAM_HUMAN, { "info_player_start", "info_player_terrorist", "info_player_rebel", "info_player_deathmatch" } )
	team.SetClass( TEAM_HUMAN, { "Player" } ) // "Human" is the class we want players to use
	team.SetUp( TEAM_SPECTATOR, "Spectators", Color( 200, 200, 200 ), true )
	team.SetSpawnPoint( TEAM_SPECTATOR, { "info_player_start", "info_player_terrorist", "info_player_counterterrorist", "info_player_combine", "info_player_rebel" } ) 


// This is called every second to see if we can end the round
function GM:CheckRoundEnd()
	if ( !GAMEMODE:InRound() ) then return end 
	for k,v in pairs( team.GetPlayers( TEAM_HUMAN ) ) do
		if v:Frags() >= 30 then
		      GAMEMODE:RoundEndWithResult( v )
// This is called after a player wins in a free for all
function GM:OnRoundWinner( ply, resulttext )
	ply:AddScore( 1 ) // Let's pretend we have AddScore for brevity's sake
// Called when the round ends
function GM:OnRoundEnd( num )
       for k,v in pairs( team.GetPlayers( TEAM_HUMAN ) ) do
             v:SetFrags( 0 ) // Reset their frags for next round


include( 'shared.lua' )

// Clientside only stuff goes here

(as you can see, I used the skeleton gamemode thing)


local CLASS = {}
CLASS.DisplayName			= "Player"
CLASS.WalkSpeed 			= 600
CLASS.CrouchedWalkSpeed 	= 0.5
CLASS.RunSpeed				= 600
CLASS.DuckSpeed				= 0.5
CLASS.JumpPower				= 200
CLASS.DrawTeamRing			= true
CLASS.DrawViewModel			= true
CLASS.CanUseFlashlight      = false
CLASS.MaxHealth				= 100
CLASS.StartHealth			= 100
CLASS.StartArmor			= 0
CLASS.RespawnTime           = 0 // 0 means use the default spawn time chosen by gamemode
CLASS.DropWeaponOnDie		= false
CLASS.TeammateNoCollide 	= false
CLASS.AvoidPlayers			= false // Automatically avoid players that we're no colliding
CLASS.Selectable			= true // When false, this disables all the team checking
CLASS.FullRotation			= false // Allow the player's model to rotate upwards, etc etc
function CLASS:Loadout( pl )
	pl:Give( "revolver_weapon" )
function CLASS:OnSpawn( pl )
function CLASS:OnDeath( pl, attacker, dmginfo )
function CLASS:Think( pl )
function CLASS:Move( pl, mv )
function CLASS:OnKeyPress( pl, key )
function CLASS:OnKeyRelease( pl, key )
function CLASS:ShouldDrawLocalPlayer( pl )
	return false
function CLASS:CalcView( ply, origin, angles, fov )
player_class.Register( "Player", CLASS )

(yes, the revolver weapon is revolver_weapon. Should it be the opposite way?)

And now, for the questions:

  1. How do you make a weapon that just fires from the ammo amounts and doesn’t need to be reloaded?

  2. How do you make custom ammo?

Help would be appreciated.

In your shared.lua, put this:

Also, I don’t think you ever derived from fretta (so it can’t be a fretta gamemode…)? Put this in shared as well:

Dunno about your weapon questions though.

Hm…still no good.

Although now atleast I have the neat Fretta stuff.

[lua]player_class.Register( “Player”, CLASS )[/lua]
should be
[lua]player_class.Register( “Human”, CLASS )[/lua]