local PLUGIN = PLUGIN
PLUGIN.name = "Nibbly's Loyalist Cards"
PLUGIN.author = "Nibbly"
PLUGIN.license = "All rights reserved."
PLUGIN.description = "Adds tiered loyalists cards for Anti-Citizen RP."
ix.util.Include("sh_uac_cards.lua")
ix.util.Include("sh_loyalist_cards.lua")
-- View Merit
do
local COMMAND = {}
COMMAND.description = "View someone's current Merit."
COMMAND.arguments = bit.bor(ix.type.character, ix.type.optional)
COMMAND.argumentNames = "target character"
function COMMAND:OnRun(client, target)
local clientChar = client:GetCharacter()
local clientCharInventory = clientChar:GetInventory()
local items = clientCharInventory:GetItems()
local allowed = false
local targetMerit = 0
for _, v in pairs(items) do
if (string.match(v.uniqueID, "Department_of_S.C.") or v.uniqueID == "City_Administrator_ID" or v.uniqueID == "UAC_Representative_ID") then
allowed = true
break
end
end
if (target) then
if (target:GetOwner():IsCombine()) then
return "Combine do not have Merit."
end
if ((target == clientChar) or allowed) then
targetMerit = target:GetData("merit", 0)
return string.format("%s has %s Merit.", target:GetName(), targetMerit)
else
return "You are not allowed to view other's merit."
end
end
local data = {}
data.start = client:GetShootPos()
data.endpos = data.start + client:GetAimVector() * 96
data.filter = client
local aimTarget = util.TraceLine(data).Entity
if (IsValid(aimTarget) and aimTarget:IsPlayer() and allowed) then
if (aimTarget:IsCombine() == false) then
return "Combine do not have Merit."
end
local char = aimTarget:GetCharacter()
local charName = char:GetName()
targetMerit = char:GetData("merit", 0)
return string.format("%s has %s Merit.", charName, targetMerit)
end
targetMerit = clientChar:GetData("merit", 0)
return string.format("%s has %s Merit.", clientChar:GetName(), targetMerit)
end
function COMMAND:OnCheckAccess(client)
return true
end
ix.command.Add("ViewMerit", COMMAND)
end
-- Add Merit
do
local COMMAND = {}
COMMAND.description = "Add Merit to someone."
COMMAND.arguments = {
bit.bor(ix.type.character, ix.type.optional),
ix.type.number,
}
COMMAND.argumentNames = {
"target character",
"amount"
}
function COMMAND:OnRun(client, target, amount)
local clientChar = client:GetCharacter()
local clientCharInventory = clientChar:GetInventory()
local items = clientCharInventory:GetItems()
local allowed = client:IsCombine()
local oldMerit = 0
for _, v in pairs(items) do
if (string.match(v.uniqueID, "Department_of_S.C." or v.uniqueID == "City_Administrator_ID" or v.uniqueID == "UAC_Representative_ID") then
allowed = true
break
end
end
if (allowed == false) then
return "You are not allowed to add Merit."
end
if (target) then
if (target:GetOwner():IsCombine()) then
return "Combine do not have Merit."
end
oldMerit = target:GetData("merit", 0)
newMerit = oldMerit + amount
target:SetData("merit", newMerit)
return string.format("Added %s Merit to %s. They now have %s Merit", amount, target:GetName(), newMerit)
end
local data = {}
data.start = client:GetShootPos()
data.endpos = data.start + client:GetAimVector() * 96
data.filter = client
local aimTarget = util.TraceLine(data).Entity
if (IsValid(aimTarget) and aimTarget:IsPlayer()) then
if (aimTarget:IsCombine() == false) then
return "Combine do not have Merit."
end
local char = aimTarget:GetCharacter()
local charName = char:GetName()
oldMerit = char:GetData("merit", 0)
newMerit = oldMerit + amount
target:SetData("merit", newMerit)
return string.format("Added %s Merit to %s. They now have %s Merit", amount, charName, newMerit)
end
return "No name specified and you are not looking at a valid target!"
end
function COMMAND:OnCheckAccess(client)
return true
end
ix.command.Add("AddMerit", COMMAND)
end
-- Deduct Merit
do
local COMMAND = {}
COMMAND.description = "Deduct Merit from someone."
COMMAND.arguments = {
bit.bor(ix.type.character, ix.type.optional),
ix.type.number,
}
COMMAND.argumentNames = {
"target character",
"amount"
}
function COMMAND:OnRun(client, target, amount)
local clientChar = client:GetCharacter()
local clientCharInventory = clientChar:GetInventory()
local items = clientCharInventory:GetItems()
local allowed = client:IsCombine()
local oldMerit = 0
for _, v in pairs(items) do
if (string.match(v.uniqueID, "Department_of_S.C." or v.uniqueID == "City_Administrator_ID" or v.uniqueID == "UAC_Representative_ID") then
allowed = true
break
end
end
if (allowed == false) then
return "You are not allowed to deduct Merit."
end
if (target) then
if (target:GetOwner():IsCombine()) then
return "Combine do not have Merit."
end
oldMerit = target:GetData("merit", 0)
newMerit = math.max(oldMerit - amount, 0)
target:SetData("merit", newMerit)
return string.format("Deducted %s Merit from %s. They now have %s Merit", amount, target:GetName(), newMerit)
end
local data = {}
data.start = client:GetShootPos()
data.endpos = data.start + client:GetAimVector() * 96
data.filter = client
local aimTarget = util.TraceLine(data).Entity
if (IsValid(aimTarget) and aimTarget:IsPlayer()) then
if (aimTarget:IsCombine() == false) then
return "Combine do not have Merit."
end
local char = aimTarget:GetCharacter()
local charName = char:GetName()
oldMerit = char:GetData("merit", 0)
newMerit = math.max(oldMerit - amount, 0)
target:SetData("merit", newMerit)
return string.format("Deducted %s Merit from %s. They now have %s Merit", amount, charName, newMerit)
end
return "No name specified and you are not looking at a valid target!"
end
function COMMAND:OnCheckAccess(client)
return true
end
ix.command.Add("DeductMerit", COMMAND)
end
Comments