Ders: Oyunda saat kavramı

Users who are viewing this thread

Kortlcha

Master Knight
Merhaba, ben Kortlcha. Bu derste size oyundaki saat kavramını ve kullanılış şekillerini gösteriyorum.
Saat şuan(dersi yazmaya başladığım zaman) 4:30. Yani tam 4 buçuk. Hazır okula gitmeden bu dersi yapayım da zaman geçsin dedim. Canım çok sıkılıyor, mağlum yapacak bir şey lazım.

Şuanda eksikliklerim olabilir. Lakin zaman geçtikçe düzeleceğini düşünüyorum.

Temel zaman kodları ve kuralları:

Oyunda, mission_templates resmen ayrı bir dünya. Bunun için çoğu kavram gibi zaman kavramı da 2 çeşit.
1: Mission_templates
store_mission_timer_a_msec = 2365 # (store_mission_timer_a_msec,<destination>),
store_mission_timer_b_msec = 2366 # (store_mission_timer_b_msec,<destination>),
store_mission_timer_c_msec = 2367 # (store_mission_timer_c_msec,<destination>),

store_mission_timer_a = 2370 # (store_mission_timer_a,<destination>),
store_mission_timer_b = 2371 # (store_mission_timer_b,<destination>),
store_mission_timer_c = 2372 # (store_mission_timer_c,<destination>),

reset_mission_timer_a = 2375 # (reset_mission_timer_a),
reset_mission_timer_b = 2376 # (reset_mission_timer_b),
reset_mission_timer_c = 2377 # (reset_mission_timer_c),

store_mission'lar ile şöyle yapabilirsiniz:

(örnek)
(store_mission_timer_a, ":mission_timer_a"),
(ge, ":mission_timer_a", 4),
Burada klasik, ilk değeri yazdık. Sonra da, ge kullanarak zamanla ilgili işler yapmanın temelini attık. Fazla kullanmadım, hatta öğrenme aşamasındayım bu konuda ama sanırım "4 saniye sonra" gibi bir anlam katmış olduk.

Bu mission_timerlarda a,b ve c gibi çeşitlilikler de size bir yardım. Bunların arasındaki farkı hiç araştırmadım ama tahminimce ya birden fazla zaman terimi kullanmamıza yarıyor, yani bize seçenek sunuyor ve büyük bir dertten kurtarıyor, ya da kendilerine has görevleri var.

Bu zaman kavramını istediğiniz her yerde kullanabilirsiniz. Hatta, bazı yerlerde cidden lazım oluyor. Temeli kavradığınızda gerisini deneme yoluyla daha iyi kavrayabilirsiniz.

Harita için zaman terimleri:

store_current_hours            = 2270 # (store_current_hours,<destination>),
store_time_of_day              = 2271 # (store_time_of_day,<destination>),
store_current_day              = 2272 # (store_current_day,<destination>),
is_currently_night              = 2273 # (is_currently_night),

store_current_hours: Bilmiyorum ama galiba oyunda geçen toplam zaman olabilir.
store_time_of_day: O anki saati depolar. Açmak gerekirse, o günün saatini ele alır.
store_current_day: O günün ne olduğunu(pazartesi, çarşamba gibi) depoluyor olabilir, tam emin değilim.
is_currently_night: Halihazırda zamanın gece vakti olup olmadığı ile ilgili bir işlem.

Bu işlemler ile yapılabilecekler:
1- O anki zamanın öncesini veya sonrasını bulma:

Diyelim biz en son "yapılan savaş"tan bu yana geçen zaman ile işlemler yapacağız. İlk önce:
- Savaşın kazanıldığı zamanı bulacağız. Sonra
- Şuanki zamanı bulacağız. Sonra
- Geçen zamanı bulacağız. Son olarak da(siz çeşitlendirebilirsiniz)
- Bu geçen zamana göre işlem yapacağız.
Şuan yeterli zamanım yok maalesef, lakin ilerde burayı açabilirim.

İlk önce şu scriptleri oyunun alt kısımlarına ekleyelim:

("cf_fought_player",
[
    (store_script_param, ":cur_day", 1),
   
(party_get_battle_opponent, ":eek:pponent_of_player_party", "p_main_party"),
(str_store_party_name, s17, ":eek:pponent_of_player_party"),
(eq, "$renown_higher_than_10", 1),
(store_current_day, ":cur_day"),
]),

  ("check_1_month_early_for_renown_player",
  [
(try_for_range, ":day"),
(store_current_day, ":day"),
(call_script, "script_cf_fought_player", ":cur_day"),
(store_sub, ":days_passed", ":day", ":cur_day"),
(try_begin),
(lt, ":days_passed", 31),
(assign, "$day_pass_below_31", 1),
(else_try),
(assign, "$day_passed_over_31", 1),
(try_end),
(try_end),
]),

  ("cf_get_time_of_day",
  [
    (map_free),
    (store_current_hours, ":hours"),
    (assign, reg15, ":hours"),
    ]),

Sonra, savaşı kazandığımız şu menülere (simple_encounter. Alt menü olarak encounter_attack) gelelim ve şunu set_battle_advantage, reg0'ın altına yapıştıralım:

(try_begin),
        (gt, reg8, 20),
        (assign, "$renown_higher_than_10", 1),
        (try_end),

Böylelikle demiş olduk ki:
-Bu savaşın nam değeri 20'in fazlası ise
-$renown_higher_than_10 global_variable'ını(kısaca gv) etkinleştir.

Bununla ilgili işlem yapmak için, herhangi bir yerde "$renown_higher_than_10" gv'ını kullanın. Lakin, biz zaten "cf_fought_player" diye bir script kullanmıştık. Bu scriptle bu istediğimiz şartları sağlamış oluyorduk. Hatta, geliştirilmeye açık, ve kodlarda imkan sunuyordu. Peki niye biz o zaman gv kullandık? Bilmiyorum, ne olur ne olmaz diye. İsterseniz siz bunu local_variable(kısaca lv) yapabilirsiniz.

Not: Şuan zamanım çok kısıtlı ve hafiften toparlanmam lazım. Dersin devamını getirebilirim. Yaptıklarımı açmayı düşünüyorum, yani niye gv kullandım, neden lv kullanmadım gibi. Ayrıca size bu tür kodların birbirleriyle nasıl daha kolay uyum sağladığını da anlatabilirim.
 
Kortlcha said:
Merhaba, ben Kortlcha. Bu derste size oyundaki saat kavramını ve kullanılış şekillerini gösteriyorum.
Saat şuan(dersi yazmaya başladığım zaman) 4:30. Yani tam 4 buçuk. Hazır okula gitmeden bu dersi yapayım da zaman geçsin dedim. Canım çok sıkılıyor, mağlum yapacak bir şey lazım.

Şuanda eksikliklerim olabilir. Lakin zaman geçtikçe düzeleceğini düşünüyorum.

Temel zaman kodları ve kuralları:

Oyunda, mission_templates resmen ayrı bir dünya. Bunun için çoğu kavram gibi zaman kavramı da 2 çeşit.
1: Mission_templates
store_mission_timer_a_msec = 2365 # (store_mission_timer_a_msec,<destination>),
store_mission_timer_b_msec = 2366 # (store_mission_timer_b_msec,<destination>),
store_mission_timer_c_msec = 2367 # (store_mission_timer_c_msec,<destination>),

store_mission_timer_a = 2370 # (store_mission_timer_a,<destination>),
store_mission_timer_b = 2371 # (store_mission_timer_b,<destination>),
store_mission_timer_c = 2372 # (store_mission_timer_c,<destination>),

reset_mission_timer_a = 2375 # (reset_mission_timer_a),
reset_mission_timer_b = 2376 # (reset_mission_timer_b),
reset_mission_timer_c = 2377 # (reset_mission_timer_c),

store_mission'lar ile şöyle yapabilirsiniz:

(örnek)
(store_mission_timer_a, ":mission_timer_a"),
(ge, ":mission_timer_a", 4),
Burada klasik, ilk değeri yazdık. Sonra da, ge kullanarak zamanla ilgili işler yapmanın temelini attık. Fazla kullanmadım, hatta öğrenme aşamasındayım bu konuda ama sanırım "4 saniye sonra" gibi bir anlam katmış olduk.

Bu mission_timerlarda a,b ve c gibi çeşitlilikler de size bir yardım. Bunların arasındaki farkı hiç araştırmadım ama tahminimce ya birden fazla zaman terimi kullanmamıza yarıyor, yani bize seçenek sunuyor ve büyük bir dertten kurtarıyor, ya da kendilerine has görevleri var.

Bu zaman kavramını istediğiniz her yerde kullanabilirsiniz. Hatta, bazı yerlerde cidden lazım oluyor. Temeli kavradığınızda gerisini deneme yoluyla daha iyi kavrayabilirsiniz.

Harita için zaman terimleri:

store_current_hours            = 2270 # (store_current_hours,<destination>),
store_time_of_day              = 2271 # (store_time_of_day,<destination>),
store_current_day              = 2272 # (store_current_day,<destination>),
is_currently_night              = 2273 # (is_currently_night),

store_current_hours: Bilmiyorum ama galiba oyunda geçen toplam zaman olabilir.
store_time_of_day: O anki saati depolar. Açmak gerekirse, o günün saatini ele alır.
store_current_day: O günün ne olduğunu(pazartesi, çarşamba gibi) depoluyor olabilir, tam emin değilim.
is_currently_night: Halihazırda zamanın gece vakti olup olmadığı ile ilgili bir işlem.

Bu işlemler ile yapılabilecekler:
1- O anki zamanın öncesini veya sonrasını bulma:

Diyelim biz en son "yapılan savaş"tan bu yana geçen zaman ile işlemler yapacağız. İlk önce:
- Savaşın kazanıldığı zamanı bulacağız. Sonra
- Şuanki zamanı bulacağız. Sonra
- Geçen zamanı bulacağız. Son olarak da(siz çeşitlendirebilirsiniz)
- Bu geçen zamana göre işlem yapacağız.
Şuan yeterli zamanım yok maalesef, lakin ilerde burayı açabilirim.

İlk önce şu scriptleri oyunun alt kısımlarına ekleyelim:

("cf_fought_player",
[
    (store_script_param, ":cur_day", 1),
   
(party_get_battle_opponent, ":eek:pponent_of_player_party", "p_main_party"),
(str_store_party_name, s17, ":eek:pponent_of_player_party"),
(eq, "$renown_higher_than_10", 1),
(store_current_day, ":cur_day"),
]),

  ("check_1_month_early_for_renown_player",
  [
(try_for_range, ":day"),
(store_current_day, ":day"),
(call_script, "script_cf_fought_player", ":cur_day"),
(store_sub, ":days_passed", ":day", ":cur_day"),
(try_begin),
(lt, ":days_passed", 31),
(assign, "$day_pass_below_31", 1),
(else_try),
(assign, "$day_passed_over_31", 1),
(try_end),
(try_end),
]),

  ("cf_get_time_of_day",
  [
    (map_free),
    (store_current_hours, ":hours"),
    (assign, reg15, ":hours"),
    ]),

Sonra, savaşı kazandığımız şu menülere (simple_encounter. Alt menü olarak encounter_attack) gelelim ve şunu set_battle_advantage, reg0'ın altına yapıştıralım:

(try_begin),
        (gt, reg8, 20),
        (assign, "$renown_higher_than_10", 1),
        (try_end),

Böylelikle demiş olduk ki:
-Bu savaşın nam değeri 20'in fazlası ise
-$renown_higher_than_10 global_variable'ını(kısaca gv) etkinleştir.

Bununla ilgili işlem yapmak için, herhangi bir yerde "$renown_higher_than_10" gv'ını kullanın. Lakin, biz zaten "cf_fought_player" diye bir script kullanmıştık. Bu scriptle bu istediğimiz şartları sağlamış oluyorduk. Hatta, geliştirilmeye açık, ve kodlarda imkan sunuyordu. Peki niye biz o zaman gv kullandık? Bilmiyorum, ne olur ne olmaz diye. İsterseniz siz bunu local_variable(kısaca lv) yapabilirsiniz.

Not: Şuan zamanım çok kısıtlı ve hafiften toparlanmam lazım. Dersin devamını getirebilirim. Yaptıklarımı açmayı düşünüyorum, yani niye gv kullandım, neden lv kullanmadım gibi. Ayrıca size bu tür kodların birbirleriyle nasıl daha kolay uyum sağladığını da anlatabilirim.

Ellerine saglik. Guzel olmus
 
Back
Top Bottom