💻Copy of Exports (Server)
名前表示関連
名前の表示/非表示切り替え
プレイヤーの名前を表示
local isVisible = exports['cats-advanced-name']:switchVisibleName(source, true)
プレイヤーの名前を非表示
local isHidden = exports['cats-advanced-name']:switchVisibleName(source, false)
現在の状態を切り替え
local isToggled = exports['cats-advanced-name']:switchVisibleName(source)
キャラクター名の変更
名前と苗字を変更
local success = exports['cats-advanced-name']:changeName(source, '太郎', '山田')
if success then
print('名前の変更に成功しました')
end
名前ラベルの管理
ラベルを設定(名前の上に表示)
local success = exports['cats-advanced-name']:changeNameLabel(source, '警察署長')
ラベルを削除
exports['cats-advanced-name']:removeNameLabel(source)
現在の表示名取得
現在表示されている名前を取得(ニックネームまたは本名)
local displayName = exports['cats-advanced-name']:getDisplayName(source)
print('現在の表示名: ' .. displayName)
CitizenIDで表示名を取得(QBCore)
QBCoreのcitizenidを使用して表示名を取得
local displayName = exports['cats-advanced-name']:getDisplayNameByCitizenid('ABC12345')
print('プレイヤー名: ' .. displayName)
識別子で表示名を取得
プレイヤー識別子を使用して表示名を取得(QBCoreとESX両方対応)
local displayName = exports['cats-advanced-name']:getDisplayNameByIdentifier('license:1234567890abcdef')
print('プレイヤー名: ' .. displayName)
ニックネーム管理
ニックネームの追加
新しいニックネームを追加
local success = exports['cats-advanced-name']:addNickname(source, 'シャドウ')
if success then
print('ニックネームの追加に成功しました')
end
ニックネームリストの取得
保存されたニックネームのリストを取得
local nicknames = exports['cats-advanced-name']:getNicknames(source)
for i, nickname in ipairs(nicknames) do
print(i .. ': ' .. nickname)
end
マーク関連
マークの切り替え
特定のマークを切り替え(オン→オフ または オフ→オン)
local success = exports['cats-advanced-name']:toggleMark(source, 'police')
if success then
print('警察マークの切り替えに成功しました')
end
その他のマーク例
exports['cats-advanced-name']:toggleMark(source, 'ems') -- EMSマーク
exports['cats-advanced-name']:toggleMark(source, 'mechanic') -- メカニックマーク
exports['cats-advanced-name']:toggleMark(source, 'beginner') -- 初心者マーク
exports['cats-advanced-name']:toggleMark(source, 'vip') -- VIPマーク
プレイヤーのマークリスト取得
特定のプレイヤーのマークリストを取得
local playerMarks = exports['cats-advanced-name']:getPlayerMarks(source)
アクティブなマークを確認
for markId, isActive in pairs(playerMarks) do
if isActive then
print('アクティブなマーク: ' .. markId)
end
end
マークの状態確認
特定のマークがアクティブかどうかを確認
local isPolice = exports['cats-advanced-name']:isMarkActive(source, 'police')
if isPolice then
print('警察マークがアクティブです')
end
他のプレイヤーのマーク状態を確認
local hasEMS = exports['cats-advanced-name']:isMarkActive(12, 'ems') -- プレイヤーID 12
高度な使用例
完全なプレイヤー設定
-- 新しいVIPプレイヤーを設定
function SetupVIPPlayer(source)
-- 名前の表示状態を変更
exports['cats-advanced-name']:switchVisibleName(source, true)
-- VIPニックネームを追加
exports['cats-advanced-name']:addNickname(source, 'VIPメンバー')
exports['cats-advanced-name']:useNickname(source, 'VIPメンバー')
-- VIPラベルを設定
exports['cats-advanced-name']:changeNameLabel(source, '★ VIP ★')
-- VIPマークを追加
exports['cats-advanced-name']:toggleMark(source, 'vip')
print('プレイヤー ' .. source .. ' のVIP設定が完了しました')
end
動的ラベルシステム
-- 職業に基づいてラベルを自動更新
function UpdatePlayerLabel(source)
local label = ""
if Framework == 'qbcore' then
local Player = QBCore.Functions.GetPlayer(source)
if Player then
local job = Player.PlayerData.job
if job and job.name ~= "unemployed" then
label = "[" .. job.label .. "]"
end
end
elseif Framework == 'esx' then
local xPlayer = ESX.GetPlayerFromId(source)
if xPlayer then
local job = xPlayer.getJob()
if job and job.name ~= "unemployed" then
label = "[" .. job.label .. "]"
end
end
end
-- ラベルを適用または削除
if label ~= "" then
exports['cats-advanced-name']:changeNameLabel(source, label)
else
exports['cats-advanced-name']:removeNameLabel(source)
end
end
権限システム
-- マークに基づいてアクセスを確認
function HasAccess(source, requiredMark)
return exports['cats-advanced-name']:isMarkActive(source, requiredMark)
end
-- コマンドでの使用例
RegisterCommand('vipエリア', function(source, args, rawCommand)
if not HasAccess(source, 'vip') then
TriggerClientEvent('chat:addMessage', source, {
args = {"エラー", "VIPアクセスが必要です"}
})
return
end
-- VIPエリアのロジック
print('プレイヤー ' .. source .. ' がVIPエリアにアクセスしました')
end, false)
チャットシステム統合
-- 名前表示を使用した拡張チャット
RegisterNetEvent('chat:sendMessage', function(message)
local source = source
local playerName = exports['cats-advanced-name']:getDisplayName(source)
local color = "^7" -- デフォルト白色
-- マークに基づく色分け
if exports['cats-advanced-name']:isMarkActive(source, 'admin') then
color = "^1" -- 管理者は赤色
elseif exports['cats-advanced-name']:isMarkActive(source, 'vip') then
color = "^3" -- VIPは黄色
end
TriggerClientEvent('chat:addMessage', -1, {
args = {color .. playerName .. "^7", message}
})
end)
ログシステム
-- 表示名を使用してプレイヤーアクションをログ
function LogPlayerAction(source, action, details)
local playerName = exports['cats-advanced-name']:getDisplayName(source)
local timestamp = os.date("%Y-%m-%d %H:%M:%S")
local logMessage = string.format("[%s] %s: %s - %s",
timestamp,
playerName,
action,
details or ""
)
print(logMessage)
-- ここでファイルやデータベースに保存
end
-- 使用例
LogPlayerAction(source, "車両スポーン", "Adder")
LogPlayerAction(source, "送金", "$5000 を 山田太郎 に")
バッチ操作
-- 複数のプレイヤーに設定を適用
function SetupMultiplePlayers(playerList)
for _, playerData in ipairs(playerList) do
local source = playerData.source
-- 名前を設定
if playerData.firstname and playerData.lastname then
exports['cats-advanced-name']:changeName(source, playerData.firstname, playerData.lastname)
end
-- ラベルを設定
if playerData.label then
exports['cats-advanced-name']:changeNameLabel(source, playerData.label)
end
-- マークを設定
if playerData.marks then
for _, markId in ipairs(playerData.marks) do
exports['cats-advanced-name']:toggleMark(source, markId)
end
end
print('プレイヤー ' .. source .. ' の設定が完了しました')
end
end
-- 使用例
local playersToSetup = {
{source = 1, firstname = "太郎", lastname = "山田", label = "[管理者]", marks = {"admin", "vip"}},
{source = 2, firstname = "花子", lastname = "佐藤", label = "[VIP]", marks = {"vip"}},
}
SetupMultiplePlayers(playersToSetup)
イベントハンドラー
-- プレイヤー参加時の自動設定
RegisterNetEvent('playerJoined', function()
local source = source
-- プレイヤー設定を読み込み
local playerName = exports['cats-advanced-name']:getDisplayName(source)
-- デフォルトの表示状態を設定
exports['cats-advanced-name']:switchVisibleName(source, true)
print('プレイヤーが参加しました: ' .. playerName)
end)
-- 切断時のクリーンアップ
RegisterNetEvent('playerDropped', function()
local source = source
local playerName = exports['cats-advanced-name']:getDisplayName(source)
print('プレイヤーが退出しました: ' .. playerName)
-- 追加のクリーンアップロジック
end)
管理者コマンド例
-- 管理者用の名前変更コマンド
RegisterCommand('名前変更', function(source, args, rawCommand)
if not IsPlayerAceAllowed(source, 'command.changename') then
TriggerClientEvent('chat:addMessage', source, {
args = {"エラー", "権限がありません"}
})
return
end
if #args < 3 then
TriggerClientEvent('chat:addMessage', source, {
args = {"使用法", "/名前変更 [プレイヤーID] [名前] [苗字]"}
})
return
end
local targetId = tonumber(args[1])
local firstname = args[2]
local lastname = args[3]
if not targetId or not GetPlayerName(targetId) then
TriggerClientEvent('chat:addMessage', source, {
args = {"エラー", "プレイヤーが見つかりません"}
})
return
end
local success = exports['cats-advanced-name']:changeName(targetId, firstname, lastname)
if success then
TriggerClientEvent('chat:addMessage', source, {
args = {"成功", "プレイヤー " .. targetId .. " の名前を変更しました"}
})
else
TriggerClientEvent('chat:addMessage', source, {
args = {"エラー", "名前の変更に失敗しました"}
})
end
end, true)
-- VIP設定コマンド
RegisterCommand('vip設定', function(source, args, rawCommand)
if not IsPlayerAceAllowed(source, 'command.setvip') then return end
if #args < 1 then
TriggerClientEvent('chat:addMessage', source, {
args = {"使用法", "/vip設定 [プレイヤーID]"}
})
return
end
local targetId = tonumber(args[1])
if not targetId or not GetPlayerName(targetId) then
TriggerClientEvent('chat:addMessage', source, {
args = {"エラー", "プレイヤーが見つかりません"}
})
return
end
-- VIP設定を適用
SetupVIPPlayer(targetId)
local playerName = exports['cats-advanced-name']:getDisplayName(targetId)
TriggerClientEvent('chat:addMessage', source, {
args = {"成功", playerName .. " をVIPに設定しました"}
})
end, true)
データベース統合例
-- プレイヤー統計の記録
function RecordPlayerStats(source, statType, value)
local playerName = exports['cats-advanced-name']:getDisplayName(source)
local identifier = GetPlayerIdentifier(source, 0)
-- データベースに統計を保存
MySQL.Async.execute('INSERT INTO player_stats (identifier, player_name, stat_type, value, timestamp) VALUES (@identifier, @player_name, @stat_type, @value, NOW())', {
['@identifier'] = identifier,
['@player_name'] = playerName,
['@stat_type'] = statType,
['@value'] = value
})
print(string.format("統計記録: %s - %s: %s", playerName, statType, value))
end
-- 使用例
RecordPlayerStats(source, "車両購入", "Adder")
RecordPlayerStats(source, "銀行預金", 50000)
Last updated