Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0a1fa75a30 | |||
| eac0c12d64 | |||
| 74d77b5269 | |||
| 14e32383c4 | |||
| 0efa3f12c0 | |||
| f38e70dce9 | |||
| 67c91f9225 | |||
| bc0068a79a | |||
| 6ad75df85d | |||
| e8454d4d27 | |||
| e609fb09f4 | |||
| b5209f4b60 |
@@ -1,3 +1,4 @@
|
|||||||
Pack.gma
|
Pack.gma
|
||||||
Changelog.txt
|
Changelog.txt
|
||||||
Description.txt
|
Description.txt
|
||||||
|
/*.gma
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
@ECHO OFF
|
|
||||||
call env.win.bat
|
|
||||||
"%GARRYSMODPATH%\bin\gmad.exe" create -folder "%CD%\Source" -out "%CD%\Pack.gma"
|
|
||||||
PAUSE
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
call env.win.bat
|
call env.win.bat
|
||||||
"%GARRYSMODPATH%\bin\gmpublish.exe" update -id 468149739 -icon "media\gamemode_workshop.jpg" -addon "Pack.gma" -changes ""
|
"%GARRYSMODPATH%\bin\gmpublish.exe" update -id 468149739 -icon "media\gamemode_workshop.jpg" -addon "pack.gma" -changes ""
|
||||||
PAUSE
|
PAUSE
|
||||||
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 1003 KiB After Width: | Height: | Size: 1003 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@@ -0,0 +1,4 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
call env.win.bat
|
||||||
|
"%GARRYSMODPATH%\bin\gmad.exe" create -folder "%CD%\source" -out "%CD%\pack.gma"
|
||||||
|
PAUSE
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
call env.win.bat
|
call env.win.bat
|
||||||
SET "PATH=%CD%;%GARRYSMODPATH%\bin;%PATH%"
|
SET "PATH=%CD%;%GARRYSMODPATH%\bin;%PATH%"
|
||||||
CMD
|
CMD
|
||||||
|
Before Width: | Height: | Size: 1003 KiB After Width: | Height: | Size: 1003 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@@ -41,8 +41,8 @@ function GM:Initialize()
|
|||||||
print("Prop Hunt CL: Initializing Gamemode Data...")
|
print("Prop Hunt CL: Initializing Gamemode Data...")
|
||||||
self.Data = {}
|
self.Data = {}
|
||||||
|
|
||||||
print("Prop Hunt CL: Creating Huge Ass Font...")
|
print("Prop Hunt CL: Creating Fonts...")
|
||||||
surface.CreateFont("PHHugeAssFont", {font="Roboto Bold Condensed", extended=true, size=160, weight=800, antialias=true})
|
surface.CreateFont("RobotoBoldCondensed160", {font="Roboto Bold Condensed", extended=true, size=160, weight=800, antialias=true})
|
||||||
|
|
||||||
print("Prop Hunt CL: Complete.")
|
print("Prop Hunt CL: Complete.")
|
||||||
print("-------------------------------------------------------------------------")
|
print("-------------------------------------------------------------------------")
|
||||||
@@ -193,28 +193,47 @@ net.Receive( "PlayerViewOffset", function(len, pl)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
--! Old Code
|
--! Special Drawing
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
--[[
|
function DrawNamePlates(bDrawingDepth, bDrawingSkybox)
|
||||||
-- Render halos and player names.
|
if (!GAMEMODE.Config.NamePlates:Show()) then
|
||||||
function DrawPlayerNames(bDrawingDepth, bDrawingSkybox)
|
return
|
||||||
for i,v in ipairs(player.GetAll()) do
|
end
|
||||||
if v:Alive() && v != LocalPlayer() then
|
|
||||||
local pos = v:GetPos() + v:GetViewOffset() + Vector(0, 0, 5)
|
local scale = GAMEMODE.Config.NamePlates:Scale()
|
||||||
local ang = Angle(0, LocalPlayer():EyeAngles().y - 90, 90 - LocalPlayer():EyeAngles().x)
|
local pls = team.GetPlayers(GAMEMODE.Teams.Seekers)
|
||||||
local healthPrc = v:Health() / v:GetMaxHealth()
|
if (LocalPlayer():Team() == GAMEMODE.Teams.Hiders) then
|
||||||
local healthCol = HSVToColor(120 * healthPrc, 1.0, 1.0)
|
pls = table.Add(pls, team.GetPlayers(GAMEMODE.Teams.Hiders))
|
||||||
|
end
|
||||||
if v:Team() == TEAM_HUNTERS || LocalPlayer():Team() == TEAM_PROPS then
|
|
||||||
cam.Start3D2D(pos, ang, 0.15)
|
for i,v in ipairs(pls) do
|
||||||
draw.DrawText(v:GetName(), "Trebuchet24", 0, -draw.GetFontHeight("Trebuchet24"), healthCol, TEXT_ALIGN_CENTER)
|
if (v:Alive() && v != LocalPlayer()) then
|
||||||
|
if (player_manager.GetPlayerClass(v) != "Spectator") then
|
||||||
|
local color = HSVToColor(GAMEMODE.Config.NamePlates:TintHue(),
|
||||||
|
GAMEMODE.Config.NamePlates:TintSaturation(),
|
||||||
|
GAMEMODE.Config.NamePlates:TintValue())
|
||||||
|
if GAMEMODE.Config.NamePlates:TintHealth() then
|
||||||
|
local healthPrc = v:Health() / v:GetMaxHealth()
|
||||||
|
color = HSVToColor(120 * healthPrc, 1.0, 1.0)
|
||||||
|
elseif GAMEMODE.Config.NamePlates:TintTeam() then
|
||||||
|
color = team.GetColor(v:Team())
|
||||||
|
end
|
||||||
|
|
||||||
|
local pos = v:GetPos() + v:GetViewOffset() + Vector(0, 0, GAMEMODE.Config.NamePlates:Height())
|
||||||
|
local ang = Angle(0, LocalPlayer():EyeAngles().y - 90, 90 - LocalPlayer():EyeAngles().x)
|
||||||
|
cam.Start3D2D(pos, ang, scale)
|
||||||
|
draw.DrawText(v:GetName(), "RobotoBoldCondensed160", 0, -draw.GetFontHeight("RobotoBoldCondensed160") / 2, color, TEXT_ALIGN_CENTER)
|
||||||
cam.End3D2D()
|
cam.End3D2D()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
hook.Add("PostDrawTranslucentRenderables", "PH_DrawPlayerNames", DrawPlayerNames)
|
hook.Add("PostDrawTranslucentRenderables", "PHDrawNamePlates", DrawNamePlates)
|
||||||
|
|
||||||
|
-- ------------------------------------------------------------------------- --
|
||||||
|
--! Old Code
|
||||||
|
-- ------------------------------------------------------------------------- --
|
||||||
|
--[[
|
||||||
function DrawPlayerHalos(bDrawingDepth, bDrawingSkybox)
|
function DrawPlayerHalos(bDrawingDepth, bDrawingSkybox)
|
||||||
for i,v in ipairs(player.GetAll()) do
|
for i,v in ipairs(player.GetAll()) do
|
||||||
if v:Alive() then
|
if v:Alive() then
|
||||||
@@ -241,7 +241,19 @@ function GM:PlayerUse(ply, ent) return player_manager.RunClass(ply, "Use", ent)
|
|||||||
function GM:AllowPlayerPickup(ply, ent) return player_manager.RunClass(ply, "AllowPickup", ent) end
|
function GM:AllowPlayerPickup(ply, ent) return player_manager.RunClass(ply, "AllowPickup", ent) end
|
||||||
function GM:PlayerSetModel(ply) return player_manager.RunClass(ply, "SetModel") end
|
function GM:PlayerSetModel(ply) return player_manager.RunClass(ply, "SetModel") end
|
||||||
|
|
||||||
-- Called when an entity takes damage
|
-- Damage
|
||||||
|
function GM:PlayerShouldTakeDamage(victim, attacker)
|
||||||
|
return player_manager.RunClass(victim, "ShouldTakeDamage", attacker)
|
||||||
|
end
|
||||||
|
|
||||||
|
function GM:PlayerHurt(victim, attacker, healthRemaining, damageTaken)
|
||||||
|
player_manager.RunClass(victim, "Hurt", victim, attacker, healthRemaining, damageTaken)
|
||||||
|
|
||||||
|
if (IsValid(attacker) && attacker:IsPlayer()) then
|
||||||
|
player_manager.RunClass(attacker, "Damage", victim, attacker, healthRemaining, damageTaken)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function GM:EntityTakeDamage(ent, dmg)
|
function GM:EntityTakeDamage(ent, dmg)
|
||||||
local att = dmg:GetAttacker()
|
local att = dmg:GetAttacker()
|
||||||
|
|
||||||
@@ -96,30 +96,51 @@ function CLASS:ShouldTakeDamage(attacker)
|
|||||||
local ffmode = GetConVarNumber("mp_friendlyfire")
|
local ffmode = GetConVarNumber("mp_friendlyfire")
|
||||||
if (ffmode == 0) then -- Not Allowed
|
if (ffmode == 0) then -- Not Allowed
|
||||||
return false
|
return false
|
||||||
elseif (ffmode == 2) then -- Damage self instead
|
|
||||||
if (IsValid(attacker) && attacker:IsPlayer()) then
|
|
||||||
attacker:SetHealth(attacker:Health() - damageTaken)
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function CLASS:Damage(victim, attacker, healthRemaining, damageDealt)
|
||||||
|
if ((victim != attacker) && victim:IsPlayer() && attacker:IsPlayer() && (attacker:Team() == victim:Team())) then
|
||||||
|
if (GAMEMODE.Config:DebugLog()) then
|
||||||
|
print("Prop Hunt: Seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..") damaged seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") with "..damageDealt.." damage.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function CLASS:Hurt(victim, attacker, healthRemaining, damageTaken)
|
||||||
|
if ((victim != attacker) && victim:IsPlayer() && attacker:IsPlayer() && (attacker:Team() == victim:Team())) then
|
||||||
|
if (GAMEMODE.Config:DebugLog()) then
|
||||||
|
print("Prop Hunt: Seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") was hurt by seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..") with "..damageTaken.." damage.")
|
||||||
|
end
|
||||||
|
|
||||||
|
if (GetConVarNumber("mp_friendlyfire") == 2) then
|
||||||
|
victim:SetHealth(healthRemaining + damageTaken)
|
||||||
|
attacker:TakeDamage(damageTaken, attacker, attacker)
|
||||||
|
print("Prop Hunt: Seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") reflected "..damageTaken.." to seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..").")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function CLASS:DamageEntity(ent, att, dmg)
|
function CLASS:DamageEntity(ent, att, dmg)
|
||||||
if (GAMEMODE.Config:DebugLog()) then print("Prop Hunt: Seeker '"..self.Player:GetName().."' (SteamID: "..self.Player:SteamID()..") damaged entity "..ent:GetClass()..".") end
|
if (GAMEMODE.Config:DebugLog()) then print("Prop Hunt: Seeker '"..self.Player:GetName().."' (SteamID: "..self.Player:SteamID()..") damaged entity "..ent:GetClass()..".") end
|
||||||
|
|
||||||
|
if (GAMEMODE:GetRoundState() != GAMEMODE.States.Seek) then return end
|
||||||
|
if (!IsValid(ent) || !IsValid(att)) then return end
|
||||||
|
if (att == ent) then return end
|
||||||
|
|
||||||
-- Only take damage during this phase.
|
-- Only take damage during this phase.
|
||||||
if (GAMEMODE:GetRoundState() == GAMEMODE.States.Seek) then
|
if IsValid(ent) && (!(ent:IsPlayer())) then
|
||||||
if IsValid(ent) && (!(ent:IsPlayer())) then
|
if (ent:GetClass() == "ph_prop") then
|
||||||
if (ent:GetClass() == "ph_prop") then
|
ent:GetOwner():TakeDamageInfo(dmg)
|
||||||
ent:GetOwner():TakeDamageInfo(dmg)
|
self.Player.Data.RandomWeight = self.Player.Data.RandomWeight - 1
|
||||||
self.Player.Data.RandomWeight = self.Player.Data.RandomWeight - 1
|
elseif (ent:GetClass() == "func_breakable") then
|
||||||
elseif (ent:GetClass() == "func_breakable") then -- ToDo: Make Configurable which entities don't hurt?
|
elseif (ent:GetClass() == "prop_ragdoll") then
|
||||||
else
|
else
|
||||||
att:TakeDamage(GAMEMODE.Config.Seeker:HealthPenalty(), ent, ent)
|
att:TakeDamage(GAMEMODE.Config.Seeker:HealthPenalty(), ent, ent)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -40,7 +40,6 @@ end
|
|||||||
--! Debug Settings
|
--! Debug Settings
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
-- Debug Mode
|
-- Debug Mode
|
||||||
|
|
||||||
GM.Config.ConVars.Debug = CreateConVarIfNotExists("ph_debug", "0", FCVAR_CHEAT + FCVAR_REPLICATED, "Prop Hunt: Enable Debug Mode")
|
GM.Config.ConVars.Debug = CreateConVarIfNotExists("ph_debug", "0", FCVAR_CHEAT + FCVAR_REPLICATED, "Prop Hunt: Enable Debug Mode")
|
||||||
function GM.Config:Debug()
|
function GM.Config:Debug()
|
||||||
return self.ConVars.Debug:GetBool()
|
return self.ConVars.Debug:GetBool()
|
||||||
@@ -410,4 +409,56 @@ if CLIENT then
|
|||||||
function GM.Config.Camera:Lag()
|
function GM.Config.Camera:Lag()
|
||||||
return math.Clamp(self.ConVars.Lag:GetFloat(), self:LagMinimum(), self:LagMaximum())
|
return math.Clamp(self.ConVars.Lag:GetFloat(), self:LagMinimum(), self:LagMaximum())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ------------------------------------------------------------------------- --
|
||||||
|
--! Name Plates
|
||||||
|
-- ------------------------------------------------------------------------- --
|
||||||
|
GM.Config.NamePlates = {}
|
||||||
|
GM.Config.NamePlates.ConVars = {}
|
||||||
|
|
||||||
|
if CLIENT then
|
||||||
|
-- Show
|
||||||
|
GM.Config.NamePlates.ConVars.Show = CreateConVarIfNotExists("ph_nameplates_show", "1", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Show a name plate above each player in your team (or all players if spectating).")
|
||||||
|
function GM.Config.NamePlates:Show()
|
||||||
|
return self.ConVars.Show:GetBool()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Scale
|
||||||
|
GM.Config.NamePlates.ConVars.Scale = CreateConVarIfNotExists("ph_nameplates_scale", "0.05", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: World scale of name plate, a setting of 1 means 1px = 1unit.")
|
||||||
|
function GM.Config.NamePlates:Scale()
|
||||||
|
return self.ConVars.Scale:GetFloat()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Height
|
||||||
|
GM.Config.NamePlates.ConVars.Height = CreateConVarIfNotExists("ph_nameplates_height", "10", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Height above player.")
|
||||||
|
function GM.Config.NamePlates:Height()
|
||||||
|
return self.ConVars.Height:GetFloat()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Tint Color
|
||||||
|
GM.Config.NamePlates.ConVars.TintHue = CreateConVarIfNotExists("ph_nameplates_tint_hue", "0", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Tint hue.")
|
||||||
|
function GM.Config.NamePlates:TintHue()
|
||||||
|
return self.ConVars.TintHue:GetFloat()
|
||||||
|
end
|
||||||
|
GM.Config.NamePlates.ConVars.TintSaturation = CreateConVarIfNotExists("ph_nameplates_tint_saturation", "0", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Tint saturation.")
|
||||||
|
function GM.Config.NamePlates:TintSaturation()
|
||||||
|
return self.ConVars.TintSaturation:GetFloat()
|
||||||
|
end
|
||||||
|
GM.Config.NamePlates.ConVars.TintValue = CreateConVarIfNotExists("ph_nameplates_tint_value", "1", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Tint value.")
|
||||||
|
function GM.Config.NamePlates:TintValue()
|
||||||
|
return self.ConVars.TintValue:GetFloat()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Tint By Health
|
||||||
|
GM.Config.NamePlates.ConVars.TintHealth = CreateConVarIfNotExists("ph_nameplates_tint_health", "0", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Tint the nameplate using their health percent.")
|
||||||
|
function GM.Config.NamePlates:TintHealth()
|
||||||
|
return self.ConVars.TintHealth:GetBool()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Tint By Team
|
||||||
|
GM.Config.NamePlates.ConVars.TintTeam = CreateConVarIfNotExists("ph_nameplates_tint_team", "0", FCVAR_ARCHIVE + FCVAR_CLIENTDLL, "Nameplates: Tint the nameplate with the team colors.")
|
||||||
|
function GM.Config.NamePlates:TintTeam()
|
||||||
|
return self.ConVars.TintTeam:GetBool()
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -26,8 +26,8 @@
|
|||||||
--! Gamemode Information
|
--! Gamemode Information
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
GM.Name = "Prop Hunt Extended"
|
GM.Name = "Prop Hunt Extended"
|
||||||
GM.Author = "Michael 'Xaymar' Dirks (Based on Kow@lskis Version, Original by AMT)"
|
GM.Author = "Michael Fabian 'Xaymar' Dirks"
|
||||||
GM.Email = "michael.fabian.dirks@gmail.com"
|
GM.Email = "info@xaymar.com"
|
||||||
GM.Website = "http://xaymar.com/"
|
GM.Website = "http://xaymar.com/"
|
||||||
|
|
||||||
GM.TeamBased = true
|
GM.TeamBased = true
|
||||||
@@ -104,17 +104,6 @@ function GM:PlayerTick(ply, mv)
|
|||||||
return player_manager.RunClass(ply, "Tick", mv)
|
return player_manager.RunClass(ply, "Tick", mv)
|
||||||
end
|
end
|
||||||
|
|
||||||
function GM:PlayerHurt(victim, attacker, healthRemaining, damageTaken)
|
|
||||||
player_manager.RunClass(victim, "Hurt", victim, attacker, healthRemaining, damageTaken)
|
|
||||||
|
|
||||||
if (IsValid(attacker) && attacker:IsPlayer()) then
|
|
||||||
player_manager.RunClass(attacker, "Damage", victim, attacker, healthRemaining, damageTaken)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function GM:PlayerShouldTakeDamage(victim, attacker)
|
|
||||||
return player_manager.RunClass(victim, "ShouldTakeDamage", attacker)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
--! Gamemode Functionality
|
--! Gamemode Functionality
|
||||||
-- ------------------------------------------------------------------------- --
|
-- ------------------------------------------------------------------------- --
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |