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

FiveM डेथ और रिस्पॉन सिस्टम: रियलिस्टिक रिवाइव्स के लिए स्क्रिप्ट

एक परिष्कृत FiveM मृत्यु और पुनरुत्थान प्रणाली डिजाइन करें। ब्लीड-आउट टाइमर, EMS पुनर्जीवन, अस्पताल प्रवाह और QBCore और ESX के लिए सर्वश्रेष्ठ मृत्यु स्क्रिप्ट।

Agency Scripts

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

प्लेयर मौत का पता लगाना

मृत्यु और पुनरुत्थान प्रणाली किसी भी FiveM रोलप्ले सर्वर पर सबसे मौलिक मैकेनिक्स में से एक है, जो नियंत्रित करता है कि जब खिलाड़ी का स्वास्थ्य शून्य हो जाता है तो क्या होता है और वे गेमप्ले में कैसे लौटते हैं। GTA V की डिफ़ॉल्ट मृत्यु व्यवहार में एक संक्षिप्त सिनेमैटिक के बाद निकटतम अस्पताल में स्वचालित पुनरुत्थान शामिल है, जो पूरी तरह से रोलप्ले की डूबावट तोड़ता है। एक उचित प्रणाली बनाने के लिए, आपको game's डिफ़ॉल्ट हैंडलर के आने से पहले मृत्यु स्थिति को इंटरसेप्ट करना होगा। खिलाड़ी के स्वास्थ्य की हर फ्रेम निगरानी करें GetEntityHealth और जब यह मृत्यु सीमा तक गिरता है तो पता लगाएं, जो peds के लिए 0 है। जब मृत्यु का पता चलता है, तो तुरंत उपयोग करें NetworkResurrectLocalPlayer डिफ़ॉल्ट मृत्यु स्क्रीन के प्रकट होने से रोकने के लिए, फिर खिलाड़ी को ragdoll स्थिति में सेट करने के लिए SetPedToRagdoll अक्षम होने का अनुकरण करने के लिए। डिफ़ॉल्ट पुनःजीवन प्रणाली को कॉल करके अक्षम करें SetPlayerInvincible जब आप अपने कस्टम डेथ स्टेट हैंडलर में संक्रमण कर रहे हों तो अस्थायी रूप से। यह तरीका आपको मृत्यु अनुभव पर पूर्ण नियंत्रण देता है जबकि दृश्य यथार्थवाद बनाए रखता है।

Bleedout Timer सिस्टम

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

-- Client-side death state management
local isDead = false
local bleedoutTime = Config.BleedoutDuration -- seconds
local bleedoutTimer = 0
local lastStandUsed = false

CreateThread(function()
    while true do
        local ped = PlayerPedId()
        local health = GetEntityHealth(ped)

        if health <= 0 and not isDead then
            isDead = true
            bleedoutTimer = bleedoutTime
            lastStandUsed = false

            -- Prevent default death
            NetworkResurrectLocalPlayer(
                GetEntityCoords(ped), GetEntityHeading(ped),
                true, false
            )
            SetEntityHealth(ped, 1)
            SetEntityInvincible(ped, true)
            SetPedToRagdoll(ped, -1, -1, 0, false, false, false)
            ClearPedTasks(ped)

            -- Notify server
            TriggerServerEvent('death:playerDowned', GetEntityCoords(ped))

            -- Show death UI
            SendNUIMessage({ action = 'showDeathScreen', timer = bleedoutTimer })
        end

        if isDead then
            bleedoutTimer = bleedoutTimer - 1
            SendNUIMessage({ action = 'updateTimer', timer = bleedoutTimer })

            -- Disable controls while downed
            DisableControlAction(0, 22, true)  -- jump
            DisableControlAction(0, 24, true)  -- attack
            DisableControlAction(0, 25, true)  -- aim
            DisableControlAction(0, 75, true)  -- exit vehicle

            if bleedoutTimer <= 0 then
                -- Fully dead - offer respawn options
                SendNUIMessage({ action = 'showRespawnOptions' })
            end
        end

        Wait(isDead and 1000 or 500)
    end
end)

लास्ट स्टैंड मैकेनिक

Last stand मैकेनिक घायल खिलाड़ियों को वापस लड़ने या सुरक्षा की ओर रेंगने का संक्षिप्त अवसर देता है, जो मुकाबलों में एक रणनीतिक परत जोड़ता है। जब कोई खिलाड़ी पहली बार गिरता है, तो उन्हें एक बार सक्रिय करने का विकल्प दें जो उन्हें prone स्थिति में रखता है जहां वे 15-30 सेकंड के लिए कम सटीकता और गति के साथ साइडआर्म चला सकते हैं, फिर पूरी तरह गिर जाते हैं। इसे लागू करने के लिए खिलाड़ी को crawling एनीमेशन में रखें। TaskPlayAnim भूमि-आधारित एनिमेशन डिक्शनरी के साथ, फिर अस्थायी रूप से हथियार उपयोग को पुनः सक्षम करते हुए लेकिन इसे केवल पिस्तौल तक सीमित करते हुए। कैमरा हेरफेर का उपयोग करके भारी हथियार झुकाव प्रभाव लागू करें ताकि घातक रूप से घायल होने पर निशाना लगाने की कठिनाई का अनुकरण हो सके। अंतिम मुकाबला रक्तस्राव टाइमर को तेज़ी से खत्म कर देगा क्योंकि प्रयास रक्त हानि को बढ़ाता है। तनाव पैदा करने के लिए स्क्रीन डीसैचुरेशन, विगनेट प्रभाव और धीमे होने वाली दिल की धड़कन जैसी दृश्य संकेतक दिखाएं। यह यांत्रिकी केवल मृत्यु चक्र में एक बार उपलब्ध होनी चाहिए ताकि दुरुपयोग से बचा जा सके, और यदि खिलाड़ी को हेडशॉट से मारा गया हो, जो तुरंत अक्षम करने वाला घाव दर्शाता है, तो इसे पूरी तरह से अक्षम कर दिया जाना चाहिए।

EMS इंटरैक्शन और रिवाइवल

EMS पुनरुद्धार प्रणाली वह जगह है जहाँ मृत्यु यांत्रिकी डाउन खिलाड़ी और आपातकालीन चिकित्सा सेवाओं के बीच सार्थक भूमिका निभाने वाली बातचीत बनाती है। जब एक EMS खिलाड़ी डाउन खिलाड़ी के पास आता है, तो उन्हें एक इंटरैक्शन प्रॉम्प्ट दिखाई देना चाहिए जो उपचार अनुक्रम शुरू करता है। उपचार प्रक्रिया को यथार्थवादी समय लेना चाहिए, आमतौर पर 10-20 सेकंड, जिसके दौरान EMS खिलाड़ी एक चिकित्सा एनिमेशन करता है और खुद को हिलाने या बचाने में असमर्थ होता है, जिससे जोखिम पैदा होता है जो खतरनाक क्षेत्रों में आपातकालीन प्रतिक्रियाओं के दांव को बढ़ाता है। कई उपचार स्तर लागू करें: बुनियादी स्थिरीकरण जो रक्तस्राव टाइमर को रोकता है, उन्नत उपचार जो धीरे-धीरे स्वास्थ्य पुनर्स्थापित करता है, और पूर्ण पुनरुद्धार जो खिलाड़ी को आंशिक स्वास्थ्य के साथ खड़े होने की स्थिति में वापस लाता है। प्रत्येक स्तर के लिए EMS खिलाड़ी के इन्वेंटरी से विशिष्ट चिकित्सा आइटम आवश्यक हैं, जैसे स्थिरीकरण के लिए बैंडेज, उपचार के लिए मेडिकल किट, और पुनरुद्धार के लिए एड्रेनालिन। पुनरुद्धार के बाद, एक अस्थायी डिबफ लागू करें जहाँ खिलाड़ी की अधिकतम स्वास्थ्य और स्टैमिना कुछ मिनटों के लिए कम हो जाती है, जो लगभग मृत्यु से उबरने का प्रतिनिधित्व करता है और तुरंत लड़ाई में कूदने को हतोत्साहित करता है।

-- Server-side EMS revival handler
RegisterNetEvent('death:attemptRevive')
AddEventHandler('death:attemptRevive', function(targetId, treatmentType)
    local src = source
    local emsPed = GetPlayerPed(src)
    local targetPed = GetPlayerPed(targetId)

    if not emsPed or not targetPed then return end

    -- Check distance
    local emsCoords = GetEntityCoords(emsPed)
    local targetCoords = GetEntityCoords(targetPed)
    if #(emsCoords - targetCoords) > 3.0 then return end

    -- Check if EMS has required items
    local requiredItems = Config.TreatmentItems[treatmentType]
    for _, item in ipairs(requiredItems) do
        if exports.ox_inventory:Search(src, 'count', item.name) < item.count then
            TriggerClientEvent('ox_lib:notify', src, {
                title = 'Missing supplies',
                description = 'You need: ' .. item.label,
                type = 'error'
            })
            return
        end
    end

    -- Remove items and start treatment
    for _, item in ipairs(requiredItems) do
        exports.ox_inventory:RemoveItem(src, item.name, item.count)
    end

    -- Trigger animations on both players
    TriggerClientEvent('death:startTreatmentAnim', src, targetId)
    TriggerClientEvent('death:receivingTreatment', targetId, src, treatmentType)

    -- After treatment duration, revive
    SetTimeout(Config.TreatmentDurations[treatmentType], function()
        TriggerClientEvent('death:revived', targetId, treatmentType)
        TriggerClientEvent('death:treatmentComplete', src)
    end)
end)

अस्पताल पुनरुत्थान प्रणाली

जब ब्लीडआउट टाइमर EMS हस्तक्षेप के बिना समाप्त हो जाता है या खिलाड़ी हार मानने का विकल्प चुनता है, तो अस्पताल पुनःस्पॉन सिस्टम उन्हें गेमप्ले में वापस लाने का प्रबंधन करता है। खिलाड़ी को एक मृत्यु स्क्रीन NUI प्रस्तुत करें जिसमें दो विकल्प हों: EMS के लिए प्रतीक्षा करें जिसमें ड्यूटी पर निकटतम मेडिक्स का दृश्य संकेत हो, या शुल्क के लिए निकटतम अस्पताल में पुनःस्पॉन करें। अस्पताल पुनःस्पॉन तुरंत नहीं होना चाहिए। एक लोडिंग एनिमेशन या काले रंग में फीका संक्रमण लागू करें, फिर खिलाड़ी को अस्पताल के अंदर टेलीपोर्ट करें जिसमें जागने की बिस्तर एनिमेशन हो, उपयुक्त अस्पताल कक्ष और बिस्तर प्रॉप के साथ। चिकित्सा बिल खिलाड़ी की वर्तमान वित्तीय स्थिति के अनुसार स्केल होना चाहिए, जो नकद का प्रतिशत लेता है न कि एक फ्लैट शुल्क, जिससे अमीर खिलाड़ियों के लिए लागत मामूली न हो और नए खिलाड़ियों के लिए विनाशकारी न हो। अस्पताल पुनःस्पॉन के बाद, एक चोट कूलडाउन अवधि लागू करें जिसमें खिलाड़ी की क्षमताएं कम हों और वह अस्पताल की गाउन पहने हो इससे पहले कि वे कपड़े बदल सकें। मृत्यु की आवृत्ति को ट्रैक करें ताकि एक सौम्य दंड लागू किया जा सके जहाँ जो खिलाड़ी बहुत बार मरते हैं उन्हें बढ़ती पुनःस्पॉन लागत और लंबी पुनर्प्राप्ति अवधि का सामना करना पड़े, जो लापरवाह व्यवहार को हतोत्साहित करता है बिना मृत्यु को अत्यधिक दंडात्मक बनाए।

डेथ स्क्रीन UI डिज़ाइन

मृत्यु स्क्रीन वह प्राथमिक इंटरफ़ेस है जो खिलाड़ी अपने सबसे कमजोर गेमप्ले क्षण में देखते हैं, इसलिए इसे साफ़, सूचनात्मक, और वातावरणपूर्ण होना चाहिए। इसे एक NUI ओवरले के रूप में बनाएं जो खिलाड़ी के डाउन स्टेट में प्रवेश करते ही स्क्रीन का नियंत्रण लेता है। एक क्रमिक desaturation फ़िल्टर लागू करें जो गेम दुनिया से रंग हटा देता है, स्क्रीन के किनारों के चारों ओर एक सूक्ष्म लाल विगनेट जो दिल की धड़कन की लय के साथ पल्स करता है, और एक हल्का ब्लर प्रभाव जो ब्लीडआउट टाइमर के घटने के साथ तीव्र होता है। शेष ब्लीडआउट समय को स्क्रीन के केंद्र या शीर्ष पर एक प्रमुख काउंटडाउन के रूप में प्रदर्शित करें, साथ ही क्रिया संकेत: इन-गेम फोन के माध्यम से मदद के लिए E दबाएं, यदि उपलब्ध हो तो अंतिम स्टैंड सक्रिय करने के लिए G दबाएं, या अस्पताल में पुनरुत्थान के लिए X दबाकर हार मानें। EMS के मार्ग पर होने की सूचना दें जिसमें अनुमानित आगमन समय हो, और निकटवर्ती खिलाड़ियों के नाम और दूरी दिखाएं जो संभवतः मदद कर सकते हैं। UI को न्यूनतम रखें और तनावपूर्ण, डूबावपूर्ण क्षण के दौरान अनावश्यक जानकारी से स्क्रीन को भरने से बचें। UI तत्वों के फीका पड़ने और टाइमर के काउंटडाउन के लिए सूक्ष्म GSAP एनिमेशन का उपयोग करें ताकि दृश्य चमक बनी रहे।

चोट और पुनर्प्राप्ति प्रणाली

मृत्यु प्रणाली को एक चोट परत के साथ बढ़ाएं जो पुनर्जीवन के बाद बनी रहती है ताकि गहराई और परिणाम जोड़े जा सकें। जब कोई खिलाड़ी EMS द्वारा पुनर्जीवित होता है या अस्पताल में पुनःस्पॉन होता है, तो मृत्यु के कारण के आधार पर चोट प्रभाव असाइन करें। गोली लगने पर 15 मिनट के लिए गति 20% कम करने वाली लंगड़ाने वाली एनीमेशन होती है। वाहन दुर्घटना में 10 मिनट के लिए समय-समय पर स्क्रीन हिलाने वाला चक्कर आने वाला प्रभाव होता है। ऊंचाई से गिरने पर पैर की चोट होती है जो दौड़ने से रोकती है। डूबने पर खांसी की एनीमेशन और सहनशक्ति कम होती है। सक्रिय चोटों को खिलाड़ी की स्टेट बैग में संग्रहित करें ताकि वे स्क्रिप्ट पुनःआरंभ के बाद भी बनी रहें और अन्य खिलाड़ियों को दिखाई दें। एक चोट उपचार मार्ग बनाएं जहां खिलाड़ी डॉक्टर NPC या खिलाड़ी फार्मासिस्ट से दवा प्राप्त कर सकते हैं जो चोट प्रभाव की अवधि कम करती है। एक दर्द प्रणाली लागू करें जहां गंभीर चोटें कभी-कभी स्क्रीन झटके और दबे हुए कराहने की आवाज़ें उत्पन्न करती हैं जिन्हें आसपास के खिलाड़ी सुन सकते हैं, जिससे चिंतित नागरिक या शिकारी अपराधी हाल ही में घायल खिलाड़ियों की पहचान कर सकते हैं और बातचीत कर सकते हैं। चोट प्रणाली मृत्यु और पूर्ण पुनर्प्राप्ति के बीच की खाई को पाटती है, जिससे प्रत्येक मृत्यु एक बहु-चरणीय अनुभव बनती है जो रोलप्ले को बढ़ाती है न कि केवल एक क्षणिक असुविधा।

कॉन्फ़िगरेशन और एडमिन नियंत्रण

एक लचीली मृत्यु प्रणाली के लिए व्यापक कॉन्फ़िगरेशन विकल्प और प्रशासनिक उपकरण आवश्यक हैं। सर्वर मालिकों को एक कॉन्फ़िग फ़ाइल प्रदान करें जो हर समय पहलू को नियंत्रित करे: ब्लीडआउट अवधि, अंतिम स्टैंड अवधि और उपलब्धता, अस्पताल पुनरुत्थान लागत सूत्र, EMS उपचार अवधि प्रति स्तर, चोट प्रभाव अवधि प्रति प्रकार, और मौतों के बीच कूलडाउन इससे पहले कि बढ़ती सजा लागू हो। प्रशासनिक कमांड जोड़ें जो स्टाफ सदस्यों को तुरंत खिलाड़ी को पुनर्जीवित करने, प्रशासनिक उद्देश्यों के लिए खिलाड़ी को मारने, एक विशिष्ट खिलाड़ी के ब्लीडआउट टाइमर को समायोजित करने, सभी सक्रिय चोटों को साफ़ करने, और घटनाओं या प्रशासनिक स्थितियों के लिए गॉड मोड टॉगल करने की अनुमति दें। एक मृत्यु लॉग बनाएं जो हर खिलाड़ी की मृत्यु को टाइमस्टैम्प, स्थान निर्देशांक, मृत्यु का कारण, यदि लागू हो तो हत्यारे की पहचान, EMS की प्रतिक्रिया समय, और क्या खिलाड़ी को पुनर्जीवित या पुनःस्पॉन किया गया था, रिकॉर्ड करता है। इस लॉग को अपने प्रशासनिक पैनल के माध्यम से एक्सपोज़ करें ताकि स्टाफ संदिग्ध पैटर्न जैसे एक ही स्थान पर बार-बार मौतें जो स्पॉन कैंप को इंगित करती हैं, या असामान्य रूप से तेज पुनर्जीवन जो EMS दुरुपयोग का संकेत देती हैं, की जांच कर सके। मृत्यु प्रणाली ऐसी घटनाएँ उत्पन्न करनी चाहिए जिनमें अन्य स्क्रिप्ट हुक कर सकें, जिससे आपकी नौकरी प्रणाली ऑन-ड्यूटी EMS को पास के घायल खिलाड़ियों के बारे में सूचित कर सके और आपकी पुलिस प्रणाली बार-बार हिंसक मौतों वाले स्थानों को चिह्नित कर सके।

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

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