Browse docs
CrewLink Exports
CrewLink Exports for the Free Phone custom-app, billing and CrewLink integrations.
This page documents the supported public integration calls. Client exports must run in a client script and server exports must run in a server script. Internal NUI callbacks and net events are not public APIs.
Keep the resource folder named
sky_phone. Validate every returned success value and keep money,
permissions, ownership, and other authoritative changes on the server.CrewLink Exports
CrewLink read exports require a valid phone session. External ping mutations additionally require
the calling resource in Config.CrewLink.ExternalPingResources.
GetCrewLinkActiveGroup(source)
- Purpose: Returns the active CrewLink group of a player with an open, unlocked phone session.
- Arguments:
source(number): Player server ID.
- Returns:
table | nil.
server.lua
local group = exports["sky_phone"]:GetCrewLinkActiveGroup(source)
if group then
print(("Active CrewLink group: %s"):format(group.id))
end
GetCrewLinkGroupMembers(groupId)
- Purpose: Returns public member data for a CrewLink group.
- Arguments:
groupId(string): CrewLink group ID.
- Returns:
table— array of member records.
server.lua
local members = exports["sky_phone"]:GetCrewLinkGroupMembers(group_id)
for _, member in ipairs(members) do
print(member.id, member.username, member.role, member.joinedAt)
end
IsCrewLinkGroupMember(source, groupId)
- Purpose: Checks whether a player belongs to a CrewLink group.
- Arguments:
source(number): Player server ID.groupId(string): CrewLink group ID.
- Returns:
boolean.
server.lua
if exports["sky_phone"]:IsCrewLinkGroupMember(source, group_id) then
print("Player is a member of the group")
end
GetCrewLinkGroupRole(source, groupId)
- Purpose: Returns a player's role in a CrewLink group.
- Arguments:
source(number): Player server ID.groupId(string): CrewLink group ID.
- Returns:
string | nil.
server.lua
local role = exports["sky_phone"]:GetCrewLinkGroupRole(source, group_id)
if role == "owner" or role == "moderator" then
print("Player can manage this CrewLink group")
end
CreateCrewLinkPing(groupId, data)
- Purpose: Creates a shared external ping for a CrewLink group.
- Arguments:
groupId(string): Target group ID.data(table): Ping definition.type(string):meeting,danger,help,target, orinfo.label(string): Player-facing ping label.coords(table):{ x, y, z }world coordinates.lifetimeSeconds(number?): Requested lifetime within configured limits.
- Returns:
table | nil, string?— created ping or an error code.
server.lua
local ping, error_code = exports["sky_phone"]:CreateCrewLinkPing(
group_id,
{
type = "target",
label = "Mission target",
coords = {
x = 125.0,
y = -840.0,
z = 30.0,
},
lifetimeSeconds = 180,
}
)
if not ping then
print(("CrewLink ping failed: %s"):format(error_code))
end
RemoveCrewLinkPing(groupId, pingId)
- Purpose: Removes an external ping created by the calling resource.
- Arguments:
groupId(string): CrewLink group ID.pingId(string): Ping ID returned byCreateCrewLinkPing.
- Returns:
boolean.
server.lua
local removed = exports["sky_phone"]:RemoveCrewLinkPing(group_id, ping.id)
if not removed then
print("Ping does not exist or belongs to another resource")
end