Sürekli çok alakasız ve gereksiz topicleri önlemek için bu tutorial ı yazıyorum.
Kademe kademe scripting in temellerini anlatıcam. Yaptıgım hataları bilgili arkadaşlarım düzeltirse sevinirim. Lütfen sphere scriptinge yeni başlamış arkadaşlar önce bu temel bilgileri öğrensinler.
1. AŞAMA
1. DEFNAME'LER
Her item'in verdatada bir id si vardır. Bu idler harf ve numaralardan oluşur. Bu numaraları hatırlamak çok zor oldugu için onların yerine Defname'ler kullanılır.
örnegin; Gold id'si 0eed'dir.
Oyuna girip .add 0eed yazdıgınızda gold coin çıkar. Fakat defname aracılıgıyla bu yöntemi daha kolaylaştırıp .add i_gold yazdıgınızda gold coin çıkmasını saglayacagız.
[ITEMDEF 0eed]
//gold coin
DEFNAME=i_gold
TYPE=T_GOLD
VALUE=1
CATEGORY=Provisions - Miscellaneous
SUBSECTION=Coins
DESCRIPTION=Gold Coin
DUPELIST=0eee,0eef
şimdi bir gold coin scripti içerisinde Defname'i i_gold olarak tanıtarak id yerine "i_gold" yazarak gold coin çıkarmanızı sagladık. Fakat unutmayınki bu isimleri yalnızca bir script basına kullanabilirsiniz. Eger iki farklı item'a defname olarak i_gold verseydik, sphere, scriptlerden birini tanımazdı.
2. ITEMDEF
[ITEMDEF 0eed]
//gold coin
DEFNAME=i_gold
TYPE=T_GOLD
VALUE=1
Şimdi bu basit scriptimizle hangi satırın ne anlama geldigini öğrenelim.
Satır 1: [ITEMDEF 0eed]
ITEMDEF'i bir item scripti yazacagimiz zaman kullanir yanınada esyamizin verdatada kayitli oldugu id'yi yazarız.
Satır 2: //gold coin
Bu satırı kullanıp kullanmamanız farketmez. satırın başında // sembolleri varsa o satırı script tanımaz ve // sembollerinden sonra istediginiz yazıyı scripti bozmadan yazabilirsiniz.
Satır 4: TYPE=T_GOLD
Sphere'in kullandıgı belirli type'lar vardır. Bu typeları kullanan itemlar özelliklerini bu typlara göre alırlar. Örnegin Eger bir esyanin type'ı T_FISH ise o esyayi bicakla kestiginiz zaman, cig baliga donusurler. Bu typelari zaman icerisinde scriptleri inceleyerek öğrenebilirsiniz.
Satır 5: Value
Esyanin fiyati bu satirda belirlenir.
3. CHARDEF
Chardef'ler animasyonlari scripte donusturmek icin kullanilir. (Char Body, Hayvanlar, Yaratiklar v.b.)
[CHARDEF 0190]
DEFNAME=c_man
Name=Man
ICON=i_pet_MAN
CAN=MT_EQUIP|MT_WALK|MT_RUN|MT_USEHANDS
RESOURCES=i_flesh_head, i_flesh_torso, i_flesh_right_arm, i_flesh_left_arm
FOODTYPE=15 t_food, t_fruit
DESIRES=i_gold,e_notoriety
BLOODCOLOR=0
TSPEECH=spk_human_prime
TSPEECH=spk_human_default
TEVENTS=e_Human_HearUnk
DESCRIPTION=Man
SUBSECTION=Miscellaneous
CATEGORY=Civilized
örnek scriptimize göre;
Satır 1: [CHARDEF 0190]
Erkek Body'sinin verdatadaki id'si 0X190 şeklindedir. O animasyonu script içinde kullanırken aradaki X silinir ve yukarıdaki şekilde yazılır.
Satır 2: Name=Man
Bu satıra yaratılacak olan yaratigin, insanin yada hayvanin ismi Name=İSİM şekline yazilir.
Satır 3: ICON=i_pet_man
buradaki "i_pet_man" char shrinklendigi zaman hangi şekli alacak onu gösterir. Oyuna girip herhangi bir yaratiga .shrink yazıp tıkladıgınızda hayvanın küçüldügünü ve i_pet_xxx şeklini aldıgını göreceksiniz.
Satır 4: CAN=
Bu satıra yaratıgımızın yapabilecekleri sıralanır. Bunlar;
MT_NONMOVER // Hareket edemezler
MT_GHOST // Hayaletler gibi kapilarin icinden gecebilir.
MT_SWIM // Denizde, suda hareket edebilir.
MT_WALK // Yürür
MT_FLY // Uçar. Agaclarin taslarin ustunden geçmesine yarar.
MT_FIRE_IMMUNE // Atesten etkilenmez
MT_EQUIP // Esyalari kullanabilir
MT_USEHANDS // Ellerini birseyler tasimak yada kapilari acmak icin kullanir
MT_MALE // Erkek
MT_FEMALE // Bayan
MT_RUN // Koşar
örneiğin CAN=MT_EQUIP|MT_WALK|MT_RUN|MT_USEHANDS şeklinde kullandıgımız zaman, bu yaratigimiz esyalari kullanabilir, yürür, koşar, ve kapıları açabilir.
Satır 5: RESOURCES=
burda yaratigimizin hangi maddelerden olustugu yazar. Bu satır itemlerdede kullanılabilir.
Satır 6: FOODTYPE=
bu satırda yaratıgımızın neyle beslendigi tanımlanır.
Satır 7: DESIRES=
Bu satırda yaratıgımızın tercihleri belirlenir. örnegin i_gold tanımlarsanız, yaratıga verdiginizde kabul eder.
Satır 8: BLOODCOLOR=
Bu satırda yaratıgımızın kan rengi belirlenir.
aşağıdaki kısımda TSPEACH'ler yaratigimizin konuşmalarını ve ona söylenen karşısında ne yapıcagını belirlemenizi saglarlar. TEVENTS'ler yaratigimizin hangi event'i kullanacagını belirler. (Eventlerin ne işe yaradıgını dökümanın devamında öğreneceksiniz.)
DESCRIPTION=Man
SUBSECTION=Miscellaneous
CATEGORY=Civilized
kısmı olsada olur, olmasada. bu kısım yaratiginizin kategorisini belirler. Axis tarzı gm programları kullanırsanız yaratıgınızı daha rahatlıkla kategorisinden seçerek oyunda ekleyebilirsiniz.
4. TEMPLATE
spheretemp_loot.scp içerisindeki templatelerle yaratıgınız öldügü zaman içinden çıkacak olan eşyaları belirlersiniz. Karışık görünmesine aldanmayın bu kısmı cok rahatlıkla anlayacaksınız.
[TEMPLATE 101505]
DEFNAME=backpack_poor
CATEGORY=Item Templates
SUBSECTION=Loot Templates
DESCRIPTION=Poor Backpack
CONTAINER=i_backpack
ITEM=random_food,{ 1 3 }
ITEM=random_bottle
ITEM=random_light
ITEM=random_male_tops
COLOR=colors_all
ITEM=random_male_pants
COLOR=colors_all
ITEM=POOR_GOLD_PILE
Herşeyden önce burda kullanılan id numaraları digerlerinden farklıdır. Burada sadece diger templatelerden farklı ve daha uzun (101505 gibi) rakamlar kullanmanız yeterli olacaktır. Defname aynı şekilde template'i eklerken bu rakam yerine oraya yazdıgınız kendi id'nizi kullanmanız için gereklidir.
Container, yaratıktan çıkacak olan eşyaların neyin içinde olmasını belirlediginiz satır. Bu satırda backpack, bag yada içinde eşya barındırabilecek herhangi bir item kullanmanız gerekiyor.
ITEM= satırında çıkmasını istediginiz esya ve yanında virgülden sonra gelen { } içerisindeki rakamlarda kaçla kaç arası çıkmasını istediginizi belirlemenizi saglar. Örneğin bu parantezler içerisine { 5 8 } yazarsanız bu esyadan 5 veya 8 arası sayıda çıkar. ITEM= i altalta kullanarak cıkacak olan farklı item sayısını arttırırsınız. Altına ekledigimiz COLOR= satırındada bu itemin ne renk çıkmasını istediginizi belirtirsiniz. Color'u kullanmazsaniz esya default renginde çıkar.
5. ÖRNEK
[ITEMDEF i_kirmizi_kilic]
ID=i_katana
TYPE=t_weapon_sword
NAME=kirmizi kilic
ON=@Create
COLOR=colors_red // bu scriptte on=@create triggerı altında itemimiz yaratıldıgında ne renk çıktıgını belirttiniz.
aynı yöntem yaratiklardada bu şekilde kullanılır.
2. AŞAMA
1. SPHERETABLES.SCP
Bu scriptimizde;
[RESOURCES]
C:spherescriptsdefs.scp
C:spherescriptsmagery.scp
C:spherescriptstrig.scp
...
...
kısmı sphere'e attıgınız scriptleri sphere'in sırasıyla tanıması için kullanılır. örnegin balıkların içinde oldugu script regionların belirlendigi scriptten önce gelmelidir ki, region o itemi tanısın ve script dogru şekilde çalışsın.
[OBSCENE]
admin
owner
seer
gm
counselor
Trustworthy
Estimable
Great
Glorious
Glorious
...
...
bu kısımda kullanıcıların alacakları ünvanlar belirtilir..
[STARTS]
kısmı altında, başlangıçta bir şehir seçildigi zaman o şehrin hangi kordinatlarında karakterin dogmasını istediginizi belirlersiniz.
[RUNES]
An
Bet
Corp
Des
Ex
Flam
...
...
Büyü sözleri belirlenir.
[Skill X]
bu kısım altındada serverınızda kullanılan skiller tek tek belirlenir ( [Skill 0] , [Skill 1] ) şeklinde. Alchemy'den örnek alırsak;
[Skill 0]
DEFNAME=Skill_Alchemy
KEY=Alchemy
TITLE=Alchemist
EFFECT=0.0,125.0
DELAY=4
ADV_RATE=0.1,0.1,0.1
VALUES=1,20,100
STAT_STR=0
STAT_DEX=0
STAT_INT=100
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60
------------
Key satırında, skillin komutunu belirlersiniz. Örnegin .alchemy 1000 yaptıgınızda alchemy 100.0 olur ama o Key'in yanında yazan "Alch" olsaydı, .alch 1000 yaptıgınızda bu işlem gerçekleşirdi.
Title= burada bu yetenege sahip olan kişinin meslegi ne olarak adlandirilsin onu belirlersiniz. Örnegin alchemy yetenegi 100.0 olan bi kişinin Paperdoll'unde Grandmaster Alchemist yazar fakat bu satıra TITLE=XXX yazarsak o kişinin meslegi Grandmaster XXX olarak görünür.
DELAY= burada kaç saniyede bir bu skilli kullanabilecegi belirlenir.
ADV_RATE= burada skill'in gelme hızı ayarlanır. yukarıda gördügünüz scripte göre alchemy her potion yapışta artacaktır. Power Hour (PH) bu kısımdan meslek meslek ayarlanır.
BONUS_STR=0
BONUS_DEX=0
BONUS_INT=100
BONUS_STATS=60
bu kısımda bu skill'in statlarınızı ne şekilde arttırmasını istediginizi ayarlarsınız.
2. SPHERENEWB.SCP
bu kısımda hangi meslegin yeni karakter yaratildiginda hangi esyalarla dogmasini istediginizi belirlersiniz. Aynı zamanda cinsiyete göre de nelerle dogmasını seçersiniz.
[NEWBIE MALE_DEFAULT]
ITEMNEWBIE=i_shirt_plain
COLOR=colors_all
ITEMNEWBIE=random_pants
COLOR=colors_neutral
ITEMNEWBIE=random_shoes
COLOR=colors_neutral
ITEMNEWBIE=i_dagger
ITEMNEWBIE=i_candle
ITEMNEWBIE=i_book_sm
ITEMNEWBIE=i_gold,100
: bu erkek karakter yaratildiginda hangi esyalarla dogmasini belirtir.
[NEWBIE ALCHEMY]
ITEMNEWBIE=i_mortar_pestle
ITEMNEWBIE=i_BOTTLE_EMPTY,15
ITEMNEWBIE=i_reag_black_pearl,15
ITEMNEWBIE=i_reag_garlic,15
ITEMNEWBIE=i_reag_ginseng,15
ITEMNEWBIE=i_reag_spider_silk,15
ITEMNEWBIE=i_robe
COLOR=colors_red
Buda karakterini alchemy skilli seçerek yaratan kişinin hangi eşyalara sahip olacagını belirler.
3. AŞAMA
1. YARATIGIMIZI GELİŞTİRELİM
[CHARDEF C_H_ALCHEMIST]
DEFNAME=C_H_ALCHEMIST
NAME=#NAMES_HUMANMALE the Alchemist // #NAMES_HUMANMALE names.scp içerisinde kayıtlo olan erkek isimlerinden random bir tane seçmesini saglar.
ID=C_MAN
DESIRES=i_gold,e_notoriety,t_magic
TSPEECH=spk_human_prime
TSPEECH=jobalchemist
TSPEECH=spk_shopkeep
TSPEECH=spk_needs
TSPEECH=spk_rehello
TSPEECH=spk_human_default
TEVENTS=e_Human_HearUnk
TEVENTS=e_Human_ConvInit
TEVENTS=e_Human_Greet
TEVENTS=e_Human_Space
TEVENTS=e_Human_Needs
TEVENTS=e_Human_Refuse
TEVENTS=e_Human_Environ
ON=@Create
NPC=brain_vendor // burada brain_vendor bu yaratigimizin bir vendor olacagını belirler
COLOR=colors_skin // colors_skin ten renklerinden random bir tane seçer
STR={36 50} // karakterin str si kaçla kaç arası olsun
DEX={36 50} // karakterin dex i kaçla kaç arası olsun
INT={51 65} // karakterin int i kaçla kaç arası olsun
ALCHEMY={55.0 78.0} // karakterin alchemy yetenegi
TACTICS={15.0 38.0} // karakterin tactics yetenegi
POISONING={35.0 55.0} // karakterin poisoning yetenegi
ITEMNEWBIE=random_male_hair // erkek saçları içerisinden random bir tane seçer. ITEMNEWBIE esyanin newbie olmasini istiyorsaniz kullanilir.
COLOR=colors_hair // sacin rengi
ITEMNEWBIE=random_facial_hair // biyik, sakal
COLOR=match_hair // saç rengiyle eşleştirmesi için match_hair kullanılır
ON=@NPCRestock
ITEM=i_expcoin,3
ITEM=i_shirt_plain // karakterin giysileri
COLOR=colors_all
ITEM=random_pants
COLOR=colors_all
ITEM=i_robe
COLOR=colors_red
ITEM=random_shoes
COLOR=colors_neutral
ITEM=random_coin_purse
SELL=VENDOR_S_ALCHEMIST // spheretemp_vend.scp karakterin ne almasını belirlediginiz scriptin defname'i
BUY=VENDOR_B_ALCHEMIST // spheretemp_vend.scp karakterin ne satmasını belirlediginiz scriptin defname'i
CATEGORY=Civilized // kategoriler ...
SUBSECTION=Tradesmen
DESCRIPTION=Alchemist (male)
2. BAŞLICA KOMUTLAR
.nuke
.nukechar
.go
.nuke yazıp çıkan targetla iki kare arasında bir kutu oluşturacak şekilde tıkladıgınız zaman, o alandaki tüm esyalar silinir.
.nuke color 066d yazıp aynı işlemi yaptıgınızda o alandaki tüm eşyalar 066d rengine boyanır.
.nukechar kill yazıp aynı işlemi yaptıgınızda, o alandaki tüm karakterler ölür.
.go yazıp regionname veya kordinat yazdıgınızda belirttiginiz yere gidersiniz.
örnegin .go 1542,145,20 yazdıgınızda 1542 X,145 Y kordinatlarına ve 20 kare yüksekligine gidersiniz.
-----------------------------------------------------------------------------------------------
Scriptlere tanıtılan event triggerları:
@Dclick kişi bir eşyaya çift tıkladıgınızda yapılacaklar
@Step kişi bir esyanin ustunden geçtigi zaman yapılacaklar
@Equip kişi bir eşyayı giymek istedigi zaman yapılacaklar
@Unequip kişi giydigi eşyayı çıkarmak istedigi zaman yapılacaklar
@Timer belirlenen zaman bittiginde yapılacaklar.
@Targon_item kişi esyaya hedef aldıgında yapılacaklar
SRC.TARG = hedef alinan esya
@Targon_char kişi bir karaktere hedef aldıgında yapılacaklar.
SRC.TARG = hedef alınan karakter
@Targon_ground kişi zemini hedef aldıgı zaman yapılacaklar
SRC = kişi
@Click Player kişi bir şeye tıkladıgında ustunde gösterilecek olan mesaj.
@Damage eşya hasar gördügü zaman yapılacaklar
@Pickup_pack bir çantadan veya kutudan eşya alınca olacaklar.
@Pickup_ground kişi yerden eşyayı alınca yapılacaklar.
örnegin;
ON=@Damage
CONT.MESSAGE * XXX *
RETURN 1
burada eşya hasar gördügü anda eşyayı kullanan kişinin üzerinde * XXX * şeklinde bir mesaj görülür.
ON=@Click
message @58 * XXX *
return 1
burada bir eşyaya tek tıklayınca eşyanın uzerinde beliren mesaj * XXX * olur.



[b][i]Teşekkür ederim gayet açıklayıcı (=[/i][/b]
[b]Süpersin sen ya :) derslerinin devamını bekliyoruz[/b]
[b][purple]evt arkadaş baya uğraşmış çok yardımcı olmuş :) gerçi ben bunları biliyorum ama bilmeyen arkadaşlar için çöldeki şu kadar değerli :)[/purple][/b]
of of of sen neymişsin yaa çok saol :D ellerin dert körmesin süper olmuş