Acemi yöneticiler tarafından en yaygın isteklerden biri, zanaat becerileri aracılığıyla yeni şeyler yaratma yeteneğidir. Bunun aynı zamanda oyuncuların bir parça hakkında kontrol ettiği ilk şeylerden biri olduğunu fark ettim. Parçanızda harika işlenebilir öğeler varsa, oyuncunun daha uzun süre kalması ve onları görebilmesi için beceri kazanması muhtemeldir. İşlenebilir evler, havalılığın son noktasıdır. Ve bu bölüm size nasıl bir tane yapacağınızı gösterecek. İlk olarak, zanaatkarlık sisteminin nasıl çalıştığına bakacağız.
Çeşitli işçilik becerilerinin her biri için yaklaşık 9 yerleşik bölüm adı vardır. Bu komut dosyası sunucu içinden çağrılır ve bu bölümler yoksa, birçok korkutucu hata alırsınız. İşte sphereskill.scp'nin üst kısmından aldığım liste.
// Hard coded ref names: (called directly form server)
// sm_alchemy = dclick on alch tools
// sm_summon
// sm_polymorph = polymorph menus
// sm_cartography = dclick on blank map
// sm_bowcraft = knife on wood
// sm_bolts = dclick on arrows or shafts
// sm_blacksmith = dclick on tool
// sm_carpentry = dclick on carp tool
// sm_tailor_leather = dclick on sewing kit
// sm_tailor_cloth
// sm_tinker = dclick on tinker tools.
// sm_inscription = dclick on blank scroll
// sm_cook = ??? NOT USED YET Burada, bir SPHERE betiğindeki diğer tüm bölümler gibi bir SKILLMENU bölümünün sözdizimi şu şekildedir:[SKILLMENU sm_alchemy] Şimdi, bir beceri menüsü, kaydırabileceğiniz ve seçebileceğiniz öğelerin resimlerini içeren açılan küçük kutudur. Bu kutunun açıkça tanımlanması gereken birkaç özelliği vardır. Birincisi başlık. [SKILLMENU] etiketinin hemen altına gider.[SKILLMENU sm_alchemy]
What sort of potion do you want to make? Bu satır, menünün üst kısmında başlık olarak görüntülenecektir. Simya becerisi söz konusu olduğunda, kullanıcıya ne tür bir iksir yapmak istediğini sormak istiyoruz. Komut dosyasının sonraki kısımları biraz titrek ve tanıyabileceğiniz veya tanımayabileceğiniz bazı yeni yapılar içeriyor. Gerçekte, bu yalnızca kullanıcının hangi menü öğesini seçtiğine bağlı olarak meydana gelen bir dizi olaydır. İşte alchemy senaryosunun geri kalanının bir kısmı:[SKILLMENU sm_alchemy]
What sort of potion do you want to make?
ON=i_potion_Agility <name> (<resmake>)
MAKEITEM=i_potion_Agility
ON=i_potion_AgilityGreat <name> (<resmake>)
MAKEITEM=i_potion_AgilityGreat
ON=i_potion_CureLess <name> (<resmake>)
MAKEITEM=i_potion_CureLess
ON=i_potion_Cure <name> (<resmake>)
MAKEITEM=i_potion_Cure
ON=i_potion_CureGreat <name> (<resmake>)
MAKEITEM=i_potion_CureGreat
ON=i_potion_ExplosionLess <name> (<resmake>)
MAKEITEM=i_potion_ExplosionLess
ON=i_potion_Explosion <name> (<resmake>)
MAKEITEM=i_potion_Explosion
ON=i_potion_ExplosionGreat <name> (<resmake>)
MAKEITEM=i_potion_ExplosionGreat
ON=i_potion_HealLess <name> (<resmake>)
MAKEITEM=i_potion_HealLess Gördüğünüz gibi, bu menüler için de hala ON= event yapısını kullanıyoruz. Farklı olan, aşağıdakilerdir. Hadi inceleyelim:ON=i_potion_HealLess <name> (<resmake>) Bu satır sunucuya bir dizi şey söyler. = işaretinden hemen sonra gelen ilk parametre, görüntülenecek öğenin kimliğidir. Dolayısıyla, burada görüntülenecek olan şey, i_potion_HealLess öğenin DISVID'idir. Sarı bir iksir olur. Bu öğeyi belirttiğiniz anda, bu satırın geri kalanı için varsayılan öğe haline gelir. Sunucu <NAME> , iksir öğesinin adına atıfta bulunduğunu bilir ve bu, <RESMAKE> o öğeyi yapmak için ne gerektiğini söyleyen bir dizedir.</RESMAKE></NAME> Bunların her ikisi de i_potion_HealLess (sphere_item_provisions_potions.scp içinde) için komut dosyasında belirtilmiştir ve orada kolayca değiştirilebilir (adı değiştirmek için NAME= ve beceri ve zorluğu değiştirmek için SKILLMAKE= arar).MAKEITEM=i_potion_HealLess Eğer bu açık değilse, bu bölümü okumamalısınız. Sadece belirli bir öğenin inşasına başlar. Bekleyin, soruyor olabilirsiniz, sunucu bu öğeyi oluştururken hangi beceriyi kullanacağını veya ne kadar beceri gerektiğini ve hatta ne tüketeceğini (1 boş şişe) nasıl biliyor? Sorduğuna sevindim. Bunu cevaplamak için, oluşturduğumuz öğenin komut dosyasına bakmamız gerekiyor. [ITEMDEF i_potion_HealLess]
NAME=Lesser Heal
ID=i_bottle_YELLOW
RESOURCES=i_reag_ginseng, i_bottle_EMPTY
SKILLMAKE=ALCHEMY 0.1
TYPE=T_POTION
TDATA1=i_bottle_empty
ON=@Create
MORE1 = s_heal
MORE2 = 50.0 İki önemli satır, RESOURCES ve SKILLMAKE çizgileridir. Bu iki çizgi, SPHERE'e bu öğeyi yapmak için hangi öğelerin kullanıldığını söylemek için beceri sistemiyle birlikte çalışır. Temel olarak, öğeyi oluşturduğunuzda 1 i_reag_ginseng ve 1 i_bottle_empty ihtiyacınız olduğunu söylüyor. Bu arada, bir eşya yapmak için gerekli kaynaklara sahip değilseniz, oyun içi SKILLMENU'ye baktığınızda listede bile görünmeyecektir. Bir sonraki satır, sunucuya bu öğeyi yapmak için hangi ve ne kadar becerinin gerekli olduğunu söyler. Bu durumda, alchemy becerisinde 0.1'e ihtiyacımız olduğunu söylüyor. Ne de olsa bu sadece daha az bir iyileşmedir.Yeni i_potion_HealLess bir mağazaya götürün ve satmaya çalışın. Sihirli bir şekilde, bir bedeli var gibi görünüyor. Bu fiyat nereden geldi? Eh, tabii ki kaynaklardan geldi. Daha az iyileştirici bir iksirin değeri, i_reag_ginseng ve i_bottle_EMPTY toplam değeridir. Bunların her ikisi de sphere_item_resources.scp'de tanımlanmıştır. Bu bizi o kadar önemli bir noktaya getiriyor ki, kalın harflerle yazacağım: Bir öğenin ya bir değeri olması ya da değeri olan kaynakları olmalıdır, aksi takdirde bir beceri menüsünde görünmeyecektir! Birçok acemi komut dosyası yazarı, panolarda öğelerinin neden mükemmel bir SKILLMENU bölümünde görünmediğini soruyor. SKILLMENU ile ilgisi yoktur. Panolarda bize sızlanmadan önce ürün komut dosyalarınıza bakın.
Bir diğer önemli nokta da şudur: Bir [SKILLMENU] bölümündeki ON= olayları arasında herhangi bir sayıda satırınız olabilir. Sadece MAKEITEM bizim için yapmamız gereken her şeyi yapıyor, bu yüzden çoğu komut dosyasında yalnızca bir satır var. Bununla birlikte, başka herhangi bir etkinlikte yapabileceğiniz kadar kolay bir şekilde bir SYSMESSAGE yazdırabilir veya bir SKILLMENU içindeki bir oyuncuyu öldürebilirsiniz.
Artık bu gerçeği bildiğimize göre, bahsettiğim o işlenebilir evi inşa edelim! İlk olarak, bir ev yapmak için ne tür KAYNAKLAR kullanmak isteyebileceğimizi bulmamız gerekiyor. Büyük miktarda ahşap, belki bir kapı tokmağı için biraz metal, üzerine yazılacak bir tapu ve sadece lanet olsun diye biraz sihir diyebilirim. Şuna benzer bir kaynak alacağız:
Ayrıca bir SKILLMAKE tanımına ihtiyacımız var ve bunun için Marangozluk becerisini kullanacağız. Diyelim ki, 95.0. Ardından, işlenebilir hale getirmek istediğimiz tapu için bu satırları ITEMDEF'e koyacağız:
[ITEMDEF i_craftable_deed]
ID=i_deed
NAME=Deed to a Small Stone House
RESOURCES=1000 i_board, 100 i_ingot_iron, 5 i_reag_garlic, i_deed
SKILLMAKE=CARPENTRY 95.0
CATEGORY=Provisions - Deeds
SUBSECTION=House Deeds
DESCRIPTION=Small Stone House
ON=@Create
MORE1 = i_multi_house_stone_small Bu, eğer anlamadıysanız, yeniden adlandırılmış ve düzenlenmiş 04202 öğesinin bir kopyasıdır. Orijinal komut dosyasını sphere_item_deed.scp dosyasında bulabilirsiniz. Şimdi, öğemizin bir SKILLMAKE tanımı ve bir DEĞER tanımı var (RESOURCES aracılığıyla). Üretilebilir. Şimdi bunu mevcut Marangozluk [SKILLMENU] bölümlerinden birine yapıştırmamız gerekiyor. Bunlardan birine bakalım:[SKILLMENU sm_carpentry]
Carpentry
ON=i_board boards
MAKEITEM=i_board
ON=i_chair_throne Chairs
SKILLMENU=sm_wood_chairs
ON=i_chest_wooden_brass Containers & Shields
SKILLMENU=sm_wood_containers_shields
ON=i_table_nightstand Table
SKILLMENU=sm_wood_tables
ON=i_staff_gnarled Weapons & Tools
SKILLMENU=sm_wood_weapons_tools
ON=i_armoir_dk Furniture
SKILLMENU=sm_wood_furniture
ON=i_portrait_7 Paintings
SKILLMENU=sm_wood_paintings
ON=i_trophy_deerhead Trophies
SKILLMENU=sm_wood_trophies
ON=i_saddle Rancher Types
SKILLMENU=sm_wood_rancher
ON=i_BED_9 Beds
SKILLMENU=sm_wood_beds
ON=i_bulletin_board Miscellaneous
SKILLMENU=sm_wood_misc Daha önce de söylediğim gibi, ON= bölümünden sonra herhangi bir satıra sahip olabilirsiniz. Bu durumda, başka bir menü açan bir SKILLMENU satırı olur. Bu hiyerarşik bir menüdür, çünkü bunun gibi üst menü seçeneklerinden seçim yaparsınız ve sonunda üretebileceğiniz bir öğeye ulaşana kadar alt menülerden geçersiniz. Şimdi, bu betiğin sonuna aşağıdaki iki satırı ekleyeceğiz:ON=i_craftable_deed <name> (<resmake>)
MAKEITEM=i_craftable_deed Bil bakalım ne oldu? İşimiz bitti. Yapmanız gereken tek şey bu. Şimdi, çoğu durumda, yeni bir [SKILLMENU sm_houses] veya benzeri bir şey yapar ve ardından tüm öğelerinizi buna eklersiniz. Bu durumda, ana Marangozluk menüsüne (veya alt menülerden birine) ekleyeceğiniz satır aşağıdaki gibidir:ON=i_deed Craftable Houses
SKILLMENU=sm_houses Bu kadar. Kolay, değil mi? Senaryo yazması en kolay ve en havalı şeylerden biri. Ne yazık ki, o kadar kolay ve tekrarlayıcıdır ki, iyi bir işçilik sistemi yapmak SONSUZA KADAR sürer. Parçanız için bir tane oluşturacaksanız, şimdi başlayın. Yaklaşık bir ay içinde bitirmiş olmalısınız.[/skillmenu][/skillmenu][/skillmenu][/skillmenu]
