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

Agency-Notify: सूचनाएँ iOS जैसी लगनी चाहिए, 2014 के FiveM जैसी नहीं

Agency-Notify क्यों बनाया गया: क्योंकि ज़्यादातर FiveM सर्वरों पर सूचनाएँ अब भी ऐसी दिखती हैं मानो एक दशक पुरानी हों।

Agency Scripts

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

The Notification Ghetto

अधिकांश FiveM सर्वरों पर सूचनाएं अभी भी 2019 के डिफ़ॉल्ट ESX जैसी दिखती हैं। ऊपर एक बुनियादी रंगीन बार, शायद एक आइकन, एक पंक्ति का टेक्स्ट। खिलाड़ियों ने इन्हें नजरअंदाज करना सीख लिया है। यह महत्वपूर्ण जानकारी संप्रेषित करने के लिए एक विशाल व्यर्थ चैनल है।

आधुनिक सूचनाएं कैसी दिखती हैं

Agency-Notify में टोस्ट-स्टाइल नोटिफ़िकेशन हैं जो साफ़-सुथरे ढंग से एक के ऊपर एक आते हैं, रिच कंटेंट (आइकन, इमेज, कई लाइनों का टेक्स्ट, एक्शन बटन) को सपोर्ट करते हैं और स्पष्ट गंभीरता स्तरों के साथ अलग-अलग विज़ुअल ट्रीटमेंट देते हैं। सफलता, चेतावनी, त्रुटि, जानकारी, हर एक का अपना एनिमेशन, रंग और टाइपोग्राफ़ी वेट है।

स्पैम रोकने वाला समूह बनाना

यदि तीन समान सूचनाएँ जल्दी-जल्दी आती हैं, तो Agency-Notify उन्हें एक समूहित सूचना में समेट देता है। स्क्रीन पर तीन समान "आपने $500 प्राप्त किए" टोस्ट अब नहीं दिखेंगे। यह व्यवहार खिलाड़ी किसी भी आधुनिक ऐप से अपेक्षा करते हैं और यह अंततः FiveM में मौजूद है।

प्रोग्रामर-फ्रेंडली API

किसी भी स्क्रिप्ट से नोटिफिकेशन फायर करने के लिए एक फ़ंक्शन कॉल: exports['agency-notify']:Show({title, body, icon, level, duration, actions}). यह एक ID लौटाता है जिसका उपयोग आप बाद में नोटिफिकेशन को अपडेट या डिसमिस करने के लिए कर सकते हैं। बस इतना ही। कोई फ्रेमवर्क कूपलिंग नहीं, कोई मैजिक ग्लोबल्स नहीं।

स्टैंडअलोन के लिए एक कारण

Agency-Notify फ़्रेमवर्क से स्वतंत्र एक बिल्डिंग ब्लॉक है। आपके QBCore स्क्रिप्ट, ESX स्क्रिप्ट और standalone कस्टम कोड, सभी एक ही API कॉल करते हैं। इसी तरह आप अलग-अलग लेखकों की दर्जनों स्क्रिप्ट में सर्वर की विज़ुअल भाषा को एकसमान रखते हैं।

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

Agency-Notify चलाने में दस मिनट से कम समय लगता है। अपने Tebex लाइब्रेरी से रिसोर्स डाउनलोड करें, ड्रैग करें agency-notify फोल्डर को आपके सर्वर के रिसोर्सेज डायरेक्टरी में रखें, और जोड़ें ensure agency-notify आपके server.cfg. रिसोर्स का कोई डेटाबेस निर्भरता नहीं है, सभी नोटिफिकेशन स्थिति क्लाइंट-साइड मेमोरी में संभाली जाती है।

एक बार चलने के बाद, आपके सर्वर पर कोई भी स्क्रिप्ट तुरंत exports API को कॉल कर सकती है। नोटिफिकेशन शुरू करने के लिए कोई पोस्ट-इंस्टॉल कॉन्फ़िगरेशन आवश्यक नहीं है; डिफ़ॉल्ट सेटिंग्स बॉक्स से बाहर समझदार हैं।

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

खुला config.lua दृश्य और व्यवहार डिफ़ॉल्ट को अनुकूलित करने के लिए:

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

सभी सेटिंग्स एक एकल फ्लैट कॉन्फ़िग टेबल में रहती हैं, कोई नेस्टेड संरचनाएँ नहीं जिन्हें खोजना हो, कोई अलग क्लाइंट और सर्वर कॉन्फ़िग नहीं।

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

Agency-Notify 100% standalone है। इसमें कोई फ़्रेमवर्क इम्पोर्ट नहीं है, QBCore की कोई निर्भरता नहीं है, ESX की कोई निर्भरता नहीं है। इसका मतलब है:

  • यह किसी भी FiveM सर्वर पर काम करता है, चाहे आपका बेस फ्रेमवर्क कोई भी हो।
  • फ्रेमवर्क बदलने से आपकी नोटिफिकेशन कॉल्स प्रभावित नहीं होतीं।
  • हर लेखक की हर स्क्रिप्ट बिना यह जाने कि आप कौन सा फ्रेमवर्क चलाते हैं, एक ही API के माध्यम से सूचनाएं भेज सकती है।

यदि आप मौजूदा नोटिफिकेशन सिस्टम (ox_lib का notify, QBCore का QBNotify, आदि) को बदल रहे हैं, तो आप बस अपने स्क्रिप्ट में एक्सपोर्ट कॉल को अपडेट करें। सिग्नेचर सामान्य पैटर्न के काफी करीब है जिससे find-and-replace अधिकांश माइग्रेशन संभाल लेता है।

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

सूचनाएं सर्वर सिस्टम और खिलाड़ियों के बीच प्राथमिक प्रतिक्रिया चैनल हैं। जब कोई ड्रग डील पूरी होती है, जब कोई प्रतिद्वंद्वी गैंग आपके क्षेत्र में प्रवेश करता है, जब कोई एडमिन सभी को किसी इवेंट के बारे में सूचित करना चाहता है, तो यह सब सूचनाओं के माध्यम से चलता है। यदि वह चैनल पुराना दिखता है या नजरअंदाज किया जाता है, तो महत्वपूर्ण सर्वर संचार चुपचाप विफल हो जाता है।

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

तीव्रता स्तर (success, warning, error, info) एक दूसरा संकेत स्तर जोड़ते हैं। खिलाड़ी जल्दी सीख जाते हैं कि हरा अच्छा है, लाल का मतलब तुरंत कार्रवाई करें। वह रंग साक्षरता उच्च-कार्य स्थितियों में संज्ञानात्मक भार को कम करती है।

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

क्या मैं एक नोटिफिकेशन को दिखाने के बाद अपडेट या डिसमिस कर सकता हूँ?

हाँ। Show() export एक ID लौटाता है। उस ID को पास करें exports['agency-notify']:Update(id, {body, level}) सामग्री बदलने के लिए, या exports['agency-notify']:Dismiss(id) इसे जल्दी हटाने के लिए। यह प्रगति-शैली सूचनाओं के लिए उपयोगी है जो स्थिति बदलती हैं (जैसे, "प्रोसेसिंग…" → "डन")।

क्या यह ox_lib नोटिफिकेशन को बदलता है?

यह कर सकता है। Agency-Notify समान उपयोग मामलों को एक अलग दृश्य शैली के साथ कवर करता है। यदि आप अन्य Agency स्क्रिप्ट्स के साथ संगत ग्लासमॉर्फिज्म सौंदर्यशास्त्र चाहते हैं, तो स्वैप करना सरल है। यदि आपका सर्वर भारी रूप से ox_lib-इंटीग्रेटेड है और आप उस लुक से खुश हैं, तो नोटिफिकेशन के लिए ox_lib रखना ठीक है, कोई संघर्ष नहीं है।

क्या प्लेयर्स अपनी नोटिफिकेशन पोजीशन कस्टमाइज़ कर सकते हैं?

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

क्या स्क्रिप्ट्स से नोटिफिकेशन स्पैम रोकने के लिए कोई रेट लिमिट है?

ग्रुपिंग सिस्टम स्वचालित रूप से डुप्लीकेशन को संभालता है। हार्ड रेट लिमिटिंग के लिए सेट करें। Config.RateLimit = true और Config.RateLimitWindow = 1000 (ms) config.lua में। यह निर्धारित करता है कि कोई भी एकल स्क्रिप्ट इस विंडो के भीतर कितनी अनूठी सूचनाएं भेज सकती है।

आवश्यकताएँ

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

Agency-Notify की तुलना विकल्पों से

FiveM सूचना पारिस्थितिकी तंत्र में कई विकल्प हैं: ox_lib सूचनाएं, QBCore के अंतर्निहित सूचनाएं, और विभिन्न स्वतंत्र स्क्रिप्ट। यहाँ प्रत्येक का उपयोग समझदारी से किया जाता है:

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

QBCore का QBNotify कार्यात्मक लेकिन न्यूनतम है, कोई ग्रुपिंग नहीं, कोई अपडेट API नहीं, कोई एक्शन बटन नहीं। यह बुनियादी उपयोग के मामलों के लिए काम करता है और यदि आप पहले से QBCore पर हैं तो कोई अतिरिक्त लागत नहीं है। यदि आपको सरल टोस्ट से अधिक कुछ चाहिए, तो आपने इसे पार कर लिया है।

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

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

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

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

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