> ## Documentation Index
> Fetch the complete documentation index at: https://rust-co.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Yapılandırma

> config/config.lua içinde değiştirebileceğiniz her şey, sade bir dille.

Tüm ayarlar tek bir dosyadadır: `rco-gym/config/config.lua`. Herhangi bir metin düzenleyiciyle açın (Not Defteri yeterli, VS Code daha rahat).

> [!TIP]
>
> Yalnızca `=` işaretinden sonra geleni değiştirin. Tırnakları `'...'`, virgülleri ve parantezleri olduğu gibi bırakın. Kaydettikten sonra sunucuyu yeniden başlatın.

## Temel ayarlar

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Config.Locale` | Ekrandaki metinlerin dili: `'en'` veya `'pt-br'` | `'en'` |
| `Config.Framework` | `'auto'` bırakın. Script yanlış tahmin ederse `'rsg'` veya `'vorp'` yazın | `'auto'` |
| `Config.Debug` | Scriptin ne yaptığını kurulum için F8 konsoluna yazar. Oyunculara açmadan önce kapatın | `false` |
| `Config.UseDistance` | Oyuncunun tuşları görmek için alete ne kadar yakın (metre) durması gerektiği | `1.2` |
| `Config.ShowDistance` | Bir salonun ortasının bu mesafesi (metre) içinde o salonun aletleri yerleşir ve diğer oyuncuların antrenmanı görünür | `60.0` |

### Başka bir dil

`locales/en.json` dosyasını kopyalayın, her satırın sağındaki metni çevirin, örneğin `locales/tr.json` olarak kaydedin ve `Config.Locale = 'tr'` yapın. Çevirmediğiniz her şey İngilizce görünür.

## Salonlar

`Config.Gyms` sunucunuzdaki tüm salonların listesidir. Strawberry salonu 16 istasyonuyla ilk salon olarak hazır gelir. Haritada istediğiniz yere istediğiniz kadar salon ekleyebilir, her istasyonu ayrı ayrı yerleştirebilirsiniz.

```lua theme={"dark"}
Config.Gyms = {
    {   -- Strawberry salonu (hazır gelir)
        name = nil,
        blip = { coords = vector3(-1836.6, -407.0, 162.39), sprite = 'blip_shop_market_stall' },
        building = 'strawberry',
        stations = {
            { type = 'supino', coords = vector4(-1835.6349, -404.0478, 162.3875, -125.0) },  -- Bench press
            -- ... diğer 15 istasyon
        },
        board = vector4(-1836.59, -402.61, 162.39, 55.0),
    },
    {   -- kendi salonunuz
        name = 'Saint Denis Gymnasium',
        blip = { sprite = 'blip_shop_market_stall' },
        building = 'props',
        stations = {
            { type = 'supino', coords = vector4(x, y, z, heading) },
            { type = 'halteres', coords = vector4(x, y, z, heading) },
            { type = 'tapete', coords = vector4(x, y, z, heading) },
        },
        board = vector4(x, y, z, heading),
    },
}
```

| Ayar | Ne yapar |
| - | - |
| `name` | Salonun blip adı. `nil`: oyuncunun dilinde "Spor Salonu" |
| `blip` | `{ coords = vector3(...), sprite = '...' }`: blip'in yeri ve simgesi (oyunun blip adlarından biri). `coords` yoksa blip salonun ortasına konur. `false`: blip yok |
| `building` | `'strawberry'`: kaynakla gelen salon binası, aletler içinde hazır. `'props'`: aletleri script yerleştirir, katı olarak, istasyonları nereye koyarsanız oraya (açık havada, bir binada, başka bir MLO'da) |
| `stations` | İstasyonlar, her biri kendi `type` ve `coords` değeriyle |
| `board` | Rekor tahtası: oyuncunun okumak için durduğu yer, tahtaya dönük. Tahta 1 m önündeki duvara asılır. Bu satır yoksa tahta da yok |

### Salonu parça parça kurmak

1. Strawberry kaydını kopyalayın, kopyaya bir `name` verin ve `building = 'props'` yazın.
2. Yalnızca istediğiniz istasyonların satırlarını bırakın. Aynı istasyondan iki tane için satırı kopyalayın (iki sehpa: iki `supino` satırı).
3. Her istasyon için oyuncunun onu kullanacağı yerde, bakması gereken yöne dönük durun ve konumunuzu ve yönünüzü sunucunuzun zaten kullandığı koordinat aracıyla alın. `vector4(x, y, z, heading)` olarak yazın.
4. Sunucuyu yeniden başlatın.

Koordinatlar oyuncunun yerde ayakta dururkenki kendi konumudur: yaya olarak alın, at üstünde veya araçta değil.

### İstasyon türleri

| Tür | İstasyon | Gereken alan (metre, oyuncunun baktığı yönde genişlik × uzunluk) |
| - | - | - |
| `supino` | Bench press | 1,9 × 2,7, sehpa oyuncunun yerinin arkasında |
| `agachamento` | Squat sehpası | 1,9 × 1,6 |
| `halteres` | Dambıl rafı (curl ve press) | 3,7 × 1,3, raf 0,4 m önde |
| `tapete` | Minder (şınav, mekik, squat) | 1,1 × 1,9 |
| `barra_fixa` | Barfiks barı | 2,0 × 2,3, 2,6 m yüksek: tavan 2,7 m veya üstü |
| `paralelas` | Paralel bar | 0,9 × 2,5, 1,15 m yüksek |
| `escada` | Yatay merdiven | 1,5 × 3,2 (yerin 0,5 m arkasından 2,7 m önüne), 2,3 m yüksek: tavan 2,6 m |
| `argolas` | Halkalar | 1,2 × 1,2. Yerden 4,0 m yüksekteki bir noktadan sarkar |
| `corda` | Tırmanma halatı | 1,0 × 1,2. Halat yerden 4,0 m yüksekteki bir noktadan sarkar, tırmanış 3 m'ye ulaşır |
| `saco` | Kum torbası | 1,2 × 1,6. Yerden 4,0 m yüksekteki bir noktadan sarkar |
| `bola` | Hız topu | 1,0 × 1,3. Platformu oyuncunun 0,95 m önündeki bir duvara takılır (1,4 - 1,9 m yükseklikte) |
| `polias` | Kablolu makine (lat pulldown, kürek, göğüs) | 1,0 × 1,6, oyuncunun 0,75 m önünde ve arkasında iki kolon, 2,1 m yüksek |
| `barra_no_chao` | Yerdeki halter (clean and press, halterle curl) | 1,9 × 1,6 |
| `medicine_ball` | İkili sağlık topu | 0,8 × 4,0: partner 3 m önde yakalar |
| `corda_de_pular` | İp atlama | 1,4 × 1,5 |

> [!TIP]
>
> İstasyonlar arasında yaklaşık 0,7 m bırakın. Her egzersizin kendi kamerası istasyondan 1,5 - 3,5 m uzakta, çoğunlukla önde ve bir yanda durur: o yerdeki bir duvar kamerayı duvarın arkasına koyar. Halkalar, tırmanma halatı ve kum torbası yaklaşık 4 m yükseklikteki bir kirişin veya tavanın altında en iyi görünür.

> [!NOTE]
>
> Bir sehpa satırındaki `cam = 2`, sehpanın diğer taraftaki kamerasını kullanır. Strawberry salonunun ikinci sehpası bunu kullanır.

### Strawberry salonunu kaldırmak

`Config.Gyms` içindeki kaydını silin (veya yorum satırı yapın): istasyonları ve blip'i kaybolur. Strawberry binası kaynağın dosyalarıyla gelir (`stream/mlo` ve `stream/placas` klasörleri) ve hiçbir ayar yüklenmesini durdurmaz. Evi oyunun orijinal hâline döndürmek için bu iki klasörü de silin.

## Tuşlar

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Config.ExerciseKeys` | Bir aletin sunduğu her egzersiz için sırayla bir tuş | **E**, **G**, **F** |
| `Config.RepKey` | Mini oyunların ana tuşu ve ağırlık seçiminde başlatma | **BOŞLUK** |
| `Config.GameKeys` | Mini oyunların diğer tuşları: sol, sağ, yukarı, aşağı. Sol ve sağ ayrıca ağırlığı seçer ve rekor tahtasının sayfalarını çevirir | **A**, **D**, **W**, **S** |
| `Config.LeaveKey` | Seti bitirir ve aletten çıkar; ağırlık seçimini ve rekor tahtasını kapatır | **X** |

> [!NOTE]
>
> Tuşlar harf olarak değil, oyunun kontrol hash'leri olarak yazılır (`0xCEFD9220` gibi): her tuşun hash'i [Tuşlar](https://rust-co.mintlify.site/tr/keys.md) sayfasındadır. Ağırlık seçiminde ve rekor tahtasında ok tuşları ve **Esc** de çalışır.

## Mini oyunlar

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Reps` | Bir setteki tekrar sayısı. Set bunlardan sonra kendiliğinden biter | `10` |
| `Ease` | Her zaman penceresi ve hedef bölge bununla çarpılır: `1.3` daha kolay, `0.8` daha zor | `1.0` |
| `Pause` | Sonucun bir sonraki turdan önce ekranda kaldığı saniye | `0.7` |
| `KeyLag` | Bir tuş basışının ekrana ulaşma süresi (saniye). Zamanlama bu kadar önce değerlendirilir | `0.035` |
| `HeavyLoad` | Oyuncunun maksimum ağırlığında pencereler bu oranda daralır (maksimum ağırlığın yarısından itibaren) | `0.2` (%20) |
| `Tired` | Kas grubu tamamen yorulduğunda pencereler bu oranda daralır | `0.15` (%15) |
| `LightLoad` | Hafif bir set (maksimum ağırlığın yarısı veya daha azı: ısınma) bu kadar kat daha kolaydır | `1.15` |

Hepsi `Config.Minigame = { ... }` içindedir.

## Güç

`Config.Progression = { ... }` içinde:

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `MaxLevel` | Her kas grubunun en yüksek seviyesi | `50` |
| `XpForMax` | Bir grubun en yüksek seviye için gereken deneyimi (o grubu yaklaşık 50 saat çalıştırmak) | `17500` |
| `Curve` | Her seviyenin bir öncekinden ne kadar zor olduğu. `1` = tüm seviyeler aynı | `1.5` |
| `XpPerRep` | İyi bir ağırlıkla yapılan iyi bir tekrarın deneyimi | `1.0` |
| `SecondaryShare` | Egzersizin diğer gruplarının aldığı pay | `0.33` |
| `PartnerShare` | Yardımcının veya sağlık topu partnerinin, antrenman yapanın her iyi tekrarı için aldığı pay | `0.5` |
| `RecordXp` | Bir egzersizde kendi rekorunu kırma bonusu | `25` |
| `MinRepGap` | Saniye: bundan hızlı tekrarlar sayılmaz | `1.2` |
| `MinReps` | Bir setin sayılması için gereken iyi tekrar. Daha azıyla bırakılan set hiçbir şey vermez: ne deneyim, ne rekor, ne yorgunluk | `5` |
| `EasyShare` | Daha kolay egzersizlerin deneyim payı (`1` = tamamı): yatay merdiven (`escada`, bir geçiş 8 tekrar değerindedir, yani 2) ve halata tırmanma (`corda`) | `{ escada = 0.25, corda = 0.5 }` |

### Unvanlar

`Config.Titles = { 5, 30, 70, 120, 180, 230 }`: beş grubun seviyelerinin toplamı (5 ile 250 arası), her dönem unvanının başladığı değer. Adları locale dosyalarındadır (`title_1` … `title_6`): Weakling, Beginner, Amateur athlete, Athlete, Strongman / Strongwoman, Champion.

## Yorgunluk, her gün antrenman ve yardımcı

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Config.Fatigue.PerRep` | İyi bir tekrarın ana gruba eklediği yorgunluk (0–100). Yaklaşık 7 set x 10 tekrar onu tüketir | `1.5` |
| `Config.Fatigue.RestHours` | Tamamen yorgun bir grubun tamamen dinlenmesi için gereken saat | `24` |
| `Config.Fatigue.TiredShare` | Tamamen yorgun bir grubun yine de aldığı deneyim. `1` = yorgunluk önemsiz | `0.25` |
| `Config.Fatigue.StaminaPerRep` | Her iyi tekrarın harcadığı oyunun kendi staminası: setten sonra oyuncu koşarken daha çabuk yorulur. `0` = kapalı | `4.0` |
| `Config.Streak.PerDay` | En az bir setle geçen her ardışık gün için ek deneyim | `0.03` (%3) |
| `Config.Streak.MaxDays` | Bonusun artmayı bıraktığı ardışık gün (6. gün: +%15) | `6` |
| `Config.Spotter.Save` | Sehpadaki oyuncu bir tekrarı kaçırınca, yardımcının tuşuna basıp onu kurtarmak için kısa bir süresi olur | `true` |

## Isınma ve sakatlıklar

`Config.Injury = { ... }` içinde. `WarmupReps` iyi tekrardan oluşan hafif bir set (maksimum ağırlığın yarısı veya daha azı ya da ağırlıksız bir egzersiz) oyuncuyu `WarmupMinutes` boyunca ısıtır. Isınmadan ağır yükle kaçırılan bir tekrar kas grubunu zorlayabilir: set biter ve o grup `StrainHours` boyunca çalıştırılamaz.

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Enabled` | `false` ısınmayı ve sakatlıkları kapatır | `true` |
| `WarmupReps` | Isıtan hafif setin iyi tekrar sayısı | `5` |
| `WarmupMinutes` | Isınmanın ne kadar sürdüğü | `20` |
| `HeavyShare` | Maksimum ağırlığın bu oranı veya fazlası ağır sayılır | `0.85` (%85) |
| `Chance` | Isınmadan kaçırılan ağır bir tekrarın grubu zorlama ihtimali | `0.35` (%35) |
| `StrainHours` | Zorlanan grubun çalıştırılamayacağı saat | `6` |

## Ağırlıklar

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Config.WeightUnit` | Ağırlıkların nasıl gösterileceği: `'lb'` veya `'kg'` | `'lb'` |
| `Config.BarWeight` | Boş halter. 5, 10 ve 15 lb'lik plakalar ona çift olarak takılır | `20` |

`Config.MaxLoad`, ekipmanlı her egzersizin maksimum ağırlığını pound cinsinden belirler: ilk sayı 1. seviyede, ikincisi en yüksek seviyede. Oyuncunun maksimum ağırlığı, egzersizin ana grubunun seviyesiyle bu ikisi arasında büyür.

| Config'deki adı | Egzersiz | Varsayılan |
| - | - | - |
| `supino` | Bench press | `{ 40, 220 }` |
| `agacha` | Halterle squat | `{ 40, 260 }` |
| `dbarra` | Silkme ve itme | `{ 30, 150 }` |
| `rosca_barra` | Halterle biceps curl | `{ 30, 110 }` |
| `rosca` | Dambılla biceps curl (rafta 5, 10, 15, 20, 25, 30, 40 ve 50 lb var) | `{ 5, 50 }` |
| `desenv` | Dambılla omuz press | `{ 5, 40 }` |
| `puxada` | Lat pulldown (ağırlık yığını 10 lb'lik adımlarla gider) | `{ 30, 150 }` |
| `remada` | Kablolu row | `{ 30, 150 }` |
| `peito` | Kablolu göğüs press | `{ 20, 100 }` |

## Vücuttaki kas

`Config.Muscle = { ... }` içinde. Görünüm editörün olarak kalır: salon, editör vücudu her giydirdiğinde kası üzerine ekler ve editörün kaydettiği şeyi asla değiştirmez.

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Enabled` | `false`: güç yine artar, vücut değişmez | `true` |
| `GrowthPerDay` | Vücudun bir günde büyüyebileceği (veya küçülebileceği) tam boyut oranı: oyuncu önce güçlenir, vücut arkasından gelir | `0.2` |
| `Male` / `Female` | Her bölgenin en yüksek seviyede ne kadar büyüdüğü (`arms`, `shoulders`, `backWidth`, `back`, `chest`, `thighs`, `calves`; vücut kaydırıcıları -1 ile 1 arası) | dosyaya bakın |
| `Decay` | `GraceDays` boyunca çalıştırılmayan bir grup her gün deneyim kaybeder, sıfıra kadar, ve vücut oyuncunun yarattığına döner | `true` |
| `GraceDays` | Bir grubun küçülmeye başlamadan dinlenebileceği gün | `7` |
| `DecayPerDay` | Mühlet günlerinden sonra grubun en iyi seviyesinden günlük kaybedilen oran (`0.02`: 50 günde tamamı) | `0.02` |
| `Pump` | Setten hemen sonra çalışılan grup, tam boyutunun bu oranı kadar fazlasını gösterir | `0.25` |
| `PumpMinutes` | Şişkinliğin geçmesi için gereken dakika | `30` |

## Salonun dışında

`Config.Benefits = { ... }` içinde. Her biri `0` ile kapatılır.

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Melee` | Kolların, göğsün ve omuzların en yüksek seviyesinde yumruk ve yakın dövüş silahlarıyla ek hasar | `0.4` (+%40) |
| `StaminaRanks` | Dayanıklılığın en yüksek seviyesinde oyunun kendi staminasına eklediği rank (dayanıklılık halat tırmanma, ip atlama, torbalar ve sağlık topundan gelir) | `3` |

## Sesler

| Ayar | Ne yapar | Varsayılan |
| - | - | - |
| `Config.Sound.Volume` | Yakındaki herkesin duyduğu aletler. `0` = kapalı | `0.8` |
| `Config.Sound.UI` | Mini oyunun tıkırtıları ve set sonundaki zil, yalnızca antrenman yapan için. `0` = kapalı | `0.5` |
| `Config.Sound.Range` | Aletlerin duyulabildiği metre | `20.0` |

## Geliştiriciler için

Başka bir kaynak, sunucuda bir oyuncunun seviyelerini okuyabilir; örneğin güçlü karakterlerin daha fazla taşımasını sağlamak için:

```lua theme={"dark"}
local levels = exports['rco-gym']:GetLevels(source)
-- { chest = 12, back = 9, shoulders = 10, arms = 15, legs = 8, wind = 4 }, veya oyuncunun yüklü karakteri yoksa nil
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.