HeroHunt AppYeni

HeroHunt App: Ayarlar

config/config.lua içindeki tüm seçenekler; telefon uygulaması ve keşif haritasından spawnlar, nadirlikler, Candy ve görevlere kadar, ayrıca hero ve görev katalogları.

v1.0.0Escrow korumalıQBox · QBCore · ESX · Standalone

İpucu

Değişiklikten sonra sadece kaynağı ensure hype-herohunt-app ile yeniden başlat; sunucuyu tamamen yeniden başlatmana gerek yok. Aktif spawnlar veritabanında tutulur ve yeniden başlatmadan sonra geri gelir.

Scriptin üç ayar dosyası var:

Dosyaİçerik
config/config.luaBu sayfadaki tüm seçenekler
config/heroes.luaHero kataloğu, bkz. Herolar
config/tasks.luaGünlük, haftalık ve genel görevler, bkz. Görev kataloğu

Her dosya tek bir tablo döndürür; aşağıdaki bölümler config.lua dosyasındaki sırayı izler. Süreler adlarındaki birimdedir (...Seconds saniye, ...Ms milisaniye), mesafeler metre cinsindendir. Geçersiz hero ve görev kayıtları başlatmada atlanır ve sunucu konsoluna yazılır.

Genel

config/config.lua
Debug = false,
Framework = "auto",
Ownership = "character",

Seçenek

Tür

"character" ile koleksiyon QBox ve QBCore'da citizenid, ESX'te identifier değerine aittir. "account" ile oyuncunun Rockstar lisansına aittir.

Ownership'i canlıya almadan seç

Koleksiyonlar sahip anahtarına göre tutulur. Sonradan "character" ile "account" arasında geçiş yapmak mevcut koleksiyonları taşımaz; oyuncular boş bir koleksiyonla başlar.

Uygulama

Uygulamanın lb-phone'da ve App Store'da nasıl görüneceği.

config/config.lua
App = {
    identifier = "hype-herohunt",
    name = "HeroHunt",
    description = "Explore the city, discover heroes and complete your collection.",
    developer = "Hype Studios",
    defaultApp = false,
    price = 0,
    size = 52400,
},

Seçenek

Tür

Uygulama simgesi web/build/icon.svg dosyasıdır. Uygulama telefon ayarlarındaki açık veya koyu temayı izler.

Arayüz

Seçenek

Tür

Keşif

Keşif alanı, haritada oyuncunun etrafındaki dairedir. İçindeki herolar yakalanabilir.

config/config.lua
Discovery = {
    Radius = 100.0,
    PreviewRadius = 150.0,
    SyncIntervalMs = 3000,
    PositionIntervalMs = 500,
    PositionMinMove = 1.0,
    Area = {
        fill = "#7c5cff",
        fillOpacity = 0.12,
        border = "#7c5cff",
        borderOpacity = 1.0,
        borderWidth = 2,
    },
},

Seçenek

Tür

Spawnlar ve konumlar sadece uygulama ekranda açıkken aktarılır. Telefonu kapatmak güncellemeleri durdurur.

Spawn

Sunucu her SpawnIntervalSeconds süresinde RoutingBucket içindeki her oyuncuya bakar. SpawnRadius içinde TargetPerPlayer sayısından az hero varsa oyuncudan MinPlayerDistance ile SpawnRadius arasında yeni noktalar seçer (tur başına oyuncu başı en fazla 4), mesafe, yoğunluk veya kara liste kurallarına uymayanları atlar ve kalanları zemin kontrolü için o oyuncunun oyununa gönderir. Geçerli noktalar herkesin gördüğü spawnlara dönüşür.

config/config.lua
Spawn = {
    Enabled = true,
    MaxActiveHeroes = 300,
    SpawnIntervalSeconds = 30,
    SpawnsPerTick = 12,
    DespawnAfterSeconds = 1800,
    TargetPerPlayer = 6,
    SpawnRadius = 180.0,
    MinPlayerDistance = 20.0,
    MinSpawnDistance = 15.0,
    AreaRadius = 150.0,
    MaxPerArea = 10,
    -- ...
},

Seçenek

Tür

Zemin kontrolü; zemini veya navmesh'i olmayan, suda, iç mekânda, bir araca 3 metreden yakın olan ve güvenli konumu zemin yüksekliğinden uzak kalan noktaları reddeder.

Kara liste

Heroların asla çıkmadığı daireler. Her kaydın bir label (sadece senin için), bir x, y merkezi ve bir radius değeri vardır.

config/config.lua
Blacklist = {
    { label = "Fort Zancudo", x = -2200.0, y = 3100.0, radius = 900.0 },
    { label = "Bolingbroke", x = 1690.0, y = 2600.0, radius = 220.0 },
    { label = "Mission Row PD", x = 440.0, y = -982.0, radius = 45.0 },
    { label = "Pillbox Hospital", x = 307.0, y = -595.0, radius = 45.0 },
},

Bölgeler

Görevlerin region filtresinde kullanılan isimli daireler. Her spawn, kendisini içeren ilk bölgeyi (liste sırasıyla) kaydeder ve label değeri Downtown bölgesinde 3 hero yakala gibi görev başlıklarında görünür.

config/config.lua
Regions = {
    { id = "vinewood", label = "Vinewood", x = 300.0, y = 200.0, radius = 650.0 },
    { id = "downtown", label = "Downtown", x = 150.0, y = -850.0, radius = 700.0 },
    { id = "vespucci", label = "Vespucci", x = -1300.0, y = -1200.0, radius = 650.0 },
    { id = "sandy", label = "Sandy Shores", x = 1850.0, y = 3700.0, radius = 600.0 },
    { id = "paleto", label = "Paleto Bay", x = -250.0, y = 6300.0, radius = 550.0 },
},

Seçenek

Tür

Yakalama

Seçenek

Tür

Nadirlikler

Her kaydın anahtarı, heroes.lua dosyasında ve görev filtrelerinde kullanılan nadirlik kimliğidir.

config/config.lua
Rarities = {
    common    = { order = 1, color = "#94a3b8", spawnWeight = 60, catchChance = 1.0, captureCandy = 1 },
    uncommon  = { order = 2, color = "#22c55e", spawnWeight = 25, catchChance = 1.0, captureCandy = 2 },
    rare      = { order = 3, color = "#3b82f6", spawnWeight = 10, catchChance = 1.0, captureCandy = 3 },
    epic      = { order = 4, color = "#a855f7", spawnWeight = 4,  catchChance = 1.0, captureCandy = 5 },
    legendary = { order = 5, color = "#f59e0b", spawnWeight = 1,  catchChance = 1.0, captureCandy = 10 },
},

Seçenek

Tür

Spawn ağırlığı her hero için ayrı uygulanır; yani daha çok herosu olan bir nadirlik toplamda daha sık çıkar. Varsayılan katalogla (20 Yaygın, 14 Sıradışı, 9 Nadir, 5 Destansı ve 2 Efsanevi hero) her spawnın ihtimalleri:

NadirlikHeroAğırlıkSpawn başına ihtimal
Yaygın2060~%72,2
Sıradışı1425~%21,1
Nadir910~%5,4
Destansı54~%1,2
Efsanevi21~%0,1

Yeni bir nadirlik eklemek için buraya bir kayıt, her dil dosyasında da rarity altına onun adını ekle.

Candy

Seçenek

Tür

Dönüştürme, her kopya için heronun heroes.lua içindeki candyValue değerini verir. Yakalama ise nadirliğin captureCandy değerini verir.

Görevler

Seçenek

Tür

Güvenlik

Seçenek

Tür

Yakalama bekleme süresi Capture.CooldownMs ayarıdır. Dönüşümler ve görev ödülleri benzersiz bir istek kimliği de taşır, böylece aynı istek asla iki kez ödenmez.

Geçmiş

Seçenek

Tür

Herolar

Hero kataloğu config/heroes.lua dosyasıdır ve 50 heroyla gelir. Hero eklemek için bir kayıt ekle:

config/heroes.lua
return {
    { id = "hero_001", name = "Volty", rarity = "common", candyValue = 1, image = "heroes/hero_001.png", enabled = true },
    -- ...
    { id = "hero_051", name = "Nova", rarity = "epic", candyValue = 8, image = "heroes/hero_051.png",
      silhouette = "heroes/hero_051_s.png", catchChance = 0.6 },
}

Seçenek

Tür

  • Her karttaki numara, heronun dosyadaki sırasıdır. Numaraları korumak için yeni heroları sona ekle.
  • Dahil olan 50 heronun portreleri ve silüetleri web/build/heroes/ klasöründedir. Yeni bir hero için iki görseli de oraya koy (veya https adresleri kullan) ve silhouette değerini kendin ver. Bir görsel yüklenemezse uygulama yerine nötr bir robot simgesi gösterir.
  • Bir heroyu kaldırmak için satırı silmek yerine enabled = false yap. Kopyası olan oyuncular onu görmeye devam eder, ama koleksiyon toplamına artık sayılmaz.
  • Geçersiz veya tekrar eden bir id ya da bilinmeyen bir rarity içeren kayıt atlanır; örneğin: Config: heroes[51].rarity = mythic is invalid, skipped.

Görev kataloğu

Görevler config/tasks.lua dosyasında tanımlanır. İlerleme sadece gerçek sunucu olaylarından sayılır: yakalamalar ve dönüşümler.

config/tasks.lua
return {
    -- Günlük havuz
    { id = "d_capture_5", period = "daily", type = "capture", target = 5, reward = { type = "candy", amount = 8 } },
    { id = "d_uncommon_2", period = "daily", type = "capture", target = 2, filter = { minRarity = "uncommon" }, reward = { type = "candy", amount = 10 } },
    { id = "d_downtown_3", period = "daily", type = "capture", target = 3, filter = { region = "downtown" }, reward = { type = "candy", amount = 10 } },

    -- Haftalık havuz
    { id = "w_epic_1", period = "weekly", type = "capture", target = 1, filter = { minRarity = "epic" }, reward = { type = "candy", amount = 45 } },

    -- Genel ilerleme
    { id = "g_first_capture", period = "general", type = "capture", target = 1, title = "tasks.custom.first_capture", reward = { type = "candy", amount = 5 } },
    -- ...
}

Varsayılan dosyada 9 günlük, 7 haftalık ve 10 genel görev var.

Seçenek

Tür

Periyotlar

PeriyotDavranış
dailyHer gün Tasks.ResetHour saatinde yenilenir. Günlük havuzdan Tasks.DailyCount görev seçilir
weeklyHer hafta Tasks.WeekStartsOn gününde yenilenir. Haftalık havuzdan Tasks.WeeklyCount görev seçilir
generalKalıcı hedefler; her zaman etkindir ve bir kez tamamlanır

Seçim tarihe göre yapılır; bu yüzden tüm oyuncular aynı günlük ve haftalık görevleri alır ve görevler her yenilenmede değişir. Bir havuzu düzenleyip kaynağı yeniden başlatmak o anki seçimi değiştirebilir.

Türler

TürİlerlemeFiltreler
captureHer yakalamaminRarity, rarity, region, hero
discoverPeriyot içinde ilk kez yakalanan her heroregion
discovered_totalKeşfedilen farklı hero sayısı, periyoda bağlı değil-
capture_raritiesPeriyot içinde yakalanan farklı nadirlik sayısı-
convertCandy'ye dönüştürülen her kopya-
earn_candyYakalama ve dönüşümlerden kazanılan Candy (görev ödülleri sayılmaz)-

Filtreler

Seçenek

Tür

Özel başlıklar

title verilmezse başlık tür ve filtreden üretilir; örneğin 2 Sıradışı ya da daha nadir hero yakala. Kendi metnini kullanmak için her dil dosyasında tasks.custom altına bir anahtar ekle ve title (veya description) değerini ona yönlendir. Görevin hedefi %s olarak aktarılır.

locales/tr.json
"tasks": {
    "custom": {
        "first_capture": "İlk heronu yakala",
        "complete_collection": "Koleksiyonu tamamla",
        "night_hunter": "Gece %s hero yakala"
    }
}
config/tasks.lua
{ id = "g_night_hunter", period = "general", type = "capture", target = 20, title = "tasks.custom.night_hunter", reward = { type = "candy", amount = 25 } },

Görevler her başlatmada hero_tasks tablosuna yazılır. Dosyadan kaldırılan görevler orada kapatılır, ilerlemeleri veritabanında kalır.

Diller

Dil ox_lib'den gelir, bu yüzden config yerine server.cfg içinde ayarlanır:

server.cfg
setr ox:locale "tr"

en ve tr dahildir. Kodla eşleşen bir dosya yoksa İngilizce kullanılır. Yeni bir dil eklemek için locales/en.json dosyasını kopyala, çevir, dil koduyla kaydet (örneğin de.json) ve ox:locale değerini o kod yap. Uygulama metinleri, nadirlik adları, görev başlıkları, görev bildirimi ve hata mesajları aynı dosyadadır. Hero adları heroes.lua dosyasından, bölge adları Regions ayarından gelir.

config.lua
heroes.lua
tasks.lua
en.json
tr.json
fxmanifest.lua

Bu sayfada