> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qwacks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# العملات والمحافظ

> عرِّف العملات المكتسَبة والمدفوعة وتتبّع أرصدة اللاعبين.

export const Scope = ({children}) => <Info>
    <b>النطاق:</b> {children}
  </Info>;

**العملات** هي الوحدات التي يقوم عليها اقتصادك — قطع نقدية، أو جواهر، أو طاقة، أو أي شيء آخر.
وتُعرّف كل لعبة عملاتها الخاصة، ولكل لاعب **محفظة** تحمل أرصدته.

<Scope>تُعرَّف العملات لكل **لعبة**؛ ولكل لاعب محفظة تضمّ أرصدته.</Scope>

<Tabs>
  <Tab title="لوحة التحكم">
    عرِّف عملاتك من لوحة التحكم — العملة ليست سوى وحدة لها اسم، وأنت من يقرّر إن كانت تُكتسب أم
    تُشترى أم الاثنين معًا. ويمكنك أيضًا تفقّد محافظ اللاعبين من هنا.

    <Frame caption="عرِّف العملات وتفقّد محافظ اللاعبين من لوحة التحكم.">
      <img src="https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/images/guides/currencies.png?fit=max&auto=format&n=TGGmq_oWzDacAqHl&q=85&s=b49bc04ab4005152a82c6bd24e2be928" alt="العملات والمحافظ" width="1440" height="866" data-path="images/guides/currencies.png" />
    </Frame>
  </Tab>

  <Tab title="Unity">
    تُضيف `AddGameFundsAsync` رصيدًا إلى محفظة اللاعب المسجَّل دخوله. وتتولّى حزمة التطوير
    استنتاج قالب اللاعب الموسوم `currency` نيابةً عنك؛ ومزامنة المخططات تُضمّن معرّفه فيتخطّى
    الاستدعاء ذلك البحث. أما الأرصدة فتُقرأ كبيانات لاعب عادية — فالمحفظة *هي* صفّ ذلك القالب.

    ```csharp theme={null}
    // منح رصيد. يستنتج القالب الموسوم "currency" أثناء التشغيل.
    PlayerData wallet = await FlockClient.Instance.Commands.AddGameFundsAsync("gold", 500);

    // بعد Code Generation ← Sync Schemas، بعملة مُحدَّدة النوع:
    wallet = await FlockClient.Instance.Commands.AddGameFundsAsync(FlockFundId._100, 500);

    // اقرأ أرصدة اللاعب المسجَّل دخوله.
    PlayerData balances = await FlockClient.Instance.Player.GetMyDataByTagAsync("currency");
    ```

    **منح الأرصدة آمن ماليًا.** فالمنح يفشل بدل أن يُصفّ في طابور حين يتعذّر الوصول إلى الخادم،
    ولا يُعاد إرساله أبدًا بعد فشل غامض — إذ قد يعني انتهاء المهلة أن الرصيد أُضيف فعلًا، ولن
    تخاطر حزمة التطوير بإضافته مرتين. ولا يُعاد إلا ما لم يُعالَج قطعًا (408/429)، لذا غلِّف
    الاستدعاء بـ`try`/`catch` ودع اللاعب يعيد المحاولة عن قصد.

    <Note>
      أعضاء `FlockFundId` هي **معرّفات** العملات لا أسماؤها (ومن هنا `_100` — تُضاف شرطة سفلية
      في البداية حين يبدأ المعرّف برقم). فأسماء العملات لا توجد إلا في نقطة النهاية الإدارية في
      لوحة التحكم، وهي خارج متناول مفتاح حزمة التطوير.
    </Note>
  </Tab>

  <Tab title="Unreal">
    تُضيف `Flock Add Game Funds` رصيدًا إلى محفظة اللاعب المسجَّل دخوله. وتتكفّل حزمة التطوير
    بإيجاد القالب الموسوم بـ `currency`، ومزامنة المخطّط تُضمِّن معرّفه فيتخطّى الاستدعاء هذا
    البحث.

    ```cpp theme={null}
    Sdk->GetCommandProvider()->AddGameFunds(TEXT("coins"), 250, OnCredited);

    // After a sync, with a typed currency:
    FFlockGenerated::AddFunds(this, EFlockCurrencyId::Gold, 100, OnCredited);
    ```

    **عمليات المنح آمنة ماليًا.** فالمنح يفشل بدل أن يُصفّ في طابور حين يتعذّر الوصول إلى
    الخادم، ولا يُعاد إرساله أبدًا بعد فشل غامض — إذ قد يعني انتهاء المهلة أن الرصيد أُضيف فعلًا،
    ولن تخاطر حزمة التطوير بإضافته مرتين. واقرأ الأرصدة كما تقرأ أي بيانات لاعب عادية.
  </Tab>
</Tabs>

<Note>
  تخصم [عمليات الشراء من المتجر](/ar/guides/shops-and-inventory) من المحفظة المعنية تلقائيًا كجزء
  من المعاملة — فلا داعي لتعديل الأرصدة بيدك في أي عملية شراء اعتيادية.
</Note>
