Initial Commit

This commit is contained in:
David Vogel 2018-07-15 12:07:37 +02:00
commit f305d28544
2 changed files with 369 additions and 0 deletions

View File

@ -0,0 +1,211 @@
if engine.ActiveGamemode() == "zombiesurvival" then
-- this code grabs the data from the file about the map. if none exists it makes a default.
timer.Simple(25,function()
mapwins = 0
maploss = 0
if not file.Exists( "zsmapinfo", "DATA") then
file.CreateDir( "zsmapinfo" )
end
local mapname = string.lower(game.GetMap())
if file.Exists("zsmapinfo/"..mapname..".txt", "DATA") then
local data = util.JSONToTable(file.Read("zsmapinfo/"..mapname..".txt", "DATA"))
mapwins = data.mapwins
maploss = data.maploss
mapboost = data.mapboost
mapjackpot = data.mapjackpot
else
local main = {}
main["mapwins"] = 0
main["maploss"] = 0
main["mapboost"] = 1-- use a scale from 1 to 5
main["mapjackpot"] = 25
file.Write( "zsmapinfo/"..mapname..".txt", util.TableToJSON( main ) )
print("map win file not found. created one.")
end
zombpercentcountmap = 0
totpercentcountmap = 1
end)
-- this hook checks to make sure there are zombies on the server. later it should check to see if any are afk.
roundtime = 0
prereqcount = false
hook.Add( "WaveStateChanged", "zombpercentcalc", function()
roundtime = CurTime()
if !timer.Exists( "zombiepercentcalc" ) then
timer.Create( "zombiepercentcalc", 10, 0, function()
if #(team.GetPlayers(TEAM_UNDEAD)) >0 then
zombpercentcountmap =zombpercentcountmap +1
end
totpercentcountmap = totpercentcountmap +1
end)
end
end)
hook.Add("EndRound","givedapoints",function(winner)
timer.Destroy("zombiepercentcalc" )
timer.Simple(0,function()
print("point bonus hook")
local mapname = string.lower(game.GetMap())
local zombiepercentcalcmap = (zombpercentcountmap/totpercentcountmap) or .01
local mapplaytotal = mapwins + maploss
local pointstogive = 10
zombiepercentcalcmap = zombiepercentcalcmap or .01
-- we need to make sure that zombies were on the server for more than half the game.
if zombiepercentcalcmap <=.5 then
PrintMessage(HUD_PRINTTALK,"No end of game points because zombies were not even playing half the time!")
elseif mapplaytotal <= 5 then
--print(mapplaytotal)
PrintMessage(HUD_PRINTTALK,"sorry but this map needs to be played at least "..(5-mapplaytotal).." more times before you can get points for winning.")
if winner == TEAM_UNDEAD then
maploss = maploss + 1
elseif winner == TEAM_HUMAN then
mapwins = mapwins +1
else
print("wow you fucked up! no seriously how do you not have a winner?")
end
if winner == TEAM_UNDEAD then
if mapjackpot <= 2500 then
mapjackpot = mapjackpot*1.1
end
end
local main = {}
main["mapwins"] = mapwins
main["maploss"] = maploss
main["mapboost"] = mapboost
main["mapjackpot"] = mapjackpot
file.Write( "zsmapinfo/"..mapname..".txt", util.TableToJSON( main ) )
else
if winner == TEAM_UNDEAD then
if mapjackpot <= 2500 then
mapjackpot = math.Round(mapjackpot*1.1)
end
else
mapjackpot = 25
end
local multiplywin = 2
if mapplaytotal <10 then
multiplywin = 2
elseif mapplaytotal<25 then
multiplywin = 1.9
elseif mapplaytotal <50 then
multiplywin = 1.8
elseif mapplaytotal<100 then
multiplywin = 1.7
elseif mapplaytotal < 250 then
multiplywin = 1.6
elseif mapplaytotal < 500 then
multiplywin = 1.4
elseif mapplaytotal < 1000 then
multiplywin = 1.2
else
multiplywin = 1
end
if winner == TEAM_UNDEAD then
maploss = maploss + 1
elseif winner == TEAM_HUMAN then
mapwins = mapwins +1
else
print("wow you fucked up!")
end
local main = {}
main["mapwins"] = mapwins
main["maploss"] = maploss
main["mapboost"] = mapboost
main["mapjackpot"] = mapjackpot
file.Write( "zsmapinfo/"..mapname..".txt", util.TableToJSON( main ) )
local finalmultiply = 1
if winner == TEAM_UNDEAD then
finalmultiply = (mapboost * (mapwins/mapplaytotal) * zombiepercentcalcmap) or .01
pointstogive = math.Round(50 * finalmultiply) or 1
elseif winner == TEAM_HUMAN then
finalmultiply = (mapboost * multiplywin * (maploss/mapplaytotal) *zombiepercentcalcmap) or .01
pointstogive = math.Round((50 * finalmultiply) + mapjackpot) or 1
end
PrintMessage(HUD_PRINTTALK,"<c=0,255,255>This map has been played "..mapplaytotal.." times with humans winning "..(mapwins).." times.("..(math.Round((mapwins/mapplaytotal)*100)).."%)</c>")
PrintMessage(HUD_PRINTTALK,"<c=0,255,255>Zombies were only playing for "..(zombiepercentcalcmap*100).."% of the time.</c>")
PrintMessage(HUD_PRINTTALK,"<c=0,255,255>frequency multiplier for this map is:"..multiplywin..". play maps infrequently for a higher value!</c>")
PrintMessage(HUD_PRINTTALK,"<c=0,255,255>Special boost for this map is:"..(mapboost)..". tell an admin if you think it should be changed!</c>")
PrintMessage(HUD_PRINTTALK,"<c=204,204,0>Map jackpot is now "..(mapjackpot)..".</c>")
--regular points ZS points
--[[if (game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
for k,v in pairs(team.GetPlayers(TEAM_HUMAN)) do
v:SetMoney((v:GetDTInt(1) + pointstogive) )
--WriteData(v:SteamID64(), v:GetPoints())
v:SaveMoney()
v:SaveMoneyTXT()
v:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(pointstogive).." this round for playing to the end!</c>")
end
for k,v in pairs(team.GetPlayers(TEAM_UNDEAD)) do
v:SetMoney(math.Round((v:GetMoney() + (pointstogive/5)) ))
--WriteData(v:SteamID64(), v:GetPoints())
v:SaveMoney()
v:SaveMoneyTXT()
v:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(math.Round(pointstogive/2)).." points this round for playing to the end!</c>")
end
end]]
end
if (game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
if winner == TEAM_HUMAN then
for k,ply in pairs(player.GetAll()) do
if ply:Team() == TEAM_HUMAN then
if ply:GetPoints()- ply:GetMoney()> 0 then
ply:SetMoney(ply:GetPoints()+((ply:GetPoints()- ply:GetMoney()))+pointstogive)
ply:SaveMoney()
ply:SaveMoneyTXT()
ply:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(pointstogive).." this round for playing to the end!</c>")
else
ply:SetMoney(ply:GetPoints()+pointstogive)
ply:SaveMoney()
ply:SaveMoneyTXT()
ply:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(pointstogive).." this round for playing to the end!</c>")
end
else
if ply:GetPoints()- ply:GetMoney()> 0 then
ply:SetMoney(ply:GetPoints()+((ply:GetPoints()- ply:GetMoney())*.15)+(pointstogive/2))
ply:SaveMoney()
ply:SaveMoneyTXT()
ply:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(pointstogive/2).." this round for playing to the end!</c>")
else
ply:SetMoney(ply:GetPoints()+(pointstogive/2))
ply:SaveMoney()
ply:SaveMoneyTXT()
ply:PrintMessage(HUD_PRINTTALK,"<c=255,0,0>You gained "..(pointstogive/2).." this round for playing to the end!</c>")
end
end
end
else
for k,ply in pairs(player.GetAll()) do
if ply:GetPoints()- ply:GetMoney()> 0 then
ply:SetMoney(ply:GetPoints()+((ply:GetPoints()- ply:GetMoney())*.15)+(pointstogive/2))
else
ply:SetMoney(ply:GetPoints()+(pointstogive/2))
end
end
end
end
end)
end)
end

View File

@ -0,0 +1,158 @@
--[[
JAXJAXK LICENSE
VERSION 1.0
Copyright 9/24/2015
copy, upload or distribution of this license is allowed however no one is to change the original text with exception of jaxjaxk ( the creator).
the contents of this addon are strictly off limits to hells gamers or anyone affiliated with hells gamers.
legal action will be taken against anyone who does not comply with the terms and conditions of this addon
TERMS AND CONDITIONS
1) this addon is not permitted on any servers that are hells gamers or a affiliated with hells gamers.
2) you are free to us the code as a reference as to how to solve problems however you are not permitted to copy the code without the permission of jaxjaxk ( the creator). further more hells gamers is not permited to even look at the code.
3) modification to the code is permitted by anyone that is not affiliated with hells gamers.
4) you will not modify the code in any way that directly or indirectly generates revenue/money without the express permission of jaxjaxk ( the creator)
5) jaxjaxk ( the creator)has the right to have this addon removed from your server at any time for any reason. you are useing his addon, do not abuse it.
6) if you do not agree to any of the above conditions you must delete the addon and any files affiliated with the addon in its entirety as well of any dirivitives of the files or content.
tl;dr - don't screw with me and I won't screw with you. it brings joy when people use my addon, don't abuse it.
INFORMATION
jaxjaxk ( present username) created this addon.
his email is jaxschellhorn@gmail.com
]]
-------------------------------------------------------------------
hook.Add("PlayerInitialSpawnRound", "ps_set", function(ply)
if gmod.GetGamemode().Name == "Zombie Survival" then
local cash = ply:GetPData("money") --Get the saved money amount
if cash == nil then --If it doesn't exist supply the player with the starting money amount
ply:SetPData("money", 100) --Save it
ply:SetMoney( 100 ) --Set it to the networked ints that can be called from the client too
--ply:SetDTInt(1,ply:GetMoney())
else
ply:SetMoney( cash )
end
end
end)
hook.Add("PlayerDeath", "ps_catch", function(ply)
if (ply:Team() == TEAM_HUMAN and game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
ply:SetMoney(ply:GetPoints())
--WriteData(ply:SteamID64(), ply:GetPoints())
--PrintMessage(HUD_PRINTTALK,ply:GetDTInt(1))
--PrintMessage(HUD_PRINTTALK,ply:GetMoney())
ply:SaveMoney()
ply:SaveMoneyTXT()
end
end)
--[[hook.Add("EndRound", "ps_save", function(winner)
print("end round hook")
if (game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
if winner == TEAM_HUMAN then
for k,ply in pairs(player.GetAll()) do
if ply:Team() == TEAM_HUMAN then
ply:SetMoney(ply:GetPoints())
else
if ply:GetPoints()- ply:GetMoney()> 0 then
ply:SetMoney(ply:GetPoints()+((ply:GetPoints()- ply:GetMoney())*.15))
else
ply:SetMoney(ply:GetPoints())
end
end
end
else
for k,ply in pairs(player.GetAll()) do
if ply:GetPoints()- ply:GetMoney()> 0 then
ply:SetMoney(ply:GetPoints()+((ply:GetPoints()- ply:GetMoney())*.15))
else
ply:SetMoney(ply:GetPoints())
end
end
end
end
end)]]
hook.Add("PlayerDisconnected", "ps_disc", function(ply)
if (ply:Team() == TEAM_HUMAN and game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
--WriteData(ply:SteamID64(), ply:GetPoints())
ply:SetMoney(ply:GetPoints())
ply:SaveMoney()
ply:SaveMoneyTXT()
end
end)
hook.Add("PlayerRedeemed", "ps_redeem", function(ply)
--ply:SetPoints(ReadData(ply:SteamID64()))
--ply:SetMoney(ply:GetMoney())
if (game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
ply:SetPoints(ply:GetMoney())
end
end)
--[[concommand.Add("admin_set_points_save", function(ply, cmd, args, argsS)
if args and args[1] and args[2] and tonumber(args[2]) then
local foundply
for k, v in pairs(player.GetAll()) do
if string.find(string.lower(v:Name()), args[1]) then
foundply = v
end
end
if foundply then
foundply:SetPoints(tonumber(args[2]))
end
end
end)]]
--ZSPS_Opt = CreateConVar("ZSPS_nosend", "0", FCVAR_ARCHIVE, "Opt out of the ZSPS server list"):GetBool()
hook.Add("PlayerSpawn" , "spawnplayerpoints" ,function(pl)
if (pl:Team() == TEAM_HUMAN and game.GetMap() ~= "zs_obj_gauntlet_v3" and game.GetMap() ~="zs_gauntlet_reborn_b6") and gmod.GetGamemode().Name == "Zombie Survival" then
pl:SetPoints(pl:GetMoney())
--pl:SetBegPoints(pl:GetDTInt(1))
end
end)
--/////////////////////////////////////////////////////////////////////
local meta = FindMetaTable("Player") --Get the meta table of player
function meta:AddMoney(amount)
local current_cash = self:GetMoney()
self:SetMoney( current_cash + amount )
end
function meta:SetMoney(amount)
self:SetNetworkedInt( "Money", amount )
self:SaveMoney()
end
function meta:SaveMoney()
local cash = self:GetMoney()
self:SetPData("money", cash)
end
function meta:SaveMoneyTXT()
file.Write(gmod.GetGamemode().Name .."/Money/".. string.gsub(self:SteamID(), ":", "_") ..".txt", self:GetMoney())
end
function meta:TakeMoney(amount)
--Add money function here
self:AddMoney(-amount)
end
function meta:GetMoney()
return self:GetNetworkedInt( "Money" )
end