---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.4
alternate:
  - https://yandex.com.tr/dev/games/doc/en/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/hi/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/ko/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/ru/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/tr/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/vi/sdk/sdk-server-time.md
  - https://yandex.com.tr/dev/games/doc/zh/sdk/sdk-server-time.md
  - href: tr/sdk/sdk-server-time.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com.tr/dev/games/doc/tr/llms.txt

# Sunucu zamanı

<!-- source: tr/_includes/script-common.md -->
<!-- source: tr/_includes/script/index-js.md -->

<!-- endsource: tr/_includes/script/index-js.md -->

<!-- source: tr/_includes/script/requirements-js.md -->

<!-- endsource: tr/_includes/script/requirements-js.md -->

<!-- source: tr/_includes/script/image-modal-js.md -->

<!-- endsource: tr/_includes/script/image-modal-js.md -->
<!-- endsource: tr/_includes/script-common.md -->

Yandex Oyunlar SDK, sunucu ile senkronize edilmiş zamanı almanıza olanak tanır. Bu yöntem şunlar için yararlıdır:

- **Hile koruması**: Kullanıcılar, kendi cihazlarındaki zamanı değiştirerek oyun süreçlerine etki edemeyecekler.
- **Oyun etkinlikleri**: Bu temelde, güvenilir bir zaman kaynağı önemli olan aktiviteler ve ödüller ekleyebilirsiniz (örneğin: günlük veya haftalık bonuslar, mevsimlik etkinlikler ve görevler).

## ysdk.serverTime() {#server-time}

Bu yöntem, tüm cihazlarda aynı olan, milisaniye cinsinden `timestamp`, sunucu zamanını döndürür. Sonuç formatı `Date.now()`'a benzer, ancak sonuncusu, sunucu zamanından farklı olabilecek ve oyuncular tarafından hile yapmaya karşı korunmayan kullanıcının cihazının zamanını döndürür. `ysdk.serverTime()` yöntemi, cihazdaki sistem saatinin değiştirilmesine karşı dayanıklıdır ve bu nedenle daha güvenilirdir.

Aktüel zamanı her ihtiyaç duyduğunuzda bu yöntemi çağırın.

{% list tabs %}

- Await ile kullanım

  ```javascript showLineNumbers
  const ysdk = await YaGames.init();

  // Sunucu ile senkronize edilmiş zamanı ms cinsinden döndürür.
  ysdk.serverTime(); // Örneğin, 1720613073778.

  // Bir süre sonra tekrar çağır.
  ysdk.serverTime(); // Örneğin, 1720613132635.
  ```

- Bekleme olmadan seçenek

  ```javascript showLineNumbers
  YaGames.init().then(ysdk => {

    // Sunucu ile senkronize edilmiş zamanı döndürür.
    ysdk.serverTime(); // Örneğin, 1720613073778.

    // Zaman geçtikten sonra tekrar çağırın.
    ysdk.serverTime(); // Örneğin, 1720613132635.
  });
  ```

{% endlist %}

## Günlük ödüllerin uygulanması için örnekler {#reward-examples}

- Güvenilir sunucu saatini almak için `ysdk.serverTime()` kullanılır.
- Veriler, [player.setData()](https://yandex.com.tr/dev/games/doc/tr/sdk/sdk-player.md#ingame-data) ile saklanır.
- Ödülün tekrar alınmasına karşı koruma uygulanır.
- Zaman güvenli bir şekilde karşılaştırılır.

{% note warning %}

Örneklerdeki `giveReward()` fonksiyonu, oyuncuya ödül vermek için kendi gerçekleştireceğiniz bir fonksiyondur.

{% endnote %}

### Oyunu en son ziyaret ettikten 24 saat sonra ödül {#twenty-four-hours-reward}

```javascript showLineNumbers
YaGames.init().then(async ysdk => {
    // Oyuncunun başlatılması.
    const player = await ysdk.getPlayer();

    // Kayıtlı verileri alıyoruz.
    const data = await player.getData();

    // Güncel sunucu zamanı.
    const currentTime = ysdk.serverTime();

    // Son ödül alma zamanı (yoksa 0 kullanılır).
    const lastRewardTime = data.lastRewardTime || 0;

    // 24 saat milisaniye cinsinden.
    const DAY_IN_MS = 24 * 60 * 60 * 1000;

    if (currentTime - lastRewardTime >= DAY_IN_MS) {
        // 24 saatten fazla geçmiş — ödül verilebilir.
        await giveReward(); // Ödül verme fonksiyonunuz.

        // Yeni ödül alma zamanını kaydediyoruz.
        await player.setData({
            lastRewardTime: currentTime
        });
    }
});
```

### Ödül, her takvim günü yalnızca bir kez verilir (UTC'ye göre gece yarısında sıfırlanır) {#calendar-day-reward}

```javascript showLineNumbers
YaGames.init().then(async ysdk => {
    // Oyuncunun başlatılması.
    const player = await ysdk.getPlayer();

    // Kayıtlı verileri alıyoruz.
    const data = await player.getData();

    // Güncel sunucu zamanı.
    const currentTime = ysdk.serverTime();

    // Son ödül tarihini "YYYY-MM-DD" formatında alıyoruz.
    const lastRewardDate = data.lastRewardDate || '';

    // Mevcut tarihi "YYYY-MM-DD" formatında alıyoruz.
    const currentDate = new Date(currentTime).toISOString().split('T')[0];

    if (currentDate !== lastRewardDate) {
        // Bugün ödül henüz alınmadı.
        await giveReward(); // Ödül verme fonksiyonunuz.

        // Ödül alım tarihini kaydediyoruz.
        await player.setData({
            lastRewardDate: currentDate
        });
    }
});
```


---

<!-- source: tr/_includes/sdk-support.md -->
{% note info %}

Destek ekibi, hazır oyunu Yandex Oyun platformuna yerleştirmenize yardımcı olur. Geliştirme ve test etme konularındaki uygulamalı sorulara ise diğer geliştiriciler [Discord Topluluğu](https://discord.com/invite/wU4p3whr4T){.external} yanıt verir.

{% endnote %}

Yandex Games SDK kullanırken sorunla karşılaşırsanız veya sorunuz varsa, lütfen destek ekibiyle iletişime geçin:

<!-- source: tr/_includes/button-chat.md -->
<a href="https://yandex.com/chat/#/user/a4fa5c06-75db-9b38-6eea-b1673785f7d5">
  <span class="button">Sohbete yaz</span>
</a>
<!-- endsource: tr/_includes/button-chat.md -->
<!-- endsource: tr/_includes/sdk-support.md -->
