अनुमतियाँ और अवधि
Permissions & Duration
"Self" हमेशा खिलाड़ी के अपने शरीर को संदर्भित करता है। किसी अन्य खिलाड़ी पर लक्षित किसी भी चीज़ को किसी अन्य व्यक्ति को संपादित करने के रूप में माना जाता है, और इसके लिए कॉन्फ़िगर किए गए जॉब्स में से किसी एक या ACE की आवश्यकता होती है।
Who may examine another player
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Option | Default | Purpose |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
अन्य खिलाड़ियों को एनोटेट करने की अनुमति प्राप्त जॉब्स। खाली ({}) इसे पूरी तरह से अक्षम कर देता है। |
MinGrade |
0 |
उन जॉब्स के लिए न्यूनतम जॉब ग्रेड (0 = कोई भी ग्रेड)। |
UseAce |
false |
एडमिन के लिए, जॉब के बजाय ACE अनुमति को भी स्वीकार करें। |
Ace |
bupa.syncstatus |
UseAce चालू होने पर चेक किया जाने वाला ACE ऑब्जेक्ट। |
MaxDistance |
3.0 |
मीटर में, किसी की जाँच करने के लिए आपको कितनी करीब खड़े होना होगा। 0 चेक को अक्षम कर देता है। |
इनमें से प्रत्येक को सर्वर पर लागू किया जाता है, हर एक रीड, राइट और रिमूव पर — केवल पैनल खुलने पर ही नहीं।
Locked medic documentation
यह वह विकल्प है जो इस स्क्रिप्ट को उपयोग करने योग्य बनाता है।
| Option | Default | Effect |
|---|---|---|
LockStaffNotes |
true |
किसी मेडिक द्वारा किसी अन्य व्यक्ति पर लगाई गई एनोटेशन लॉक होती है। मरीज इसे हटा नहीं सकता; टाइमर समाप्त होने पर यह अपने आप गायब हो जाती है। |
AllowSelfRemove |
true |
क्या खिलाड़ी अपने ऊपर लगाई गई एनोटेशन को हटा सकते हैं? |
StaffCanRemoveLocked |
true |
क्या अधिकृत जॉब्स समय समाप्त होने से पहले लॉक किए गए नोट को हटा सकती हैं? वास्तव में अपरिवर्तनीय (immutable) दस्तावेज़ीकरण के लिए बंद करें। |
एक लॉक की गई एनोटेशन पैनल में "Locked by medic" के रूप में चिह्नित होती है। Clear all और /statusclear जानबूझकर लॉक किए गए नोट्स को रखते हैं: सर्वर केवल उन पंक्तियों (rows) को हटाता है जिन्हें कॉलर को हटाने की वास्तव में अनुमति है, और रिपोर्ट करता है कि वे कितनी थीं।
LockStaffNotes = true और StaffCanRemoveLocked = false के साथ, कोई भी मेडिक के नोट को नहीं हटा सकता — यहाँ तक कि उस मेडिक को भी अनुमति नहीं है जिसने इसे लिखा था। यह तभी गायब होगा जब इसका टाइमर समाप्त हो जाएगा, इसलिए इसे स्थायी अवधियों (permanent durations) के साथ युग्मित करने से बचें।
Duration
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minutes
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minutes; 0 = permanent
CleanupInterval = 60, -- seconds
}Presetsको पैनल में प्रति प्रविष्टि एक चिप के रूप में, मिनटों में रेंडर किया जाता है। सूची को छोटा रखें।Defaultवह चिप है जो किसी मेडिक द्वारा मरीज को एनोटेट करने पर पहले से चयनित (pre-selected) होती है। जिस अवधि को सर्वर पहचान नहीं पाता है, उसे चुपचाप इस मान से बदल दिया जाता है, ताकि छेड़छाड़ किया गया क्लाइंट अपना खुद का टाइमर न बना सके।AllowPermanentप्रीसेट के बगल में एक Permanent विकल्प जोड़ता है।SelfDefaultका उपयोग उन नोट्स के लिए किया जाता है जो खिलाड़ी अपने ऊपर लिखते हैं —0का मतलब स्थायी है।CleanupIntervalवह अंतराल है जिस पर सर्वर डेटाबेस से और सभी के स्टेटबैग से समाप्त हो चुकी पंक्तियों को साफ़ करता है। न्यूनतम लागू मूल्य 10 सेकंड है।
Enabled = false सेट करने से प्रत्येक एनोटेशन तब तक स्थायी हो जाती है जब तक कोई उसे हटा नहीं देता; अवधि पिकर पैनल से गायब हो जाता है और स्वीप थ्रेड कभी शुरू नहीं होता है।
Limits
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- seconds between writes
}टेक्स्ट को ट्रिम किया जाता है, <, > और ~ को हटाया जाता है, और संग्रहीत होने से पहले सर्वर पर MaxTextLength तक काट दिया जाता है, ताकि खिलाड़ी द्वारा टाइप किया गया कुछ भी रेंडरिंग को न तोड़ सके।
Reading annotations from another resource
local list = exports['bupa-syncstatus']:GetStatuses(source)उस खिलाड़ी के लिए कैश्ड सूची लौटाता है: id, bodypart, text, type, severity, locked, expires और remaining। वही सूची क्लाइंट-साइड पर स्टेटबैग से Player(serverId).state.bupaStatuses के रूप में पढ़ने योग्य है।