Veri işleme katmanı
Veri işleme katmanı. Quest parse, harita grafiği, import/export ve yön normalizasyonu.
Quest Runner — Engine yüklü ve çalışır durumda olmalı1. Quest Runner — Engine ← önce
2. Quest Runner — Mapper ← bu script
3. Quest Runner — UI ← son
Quest Runner — Mapper.user.js içeriğini yapıştırCtrl+S kaydetTürkçe, İngilizce, Portekizce ve kısaltmalar desteklenir. Tüm girişler standart PascalCase yön adlarına normalize edilir.
| Giriş | Normalize |
|---|---|
N, K, KUZEY, NORTE |
North |
NE, KD, KUZEYDOGU, NORDESTE |
NorthEast |
UP, Y, YUKARI |
Up |
DOWN, A, ASAGI |
Down |
Basit format (yeni, kullanıcı dostu):
North South East
Use Icy Caverns
16 minutes
Arrival Icy Caverns
Klasik format (tam kontrol):
move North
move South East
use_item ? @ Icy Caverns
passage 16min
checkpoint LABEL
İkisi aynı dosyada karışık kullanılabilir.
Tüm questler localStorage'da qr_quests anahtarı altında JSON olarak saklanır.
| Metod | Açıklama |
|---|---|
QR.quests.load() |
Tüm questleri döndür |
QR.quests.get(id) |
ID ile quest getir |
QR.quests.upsert(quest) |
Kaydet veya güncelle (versiyon geçmişi tutar) |
QR.quests.new(name, text) |
Parse edip yeni quest oluştur |
QR.quests.copy(srcId, name) |
Mevcut questi kopyala |
QR.quests.delete(id) |
Sil |
QR.quests.createVariant(srcId, stepIdx, newItem) |
Item varyantı oluştur |
Mapper hareketi otomatik takip eder ve oda-geçit grafiği oluşturur.
Kaydedilen veriler:
JSON: Ham graf verisi, yedekleme ve import için.
Quest Taslağı: Haritadan otomatik move ve use_item satırları üretir, doğrudan quest olarak kaydedilebilir.
# Icy Caverns
move East
move SouthEast
# use_item Uzun ve Dolambaçlı Patika @ Icy Caverns
İlk yüklemede north-pole quest'i otomatik oluşturulur. ICY CAVERNS → ICEPEAK MOUNTAIN → BLINDING BLIZZARD → FIREPLACE → TREE rotasını içerir. Tüm use_item adımları ? formatında — lokasyonda tek item varsa otomatik kullanılır.
Admin → Quests → Import → Plain text seç → yapıştır → quest adı gir → Import.
Admin → Quests → Export → Plain text veya JSON DB → kopyala, sakla.
JSON DB'yi başka bir karaktere veya tarayıcıya aktarmak için Admin → Import → JSON DB seç.
Quest çalışırken ambiguous item dialogu açılırsa doğru item seçilir. Seçim ilk kez yapılıyorsa ve quest text'indeki item adından farklıysa, otomatik olarak varyant quest oluşturulur (orijinal bozulmaz).
| Satır | Tip | Açıklama |
|---|---|---|
North |
move | Tek yön hareketi |
North South East |
move × 3 | Üç ayrı hareket adımı |
move North |
move | Klasik format |
| `[North\ | NorthEast]` | move (branch) |
use_item ? @ Icy Caverns |
use_item | Lokasyonda tek item varsa kullan |
use_item Patika @ Icy Caverns |
use_item | İsimle eşleştir |
Use Icy Caverns |
use_item | Basit format — ? ile aynı |
passage 16min |
passage | Yolculuk başlat, 16 dk bekle |
16 minutes |
passage | Basit format |
wait 5min |
wait | Sadece bekle, item kullanma |
checkpoint LABEL |
checkpoint | Kayıt noktası |
Arrival Icy Caverns |
checkpoint | Basit format → ARRIVAL_ICY_CAVERNS |
# yorum |
— | Görmezden gel |
// yorum |
— | Görmezden gel |
North South East
Use Icy Caverns
16 minutes
Arrival Icy Caverns
North NorthWest West NorthEast
Use Icepeak Mountain
20 minutes
# ICY CAVERNS - Yol
checkpoint ICY_PATH_START
move East SouthEast South Down
use_item ? @ Icy Caverns
# ICY CAVERNS - Dönüş
checkpoint ICY_RETURN
move West North Up
passage 16min
Sayfada hangi yönün aktif olduğu keşif sırasında değişebilir. Branch birden fazla alternatif tanımlar:
move [North|NorthEast]
Aktif yönler arasında North varsa North, yoksa NorthEast denenir.
S: "Quest yok" diyerek boş görünüyor.
C: Mapper Engine'den sonra yüklenmiş olmalı. Tampermonkey sırasını kontrol et. Sonra sayfayı yenile.
S: North Pole seed her seferinde sıfırlanıyor.
C: Hayır. db['north-pole'] kontrolü var — sadece hiç yoksa oluşturulur. Varsa dokunulmaz.
S: Kendi quest'imi North Pole seed'in üzerine yazabilir miyim?
C: Admin → Quests → North Pole → Düzenle. Builtin işareti kaybolmaz ama içerik değişir.
S: Parse çalışmıyor, adımlar görünmüyor.
C: # ile başlayan satırlar yorum sayılır. Yön adlarının tam yazıldığından emin ol. Parse butonu hata listesi gösterir.
S: Harita modu açıkken yavaşlıyor mu?
C: Harita modu sadece sayfa yüklenince bir kez recordRoom çağırır. Bellek kullanımı azdır.
S: use_item ? birden fazla item bulursa ne olur?
C: Ambiguous item dialogu açılır, kullanıcı seçer. Seçim ilk kez yapılıyorsa varyant quest oluşturulur.
S: localStorage ne kadar veri saklar?
C: Tarayıcı başına genellikle 5–10 MB. Quest DB büyürse Admin → Quests'ten kullanılmayan questleri sil.
S: Export ettiğim JSON'u başka bir bilgisayarda kullanabilir miyim?
C: Evet. Admin → Import → JSON DB → yapıştır. Tüm questler aktarılır.
Use <Loc>, <N> minutes, Arrival <Label>use_item ? — null item ile lokasyondaki tek item otomatikresolveDir, cleanTokenparseText, parseDirToken, trySimpleLine, extractMin, parseUseItem# use_item satırları aktif use_item ? adımına çevrildiQR.mapperReady event'i eklendi