bugün biraz boş vaktim vardı, biraz senaryoları inceledim. burada yazdığın bilgileri alıp biraz daha öteye taşımaya çalıştım, hala birçok eksik var bu konuda:
bu senaryo 1 dökümü. %95 tamam ama hala benim kafamda bazı eksikler var.
===== Event #1 =====
[Start Block: Image(0)]
IF isSet(1) Then Go To 1 Else:
Enter Room
Print "dISarIdan garip hIrIltIlar geliyor... gerCekten dISarI CIkacak MIYIZ ? "
[askQuestion]
- evet
- hayIr
IF Operation(2) -> (1) Then Go To 1 Else:
[break]
Enter Room
End.
[0x00] IF isSet(1) Then Go To 2 Else:
Print "burada OlU bir kOpek YatIyor. "
Enter Room
Show Image(13)
Print "hIrIltIlar Bundan geliyormuS !!! "
[startFight: enemyId=13, count=1]
[0x00] [0x00] [0x00] [0x00] [displayTextWithFace: face=0]: ne dellenmiS ki bu hayvan yahu?
[setVariable: var=1, value=4, Unk=15, Unk=0]
Enter Room
[0x00]
===== Event #2 =====
[Start Block: Image(0)]
Enter Room
End.
[0x00] IF isSet(2) Then Go To 3 Else:
Show Image(32)
[displayTextWithFace: face=0]: Bu herif hala ayIlmamIS mI ?
Enter Room
Show Image(32)
Print "burada baygIn bir adam yatIyor... UstUnU arayalIm mI? "
[askQuestion]
- evet
- hayIr
IF Operation(2) -> (1) Then Go To 1 Else:
Enter Room
[0x09] [askQuestion]
-
-
Show Image(0)
[0x00] [0x00] [0x00] IF isSet(2) Then Go To 1 Else:
Enter Room
[displayTextWithFace: face=0]: BEyler burada bir anahtar buldum
[setVariable: var=2, value=4, Unk=15, Unk=0]
Enter Room
[0x00]
===== Event #3 =====
[Start Block: Image(0)]
IF isSet(2) Then Go To 5 Else:
Print "otoparktan CIkmak istediGine emin misin? "
[askQuestion]
- evet
- hayIr
IF Operation(2) -> (1) Then Go To 1 Else:
[break]
[0x0B] Print "?
"
[displayTextWithFace: face=1]: bu KapI Kilitli. anahtar gOren oldu mu ?
[break]
End.
[0x00] Enter Room
[0x0F] [0x00] Enter Room
Enter Room
[0x00]
===== Event #4 =====
[Start Block: Image(0)]
Enter Room
End.
[0x00] [displayTextWithFace: face=3]: burasI amma pis kokuyo bee !
Enter Room
[0x0F] [0x00] Enter Room
[0x00]
===== Event #5 =====
[Start Block: Image(0)]
IF isSet(81) Then Go To 1 Else:
Enter Room
Print "CIkmak istediGinden emin misin ? "
[askQuestion]
- eminim
- deGilim
IF Operation(2) -> (1) Then Go To 1 Else:
[break]
Print "iyi Oyle olsun. "
Enter Room
End.
[0x00] IF isSet(81) Then Go To 1 Else:
Enter Room
Print "CIktIk iSte n'olcek ? "
[setVariable: var=81, value=4, Unk=15, Unk=0]
Enter Room
[0x00]
Her bir event 8 byte header ile başlıyor, 1 byte 0x00 terminator ile bitiyor.. burada 16bitlik 4 değer var. bunu amos array'inin belirteçleri olabilir, henüz onu denemeye fırsatım olmadı.
2 senaryoda haritada işaretli event sayısı ile senaryodaki event sırası birbirini tutmuyor. Örneğin, senaryo dosyasında 3.sırada olan silikon baba eventi, haritada 8 numarası ile işaretli. Aynı şekilde başlangıç noktasından geri girememe olayı haritada 6.event, senaryoda 1.event. Hmm şimdi farkettim, 1.senaryoda 5 event var, ordan devam ediyor numaralar belli ki. Bu durumda pixel palet datası 0-31 arası olmak zorunda olduğuna göre, önceki pixellerle çarparak daha büyük rakamları ifade ediyorlardır. son iki byte 1 1 olunca aslında 32 oluyor bu durumda?
[startFight: enemyId=13, count=1] aslında devamı var, her zaman devamında 4 byte daha oluyor. Bu startfight'e mi ait emin değilim ama öyle görünüyor.
yani startfight(enemy,count,var1,var2,var3,var4) şeklinde sanki ama emin de değilim.
0x0E Bu end/finish işlemi parametre alıyor gibi görünüyor. 2.senaryoda bazı bozukluklara sebep oluyor.
ileriki levellarda daha yeni komutlar ve parametreler ekleniyor. Yani biraz daha kafa yormamız lazım.
Halen haritanın entrypoint'ini bulabilmiş değiliz mesela. yani bir haritaya girildiğinde oyuncu nereden başlayacak ve ne yöne bakıyor olacak, bu bilgi nerede?
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+
| Hex Kodu | Komut | Açıklama |
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+
| `01` | IF? `conditionalJump` veya `triggerBeforeEnter| Ardından: var, equals, jumpOver |
| `02` (1 byte) uzunluk | Print `displayText` | Ardından özel karakter setiyle metin DechiperRot(byte[] data) ile açılacak.
metin içindeki 0xAC karakteri carrier return oluyor. |
| `03` | Show `displayImage` | Ardından 1 byte image id |
| `04` | `enter room` veya "Update View" | |
| `05` | `askQuestion` | Ardından 2 byte: seçenek uzunlukları; Ardından özel karakter setiyle 2 farklı
| `06` ?? seçenek metni, her biri DechiperRot(byte[] data) ile açılacak. |
| `07` | `setVariable` | Ardından var, value |
| `08` | `startFight` | Ardından: 00, enemy id, count |
| `09` + 9byte | `inventory/yerde para` | yerde esya var dolar, mark, kivrik ... |
| `0a`+1 uzu | `print random, 0xAC ile ayrılmış metinlerden rastgele biri yazılır
| 0b-0c`??
| `0d` | `seperator` | Blok başı veya özel gösterim (takip eden byte 00 değil ise başlangıç image olabilir) |
| `0e 00` | `finalState` | |
| `0f` ??
| `10` | `break` | |
| `11` | `displayTextWithFace` | Ardından: yüz kodu, uzunluk, metin |
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+
dediğim gibi hala soru işaretleri var, bir lamba yanarsa buraya eklerim.
Edit: Kullanma kılavuzu sayfa 57'de bu senaryo editörü hikayesini anlatıyor. Görünüşe göre kendi formatlarını yazmışlar ve bu doğru ise 30'dan fazla komut varmış, bu durumda biz henüz yarısını çözebilmişiz.
