Bir nesneyi diğeriyle nasıl etkileyebilirim?
İlk senaryo yazarlarının üstesinden gelmesi gereken en büyük sorun, bir senaryo aracılığıyla diğer nesnelere erişme yeteneğinin olmamasıydı. Erişilebilecek tek iki nesne SRC ve varsayılan nesneydi. Ve LINK. LINK, çoğu insanın SPHERE .55i'de bile mümkün olduğundan şüphelenmediği şeyleri Sphere .40 sürümünde yapmayı mümkün kıldı.
Bir öğenin LINK özelliği, başka bir nesnenin UID'sini tutar. Ardından bu nesneye doğrudan erişmek için bir nesne referansı görevi görür. LINK özelliği oyun içinde veya bir komut dosyasında ayarlanabilir.
İşte bir örnek:
[ITEMDEF i_link_test]
ID=01828
NAME=Link Test
ON=@DClick
MESSAGE The LINK's name is <LINK.NAME>.
RETURN 1Şimdi, bu öğeyi oyun içinde oluşturun ve LINK'ini başka bir nesnenin UID'sine ayarlayın. (UID'yi almak için .info komutunu veya .xshow uid'yi kullanın.) Bağlantı Testi öğesine çift tıklayın. Onu bağladığınız nesnenin adını söyleyecektir. Bunun açıkçası çok az kullanımı var, bu yüzden burada size bir süre önce yazdığım ve LINK nesnesini kullanan bir komut dosyası parçası sunuyorum. (Masumları korumak için eşyalar değiştirildi.)[ITEMDEF i_tile_sender]
ID=01828
NAME=Sender tile
ON=@DClick
IF (!<LINK.UID>) // Henüz link yoksa
TARGET Select an object to link to.
RETURN 1
ELSE
LINK.SAY <SRC.NAME> is knocking at your door!
RETURN 1
ENDIF
ON=@TargOn_Item
LINK = <SRC.TARG.UID> // Hedeflenen itemın UID'sini LINK'e yerleştirin
RETURN 1
ON=@TargOn_Char
LINK = <SRC.TARG.UID> // Hedeflenen karakterin UID'sini LINK'e yerleştirin
RETURN 1Bu senaryonun da görünürde bir kullanımı yoktur, ancak öğeyi bir evin önüne koyun ve ev sahibinin onu kendi seçtiği bir öğeye bağlamasına izin verin. (Muhtemelen onu sırt çantasına bağlamak isteyecektir çünkü bunu her zaman yanında bulunduracaktır. Hatta bunu kendisiyle ilişkilendirmek bile isteyebilir.) Birisi evine geldiğinde, döşemeye çift tıklayabilir ve ev sahibi, evinde neler olduğunu görebilmesi için "Tık tık" tarzı bir mesaj alır.Senaryoyu anladın mı? IF ifadesi ve TARGET işleviyle ilgili kısmı anlamanız gerekir. Bunu yapmazsanız, yapana kadar senaryoyu veya senaryo oluşturmanın belirli yönleriyle ilgilenen önceki bölümleri yeniden okuyun. Burada yeni olan tek kısım LINK. LINK öğesinin komut dosyası oluşturucunun istediği her şeyi söylemesine neden olan SAY işlevi.
LINK nesnesi için başka bir kullanım, @Timer olayını tartıştığımız bir sonraki bölümde belirginleşir. @Timer'nin SRC'si yoktur, bu nedenle komut dosyasının dışındaki öğelere erişmenin başka bir yolunu bulmanız gerekir. LINK tam da bunun için bir araçtır.

