Eklenti Paylaşımı Fishing Plus | Bir Balıkçılık Eklentisinden Daha Fazlası!

why_shiro

Certified 3310 Enjoyer
Katılım
3 Haziran 2019
Mesajlar
281
Elmaslar
265
Puan
14.545
Yaş
24
Konum
Türkiye
Discord İzni
Minecraft
why_shiro
X
whyshiro_

Discord:

why_shiro

Minecraft Sürümleri
1.21.11
FishingPlus

Herkese selam arkadaşlar,

Sizlere üzerinde 9 aydır uğraştığım ve son haftalarda toparladığım, çoğu oyunda zevkli olan ancak Minecraft'ta çok üzerinde durulmamış balık tutma mekaniğini güzelleştiren eklentiyi paylaşıyorum. Eklenti tamamen ücretsizdir!

FishingPlus, Minecraft’ın vanilla balık tutma sistemini daha kapsamlı ve takip edilebilir bir balıkçılık deneyimine dönüştüren bir eklentidir. Balıklar yalnızca rastgele gelmez; biyom, saat, ay, yem, olta parçaları, aktif etkinlikler, boosterlar, totemler ve oyuncunun ilerlemesi gibi birçok sistem sonucu etkiler.

Eklenti; koleksiyon, market, üretim tesisleri, loncalar, turnuvalar, deniz etkinlikleri, başarımlar ve çok dilli arayüz desteğiyle balıkçılığı sunucuda tek başına bir yan aktivite olmaktan çıkarıp düzenli oynanabilecek bir sisteme dönüştürür.



Balık Tutma Sistemi

fish_catch.gif

FishingPlus, vanilla balık tutma akışını korurken arka planda daha detaylı bir RNG sistemi kullanır. Yakalanabilecek balık havuzu, oyuncunun bulunduğu şartlara göre dinamik olarak belirlenir.

Sunucu sahibi `fish.yml` üzerinden yeni balıklar ekleyebilir veya mevcut balıkları düzenleyebilir. Her balık için biyomlar, aylar, saat aralıkları, nadirlik, kategori, uzunluk/ağırlık aralığı, model ve dil çevirileri tanımlanabilir.

Bir balık yalnızca belirli biyomlarda, belirli aylarda veya belirli saatlerde çıkacak şekilde ayarlanabilir. Böylece her sunucu kendi balık ekosistemini oluşturabilir.

Balıkların uzunluk, ağırlık, class ve nadirlik değerleri vardır. Bu değerler market fiyatlarında, koleksiyon ilerlemesinde, turnuvalarda ve bazı mini oyun sonuçlarında kullanılabilir.



Olta ve Olta Parçaları

fish_rod.gif

rod_claim_and_parts.gif

Oyuncular kendi oltalarını geliştirebilir. Olta sistemi gövde, kanca ve misina gibi parçalardan oluşur. Her parça farklı istatistiklere katkı sağlayabilir.

Sunucu sahipleri olta parçalarını ilgili YML dosyalarından düzenleyebilir. Parçaların isimleri, açıklamaları, modelleri, nadirlikleri ve verdiği bonuslar değiştirilebilir.

Bu sistem sayesinde bir sunucu daha hızlı balık tutmaya odaklanan oltalar, nadir balık şansını artıran kancalar veya belirli kategori/türlere bonus veren parçalar tasarlayabilir.

Olta sahipliği, parça takma ve düzenleme işlemleri GUI üzerinden yapılır.



Balık Ansiklopedisi

fish_journal.gif

Journal sistemi oyuncuların keşfettiği ve henüz keşfetmediği balıkları takip etmesini sağlar. Oyuncular bir balığın hangi biyomlarda, hangi aylarda ve hangi saatlerde bulunabileceğini görebilir.

Keşfedilmemiş balıklar gizli tutulabilir. Sunucu ayarlarına göre oyuncuya yalnızca ipucu gösterilebilir veya belirli bilgiler gizlenebilir.

Journal menüleri `gui/journal.yml` üzerinden düzenlenebilir. Menü başlıkları, filtreler, ikonlar, lore satırları ve görünüm sunucu sahibinin istediği stile göre değiştirilebilir.



Fish Market

fish_market_per_fish.gif

Fish Market, yakalanan balıkların satılabildiği ana ekonomi sistemidir. Balık fiyatları yalnızca sabit bir sayı olmak zorunda değildir; nadirlik, class, tazelik, market çarpanları ve dinamik fiyat sistemiyle birlikte hesaplanabilir.

Sunucu sahibi market ekonomisini `settings.yml` ve ilgili market GUI dosyaları üzerinden düzenleyebilir. Nadirlik çarpanları, class etkileri, tazelik etkisi, maksimum fiyat değişimi ve market menülerinin görünümü yapılandırılabilir.

Keşfedilmemiş balıklar satılamaz. Böylece oyuncular önce balığı gerçekten yakalayıp koleksiyonlarına eklemek zorunda kalır. Bu kural hem tekli satışta hem toplu satışta uygulanır.



Dinamik Fiyat Sistemi

Fish Market, isteğe bağlı olarak dinamik fiyat mantığıyla çalışabilir. Oyun içi günler ilerledikçe balıkların tutulma yoğunluğuna göre fiyatlar değişebilir.

Çok fazla tutulan balıkların fiyatı düşebilir, daha az tutulan balıkların fiyatı artabilir. Maksimum fiyat değişim oranı config üzerinden belirlenebilir.

Bu sistem sunucu ekonomisini daha canlı hale getirir ve oyuncuları sürekli aynı balığı farm etmek yerine farklı biyomlara ve farklı türlere yönlendirir.



Toplu Satış

fish_bulk_sell.gif

Bulk Sell sistemi, oyuncunun envanterindeki satılabilir balıkları hızlıca satmasını sağlar. Sistem, market fiyat hesaplamasını kullanır ve keşfedilmemiş balıkları otomatik olarak satış dışında bırakır.

Toplu satış menüsü `gui/market.yml` üzerinden düzenlenebilir. Onay ekranı, toplam adet, toplam fiyat, iptal/kapat butonları ve bilgilendirme metinleri sunucu dil sistemine göre değiştirilebilir.



İşlenmiş Ürünler ve Ürün Marketi

fish_processed_market.gif

Balıklar yalnızca ham haliyle satılmak zorunda değildir. Sunucu sahipleri işlenmiş ürünler, özel malzemeler ve farklı ekonomi akışları oluşturabilir.

İşlenmiş ürünler ve malzemeler ilgili YML dosyalarından düzenlenebilir. Ürün isimleri, lore satırları, modelleri, değerleri ve kullanım alanları sunucuya göre değiştirilebilir.



Üretim Tesisleri

fish_facility_manuel.gif

fish_facility_automation.gif

Balık işleme tesisleri input, output, progress ve otomasyon mantığıyla çalışır. Oyuncular balıkları manuel olarak işleyebilir veya otomasyon sistemleriyle daha düzenli üretim akışı kurabilir.

Sunucu sahipleri `processing.yml` üzerinden tesisleri, tarifleri, işlem sürelerini, input/output itemlerini ve üretim sonuçlarını düzenleyebilir. Böylece basit bir balık pişirme sisteminden daha gelişmiş üretim zincirlerine kadar farklı yapılar kurulabilir.

Processing GUI metinleri ve ikonları `gui/processing.yml` üzerinden düzenlenebilir.



Balık Kovaları

fish_bucket.gif

Özel balık kovaları, yakalanan balıkları saklamak ve taşımak için kullanılabilir. Kova sisteminde kapasite, sahiplik, yerleştirme ve içerik takibi gibi mekanikler bulunabilir.

Sunucu ayarlarına göre kovalar dekoratif, depolama amaçlı veya balık yönetim sistemi olarak kullanılabilir. Kova menüleri ve mesajları dil dosyalarından düzenlenebilir.



Hotspot Sistemi

swift_hotspot.gif

double_hotspot.gif

magical_hotspot.gif

Hotspotlar, belirli bölgelerde geçici balıkçılık avantajları sağlayan alanlardır. Bir hotspot balık tutma hızını, çift yakalama ihtimalini, nadir balık şansını veya sunucunun belirlediği başka etkileri değiştirebilir.

Sunucu sahipleri hotspot türlerini, sürelerini, etki alanlarını, bonuslarını ve görsel/hologram ayarlarını `hotspots.yml` üzerinden düzenleyebilir.

Bu sistem, oyuncuların dünyada aktif olarak balıkçılık noktaları aramasını sağlar.



Boosterlar ve Totemler

fish_booster.gif

fish_totem.gif

Boosterlar oyuncuya geçici bonuslar sağlar. Totemler ise dünyaya yerleştirilen ve çevresindeki oyunculara etki eden alan bazlı destek sistemleridir.

Boosterlar `boosters.yml`, totemler ise `totems.yml` üzerinden düzenlenebilir. Süreleri, isimleri, modelleri, verdikleri bonuslar, nadirlikleri ve açıklamaları değiştirilebilir.

Bu sistemler balık tutma hızını, nadir balık şansını, özel yakalama ihtimalini veya benzeri istatistikleri etkileyebilir.



Başarımlar

fish_ach_gui.gif

achievment.gif

Achievement sistemi oyunculara balık tutma dışında takip edebilecekleri hedefler sunar. Keşif, yakalama, market, ilerleme veya özel koşullara bağlı başarımlar oluşturulabilir.

Sunucu sahipleri `achievements.yml` üzerinden başarımları, hedefleri, ödülleri, ikonları ve açıklamaları düzenleyebilir. Böylece her sunucu kendi ilerleme hedeflerini oluşturabilir.



Bounty Sistemi

fish_bounty.gif

Bounty sistemi belirli balıklar, miktarlar veya hedefler üzerinden oyunculara ekstra görevler sunar. Oyuncular bu hedeflere katkı sağlayarak ödül havuzundan pay alabilir.

Bounty görevleri `bounty_tasks.yml` üzerinden düzenlenebilir. Hedef balıklar, gerekli miktarlar, süreler, ödüller ve açıklamalar sunucu sahibinin belirlediği şekilde ayarlanabilir.



Profil ve Seviye Yolu

fish_profile_and_level_road.gif

Oyuncular kendi balıkçılık profillerinden toplam yakalamalarını, keşif durumlarını, seviye ilerlemelerini ve gelişim yolunu takip edebilir.

Profil ve level path ayarları `profile.yml` üzerinden düzenlenebilir. Seviye gereksinimleri, ödüller, görüntülenen istatistikler ve profil menüsü sunucuya göre yapılandırılabilir.



Lonca Sistemi

fish_lonca.gif

FishingPlus içinde balıkçılık odaklı lonca sistemi bulunur. Oyuncular lonca kurabilir, üyelerle birlikte ilerleyebilir, görevleri tamamlayabilir ve lonca içi yetkileri yönetebilir.

Lonca sisteminde roller, oyuncu bazlı yetkiler, lonca görevleri, üyeler, katkılar ve sıralamalar bulunur. Guild menüleri `gui/guilds.yml`, görev havuzu ise `guild_tasks.yml` üzerinden düzenlenebilir.

Sunucu sahibi tarih aralıklı özel lonca görevleri oluşturabilir veya belirli günlerde rastgele görevlerin seçilmesini sağlayabilir.



Turnuvalar

fish_tournament.gif

Turnuvalar, aktif balıkçılığı rekabetli hale getirir. En uzun balık, en kısa balık, en ağır balık, en hafif balık, en yüksek skor veya en çok balık gibi farklı modlar kullanılabilir.

Turnuva süreleri, ödülleri, minimum oyuncu sayısı, boss bar, duyuru aralıkları ve sıralama formatları `tournaments.yml` üzerinden düzenlenebilir.

Aktif turnuva süresi boss bar üzerinden takip edilebilir ve belirli aralıklarla ilk 3 sıralama duyurulur.



Dinamik Deniz Etkinlikleri

fish_event_example.gif

1779741208325.webp

Sea Events sistemi, dünyada geçici balıkçılık koşulları oluşturur. Etkinlikler farklı RNG etkileri, çevresel olaylar, yağmur, şimşek, mob spawnları, sesler ve partiküller gibi aksiyonlarla özelleştirilebilir.

Sunucu sahipleri `sea_events.yml` üzerinden etkinlikleri düzenleyebilir. Etkinlik adı, açıklaması, süresi, aktif etkileri ve GUI görünümü yapılandırılabilir.

NOT: Dinamik deniz etkinlikleri için daha gelişmiş script sistemi 1.0.6 güncellemesiyle genişletilecektir. Amaç, sunucu sahiplerinin kendi event fazlarını, seslerini, partiküllerini, mob spawnlarını ve özel koşullarını daha rahat yazabilmesidir.




Dil Desteği

fish_language_change.gif

FishingPlus çoklu dil desteğiyle gelir. Oyuncular kendi dillerini seçebilir ve menüleri, mesajları ve eklenti eşyalarını seçtikleri dile göre görebilir.

Sunucu sahipleri `messages/messages_en.yml`, `messages/messages_tr.yml`, `messages/messages_de.yml` ve ilgili GUI dosyaları üzerinden metinleri düzenleyebilir.

Balık, yem, olta parçası, booster, malzeme ve benzeri içeriklerde çeviri sistemi config içindeki `translations` alanlarıyla desteklenir. Eksik çeviri olduğunda fallback sistemi devreye girer.



ItemsAdder Desteği

FishingPlus, ItemsAdder ile özel model ve texture kullanımını destekler. Balıklar, yemler ve desteklenen diğer eşyalar `model` alanı üzerinden ItemsAdder itemlerine bağlanabilir.

Örnek kullanım:

Kod:
model:
  type: IA
  value: "fishing_expansion:trout"

Bu sayede sunucu sahipleri kendi resource pack içeriklerini FishingPlus sistemlerine bağlayabilir.





PAPI Placeholders

FishingPlus, PlaceholderAPI desteğiyle sunucu içi scoreboard, TAB, hologram, menü veya diğer eklentilerde balıkçılık verilerini gösterebilir.

Kullanılabilecek placeholder grupları:

- Oyuncu profili
- Aktif yem
- Balıkçılık zamanı
- Market verileri
- Turnuva bilgileri
- Lonca bilgileri
- Sea Event bilgileri
- Hotspot bilgileri
- Booster ve totem bilgileri

Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.



Script Yazma ve Deniz Etkinliklerine Bağlama

  • .fps uzantılı kendi scriptlerinizi yazabilir, deniz etkinliklerine bağlayabilir ve belirli zamanlarda etkinliklerin tetiklenmesini sağlayarak istediğiniz özellikleri eklentiye dahil edebilirsiniz.

1779872375902.webp
script_test2.gif

script_test.gif



Linkler

 

Ekli dosyalar

  • fish_catch.gif
    fish_catch.gif
    1,9 MB · Görüntüleme: 13
  • double_hotspot.gif
    double_hotspot.gif
    695,2 KB · Görüntüleme: 9
  • magical_hotspot.gif
    magical_hotspot.gif
    758 KB · Görüntüleme: 12
  • swift_hotspot.gif
    swift_hotspot.gif
    628,8 KB · Görüntüleme: 12
  • 1779734981405.webp
    1779734981405.webp
    28,9 KB · Görüntüleme: 10
  • 1779735746332.webp
    1779735746332.webp
    58 KB · Görüntüleme: 12
Son düzenleme:
Elinize Sağlık hoş görünüyor
 
v1.0.5 Güncellemesi
  • SeaEvent'ler için script yazma ve eventlere bind etme eklendi.
  • Lavda balık tutma eklendi
  • FPScript wait ile oyuncu çekmeye çalışınca tetiklenen Unknown variable: player problemi çözüldü
  • Wiki'ye scripting örnekleri ve wiki eklendi
  • Syntax kontrolü ve kullanım kolaylığı için VSCode eklentisi oluşturuldu.
Örnek Script:

Kod:
event cursed_haul {
    var curseChance = 25%
    var reckoningChance = 5%
    var activeCurses = 0

    on start {
        broadcast("&8&l[Lanet] &7Denizden eski bir koku yukseliyor...")
    }

    on fishCaught(e) {
        if (randomChance(reckoningChance)) {
            triggerReckoning(e.player)
            return
        }
        if (randomChance(curseChance)) {
            curseFish(e.player)
        }
    }

    on itemDrop(e) {
        if (e.player.tags.contains("cursed_haul_pending") and e.item.has_tag("cursed_haul_token")) {
            e.player.tags.remove("cursed_haul_pending")
            activeCurses = max(0, activeCurses - 1)
            e.player.actionbar("&a&lLANET KIRILDI! &7Kafatasini atarak kurtuldun.")
            e.player.playSound("minecraft:block.enchantment_table.use", 1.0, 1.4)
            particle("HAPPY_VILLAGER", e.player.location.add(0, 1, 0), 18)
        }
    }

    on playerDamage(e) {
        if (e.cause == "FIRE" or e.cause == "FIRE_TICK") {
            if (e.player != null and getCurseLevel(e.player) > 0 and e.player.health <= 4) {
                e.damage = e.damage * 0.5
                e.player.actionbar("&8Lanet seni koruyor... bu sefer.")
            }
        }
    }

    state main for 10m {
        on enter {
            broadcast("&8[Lanet] &7Lanetli kafatasini sure bitmeden at, yoksa lanet stacklenir.")
        }
        every 10s {
            for player in fishers() {
                applyPersistentCurse(player)
            }
        }
        every 25s {
            broadcast("&8[Lanet] &7Aktif lanet denemesi: &c" + activeCurses)
        }
        every 1m {
            for player in fishers() {
                if (getCurseLevel(player) > 0) {
                    particle("SOUL", player.location.add(0, 1.4, 0), 16)
                    player.playSound("minecraft:entity.wither.ambient", 0.25, 0.7)
                }
            }
        }
        next stop
    }

    on stop {
        for player in fishers() {
            clearCurse(player)
        }
        activeCurses = 0
        broadcast("&8[Lanet] &7Lanet siyrilip gitti.")
    }
}

function curseFish(player) {
    if (player.tags.contains("cursed_haul_pending")) {
        addCurseStack(player, "&cUzerinde zaten aktif lanet vardi; lanet guclendi.")
        return
    }

    if (!player.has_empty_slots(5)) {
        addCurseStack(player, "&cEnvanterin cok dolu! Lanet guclendi. &7En az 5 bos slot ac.")
        strikeLightning(player.location)
        player.message("&8[Lanet] &cLanetli kafatasi icin envanterinde en az 5 bos slot olmali.")
        return
    }

    var token = Item("SKELETON_SKULL").name("&8&lLanetli Kafatasi").lore(["&7Bu kafatasi denizin lanetini tasiyor.", "&c5 saniye icinde yere at.", "&8Atamazsan lanet stacklenir."]).tag("cursed_haul_token", "1")
    if (!player.give_random_empty(token)) {
        addCurseStack(player, "&cKafatasi icin bos slot bulunamadi; lanet guclendi.")
        strikeLightning(player.location)
        return
    }

    activeCurses = activeCurses + 1
    player.tags.add("cursed_haul_pending")
    player.add_potion("HUNGER", 1, 8s)
    player.add_potion("DARKNESS", 0, 6s)
    player.actionbar("&8&lLANETLI KAFATASI! &75 saniye icinde at veya lanetlen.")
    player.playSound("minecraft:entity.zombie.death", 0.7, 0.5)
    particle("SMOKE", player.location.add(0, 2, 0), 30)
    curseTick(player, 5)
}

function curseTick(player, secondsLeft) {
    if (!player.tags.contains("cursed_haul_pending")) {
        return
    }
    if (secondsLeft <= 0) {
        player.tags.remove("cursed_haul_pending")
        activeCurses = max(0, activeCurses - 1)
        addCurseStack(player, "&4&lLANET PATLADI! &7Stack seviyen artti.")
        player.fire_ticks = 80
        player.damage(6)
        player.playSound("minecraft:entity.generic.explode", 1.0, 0.5)
        particle("LAVA", player.location.add(0, 1, 0), 25)
        player.title("&4&lLANET YANDI", "&7Stack seviyesi: " + getCurseLevel(player), 5, 30, 10)
        return
    }
    player.actionbar("&c&lLanet patliyor: &f" + secondsLeft + "s &8| &7Kafatasini at!")
    particle("FLAME", player.location.add(0, 1.6, 0), 8)
    player.playSound("minecraft:block.note_block.bell", 1.0, 0.7)
    wait 1s
    curseTick(player, secondsLeft - 1)
}

function addCurseStack(player, message) {
    var current = getCurseLevel(player)
    var next = min(5, current + 1)
    setCurseLevel(player, next)
    player.message("&8[Lanet] " + message)
    player.message("&8[Lanet] &7Lanet seviyesi: &c" + next + "&7/&c5")
    player.playSound("minecraft:entity.wither.hurt", 0.6, 0.7)
    particle("SOUL_FIRE_FLAME", player.location.add(0, 1, 0), 25)
}

function applyPersistentCurse(player) {
    var level = getCurseLevel(player)
    if (level <= 0) {
        return
    }

    if (level >= 2) {
        player.add_potion("WEAKNESS", level - 2, 15s)
    }
    if (level >= 3) {
        player.add_potion("SLOW_DIGGING", level - 3, 15s)
        player.add_potion("HUNGER", 1, 15s)
        player.add_potion("DARKNESS", 0, 6s)
    }

    if (level >= 5) {
        player.actionbar("&4&lLANET V &7Yildirim seni izliyor!")
        strikeLightning(player.location)
        player.damage(6)
        return
    }

    if (level >= 4) {
        player.actionbar("&4&lLANET IV &cAgir hasar aliyorsun!")
        player.damage(6)
        particle("LAVA", player.location.add(0, 1, 0), 12)
        return
    }

    player.actionbar("&8&lLANET " + level + " &7Deniz canini cekiyor...")
    player.damage(2)
    particle("SOUL", player.location.add(0, 1, 0), 10)
}

function getCurseLevel(player) {
    if (player.tags.contains("cursed_haul_stack_5")) { return 5 }
    if (player.tags.contains("cursed_haul_stack_4")) { return 4 }
    if (player.tags.contains("cursed_haul_stack_3")) { return 3 }
    if (player.tags.contains("cursed_haul_stack_2")) { return 2 }
    if (player.tags.contains("cursed_haul_stack_1")) { return 1 }
    return 0
}

function setCurseLevel(player, level) {
    player.tags.remove("cursed_haul_stack_1")
    player.tags.remove("cursed_haul_stack_2")
    player.tags.remove("cursed_haul_stack_3")
    player.tags.remove("cursed_haul_stack_4")
    player.tags.remove("cursed_haul_stack_5")
    if (level == 1) { player.tags.add("cursed_haul_stack_1") }
    if (level == 2) { player.tags.add("cursed_haul_stack_2") }
    if (level == 3) { player.tags.add("cursed_haul_stack_3") }
    if (level == 4) { player.tags.add("cursed_haul_stack_4") }
    if (level >= 5) { player.tags.add("cursed_haul_stack_5") }
}

function clearCurse(player) {
    player.tags.remove("cursed_haul_pending")
    setCurseLevel(player, 0)
    player.clear_potion("WEAKNESS")
    player.clear_potion("SLOW_DIGGING")
    player.clear_potion("HUNGER")
    player.clear_potion("DARKNESS")
}

function triggerReckoning(player) {
    player.title("&4&l!! RECKONING !!", "&cYukari bak.", 5, 60, 20)
    player.playSound("minecraft:entity.ender_dragon.growl", 0.8, 0.7)
    broadcast("&8[Lanet] &c" + player.name + " RECKONING'i tetikledi!")
    repeat 6 as i {
        var offsetX = randomInt(0 - 4, 4)
        var offsetZ = randomInt(0 - 4, 4)
        var tntLoc = player.location.add(offsetX, 15 - i, offsetZ)
        var tnt = spawn("TNT", tntLoc)
        tnt.fuse_ticks = 60
        tnt.yield = 1
        tnt.incendiary = false
        particle("LARGE_SMOKE", tntLoc, 6)
        wait 8t
    }
    wait 4s
    player.playSound("minecraft:ui.toast.challenge_complete", 1.0, 0.8)
    var reward = Item("DIAMOND", 3).name("&b&lReckoning Elmasi").lore(["&7Yagmurun arasindan gectin.", "&bOlumlu kalan icin."]).enchant("luck_of_the_sea", 3)
    player.give(reward)
}

İndirme:
Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.
 
Geliştirilme sürecine yardımcı olunması için FishingPlus'u sunucusunda kullanacak gönüllüler aramaktayım. Eğer eklentimi beğendiyseniz ve aklınızda bir fikir varsa, yorum bırakarak bana yardımcı olabilirsiniz!
 
Gayet güzel olmuş ellerinize sağlık.
 

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst