Added: Custom user ghost fading control [0-1]

Fixed: First point picked for portal stairs elevation
Added: Missing controls for frequently used count
This commit is contained in:
Deyan Dobromirov 2021-10-21 11:16:02 +03:00
parent 0f56a68b7a
commit 24e79edfd8
5 changed files with 46 additions and 21 deletions

View File

@ -89,7 +89,7 @@ local asmlib = trackasmlib; if(not asmlib) then -- Module present
------------ CONFIGURE ASMLIB ------------
asmlib.InitBase("track","assembly")
asmlib.SetOpVar("TOOL_VERSION","8.667")
asmlib.SetOpVar("TOOL_VERSION","8.668")
asmlib.SetIndexes("V" ,1,2,3)
asmlib.SetIndexes("A" ,1,2,3)
asmlib.SetIndexes("WV",1,2,3)
@ -157,6 +157,7 @@ asmlib.SetBorder(gsToolPrefL.."sizeucs" , 0, 50)
asmlib.SetBorder(gsToolPrefL.."spawnrate", 1, 10)
asmlib.SetBorder(gsToolPrefL.."sgradmenu", 1, 16)
asmlib.SetBorder(gsToolPrefL.."dtmessage", 0, 10)
asmlib.SetBorder(gsToolPrefL.."ghostfade", 0, 1)
asmlib.SetBorder(gsToolPrefL.."rtradmenu", -gnMaxRot, gnMaxRot)
------------ CONFIGURE LOGGING ------------
@ -254,12 +255,6 @@ local conCallBack = asmlib.GetContainer("CALLBAC_FUNC")
conCallBack:Push({"endsvlock", function(sVar, vOld, vNew)
asmlib.IsFlag("en_dsv_datalock", tobool(vNew))
end})
conCallBack:Push({"dtmessage", function(sVar, vOld, vNew)
local sK = gsToolPrefL.."dtmessage"
local nD = (tonumber(vNew) or 0)
nD = asmlib.BorderValue(nD, sK)
asmlib.SetOpVar("MSDELTA_SEND", nD)
end})
conCallBack:Push({"timermode", function(sVar, vOld, vNew)
local arTim = gsSymDir:Explode(vNew)
local mkTab, ID = asmlib.GetBuilderID(1), 1
@ -269,6 +264,14 @@ local conCallBack = asmlib.GetContainer("CALLBAC_FUNC")
ID = ID + 1; mkTab = asmlib.GetBuilderID(ID) -- Next table on the list
end; asmlib.LogInstance("Timer update "..asmlib.GetReport(vNew),gtInitLogs)
end})
conCallBack:Push({"dtmessage", function(sVar, vOld, vNew)
if(SERVER) then
local sK = gsToolPrefL.."dtmessage"
local nD = (tonumber(vNew) or 0)
nD = asmlib.BorderValue(nD, sK)
asmlib.SetOpVar("MSDELTA_SEND", nD)
end
end})
for iD = 1, conCallBack:GetSize() do
local val = conCallBack:Select(iD)
@ -4308,16 +4311,16 @@ else
PIECES:Record({"models/props_underground/walkway_x.mdl", "#", "#", 2, "", "0,64,-2.125", "0, 90,0"})
PIECES:Record({"models/props_underground/walkway_x.mdl", "#", "#", 3, "", "-64,0,-2.125","0,180,0"})
PIECES:Record({"models/props_underground/walkway_x.mdl", "#", "#", 4, "", "0,-64,-2.125","0,-90,0"})
PIECES:Record({"models/props_underground/stair_32.mdl", "#", "#", 1, "", "0, 56,13.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_32.mdl", "#", "#", 2, "", "0,-56,-18.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_64.mdl", "#", "#", 1, "", "0, 80,29.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_64.mdl", "#", "#", 2, "", "0,-80,-34.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_128.mdl", "#", "#", 1, "", "0, 128,61.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_128.mdl", "#", "#", 2, "", "0,-128,-66.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_256.mdl", "#", "#", 1, "", "0, 224,125.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_256.mdl", "#", "#", 2, "", "0,-224,-130.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_exit.mdl", "#", "#", 1, "", "0, 112,61.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_exit.mdl", "#", "#", 2, "", "0,-112,-66.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_32.mdl", "#", "#", 1, "", "0,-56,-18.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_32.mdl", "#", "#", 2, "", "0, 56,13.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_64.mdl", "#", "#", 1, "", "0,-80,-34.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_64.mdl", "#", "#", 2, "", "0, 80,29.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_128.mdl", "#", "#", 1, "", "0,-128,-66.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_128.mdl", "#", "#", 2, "", "0, 128,61.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_256.mdl", "#", "#", 1, "", "0,-224,-130.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_256.mdl", "#", "#", 2, "", "0, 224,125.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_exit.mdl", "#", "#", 1, "", "0,-112,-66.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_exit.mdl", "#", "#", 2, "", "0, 112,61.875", "0, 90,0"})
PIECES:Record({"models/props_underground/stair_landing_a.mdl", "#", "#", 1, "", "48,-42,-2.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_landing_a.mdl", "#", "#", 2, "", "-48,-42,-2.125", "0,-90,0"})
PIECES:Record({"models/props_underground/stair_landing_b.mdl", "#", "#", 1, "", "48,-42,-2.125", "0,-90,0"})

View File

@ -101,6 +101,10 @@
tSet["tool."..sTool..".pntasist_con" ] = "Изобразявай асистента"
tSet["tool."..sTool..".ghostcnt" ] = "Управлява изобразяването на броя парчета сенки"
tSet["tool."..sTool..".ghostcnt_con" ] = "Изобразявай парчета сенки"
tSet["tool."..sTool..".ghostfade" ] = "Управлява прозрачността на парчето сянка. Малка стойност за по-прозрачно"
tSet["tool."..sTool..".ghostfade_con" ] = "Преливане на парчета сенки:"
tSet["tool."..sTool..".dtmessage" ] = "Управлява времевия интервал между сърварните съобщения на контекстното меню"
tSet["tool."..sTool..".dtmessage_con" ] = "Времеви интервал:"
tSet["tool."..sTool..".engunsnap" ] = "Управлява залепването когато парчето е изпуснато с физическото оръдие на играча"
tSet["tool."..sTool..".engunsnap_con" ] = "Залепване при изпускане"
tSet["tool."..sTool..".upspanchor" ] = "Включете за обновяване на опората при всяко създаване без натрупвате"
@ -155,7 +159,7 @@
tSet["tool."..sTool..".incsnplin_con" ] = "Линейна стъпка:"
tSet["tool."..sTool..".enradmenu" ] = "Когато се пусне позволява управление на режимите на работа чрез кръгово меню"
tSet["tool."..sTool..".enradmenu_con" ] = "Разреши кръгово меню"
tSet["tool."..sTool..".sgradmenu" ] = "Променете за да направите на кръговото меню по гладко. По-голяма стойност за по гладко"
tSet["tool."..sTool..".sgradmenu" ] = "Променете за да направите на кръговото меню по-гладко. По-голяма стойност за по-гладко"
tSet["tool."..sTool..".sgradmenu_con" ] = "Радиални сегменти:"
tSet["tool."..sTool..".rtradmenu" ] = "Променете за да настроите базовия ъгъл на кръговоро меню и да преместите опциите"
tSet["tool."..sTool..".rtradmenu_con" ] = "Радиална ротация:"

View File

@ -103,6 +103,10 @@
tSet["tool."..sTool..".pntasist_con" ] = "Draw assistant"
tSet["tool."..sTool..".ghostcnt" ] = "Controls rendering the tool ghosted holder pieces count"
tSet["tool."..sTool..".ghostcnt_con" ] = "Ghosts count:"
tSet["tool."..sTool..".ghostfade" ] = "Controls ghosts transperency blend. The lower the value more transperent"
tSet["tool."..sTool..".ghostfade_con" ] = "Ghosts blend:"
tSet["tool."..sTool..".dtmessage" ] = "Controls time intervals between context menu server messages"
tSet["tool."..sTool..".dtmessage_con" ] = "Message delta:"
tSet["tool."..sTool..".engunsnap" ] = "Controls snapping when the piece is dropped by the player physics gun"
tSet["tool."..sTool..".engunsnap_con" ] = "Enable physics gun snap"
tSet["tool."..sTool..".upspanchor" ] = "Enable to update the anchor on every spawn when not snapping"

View File

@ -4941,16 +4941,19 @@ end
--[[
* Fades the ghosts stack and makes the elements invisible
* bNoD > The state of the No-Draw flag
* nMrF > Fade margin in range [0-1]
* Wait a minute, ghosts can't leave fingerprints!
]]
function FadeGhosts(bNoD)
function FadeGhosts(bNoD, nMrF)
if(SERVER) then return true end
if(not HasGhosts()) then return true end
local nMar = mathClamp((tonumber(nMrF) or 0), 0, 1)
local tGho = GetOpVar("ARRAY_GHOST")
local cPal = GetContainer("COLORS_LIST")
local sMis, sMod = GetOpVar("MISS_NOMD"), tGho.Slot
for iD = 1, tGho.Size do local eGho = tGho[iD]
if(eGho and eGho:IsValid()) then
if(nMrF) then eGho.marginRender = nMar end
eGho:SetNoDraw(bNoD); eGho:DrawShadow(false)
eGho:SetColor(cPal:Select("gh"))
if(sMod and sMod ~= sMis and sMod ~= eGho:GetModel()) then
@ -4984,8 +4987,9 @@ end
* for all the ghosted props to draw all of them correctly
]]
local function BlendGhost(self)
local mar = self.marginRender
local num = renderGetBlend()
renderSetBlend(0.8)
renderSetBlend(mar)
self:DrawModel()
renderSetBlend(num)
end
@ -5002,6 +5006,7 @@ local function MakeEntityGhost(sModel, vPos, aAng)
local eGho = entsCreateClientProp(sModel)
if(not (eGho and eGho:IsValid())) then eGho = nil
LogInstance("Ghost invalid "..sModel); return nil end
eGho.marginRender = 1
eGho.RenderOverride = BlendGhost
eGho:SetModel(sModel)
eGho:SetPos(vPos or GetOpVar("VEC_ZERO"))

View File

@ -131,6 +131,7 @@ TOOL.ClientConVar = {
[ "forcelim" ] = 0,
[ "ignphysgn" ] = 0,
[ "ghostcnt" ] = 1,
[ "ghostfade" ] = 0.8,
[ "stackcnt" ] = 5,
[ "maxstatts" ] = 3,
[ "nocollide" ] = 1,
@ -377,6 +378,10 @@ function TOOL:GetStackAttempts()
return (mathClamp(self:GetClientNumber("maxstatts"),0,10))
end
function TOOL:GetGhostFade()
return (mathClamp(self:GetClientNumber("ghostfade"),0,1))
end
function TOOL:GetPhysMeterial()
return tostring(self:GetClientInfo("physmater") or "metal")
end
@ -1596,7 +1601,8 @@ function TOOL:UpdateGhostSpawn(stTrace, oPly)
end
function TOOL:UpdateGhost(oPly)
if(not asmlib.FadeGhosts(true)) then return end
local ghostfade = self:GetGhostFade()
if(not asmlib.FadeGhosts(true, ghostfade)) then return end
if(self:GetGhostsCount() <= 0) then return end
local stTrace = asmlib.GetCacheTrace(oPly)
if(not stTrace) then return end
@ -2422,6 +2428,7 @@ if(CLIENT) then
asmlib.SetNumSlider(CPanel, "incsnplin", 0)
asmlib.SetNumSlider(CPanel, "incsnpang", 0)
asmlib.SetNumSlider(CPanel, "ghostcnt" , 0)
asmlib.SetNumSlider(CPanel, "ghostfade", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvturnlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvleanlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "sgradmenu", 0)
@ -2456,6 +2463,8 @@ if(CLIENT) then
asmlib.SetNumSlider(CPanel, "maxactrad", iMaxDec)
asmlib.SetNumSlider(CPanel, "maxstcnt" , 0)
asmlib.SetNumSlider(CPanel, "maxstatts", 0)
asmlib.SetNumSlider(CPanel, "maxfruse" , 0)
asmlib.SetNumSlider(CPanel, "dtmessage", iMaxDec)
asmlib.SetCheckBox(CPanel, "enwiremod")
asmlib.SetCheckBox(CPanel, "enctxmenu")
asmlib.SetCheckBox(CPanel, "enctxmall")