Evet arkadaşlar bu dersimizde oyunda var olan kitap okuma sistemini baştan aşağı değiştireceğiz. Aynı zamanda bir çok yeni kitap ekleyecek ve o kitaplara istediğimiz özellikleri verebileceğiz. Ayrıca limitlerde koyabileceğiz.
Bu dersimizde yapacaklarımızı sıralamam gerekirse;
Değiştireceğimiz dosyalar;
Değiştirilecek dil dosyaları;
Düzenlemeye başlamadan önce yedek almayı unutmayınız.
Evet ilk olarak okuma sistemini yazmadan önce okuma yeteneğimizi kodlayalım. Module_skills.py dosyasını açıyoruz ve şu satırı buluyoruz;
Bununla değiştiriyoruz;
"reading" kısmı yeteneğimizin benzersiz ismidir yani skl_reading.
"Reading" skillin oyunda görüneceği isimdir. (Dil dosyasından değiştirilebilir.)
sf_base_att_int yeteneğimizin int yani intelligence (zeka) tabanlı olmasını sağladık. (Brada bir üste dikkat ederseniz sf_inactive bölümünü kaldırdık, çünkü kaldırmazsak eğer, yetenek oyunda görünmez.)
10 yeteneğin en fazla kaça kadar yükseleceğini gösterir.
"Every level of this skill reduces the time of reading book by 5%%." Burada skill açıklamasına "bu yeteneğin her bir seviyesi kitap okuma süresini %%5 düşürür." dedik.
Dikkat: Eğer burada reserved_5 yerine başka bir yeteneği değiştirdiyseniz, header_skills.py de ona göre değişiklikler yapmanız gerekecektir.
Bu dosyayı kayıt edip çıkıyoruz.
Yeteneğimizi tanımlamak için 2. ve son adıma geçiyoruz. Header_skills.py dosyasını açıyoruz ve şu satırı buluyoruz;
Bu satırı bununla değiştiriyoruz;
Burada skl_reading tanımının 18. yani bizim üst tarafta tanımladığımız "reading" e eşit olmasını sağladık. Eğer 0 dan başlatıp sırayla yetenekleri sayarsanız 18. yeteneğin "reading" yada önceki adı ile "reserved_5" e denk geldiğini göreceksiniz.
Aynı dosya içerisinde şu satırları bulalım;
Dikkat çekmek istiyorum, biz reserved_5 üzerinde değişiklik yaptığımız için knows_reserved_5 tanımlarını kullanıyoruz. Siz başka bir yetenek seçtiyseniz onu kullanmalısınız.
Bu satırları alttaki ile değişiyoruz;
Burada artık reading (okuma) yeteneğimizi ekledik. Dosyayı kayıt edip çıkıyoruz.
Şimdi öncelikle yeni sistemde kullanacağımız slotları tanımlayalım... Module_constants.py dosyasını açıyoruz ve bu satırı buluyoruz;
Hemen altına şunları ekliyoruz;
Burada kitaplar için, skill (yetenek), attribute (özellik), proficiency (beceri) slotları tanımladık. "_level" ekleri ne kadar getirisi olacağı, "_limit" ekleri ise en fazla kaça kadar çıkacağını gösterir.
Yani basitce açıklamak gerekirse kodda şöyle tanımladığımız bir kitabı düşünelim;
Bu kısım kitabın okunması için gereken en düşük zeka seviyesini gösterir. Biz burada 9 tanımladık.
Bu kısım kitabın yükselteceği skill'i gösterir. Biz burada skl_reading yani okuma yeteneğini yükseltmek istedik. "slot_item_book_raise_skill, skl_reading" yerine "slot_item_book_raise_attribute, ca_intelligence" demiş olsaydık burada zeka özelliğini yükseltmesini sağlardık. skill yerine attribute kullanmışsak bir altındaki skill_level, skill_limit kısımlarınıda attribute_level attribute_limit şeklinde değiştirmek gerekir.
Burada bir önceden tanımladığımız skl_reading yeteneğine kitabı okuyunca +kaç ekleyeceğini gösterir. Biz burada 2 tanımladık buda bu kitabı okuyunca skl_reading yeteneğimizin +2 artacağını gösterir.
Bu kısım ise bu kitabı okuyarak yine slot_item_book_raise_skill kısmında belirlediğimiz yeteneğin en fazla kaça kadar yükselebileceğini gösterir. Buradaki durumda ise eğer reading yeteneğimiz +4 ise bir önceki seçenekte +2 arttırdığımız için +6 olacağını düşünebilirsiniz ancak limite göre kodlayacağımız için +4 den en fazla +5 e çıkacaktır. Yani bir önceki yeteneğin +2 yeteneği otomatik olarak devre dışı kalacaktır. Aynı zamanda kitap okumadan önce zaten limitin üstünde bir yeteneğiniz varsa, hiç bir kazanç sağlamayacaktır.
Buna ek olarak bir kitaba aynı zamanda yetenek, özellik ve beceri arttırması verebilirsiniz. Örneğin;
Evet öncelikle yeni kitaplarımızı ekleyelim, bunun içinde module_items.py dosyasını açıp şu satırı bulalım;
Hemen altına şunları ekleyelim;
Burada yeni kitaplar ekledik, hepsini tek tek açıklamaya gerek yok kalkan kitabını tanımlayalım.
"book_shield" kısmı kitabımızın benzersiz id kısmı. (itm_book_shield)
"Weapon Training: Block the Attack" Kitabın ismi.
[("book_d", 0)] burada book_d kısmı kitabın oyundaki görünüş şeklidir.
itp_type_book kısmı ise bunun bir kitap olduğunu gösterir.
2130 kısmı ise satış fiyatını gösterir. Ancak sanırım satış sırasında oyun ek olarak belli bir yüzde ekliyor bu ücrete.
weight(2) kitabın ağırlığı.
Bu dosyadada işimiz bitti kayıt edip çıkalım.
Artık kitaplarımıza slotları tanımlayalım. Module_scripts.py dosyasını açalım ve bu satırları bulalım;
Alttaki ile değiştirin;
Burada kitapların hangi yetenekleri, özellikleri ve beceri geliştireceğini tanımladık. Nasıl çalıştığını üstte nasıl çalıştığını anlatmıştım, o yüzden tekrar açıklamayacağım.
Aynı dosya içerisinde şu satırları bulalım;
Bununla değiştirelim;
Burada kitabın üzerine gelindiğinde kitabın vereceği yetenekleri gösterecektir.
Dersin devamı bir sonraki mesajda...
Bu dersimizde yapacaklarımızı sıralamam gerekirse;
- Yeni kitaplar ekleyeceğiz.
- Her kitaba slot tanımlayacağız.
- Okuma yeteneği ekleyeceğiz.
- Menüdeki okuma seçeneğine eklemeler yapacağız.
- Kitaplara extra text ekleyeceğiz.
- Kitap satıcılarına otomatik güncelleme.
- Gezginlere kitap satıcılarını sorabileceiz.
Değiştireceğimiz dosyalar;
Code:
header_skills.py
module_constants.py
module_items.py
module_scripts.py
module_skills.py
module_game_menus.py
module_dialogs.py
module_simple_triggers.py
module_triggers.py
Değiştirilecek dil dosyaları;
Code:
skills.csv
dialogs.csv
quick_strings.csv
item_kinds.csv
Düzenlemeye başlamadan önce yedek almayı unutmayınız.
Evet ilk olarak okuma sistemini yazmadan önce okuma yeteneğimizi kodlayalım. Module_skills.py dosyasını açıyoruz ve şu satırı buluyoruz;
Code:
("reserved_5","Reserved Skill 5",sf_base_att_int|sf_inactive,10,"This is a reserved skill."),
Bununla değiştiriyoruz;
Code:
("reading", "Reading", sf_base_att_int, 10, "Every level of this skill reduces the time of reading book by 5%%."),
"reading" kısmı yeteneğimizin benzersiz ismidir yani skl_reading.
"Reading" skillin oyunda görüneceği isimdir. (Dil dosyasından değiştirilebilir.)
sf_base_att_int yeteneğimizin int yani intelligence (zeka) tabanlı olmasını sağladık. (Brada bir üste dikkat ederseniz sf_inactive bölümünü kaldırdık, çünkü kaldırmazsak eğer, yetenek oyunda görünmez.)
10 yeteneğin en fazla kaça kadar yükseleceğini gösterir.
"Every level of this skill reduces the time of reading book by 5%%." Burada skill açıklamasına "bu yeteneğin her bir seviyesi kitap okuma süresini %%5 düşürür." dedik.
Dikkat: Eğer burada reserved_5 yerine başka bir yeteneği değiştirdiyseniz, header_skills.py de ona göre değişiklikler yapmanız gerekecektir.
Bu dosyayı kayıt edip çıkıyoruz.
Yeteneğimizi tanımlamak için 2. ve son adıma geçiyoruz. Header_skills.py dosyasını açıyoruz ve şu satırı buluyoruz;
Code:
skl_reserved_5 = 18
Bu satırı bununla değiştiriyoruz;
Code:
skl_reading = 18
Burada skl_reading tanımının 18. yani bizim üst tarafta tanımladığımız "reading" e eşit olmasını sağladık. Eğer 0 dan başlatıp sırayla yetenekleri sayarsanız 18. yeteneğin "reading" yada önceki adı ile "reserved_5" e denk geldiğini göreceksiniz.
Aynı dosya içerisinde şu satırları bulalım;
Code:
knows_reserved_5_1 = 4722366482869645213696
knows_reserved_5_2 = 9444732965739290427392
knows_reserved_5_3 = 14167099448608935641088
knows_reserved_5_4 = 18889465931478580854784
knows_reserved_5_5 = 23611832414348226068480
knows_reserved_5_6 = 28334198897217871282176
knows_reserved_5_7 = 33056565380087516495872
knows_reserved_5_8 = 37778931862957161709568
knows_reserved_5_9 = 42501298345826806923264
knows_reserved_5_10 = 47223664828696452136960
Dikkat çekmek istiyorum, biz reserved_5 üzerinde değişiklik yaptığımız için knows_reserved_5 tanımlarını kullanıyoruz. Siz başka bir yetenek seçtiyseniz onu kullanmalısınız.
Bu satırları alttaki ile değişiyoruz;
Code:
knows_reading_1 = 4722366482869645213696
knows_reading_2 = 9444732965739290427392
knows_reading_3 = 14167099448608935641088
knows_reading_4 = 18889465931478580854784
knows_reading_5 = 23611832414348226068480
knows_reading_6 = 28334198897217871282176
knows_reading_7 = 33056565380087516495872
knows_reading_8 = 37778931862957161709568
knows_reading_9 = 42501298345826806923264
knows_reading_10 = 47223664828696452136960
Burada artık reading (okuma) yeteneğimizi ekledik. Dosyayı kayıt edip çıkıyoruz.
Şimdi öncelikle yeni sistemde kullanacağımız slotları tanımlayalım... Module_constants.py dosyasını açıyoruz ve bu satırı buluyoruz;
Code:
slot_item_multiplayer_availability_linked_list_begin = 61 #temporary, can be moved to higher values
Hemen altına şunları ekliyoruz;
Code:
slot_item_book_raise_skill = 100
slot_item_book_raise_skill_level = 101
slot_item_book_raise_skill_limit = 102
slot_item_book_raise_attribute = 103
slot_item_book_raise_attribute_level = 104
slot_item_book_raise_attribute_limit = 105
slot_item_book_raise_proficiency = 106
slot_item_book_raise_proficiency_level = 107
slot_item_book_raise_proficiency_limit = 108
Burada kitaplar için, skill (yetenek), attribute (özellik), proficiency (beceri) slotları tanımladık. "_level" ekleri ne kadar getirisi olacağı, "_limit" ekleri ise en fazla kaça kadar çıkacağını gösterir.
Yani basitce açıklamak gerekirse kodda şöyle tanımladığımız bir kitabı düşünelim;
Code:
(item_set_slot, "itm_book", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book", slot_item_book_raise_skill, skl_reading),
(item_set_slot, "itm_book", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book", slot_item_book_raise_skill_limit, 5),
Code:
(item_set_slot, "itm_book", slot_item_intelligence_requirement, 9),
Code:
(item_set_slot, "itm_book", slot_item_book_raise_skill, skl_reading),
Code:
(item_set_slot, "itm_book", slot_item_book_raise_skill_level, 2),
Code:
(item_set_slot, "itm_book", slot_item_book_raise_skill_limit, 5),
Buna ek olarak bir kitaba aynı zamanda yetenek, özellik ve beceri arttırması verebilirsiniz. Örneğin;
Code:
(item_set_slot, "itm_book", slot_item_intelligence_requirement, 17),
(item_set_slot, "itm_book", slot_item_book_raise_skill, skl_power_throw),
(item_set_slot, "itm_book", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book", slot_item_book_raise_skill_limit, 10),
(item_set_slot, "itm_book", slot_item_book_raise_attribute, ca_agility),
(item_set_slot, "itm_book", slot_item_book_raise_attribute_level, 2),
(item_set_slot, "itm_book", slot_item_book_raise_attribute_limit, 35),
(item_set_slot, "itm_book", slot_item_book_raise_proficiency, wpt_throwing),
(item_set_slot, "itm_book", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book", slot_item_book_raise_proficiency_limit, 420),
Evet öncelikle yeni kitaplarımızı ekleyelim, bunun içinde module_items.py dosyasını açıp şu satırı bulalım;
Code:
["book_engineering","Method of Mechanical Theorems", [("book_open",0)], itp_type_book, 0, 4000,weight(2)|abundance(100),imodbits_none],
Hemen altına şunları ekleyelim;
Code:
#New Books
["book_spotting", "Improve Your Range", [("book_a",0)], itp_type_book, 0, 2450,
weight(2)|abundance(100), imodbits_none],
["book_pathfinding", "Fast Travel on Calradia", [("book_f",0)], itp_type_book, 0, 2450,
weight(2)|abundance(100), imodbits_none],
["book_inventory_management", "How to Carry More Items", [("book_open",0)], itp_type_book, 0, 3050,
weight(2)|abundance(100), imodbits_none],
["book_prisoner_management", "Catching Fire", [("book_e",0)], itp_type_book, 0, 2090,
weight(2)|abundance(100), imodbits_none],
["book_athletics", "Become a Athlete", [("book_open",0)], itp_type_book, 0, 1890,
weight(2)|abundance(100), imodbits_none],
["book_looting", "Spoils of War", [("book_c",0)], itp_type_book, 0, 2590,
weight(2)|abundance(100), imodbits_none],
["book_ironflesh", "Ironman", [("book_c",0)], itp_type_book, 0, 2590,
weight(2)|abundance(100), imodbits_none],
#Series
["book_first_aid", "Emergency Treatment: First Aid", [("book_c",0)], itp_type_book, 0, 2250,
weight(2)|abundance(100), imodbits_none],
["book_surgery", "Emergency Treatment: Surgery", [("book_c",0)], itp_type_book, 0, 2750,
weight(2)|abundance(100), imodbits_none],
["book_wound_treatment", "Emergency Treatment: Wound Treatment", [("book_c",0)], itp_type_book, 0, 1940,
weight(2)|abundance(100), imodbits_none],
["book_horse_archery", "Horse Riding: Archery on Horse", [("book_a",0)], itp_type_book, 0, 3250,
weight(2)|abundance(100), imodbits_none],
["book_riding", "Horse Riding: Ride a Better Horse", [("book_a",0)], itp_type_book, 0, 2550,
weight(2)|abundance(100), imodbits_none],
["book_power_strike", "Weapon Training: Strong Damage", [("book_d",0)], itp_type_book, 0, 2250,
weight(2)|abundance(100), imodbits_none],
["book_power_strike_2", "Weapon Training: Using a Two Handed Weapon", [("book_d",0)], itp_type_book, 0, 2550,
weight(2)|abundance(100), imodbits_none],
["book_power_throw", "Weapon Training: Throwing Weapons", [("book_d",0)], itp_type_book, 0, 2750,
weight(2)|abundance(100), imodbits_none],
["book_power_draw", "Weapon Training: Being a Good Archer", [("book_d",0)], itp_type_book, 0, 2150,
weight(2)|abundance(100), imodbits_none],
["book_power_draw_2", "Weapon Training: Using a Crossbow", [("book_d",0)], itp_type_book, 0, 2550,
weight(2)|abundance(100), imodbits_none],
["book_shield", "Weapon Training: Block the Attack", [("book_d",0)], itp_type_book, 0, 2130,
weight(2)|abundance(100), imodbits_none],
Burada yeni kitaplar ekledik, hepsini tek tek açıklamaya gerek yok kalkan kitabını tanımlayalım.
Code:
["book_shield", "Weapon Training: Block the Attack", [("book_d",0)], itp_type_book, 0, 2130,
weight(2)|abundance(100), imodbits_none],
"book_shield" kısmı kitabımızın benzersiz id kısmı. (itm_book_shield)
"Weapon Training: Block the Attack" Kitabın ismi.
[("book_d", 0)] burada book_d kısmı kitabın oyundaki görünüş şeklidir.
itp_type_book kısmı ise bunun bir kitap olduğunu gösterir.
2130 kısmı ise satış fiyatını gösterir. Ancak sanırım satış sırasında oyun ek olarak belli bir yüzde ekliyor bu ücrete.
weight(2) kitabın ağırlığı.
Bu dosyadada işimiz bitti kayıt edip çıkalım.
Artık kitaplarımıza slotları tanımlayalım. Module_scripts.py dosyasını açalım ve bu satırları bulalım;
Code:
# Setting book intelligence requirements
(item_set_slot, "itm_book_tactics", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book_persuasion", slot_item_intelligence_requirement, 8),
(item_set_slot, "itm_book_leadership", slot_item_intelligence_requirement, 7),
(item_set_slot, "itm_book_intelligence", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_trade", slot_item_intelligence_requirement, 11),
(item_set_slot, "itm_book_weapon_mastery", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book_engineering", slot_item_intelligence_requirement, 12),
Alttaki ile değiştirin;
Code:
# Setting book intelligence requirements
(item_set_slot, "itm_book_tactics", slot_item_intelligence_requirement, 9),
(item_set_slot, "itm_book_tactics", slot_item_book_raise_skill, skl_tactics),
(item_set_slot, "itm_book_tactics", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_tactics", slot_item_book_raise_skill_limit, 5),
(item_set_slot, "itm_book_persuasion", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_persuasion", slot_item_book_raise_skill, skl_persuasion),
(item_set_slot, "itm_book_persuasion", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_persuasion", slot_item_book_raise_skill_limit, 6),
(item_set_slot, "itm_book_leadership", slot_item_intelligence_requirement, 8),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_skill, skl_leadership),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_skill_limit, 7),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_attribute, ca_charisma),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_attribute_level, 2),
(item_set_slot, "itm_book_leadership", slot_item_book_raise_attribute_limit, 25),
(item_set_slot, "itm_book_intelligence", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_intelligence", slot_item_book_raise_attribute, ca_intelligence),
(item_set_slot, "itm_book_intelligence", slot_item_book_raise_attribute_level, 1),
(item_set_slot, "itm_book_intelligence", slot_item_book_raise_attribute_limit, 20),
(item_set_slot, "itm_book_trade", slot_item_intelligence_requirement, 11),
(item_set_slot, "itm_book_trade", slot_item_book_raise_skill, skl_leadership),
(item_set_slot, "itm_book_trade", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_trade", slot_item_book_raise_skill_limit, 7),
(item_set_slot, "itm_book_weapon_mastery", slot_item_intelligence_requirement, 12),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_skill, skl_weapon_master),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_skill_limit, 7),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_proficiency, wpt_one_handed_weapon),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book_weapon_mastery", slot_item_book_raise_proficiency_limit, 250),
(item_set_slot, "itm_book_engineering", slot_item_intelligence_requirement, 14),
(item_set_slot, "itm_book_engineering", slot_item_book_raise_skill, skl_engineer),
(item_set_slot, "itm_book_engineering", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_engineering", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_spotting", slot_item_intelligence_requirement, 12),
(item_set_slot, "itm_book_spotting", slot_item_book_raise_skill, skl_spotting),
(item_set_slot, "itm_book_spotting", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_spotting", slot_item_book_raise_skill_limit, 5),
(item_set_slot, "itm_book_pathfinding", slot_item_intelligence_requirement, 16),
(item_set_slot, "itm_book_pathfinding", slot_item_book_raise_skill, skl_pathfinding),
(item_set_slot, "itm_book_pathfinding", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_pathfinding", slot_item_book_raise_skill_limit, 9),
(item_set_slot, "itm_book_inventory_management", slot_item_intelligence_requirement, 20),
(item_set_slot, "itm_book_inventory_management", slot_item_book_raise_skill, skl_inventory_management),
(item_set_slot, "itm_book_inventory_management", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_inventory_management", slot_item_book_raise_skill_limit, 10),
(item_set_slot, "itm_book_prisoner_management", slot_item_intelligence_requirement, 18),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_skill, skl_prisoner_management),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_attribute, ca_charisma),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_attribute_level, 1),
(item_set_slot, "itm_book_prisoner_management", slot_item_book_raise_attribute_limit, 30),
(item_set_slot, "itm_book_athletics", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_athletics", slot_item_book_raise_skill, skl_athletics),
(item_set_slot, "itm_book_athletics", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_athletics", slot_item_book_raise_skill_limit, 7),
(item_set_slot, "itm_book_looting", slot_item_intelligence_requirement, 12),
(item_set_slot, "itm_book_looting", slot_item_book_raise_skill, skl_looting),
(item_set_slot, "itm_book_looting", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_looting", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_ironflesh", slot_item_intelligence_requirement, 15),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_skill, skl_ironflesh),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_attribute, ca_strength),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_attribute_level, 3),
(item_set_slot, "itm_book_ironflesh", slot_item_book_raise_attribute_limit, 25),
(item_set_slot, "itm_book_first_aid", slot_item_intelligence_requirement, 16),
(item_set_slot, "itm_book_first_aid", slot_item_book_raise_skill, skl_first_aid),
(item_set_slot, "itm_book_first_aid", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_first_aid", slot_item_book_raise_skill_limit, 10),
(item_set_slot, "itm_book_surgery", slot_item_intelligence_requirement, 16),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_skill, skl_surgery),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_skill_limit, 6),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_attribute, ca_intelligence),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_attribute_level, 2),
(item_set_slot, "itm_book_surgery", slot_item_book_raise_attribute_limit, 32),
(item_set_slot, "itm_book_wound_treatment", slot_item_intelligence_requirement, 15),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_skill, skl_wound_treatment),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_attribute, ca_intelligence),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_attribute_level, 1),
(item_set_slot, "itm_book_wound_treatment", slot_item_book_raise_attribute_limit, 35),
(item_set_slot, "itm_book_horse_archery", slot_item_intelligence_requirement, 13),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_skill, skl_horse_archery),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_proficiency, wpt_archery),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book_horse_archery", slot_item_book_raise_proficiency_limit, 300),
(item_set_slot, "itm_book_riding", slot_item_intelligence_requirement, 10),
(item_set_slot, "itm_book_riding", slot_item_book_raise_skill, skl_riding),
(item_set_slot, "itm_book_riding", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_riding", slot_item_book_raise_skill_limit, 6),
(item_set_slot, "itm_book_power_strike", slot_item_intelligence_requirement, 14),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_skill, skl_power_strike),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_proficiency, wpt_one_handed_weapon),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book_power_strike", slot_item_book_raise_proficiency_limit, 400),
(item_set_slot, "itm_book_power_strike_2", slot_item_intelligence_requirement, 16),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_skill, skl_power_strike),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_proficiency, wpt_two_handed_weapon),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_proficiency_level, 25),
(item_set_slot, "itm_book_power_strike_2", slot_item_book_raise_proficiency_limit, 450),
(item_set_slot, "itm_book_power_throw", slot_item_intelligence_requirement, 17),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_skill, skl_power_throw),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_skill_limit, 10),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_attribute, ca_agility),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_attribute_level, 2),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_attribute_limit, 35),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_proficiency, wpt_throwing),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book_power_throw", slot_item_book_raise_proficiency_limit, 420),
(item_set_slot, "itm_book_power_draw", slot_item_intelligence_requirement, 12),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_skill, skl_power_draw),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_skill_limit, 6),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_attribute, ca_agility),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_attribute_level, 1),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_attribute_limit, 25),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_proficiency, wpt_archery),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_proficiency_level, 10),
(item_set_slot, "itm_book_power_draw", slot_item_book_raise_proficiency_limit, 370),
(item_set_slot, "itm_book_power_draw_2", slot_item_intelligence_requirement, 14),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_skill, skl_power_draw),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_skill_level, 2),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_skill_limit, 10),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_attribute, ca_agility),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_attribute_level, 2),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_attribute_limit, 30),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_proficiency, wpt_crossbow),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_proficiency_level, 15),
(item_set_slot, "itm_book_power_draw_2", slot_item_book_raise_proficiency_limit, 425),
(item_set_slot, "itm_book_shield", slot_item_intelligence_requirement, 17),
(item_set_slot, "itm_book_shield", slot_item_book_raise_skill, skl_shield),
(item_set_slot, "itm_book_shield", slot_item_book_raise_skill_level, 1),
(item_set_slot, "itm_book_shield", slot_item_book_raise_skill_limit, 8),
(item_set_slot, "itm_book_shield", slot_item_book_raise_attribute, ca_strength),
(item_set_slot, "itm_book_shield", slot_item_book_raise_attribute_level, 3),
(item_set_slot, "itm_book_shield", slot_item_book_raise_attribute_limit, 45),
Burada kitapların hangi yetenekleri, özellikleri ve beceri geliştireceğini tanımladık. Nasıl çalıştığını üstte nasıl çalıştığını anlatmıştım, o yüzden tekrar açıklamayacağım.
Aynı dosya içerisinde şu satırları bulalım;
Code:
(is_between, ":item_no", readable_books_begin, readable_books_end),
(try_begin),
(eq, ":extra_text_id", 0),
(item_get_slot, reg1, ":item_no", slot_item_intelligence_requirement),
(set_result_string, "@Requires {reg1} intelligence to read"),
(set_trigger_result, 0xFFEEDD),
(else_try),
(eq, ":extra_text_id", 1),
(item_get_slot, ":progress", ":item_no", slot_item_book_reading_progress),
(val_div, ":progress", 10),
(assign, reg1, ":progress"),
(set_result_string, "@Reading Progress: {reg1}%"),
(set_trigger_result, 0xFFEEDD),
(try_end),
Bununla değiştirelim;
Code:
(is_between, ":item_no", readable_books_begin, readable_books_end),
(try_begin),
(eq, ":extra_text_id", 0),
(item_get_slot, reg1, ":item_no", slot_item_intelligence_requirement),
(set_result_string, "@Requires {reg1} intelligence to read"),
(set_trigger_result, 0xFFEEDD),
(else_try),
(eq, ":extra_text_id", 1),
(item_get_slot, ":progress", ":item_no", slot_item_book_reading_progress),
(store_skill_level, ":reading", skl_reading, "trp_player"),
(val_mul, ":reading", 50),
(store_sub, ":reading_end", 1000, ":reading"),
(val_mul, ":progress", 100),
(val_div, ":progress", ":reading_end"),
(try_begin),
(gt, ":progress", 100),
(assign, ":progress", 100),
(try_end),
(assign, reg1, ":progress"),
(set_result_string, "@Reading Progress: {reg1}%"),
(set_trigger_result, 0xFFEEDD),
(else_try),
(eq, ":extra_text_id", 2),
(item_get_slot, reg10, ":item_no", slot_item_book_raise_skill),
(item_get_slot, reg11, ":item_no", slot_item_book_raise_skill_level),
(item_get_slot, reg12, ":item_no", slot_item_book_raise_skill_limit),
(ge, reg10, 0),
(gt, reg11, 0),
(try_begin),
(le, reg12, 0),
(assign, reg12, 10),
(try_end),
(assign, ":cont", 0),
(call_script, "script_get_skill_name", reg10),
(store_skill_level, ":skill_no", reg10),
(try_begin),
(ge, ":skill_no", reg12),
# (set_result_string, "@Your {s2} skill too high to read this book."),
# (set_trigger_result, 0xFF0000),
(assign, ":cont", 1),
(else_try),
(store_sub, ":skill_dif", reg12, ":skill_no"),
(gt, reg11, ":skill_dif"),
(item_set_slot, ":item_no", slot_item_book_raise_skill_level, ":skill_dif"),
(assign, reg11, ":skill_dif"),
(try_end),
(eq, ":cont", 0),
(set_result_string, "@+{reg11} to {s2} skill (Max {s2}: {reg12})"),
(set_trigger_result, 0x4444FF),
(else_try),
(eq, ":extra_text_id", 3),
(item_get_slot, reg10, ":item_no", slot_item_book_raise_attribute),
(item_get_slot, reg11, ":item_no", slot_item_book_raise_attribute_level),
(item_get_slot, reg12, ":item_no", slot_item_book_raise_attribute_limit),
(ge, reg10, 0),
(gt, reg11, 0),
(try_begin),
(le, reg12, 0),
(assign, reg12, 63),
(try_end),
(assign, ":cont", 0),
(call_script, "script_get_attribute_name", reg10),
(store_attribute_level, ":attribute_no", "trp_player", reg10),
(try_begin),
(ge, ":attribute_no", reg12),
# (set_result_string, "@Your {s2} attribute too high to read this book."),
# (set_trigger_result, 0xFF0000),
(assign, ":cont", 1),
(else_try),
(store_sub, ":attribute_dif", reg12, ":attribute_no"),
(gt, reg11, ":attribute_dif"),
(item_set_slot, ":item_no", slot_item_book_raise_attribute_level, ":attribute_dif"),
(assign, reg11, ":attribute_dif"),
(try_end),
(eq, ":cont", 0),
(set_result_string, "@+{reg11} to {s2} attribute (Max {s2}: {reg12})"),
(set_trigger_result, 0xFF00FF),
(else_try),
(eq, ":extra_text_id", 4),
(item_get_slot, reg10, ":item_no", slot_item_book_raise_proficiency),
(item_get_slot, reg11, ":item_no", slot_item_book_raise_proficiency_level),
(item_get_slot, reg12, ":item_no", slot_item_book_raise_proficiency_limit),
(ge, reg10, 0),
(gt, reg11, 0),
(try_begin),
(le, reg12, 0),
(assign, reg12, 600),
(try_end),
(assign, ":cont", 0),
(call_script, "script_get_proficiency_name", reg10),
(store_proficiency_level, ":proficiency_no", "trp_player", reg10),
(try_begin),
(ge, ":proficiency_no", reg12),
# (set_result_string, "@Your {s2} proficiency too high to read this book."),
# (set_trigger_result, 0xFF0000),
(assign, ":cont", 1),
(else_try),
(store_sub, ":proficiency_dif", reg12, ":proficiency_no"),
(gt, reg11, ":proficiency_dif"),
(item_set_slot, ":item_no", slot_item_book_raise_proficiency_level, ":proficiency_dif"),
(assign, reg11, ":proficiency_dif"),
(try_end),
(eq, ":cont", 0),
(set_result_string, "@+{reg11} to {s2} proficiency (Max {s2}: {reg12})"),
(set_trigger_result, 0x00FF00),
(try_end),
Burada kitabın üzerine gelindiğinde kitabın vereceği yetenekleri gösterecektir.
Dersin devamı bir sonraki mesajda...