ब्लॉग पर वापस
Scripts6 मिनट पढ़ें

Agency-ProgressBar: इंटरफ़ेस की वह बारीकी जो हर स्क्रिप्ट को बेहतर बनाती है

जानें कि प्रगति पट्टी की बारीकियाँ क्यों आपकी सोच से ज़्यादा मायने रखती हैं, और Agency-ProgressBar उन पहलुओं को कैसे सँभालता है जिन्हें दूसरी स्क्रिप्ट अनदेखा करती हैं।

Agency Scripts

Agency Scripts के संस्थापक और प्रमुख डेवलपर

एक छोटा स्क्रिप्ट, एक बड़ा प्रभाव

प्रोग्रेस बार FiveM में हर जगह दिखते हैं, लॉकपिकिंग, मरम्मत, पैसे धोना, खनन, मेडिकल सहायता। डिफ़ॉल्ट इम्प्लीमेंटेशन कार्यात्मक लेकिन सपाट होते हैं। Agency-ProgressBar हमारी समझ है कि जब कोई विवरणों की परवाह करता है तो यह उपयोगिता कैसी महसूस होनी चाहिए।

अच्छे प्रोग्रेस बार की संरचना

एक अच्छा प्रगति बार चार चीजें एक साथ संप्रेषित करता है: कौन सी क्रिया हो रही है, आप कितनी दूर हैं, कितना समय बचा है, और क्या आप रद्द कर सकते हैं। अधिकांश कार्यान्वयन केवल पहली दो को संभालते हैं। Agency-ProgressBar सभी चार दिखाता है, सूक्ष्म एनीमेशन के साथ जो प्रगति को चिकना महसूस कराते हैं न कि खुरदरा।

रद्दीकरण जो काम करता है

प्लेयर-प्रेरित रद्दीकरण एक संक्षिप्त फीका-आउट एनीमेशन ट्रिगर करता है जो 300ms में बार की अपारदर्शिता को शून्य पर वापस लाता है। कोई अचानक गायब होना नहीं। डेवलपर्स एक रद्दीकरण कॉलबैक पंजीकृत कर सकते हैं ताकि स्क्रिप्ट्स सही ढंग से साफ़ हो सकें जब खिलाड़ी किसी क्रिया के बीच में हट जाते हैं।

संदर्भ स्थिति

बार संबंधित ऑन-स्क्रीन तत्व के पास दिखाई देता है, स्व-लक्षित क्रियाओं के लिए आपके सिर के ऊपर, इंटरैक्टिव क्रियाओं के लिए लक्ष्य NPC के ऊपर। अब स्क्रीन के नीचे से क्रिया स्थिति पढ़ने की जरूरत नहीं जब कुछ ऊपर हो रहा हो। यह संदर्भित स्थिति एक सूक्ष्म UX सुधार है जिसे खिलाड़ी महसूस करते हैं लेकिन नाम नहीं दे पाते।

निर्यात पैटर्न

हमारे सभी उपयोगिता स्क्रिप्ट की तरह, Agency-ProgressBar एक सरल एक्सपोर्ट API प्रदान करता है: exports['agency-progressbar']:Play({label, duration, canCancel, onCancel, onDone}). इसे मिनटों में किसी भी स्क्रिप्ट में डालें। यह Agency-Notify, Agency-Hud, और हमारे बाकी इकोसिस्टम के साथ बिना किसी विशेष कॉन्फ़िगरेशन के संयोजित होता है।

इंस्टॉलेशन & सेटअप

Agency-ProgressBar एक ड्रॉप-इन यूटिलिटी है, जिसे डेटाबेस की कोई निर्भरता नहीं है। Tebex से डाउनलोड करें, फ़ोल्डर को अपनी resources डायरेक्टरी में डालें, और जोड़ें ensure agency-progressbar को server.cfg. बस इतना ही। रिसोर्स तुरंत काम करना शुरू कर देता है और कोई भी स्क्रिप्ट अगले पुनःप्रारंभ पर exports API को कॉल कर सकता है।

यदि आप मौजूदा प्रोग्रेस बार (ox_lib का progressBar, qb-progressbar, आदि) को बदल रहे हैं, तो एक्सपोर्ट कॉल नाम पर find-and-replace कुछ ही मिनटों में अधिकांश माइग्रेशन संभालता है। पैरामीटर संरचना जानबूझकर सामान्य समुदाय पैटर्न के करीब है।

कॉन्फ़िगरेशन विकल्प

खुला config.lua डिफ़ॉल्ट समायोजित करने के लिए:

  • डिफ़ॉल्ट स्थिति , खिलाड़ी के सिर के ऊपर (डिफ़ॉल्ट) या फिक्स्ड नीचे-केंद्र।
  • कलर स्कीम", भरने का रंग ग्रेडिएंट। एकल रंग, दो-स्टॉप ग्रेडिएंट, या गंभीरता-मैप्ड (सामान्य के लिए हरा, धीमा के लिए नारंगी, गंभीर के लिए लाल) का समर्थन करता है।
  • कुंजी रद्द करें", जो कुंजी एक रद्द करने योग्य प्रगति बार को रद्द करती है। डिफ़ॉल्ट: बैकस्पेस।
  • एनिमेशन रद्द करें , फीका होना (डिफ़ॉल्ट), स्लाइड-आउट, या तुरंत गायब होना।
  • समय प्रदर्शन", शेष सेकंड दिखाएं (डिफ़ॉल्ट), प्रतिशत, या कोई नहीं।
  • न्यूनतम अवधि , इस सीमा से छोटे क्रियाएँ पूरी तरह से बार को छोड़ देती हैं। डिफ़ॉल्ट: 500ms।

फ्रेमवर्क संगतता

Agency-ProgressBar पूरी तरह standalone है और इसकी कोई फ़्रेमवर्क निर्भरता नहीं है। यह QBCore, ESX और कस्टम सर्वर सेटअप पर एक जैसा काम करता है। exports API ही इसका एकमात्र इंटीग्रेशन पॉइंट है, कोई साझा ग्लोबल्स नहीं, कोई फ़्रेमवर्क इवेंट नहीं, कोई परमिशन जाँच नहीं। इसे इंस्टॉल करें और किसी भी स्क्रिप्ट से कॉल करें, चाहे वह कहीं से भी आई हो।

क्यों यह रोलप्ले के लिए महत्वपूर्ण है

प्रोग्रेस बार एक UX प्रिमिटिव है जो दर्जनों गेमप्ले क्षणों में दिखाई देता है, जैसे लॉकपिकिंग, हैंडकफिंग, क्राफ्टिंग, हीलिंग, सबूत इकट्ठा करना, हैकिंग। जब ये बार अलग-अलग स्क्रिप्ट्स में असंगत दिखते हैं या व्यवहार करते हैं, तो यह सूक्ष्म दृश्य शोर पैदा करता है जो सर्वर की संगति को कमजोर करता है।

जब आपके सर्वर पर हर प्रोग्रेस बार Agency-ProgressBar का उपयोग करता है, तो दृश्य भाषा एकीकृत होती है। खिलाड़ी समझ विकसित करते हैं कि बार का क्या मतलब है और यह कैसे व्यवहार करता है। रद्द करने का व्यवहार सुसंगत होता है। टाइपोग्राफी आपके UI के बाकी हिस्सों से मेल खाती है। छोटी-छोटी बातें हैं, लेकिन ये मिलकर एक स्पष्ट रूप से अधिक परिष्कृत खिलाड़ी अनुभव बनाती हैं।

संदर्भ स्थिति उतनी महत्वपूर्ण है जितना यह लगता है। लॉकपिक के दौरान आपके चरित्र के सिर पर एक प्रगति बार आपकी ध्यान केंद्रित करता है कार्रवाई पर, न कि स्क्रीन के कोने पर। तनावपूर्ण क्षणों में, जैसे कि लॉक खोलते समय पीछा किया जाना, यह खिलाड़ियों को स्थानिक रूप से जागरूक रखता है जबकि बार दिखाई देता है।

अक्सर पूछे जाने वाले प्रश्न

क्या मैं एक साथ कई प्रोग्रेस बार चला सकता हूँ?

हाँ। प्रत्येक Play() कॉल एक ID लौटाता है और अपनी स्थिति का प्रबंधन करता है। कई बार खिलाड़ी के ऊपर समझदारी से जगह के साथ लंबवत स्टैक होते हैं। यह बहु-चरण कार्यों के लिए उपयोगी है जहाँ समानांतर कार्यों की प्रगति एक साथ दिखाई जानी चाहिए, हालांकि अधिकांश RP परिदृश्यों में एक बार में एक बार का उपयोग होता है।

मैं प्रगति बार को खिलाड़ी के बजाय प्रॉप या NPC से कैसे जोड़ूं?

पास करें target = {type = 'entity', id = entityNetId} विकल्प तालिका में फ़ील्ड। बार निर्दिष्ट इकाई के ऊपर तैरता है न कि खिलाड़ी के ऊपर। इसे मरम्मत क्रियाओं, घायल खिलाड़ियों पर चिकित्सा क्रियाओं, या किसी भी मामले में उपयोग करें जहां क्रिया का फोकस बाहरी हो।

क्या बार को सर्वर साइड से गैर-रद्द करने योग्य बनाया जा सकता है?

हाँ। सेट करें canCancel = false जब Play() कॉल किया जाता है। रद्द करने वाली कुंजी का कोई प्रभाव नहीं होता और कोई रद्द एनिमेशन नहीं चलता। यह सर्वर-प्रवर्तित क्रियाओं (गिरफ्तारी एनिमेशन, स्क्रिप्टेड कटसीन्स) के लिए उपयुक्त है जहाँ खिलाड़ी का व्यवधान प्रवाह को तोड़ सकता है।

क्या यह ox_lib एनिमेशन के साथ काम करता है?

हाँ। Agency-ProgressBar एनिमेशन-एग्नोस्टिक है, आप अपनी स्क्रिप्ट में प्रोग्रेस बार कॉल के साथ एनिमेशन संभालते हैं। बार केवल एक UI तत्व है। इसे किसी भी एनिमेशन लाइब्रेरी या कच्चे FiveM एनिमेशन कॉल के साथ स्वतंत्र रूप से जोड़ें।

आवश्यकताएँ

  • FiveM सर्वर (कोई भी फ्रेमवर्क या standalone)
  • cfx.re खाता जिसमें वैध Agency-ProgressBar लाइसेंस हो
  • कोई डेटाबेस निर्भरता नहीं
  • कोई बाहरी संसाधन निर्भरता नहीं

व्यावहारिक एकीकरण उदाहरण

यहाँ Agency-ProgressBar को मौजूदा स्क्रिप्ट्स के साथ एकीकृत करने के सामान्य पैटर्न हैं:

लॉकपिकिंग: कॉल करें Play({label = 'Picking lock...', duration = 8000, canCancel = true, onCancel = cleanupFunction}) लॉकपिक प्रयास की शुरुआत में। लॉकपिक मिनी-गेम के साथ समानांतर में चलाएं। यदि मिनी-गेम विफल होता है, तो लौटाए गए ID के साथ Dismiss() कॉल करें। यदि सफल होता है, तो बार को स्वाभाविक रूप से पूरा होने दें।

मेडिकल उपचार: उपयोग करें target = {type = 'entity', id = patientNetId} बार को मेडिक के ऊपर की बजाय मरीज के ऊपर एंकर करने के लिए। दृश्य देख रहे खिलाड़ी उपचार के बिंदु पर प्रगति होते हुए देखते हैं, न कि मेडिक के सिर के ऊपर तैरते हुए।

साक्ष्य संग्रह: सेट canCancel = false स्क्रिप्टेड सबूत संग्रह के लिए जिसे रद्द नहीं किया जाना चाहिए (ताकि खिलाड़ी फिंगरप्रिंट छोड़ने से बचने के लिए रद्द न कर सकें)। गैर-रद्द करने योग्य बार खिलाड़ी को बताता है कि यह क्रिया अनिवार्य है, वैकल्पिक नहीं।

सर्वर-साइड क्रियाएं: जब सर्वर-साइड क्रिया असिंक्रोनस रूप से चल रही हो तो क्लाइंट पर एक प्रगति बार चलाएं। जब सर्वर कॉलबैक लौटे, तो या तो बार को पूरा होने दें या सर्वर-साइड परिणाम के आधार पर इसे जल्दी समाप्त करें। दृश्य अवधि अपेक्षित सर्वर प्रसंस्करण समय के लगभग मेल खानी चाहिए।

मेल खाता स्क्रिप्ट

आपके सर्वर के लिए तैयार, अपडेट शामिल हैं।

शुरू करने के लिए तैयार?

हमारी शॉप से स्क्रिप्ट लें, या सपोर्ट, अपडेट और आगे आने वाली चीज़ों की झलक के लिए Discord से जुड़ें।