Skip to content

الصلاحيات والمدة

الصلاحيات والمدة

كلمة "Self" تعني دائماً جسم اللاعب نفسه. أي شيء موجه نحو لاعب آخر يتم التعامل معه على أنه تعديل لشخص آخر، ويتطلب إحدى الوظائف المكوّنة أو صلاحية ACE.

من يُسمح له بفحص لاعب آخر

config.lua
Config.Permissions = {
    EditOthers = { 'ambulance', 'ems', 'doctor' },
    MinGrade   = 0,
    UseAce     = false,
    Ace        = 'bupa.syncstatus',
    MaxDistance = 3.0,

    LockStaffNotes       = true,
    AllowSelfRemove      = true,
    StaffCanRemoveLocked = true,
}
الخيار الافتراضي الغرض
EditOthers { 'ambulance', 'ems', 'doctor' } الوظائف المسموح لها بإضافة ملاحظات على اللاعبين الآخرين. القناة الفارغة ({}) تعطل هذه الميزة تماماً.
MinGrade 0 الحد الأدنى لرتبة الوظيفة لتلك الوظائف (0 = أي رتبة).
UseAce false قبول صلاحية ACE أيضاً بدلاً من الوظيفة، للمشرفين.
Ace bupa.syncstatus كائن ACE الذي يتم التحقق منه عند تفعيل UseAce.
MaxDistance 3.0 المسافة التي يجب أن تقف فيها لفحص شخص ما، بالمتر. 0 تعطل التحقق.

يتم فرض كل خيار من هذه الخيارات على السيرفر، في كل عملية قراءة وكتابة وإزالة — وليس فقط عند فتح اللوحة.

توثيق المسعفين المقفل

هذا هو الخيار الذي يجعل السكريبت يستحق الاستخدام.

الخيار الافتراضي التأثير
LockStaffNotes true الملاحظة التي يضعها المسعف على شخص آخر تكون مقفلة. لا يمكن للمريض حذفها؛ وتختفي تلقائياً عند انتهاء المؤقت.
AllowSelfRemove true هل يُسمح للاعبين بإزالة الملاحظات التي وضعوها لأنفسهم؟
StaffCanRemoveLocked true هل يجوز للوظائف المصرح لها إزالة ملاحظة مقفلة قبل انتهاء صلاحيتها؟ قم بإيقاف تشغيلها للتوثيق غير القابل للتغيير حقاً.

يتم تمييز الملاحظة المقفلة في اللوحة كـ "Locked by medic". تقوم أوامر Clear all و /statusclear بتعمد الاحتفاظ بالملاحظات المقفلة: يحذف السيرفر فقط الصفوف المسموح للمستدعي بإزالتها، ويبلغ عن عددها.

مع تفعيل LockStaffNotes = true وتعطيل StaffCanRemoveLocked = false، لا يمكن لأحد إزالة ملاحظة المسعف — ولا حتى المسعف الذي كتبها. ستختفي فقط عند انتهاء المؤقت الخاص بها، لذا تجنب إقران ذلك بمدد زمنية دائمة.

المدة

config.lua
Config.Duration = {
    Enabled         = true,
    Presets         = { 30, 60, 120, 180, 360, 720 },  -- دقائق
    Default         = 120,
    AllowPermanent  = true,
    SelfDefault     = 0,     -- دقائق؛ 0 = دائم
    CleanupInterval = 60,    -- ثوانٍ
}
  • تُعَرض Presets كزر واحد لكل إدخال في اللوحة، بالدقائق. حافظ على قصر القائمة.
  • Default هو الزر المحدد مسبقاً عندما يقوم المسعف بتدوين ملاحظة عن المريض. يتم استبدال أي مدة لا يتعرف عليها السيرفر بهذه القيمة صمتاً، حتى لا يتمكن العميل المتلاعب من اختراع مؤقته الخاص.
  • تضيف AllowPermanent خيار Permanent بجوار الإعدادات المسبقة.
  • تُستخدم SelfDefault للملاحظات التي يكتبها اللاعبون على أنفسهم — 0 تعني دائم.
  • CleanupInterval هو عدد المرات التي يقوم فيها السيرفر بمسح الصفوف منتهيّة الصلاحية من قاعدة البيانات ومن statebag الخاص بالجميع. الحد الأدنى المفروض للقيمة هو 10 ثوانٍ.

ضبط Enabled = false يجعل كل ملاحظة دائمة حتى يقوم شخص ما بإزالتها؛ يختفي محدد المدة من اللوحة ولا تبدأ عملية التنظيف أبداً.

الحدود

config.lua
Config.Limits = {
    MaxPerPlayer   = 4,
    MaxTextLength  = 48,
    class="hljs-literal">true,
    WriteCooldown  = 2,   -- ثوانٍ بين الكتابات
}

يتم تقليم النص، وإزالة الرموز <, >, و ~ منه، وتقليصه إلى MaxTextLength على السيرفر قبل تخزينه، بحيث لا يمكن لأي شيء يكتبه اللاعب أن يعطل العرض.

قراءة الملاحظات من مورد آخر

server
local list = exports['bupa-syncstatus']:GetStatuses(source)

يعيد القائمة المخزنة مؤقتاً لهذا اللاعب: id, bodypart, text, type, severity, locked, expires و remaining. نفس القائمة قابلة للقراءة من جانب العميل من statebag كـ Player(serverId).state.bupaStatuses.