Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
25d963b
playerblips: Fixed that the resource "playercolors" should be activat…
T-MaxWiese-T Apr 30, 2024
6d2f7fe
Merge branch 'multitheftauto:master' into master
T-MaxWiese-T May 10, 2024
fe7bbd2
Playercolors should only be recommended if a player uses a default na…
T-MaxWiese-T May 10, 2024
84c408e
Default playerblip color should be the default nametag color
T-MaxWiese-T May 10, 2024
a5aaee7
Removed unnecessary text
T-MaxWiese-T May 10, 2024
7f81980
Added debug message if use_team_colors and use_nametag_colors is false
T-MaxWiese-T May 10, 2024
8c330de
Improved text
T-MaxWiese-T May 10, 2024
dedeef6
Fixed debug message for when useTeams and useNametags is false was di…
T-MaxWiese-T May 10, 2024
7d41d5e
If query (useTeams or useNametags) logic restored
T-MaxWiese-T May 10, 2024
e0655df
If query adjusted if the first parameter is nil. Variable name adjust…
T-MaxWiese-T May 10, 2024
8708982
Resource name should only be queried if it is required
T-MaxWiese-T May 15, 2024
8bd5801
Merge branch 'master' into master
Dutchman101 May 23, 2024
cdbbd0b
Merge branch 'multitheftauto:master' into master
T-MaxWiese-T Jun 30, 2024
beed506
Merge branch 'multitheftauto:master' into master
T-MaxWiese-T Jul 11, 2024
1aa756a
Added description and new export functions
T-MaxWiese-T Jul 14, 2024
544de16
Check whether parameters can be converted to numbers and convert them
T-MaxWiese-T Jul 14, 2024
bf5c17d
Check whether parameters can be converted to numbers and convert them
T-MaxWiese-T Jul 14, 2024
79861c7
Added spacing in the text in some places
T-MaxWiese-T Jul 14, 2024
8f682df
Fixed warning that posX and posY was defined before
T-MaxWiese-T Jul 14, 2024
6321952
Fixed spacing
T-MaxWiese-T Jul 14, 2024
85c553f
Few text improvements in meta.xml
T-MaxWiese-T Jul 14, 2024
d11e670
Merge branch 'multitheftauto:master' into gps
T-MaxWiese-T Jul 19, 2024
c5814d2
removeLinePoints function returns true/false
T-MaxWiese-T Jul 19, 2024
c2005f0
Removed redundant word
T-MaxWiese-T Jul 19, 2024
11cf325
Adjusted description removeLinePoints function
T-MaxWiese-T Jul 19, 2024
5271a2e
Fixed that when addLinePoint was called multiple times without deleti…
T-MaxWiese-T Jul 19, 2024
ba89c81
Increased version
T-MaxWiese-T Jul 19, 2024
1db8b39
Merge branch 'multitheftauto:master' into gps
T-MaxWiese-T Jun 27, 2026
523e82d
Delete [gameplay]/gps/vehiclenodes.lua
T-MaxWiese-T Jun 27, 2026
3538b0e
Update client.lua
T-MaxWiese-T Jun 27, 2026
4b6d8cd
Create server.lua
T-MaxWiese-T Jun 27, 2026
bc790d9
Update meta.xml
T-MaxWiese-T Jun 27, 2026
8c63917
Add files via upload
T-MaxWiese-T Jun 27, 2026
fde659d
Update server.lua
T-MaxWiese-T Jun 27, 2026
2e99f92
Update gps.lua
T-MaxWiese-T Jun 27, 2026
f35d0ec
Update meta.xml
T-MaxWiese-T Jun 27, 2026
2c1fc69
Update meta.xml
T-MaxWiese-T Jun 27, 2026
a1bcaab
Update server.lua
T-MaxWiese-T Jun 27, 2026
af68f7f
Update meta.xml
T-MaxWiese-T Jun 27, 2026
519ed1d
Update gps.lua
T-MaxWiese-T Jun 27, 2026
5a80368
Delete [gameplay]/gps/vehiclenodes.json
T-MaxWiese-T Jun 27, 2026
a1e055e
Add files via upload
T-MaxWiese-T Jun 27, 2026
f2d41d6
Update gps.lua
T-MaxWiese-T Jun 27, 2026
0adf52b
Add files via upload
T-MaxWiese-T Jun 27, 2026
9db60a2
Update gps.lua
T-MaxWiese-T Jun 27, 2026
41f297b
Add files via upload
T-MaxWiese-T Jun 27, 2026
e0fbe24
Update client.lua
T-MaxWiese-T Jun 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions [gameplay]/gps/client.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
local floor = math.floor
local currentRouteMode = "client"

addCommandHandler('path',
function(command, node1, node2)
if not tonumber(node1) or not tonumber(node2) then
outputChatBox("Usage: /path node1 node2", 255, 0, 0)
return
end
local path = server.calculatePathByNodeIDs(tonumber(node1), tonumber(node2))
local path
if currentRouteMode == "client" then
path = calculatePathByNodeIDs(tonumber(node1), tonumber(node2))
elseif currentRouteMode == "server" then
path = server.calculatePathByNodeIDs(tonumber(node1), tonumber(node2))
end
if not path then
outputConsole('No path found')
return
Expand All @@ -30,7 +36,12 @@ addCommandHandler('path2',
return
end
local x,y,z = getElementPosition(localPlayer)
local path = server.calculatePathByCoords(x, y, z, tox, toy, toz)
local path
if currentRouteMode == "client" then
path = calculatePathByCoords(x, y, z, tox, toy, toz)
elseif currentRouteMode == "server" then
path = server.calculatePathByCoords(x, y, z, tox, toy, toz)
end
if not path then
outputConsole('No path found')
return
Expand Down
30 changes: 6 additions & 24 deletions [gameplay]/gps/gps.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
local floor = math.floor

local allowedRPC = {
calculatePathByCoords = true,
calculatePathByNodeIDs = true,
spawnPlayer = true
}
local file = fileOpen("vehiclenodes.json", true)
local size = fileGetSize(file)
vehicleNodes = fromJSON(fileRead(file, size))
fileClose(file)

outputDebugString("GPS: " .. (localPlayer and "Client" or "Server") .. " database loaded successfully!")

local function getAreaID(x, y)
return floor((y + 3000)/750)*8 + floor((x + 3000)/750)
Expand Down Expand Up @@ -67,7 +68,6 @@ local function calculatePath(db, nodeFrom, nodeTo)
break
end

local successors = {}
for id,distance in pairs(current.neighbours) do
local successor = getNodeByID(db, id)
local successor_g = g[current] + distance*distance
Expand Down Expand Up @@ -113,21 +113,3 @@ function calculatePathByNodeIDs(node1, node2)
return false
end
end

addEvent('onServerCall', true)
addEventHandler('onServerCall', root,
function(fnName, ...)
if allowedRPC[fnName] then
_G[fnName](...)
end
end
)

addEvent('onServerCallback', true)
addEventHandler('onServerCallback', root,
function(crID, fnName, ...)
if allowedRPC[fnName] then
triggerClientEvent(source, 'onServerCallbackReply', resourceRoot, crID, _G[fnName](...))
end
end
)
12 changes: 9 additions & 3 deletions [gameplay]/gps/meta.xml
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
<meta>
<info author="arc_" type="script" version="1.1.1" description="Calculates and displays the quickest road path between two points/nodes on the map. Commands: /path node1 node2 /path2 x y [z]. Resource contains export functions for custom logic."/>

<script src="MinHeap.lua" type="shared"/>
<script src="gps.lua" type="shared"/>

<script src="util.lua" type="client"/>
<script src="client.lua" type="client"/>
<script src="linedrawer.lua" type="client"/>

<script src="server.lua" type="server"/>

<file src="overlay.fx"/>
<file src="vehiclenodes.json"/>

<script src="vehiclenodes.lua" type="server"/>
<script src="MinHeap.lua" type="server"/>
<script src="gps.lua" type="server"/>
<settings>
<setting name="*routeMode" value="client" accept="client,server" desc="Where should the route be calculated - on the client or the server?" />
</settings>

<export function="calculatePathByCoords" type="server"/> <!--calculatePathByCoords(float x1, float y1, float [z1], float x2,
float y2, float [z2])
Expand Down
50 changes: 50 additions & 0 deletions [gameplay]/gps/server.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
local allowedRPC = {
calculatePathByCoords = true,
calculatePathByNodeIDs = true,
spawnPlayer = true
}

addEvent('onServerCall', true)
addEventHandler('onServerCall', root,
function(fnName, ...)
if allowedRPC[fnName] then
if fnName == "calculatePathByCoords" or fnName == "calculatePathByNodeIDs" then
if get("routeMode") ~= "server" then
outputDebugString("SECURITY: " .. getPlayerName(client) .. " wanted to force server GPS even though client mode is active!", 2)
return
end
end
_G[fnName](...)
end
end
)

addEvent('onServerCallback', true)
addEventHandler('onServerCallback', root,
function(crID, fnName, ...)
if allowedRPC[fnName] then
if fnName == "calculatePathByCoords" or fnName == "calculatePathByNodeIDs" then
if get("routeMode") ~= "server" then
outputDebugString("SECURITY: " .. getPlayerName(client) .. " wanted to force server GPS even though client mode is active", 2)
triggerClientEvent(source, 'onServerCallbackReply', resourceRoot, crID, false)
return
end
end
triggerClientEvent(source, 'onServerCallbackReply', resourceRoot, crID, _G[fnName](...))
end
end
)

local function sendSettingsToClient(player)
local target = player or root
local mode = get("routeMode") or "client"
triggerClientEvent(target, "onClientReceiveGPSSetting", resourceRoot, mode)
end

addEventHandler("onResourceStart", resourceRoot, function()
sendSettingsToClient()
end)

addEventHandler("onPlayerJoin", root, function()
sendSettingsToClient(source)
end)
1 change: 1 addition & 0 deletions [gameplay]/gps/vehiclenodes.json

Large diffs are not rendered by default.

Loading
Loading