Upload files to "server"
This commit is contained in:
parent
1ece4a3f2f
commit
be328c9be4
24
server/gang_sync.lua
Normal file
24
server/gang_sync.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
-- server/gang_sync.lua
|
||||
print("^2[turfwar]^7 gang_sync.lua loaded")
|
||||
|
||||
-- IMPORTANT: set this to match wherever you store gang membership.
|
||||
-- Most turfwar scripts have something like PlayerGang[src] = gangId
|
||||
-- If yours is named differently, change it here.
|
||||
local function getGangFor(src)
|
||||
if PlayerGang and PlayerGang[src] ~= nil then
|
||||
return tonumber(PlayerGang[src]) or 0
|
||||
end
|
||||
|
||||
-- Common alternates people use:
|
||||
if GangOf and GangOf[src] ~= nil then
|
||||
return tonumber(GangOf[src]) or 0
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
RegisterNetEvent("turfwar:gang:requestMyGang", function()
|
||||
local src = source
|
||||
local gangId = getGangFor(src)
|
||||
TriggerClientEvent("turfwar:setMyGang", src, gangId)
|
||||
end)
|
||||
58
server/gangbank.lua
Normal file
58
server/gangbank.lua
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
print("^2[turfwar]^7 gangbank.lua loaded (server)")
|
||||
|
||||
local GangBank = {} -- [gangId] = amount
|
||||
|
||||
local function clamp(n)
|
||||
n = tonumber(n) or 0
|
||||
if n < 0 then n = 0 end
|
||||
return math.floor(n)
|
||||
end
|
||||
|
||||
local function getGangId(src)
|
||||
if PlayerGang and PlayerGang[src] ~= nil then return tonumber(PlayerGang[src]) or 0 end
|
||||
return 0
|
||||
end
|
||||
|
||||
local function broadcastToGang(gangId)
|
||||
local amount = GangBank[gangId] or 0
|
||||
for _, s in ipairs(GetPlayers()) do
|
||||
s = tonumber(s)
|
||||
if getGangId(s) == gangId then
|
||||
TriggerClientEvent("turfwar:gangbank:update", s, gangId, amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
GangBankAPI = GangBankAPI or {}
|
||||
|
||||
function GangBankAPI.Get(gangId)
|
||||
gangId = tonumber(gangId) or 0
|
||||
return GangBank[gangId] or 0
|
||||
end
|
||||
|
||||
function GangBankAPI.Set(gangId, amount)
|
||||
gangId = tonumber(gangId) or 0
|
||||
GangBank[gangId] = clamp(amount)
|
||||
broadcastToGang(gangId)
|
||||
end
|
||||
|
||||
function GangBankAPI.Add(gangId, delta)
|
||||
gangId = tonumber(gangId) or 0
|
||||
GangBank[gangId] = clamp((GangBank[gangId] or 0) + (tonumber(delta) or 0))
|
||||
broadcastToGang(gangId)
|
||||
end
|
||||
|
||||
RegisterNetEvent("turfwar:gangbank:requestMyGang", function()
|
||||
local src = source
|
||||
local gangId = getGangId(src)
|
||||
TriggerClientEvent("turfwar:gangbank:update", src, gangId, GangBank[gangId] or 0)
|
||||
end)
|
||||
|
||||
-- console test
|
||||
RegisterCommand("gangbank_set", function(src, args)
|
||||
if src ~= 0 then return end
|
||||
local g = tonumber(args[1] or "0") or 0
|
||||
local a = tonumber(args[2] or "0") or 0
|
||||
GangBankAPI.Set(g, a)
|
||||
print(("Set gangbank %d = %d"):format(g, a))
|
||||
end, true)
|
||||
43
server/killfeed_chat.lua
Normal file
43
server/killfeed_chat.lua
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
print("^2[turfwar]^7 killfeed.lua loaded (server)")
|
||||
|
||||
RegisterNetEvent('turfwar:killfeed:report', function(data)
|
||||
local src = source
|
||||
if type(data) ~= "table" then return end
|
||||
|
||||
local killerId = tonumber(data.killer or 0) or 0
|
||||
local victimId = tonumber(data.victim or 0) or 0
|
||||
if victimId <= 0 then victimId = src end
|
||||
|
||||
local victimName = GetPlayerName(victimId) or ("ID " .. tostring(victimId))
|
||||
local victimGang = tonumber(data.victimGang or 0) or 0
|
||||
|
||||
-- ✅ Death-only (no player killer)
|
||||
if killerId <= 0 then
|
||||
TriggerClientEvent('turfwar:killfeed:chat', -1, {
|
||||
isDeathOnly = true,
|
||||
killer = 0,
|
||||
victim = victimId,
|
||||
victimName = victimName,
|
||||
victimGang = victimGang,
|
||||
weapon = tonumber(data.weapon or 0) or 0,
|
||||
})
|
||||
return
|
||||
end
|
||||
|
||||
local killerName = GetPlayerName(killerId) or ("ID " .. tostring(killerId))
|
||||
local killerGang = tonumber(data.killerGang or 0) or 0
|
||||
|
||||
TriggerClientEvent('turfwar:killfeed:chat', -1, {
|
||||
killer = killerId,
|
||||
victim = victimId,
|
||||
killerName = killerName,
|
||||
victimName = victimName,
|
||||
|
||||
weapon = tonumber(data.weapon or 0) or 0,
|
||||
headshot = (data.headshot == true),
|
||||
distance = tonumber(data.distance or 0) or 0,
|
||||
|
||||
killerGang = killerGang,
|
||||
victimGang = victimGang,
|
||||
})
|
||||
end)
|
||||
88
server/leaderboard.lua
Normal file
88
server/leaderboard.lua
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
-- server/leaderboard.lua
|
||||
print("^2[turfwar]^7 server/leaderboard.lua LOADED")
|
||||
|
||||
-- We assume Turfs runtime table exists in server/main.lua as `local Turfs = {}`
|
||||
-- and Config.GANGS exists.
|
||||
-- We will be defensive: if Turfs isn't visible here, we’ll use an exported getter you can add (optional).
|
||||
|
||||
local function getTurfsRuntime()
|
||||
-- If Turfs is global somewhere, use it.
|
||||
if Turfs then return Turfs end
|
||||
|
||||
-- If Turfs is local in main.lua (as in your paste), this file cannot see it.
|
||||
-- In that case, you must either:
|
||||
-- A) Move leaderboard code into server/main.lua, OR
|
||||
-- B) Make Turfs global in main.lua: change `local Turfs = {}` to `Turfs = {}`
|
||||
return nil
|
||||
end
|
||||
|
||||
local function buildLeaderboard()
|
||||
local t = getTurfsRuntime()
|
||||
if not t then
|
||||
return {
|
||||
title = "Most influence",
|
||||
rows = {},
|
||||
error = "Turfs runtime not visible. In server/main.lua change `local Turfs = {}` to `Turfs = {}`."
|
||||
}
|
||||
end
|
||||
|
||||
-- count owned turfs per gang
|
||||
local counts = {} -- [gangId] = n
|
||||
for _, turf in pairs(t) do
|
||||
local owner = tonumber(turf.owner) or 0
|
||||
if owner ~= 0 then
|
||||
counts[owner] = (counts[owner] or 0) + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- build sortable rows
|
||||
local rows = {}
|
||||
for gangId, info in pairs(Config.GANGS or {}) do
|
||||
gangId = tonumber(gangId) or 0
|
||||
if gangId ~= 0 then
|
||||
local c = counts[gangId] or 0
|
||||
rows[#rows + 1] = {
|
||||
gangId = gangId,
|
||||
name = info.name or ("Gang " .. tostring(gangId)),
|
||||
value = c
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
table.sort(rows, function(a, b)
|
||||
if a.value == b.value then
|
||||
return a.name < b.name
|
||||
end
|
||||
return a.value > b.value
|
||||
end)
|
||||
|
||||
-- Keep only gangs that exist in config; you can also filter out zeroes if you want:
|
||||
-- (comment in if you only want gangs with >0)
|
||||
-- local filtered = {}
|
||||
-- for _, r in ipairs(rows) do if r.value > 0 then filtered[#filtered+1]=r end end
|
||||
-- rows = filtered
|
||||
|
||||
return {
|
||||
title = "Most influence",
|
||||
rows = rows
|
||||
}
|
||||
end
|
||||
|
||||
local function broadcastLeaderboard()
|
||||
local payload = buildLeaderboard()
|
||||
TriggerClientEvent("turfwar:leaderboard:update", -1, payload)
|
||||
end
|
||||
|
||||
-- Clients can request snapshot
|
||||
RegisterNetEvent("turfwar:leaderboard:request", function()
|
||||
local src = source
|
||||
TriggerClientEvent("turfwar:leaderboard:update", src, buildLeaderboard())
|
||||
end)
|
||||
|
||||
-- Let other server code trigger refresh
|
||||
RegisterNetEvent("turfwar:leaderboard:refresh", function()
|
||||
broadcastLeaderboard()
|
||||
end)
|
||||
|
||||
-- Export for other resources if needed
|
||||
exports("BroadcastLeaderboard", broadcastLeaderboard)
|
||||
16
server/loadouts.lua
Normal file
16
server/loadouts.lua
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
print("^2[turfwar]^7 server/loadouts.lua LOADED (DISABLED - shop handles weapons)")
|
||||
|
||||
Loadouts = Loadouts or {}
|
||||
|
||||
function Loadouts.StripPlayer(src)
|
||||
-- Optional: keep this if you want neutrals to have no weapons:
|
||||
-- TriggerClientEvent("turfwar:stripWeapons", src)
|
||||
end
|
||||
|
||||
function Loadouts.GiveGangLoadout(src, gangId)
|
||||
-- Disabled: shop/armory handles weapons now
|
||||
end
|
||||
|
||||
function Loadouts.ApplyForGang(src, gangId)
|
||||
-- Disabled: do nothing
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user