JRS COREالوثائق
مرجع الـ API

JRS API

كائن getCoreApi() الأصلي في jrs_core

Warning

هذي الصفحة للمطورين اللي يسوون سكربتات لـ JRS Core.

الحصول على الـ API

getCoreApi يرجع جدول واحد فيه كل دوال الجهة اللي يشتغل فيها كودك. استدعيه مرة وحدة في أول الملف.

Note

مشترك (السيرفر والكلاينت لهم دوال مختلفة)

getCoreApi#
returntable

جدول الـ API. جداول السيرفر والكلاينت مختلفة.

lua
local JRS = exports.jrs_core:getCoreApi()

الشخصيات

Note

جهة السيرفر

GetCharacter#

يرجع الشخصية المحمّلة للاعب، أو nil إذا اللاعب ما اختار شخصية للحين.

sourcenumberrequired

رقم اللاعب (source).

returntable | nil

جدول الشخصية: identifier، charIdentifier، firstname، lastname، job، jobGrade، money، gold، dirtymoney، rol، xp.

lua
local character = JRS.GetCharacter(source)
if character then print(character.firstname, character.money) end
GetCharacterData#

نفس GetCharacter بس يرجع نسخة نظيفة فيها كمان group.

lua
local data = JRS.GetCharacterData(source)
GetCharacterName#
returnstring | nil

firstname lastname، أو اسم الستيم إذا الشخصية ما لها اسم.

lua
local name = JRS.GetCharacterName(source)
IsCharacterReady#

True لما اللاعب يخلص اختيار الشخصية. دوال الفلوس والايتمات والـ XP ترفض تشتغل قبل ما تصير true.

lua
if not JRS.IsCharacterReady(source) then return end
GetCharacterById#

يقرأ أي شخصية (متصلة أو لا) برقم الشخصية.

lua
local character = exports.jrs_core:GetCharacterById(charId)
FindCharactersByName#
lua
local rows = exports.jrs_core:FindCharactersByName('John', 'Marston')
SaveCharacter#

يجبر حفظ شخصية اللاعب في قاعدة البيانات.

lua
exports.jrs_core:SaveCharacter(source)

الفلوس

Note

جهة السيرفر

أنواع العملة: 0 = كاش، 1 = ذهب، 3 = فلوس وسخة.

AddMoney / RemoveMoney#
sourcenumberrequired

رقم اللاعب (source).

amountnumberrequired

المبلغ، لازم يكون أكبر من 0.

lua
JRS.AddMoney(source, 25)
JRS.RemoveMoney(source, 10)
AddGold / RemoveGold#
lua
JRS.AddGold(source, 1)
JRS.RemoveGold(source, 1)
AddDirtyMoney / RemoveDirtyMoney / GetDirtyMoney#
lua
JRS.AddDirtyMoney(source, 100)
JRS.RemoveDirtyMoney(source, 25)
local dirty = JRS.GetDirtyMoney(source)
addMoney / removeMoney#

الشكل العام مع نوع العملة.

sourcenumberrequired

رقم اللاعب (source).

currencynumberrequired

0 كاش، 1 ذهب، 3 وسخة.

quantitynumberrequired

المبلغ.

lua
JRS.addMoney(source, 0, 100)
JRS.removeMoney(source, 0, 50)
GetBalance#
lua
local balance = JRS.GetBalance(source)
AddReward#

يدفع مكافأة لعب. المبلغ يتضاعف حسب Config.Economy (RewardMultiplier، GoldMultiplier، MinReward) وحسب مزايا مستوى اللاعب. استخدمها للوظايف والمهام بدل AddMoney.

sourcenumberrequired

رقم اللاعب (source).

currencynumberrequired

0 كاش أو 1 ذهب.

amountnumberrequired

المبلغ الأساسي قبل المضاعفة.

reasonstring

السبب، ينستخدم في السجلات ومزايا رواتب الوظايف.

lua
JRS.AddReward(source, 0, 2.5, 'hunting_sale')
ScaleReward#

يرجع المبلغ بعد المضاعفة بدون ما يدفع شي.

lua
local pay = JRS.ScaleReward(10, 0)

الوظايف والمجموعات

Note

جهة السيرفر

setJob#
sourcenumberrequired

رقم اللاعب (source).

jobstringrequired

اسم الوظيفة.

gradenumberrequired

رتبة الوظيفة.

lua
JRS.setJob(source, 'police', 2)
Jobs.Get / Add / Remove / Switch#

دوال الوظايف المتعددة. أقصى عدد وظايف لكل لاعب هو MaxJobs في jrs_core/config/config.lua.

lua
local jobs = exports.jrs_core:GetJobs(source)
exports.jrs_core:AddJob(source, 'doctor', 0, 'Doctor')
exports.jrs_core:RemoveJob(source, 'doctor')
exports.jrs_core:SwitchJob(source, 'police')
SetDuty / ToggleDuty / GetDutyPlayers#
lua
exports.jrs_core:SetDuty(source, true)
exports.jrs_core:ToggleDuty(source)
local officers = exports.jrs_core:GetDutyPlayers('police')
GetGroup / SetGroup / IsAdmin#
lua
local group = JRS.GetGroup(source)
JRS.SetGroup(source, 'admin')
if exports.jrs_core:IsAdmin(source) then end

الـ XP والمستويات

Note

جهة السيرفر

مستوى الشخصية يوصل لـ 100. الـ XP لكل مستوى موجود في config/levels.lua.

AddXP / RemoveXP / SetXP / GetXP#
sourcenumberrequired

رقم اللاعب (source).

amountnumberrequired

كمية الـ XP.

reasonstring

السبب للسجلات.

lua
JRS.AddXP(source, 10, 'mission_reward')
local xp = JRS.GetXP(source)
GetLevel / SetLevel / AddLevel / RemoveLevel#
lua
local level = JRS.GetLevel(source)
JRS.SetLevel(source, 25, 'admin')
GetLevelData / GetTotalXpForLevel#
lua
local info = JRS.GetLevelData(totalXp)
local needed = JRS.GetTotalXpForLevel(30)
AddJobXP / GetJobLevel / GetJobXP / GetAllJobLevels#

كل وظيفة لها XP ومستوى خاص فيها.

lua
JRS.AddJobXP(source, 'mining', 15, 'ore')
local level = JRS.GetJobLevel(source, 'mining')
local all = JRS.GetAllJobLevels(source)
مزايا المستوى#

المزايا تعطي خصومات ومكافآت حسب المستوى. طبّقها في كود الدفع حقك:

lua
price = exports.jrs_core:ApplyShopDiscount(source, price)
sell  = exports.jrs_core:ApplySellBonus(source, sell)
tax   = exports.jrs_core:ApplyTaxReduction(source, tax)
local capacity = exports.jrs_core:GetCarryCapacity(source)

الايتمات (عن طريق jrs_inventory)

Note

جهة السيرفر

هذي الدوال المساعدة تستدعي jrs_inventory عنك وتفشل بأمان إذا ما كان شغّال.

AddItem / RemoveItem / GetItemCount / CanCarryItem#
lua
if JRS.CanCarryItem(source, 'bread', 2) then
    JRS.AddItem(source, 'bread', 2, {})
end
local count = JRS.GetItemCount(source, 'bread')
JRS.RemoveItem(source, 'bread', 1)
Inventory.Transaction#

يشغّل عدة عمليات على الايتمات دفعة وحدة: كلها تنجح أو ولا وحدة.

lua
local ok, reason = exports.jrs_inventory:InventoryTransaction(source, {
    { type = 'remove', item = 'wood', amount = 5 },
    { type = 'add', item = 'plank', amount = 2, metadata = {} },
}, { owner = 'sawmill' })
if not ok then print('transaction failed', reason) end

الإشعارات

أول معامل هو رقم اللاعب (source).

lua
JRS.NotifyRightTip(source, 'Reward received', 3000)
JRS.NotifyTip(source, 'Tip text', 3000)
JRS.NotifyLeft(source, 'Title', 'Subtitle', 'menu_textures', 'menu_icon_alert', 4000, 'COLOR_WHITE')
JRS.NotifyTop(source, 'Text', 'Location', 4000)
JRS.NotifyObjective(source, 'Objective text', 4000)
JRS.NotifySimpleTop(source, 'Title', 'Subtitle', 4000)
JRS.NotifyCenter(source, 'Text', 4000)
JRS.NotifyBottomRight(source, 'Text', 4000)
JRS.NotifyFail(source, 'Title', 'Subtitle', 4000)
JRS.NotifyUpdate(source, 'Title', 'Message', 4000)
JRS.NotifyWarning(source, 'Title', 'Message', 'Transaction_Feed_Sounds', 'Transaction_Positive', 4000)
lua
JRS.NotifyRightTip('Ready', 3000)
JRS.NotifyTip('Tip text', 3000)
JRS.Notify('Saved', 'success', 3000, 'Title')
JRS.Info('Information', 3000)
JRS.Success('Done', 3000)
JRS.WarningNotify('Careful', 3000)
JRS.ErrorNotify('Failed', 3000)

قائمة السيرفر متاحة كمان كـ exports، مثلاً exports.jrs_core:NotifyRightTip(source, text, ms).

الـ Callbacks (RPC)

الاستدعاءات محدودة (30 بالثانية لكل لاعب)، وحجم البيانات محدود بـ 64 KB، والاستدعاء ينتهي بعد 10 ثواني.

RegisterServerCallback#
lua
JRS.RegisterServerCallback('myscript:getPrice', function(source, item)
    return 12.5
end)
TriggerClientCallback#
lua
local result = JRS.TriggerClientCallback(source, 'myscript:getCoords')
Rpc#
lua
JRS.Rpc('myscript:getPrice', function(price)
    print(price)
end, 'bread')
RegisterClientCallback#
lua
JRS.RegisterClientCallback('myscript:getCoords', function()
    return GetEntityCoords(PlayerPedId())
end)

دوال مساعدة للكلاينت

Note

جهة الكلاينت

GetPlayerData / WaitForCharacterReady#
lua
JRS.WaitForCharacterReady()
local data = JRS.GetPlayerData()
TeleportToCoords / TeleportToWaypoint#
lua
JRS.TeleportToCoords(x, y, z, heading)
JRS.TeleportToWaypoint()
SetCustomDestination / RemoveCustomDestination#

يحط علامة وجهة ثلاثية الأبعاد.

lua
JRS.SetCustomDestination(vector3(0.0, 0.0, 0.0), 'Destination')
LoadModel / LoadAnimDict / LoadTextureDict#

دوال تحميل آمنة مع مهلة.

lua
JRS.LoadModel(`a_c_horse_arabian_white`)
JRS.LoadAnimDict('amb_camp@world_camp_fire_sit@male_a@base')
GetClosestPlayer / GetNearbyPlayers#
lua
local player, distance = JRS.GetClosestPlayer()
Input / Confirm#

يفتح نافذة الإدخال أو التأكيد بثيم السيرفر.

lua
local amount = JRS.InputAwait('Amount', 'How many?')
local ok = JRS.ConfirmAwait('Are you sure?')
JRS Core · فريمورك RedM مجاني ومفتوح المصدر · من فريق JRS