[OSP][Kod] Düello

Users who are viewing this thread

dragos

Küçük bir not, oyunda zaten düello özelliği var. Module_scripts'ten bu özelliği sadece hile modu açıkken değil normal zamanlarda da etkin olmak üzere ayarlayabilirsiniz. Ama eğer sizde benim gibi sadece bir karakter ile belli bir dialog'un sonunda kapışmak istiyorsanız derse devam edin :grin:

  Öncelikle module_troops'tan karakterinizi oluşturun ve module_dialogs'u açın. Oluşturduğunuz karakter için bir dialog ekleyeceğiz, Ramun'un konuşmalarının altına eklemenizi tavsiye ederim. Mesela şöyle örnek bir dialog paylaşıyım, siz onu kendinize göre düzenleyin:

Code:
[trp_KARAKTER, "start", [], "Sen kim köpeksin sen!?","alsana1",[]],
  [trp_KARAKTER|plyr, "alsana1", [], "Sanane ulan ayı!","close_window",[(call_script, "script_change_player_relation_with_troop", "$g_talk_troop", MİKTAR),(call_script, "script_dragos_duel", "$g_talk_troop")]],
 
  Ee ekledik de noldu? Şu oldu, artık module_troops'a eklediğiniz karaktere gidip konuşunca aranızda yukarıdaki dialoglar geçecek. Hadi gelin bu kodu biraz daha açalım.
  trp_KARAKTER Module_troops'ta oluşturduğunuz karakterin id'si, yani kodu.
  (call_script, "script_change_player_relation_with_troop", "$g_talk_troop", MİKTAR) Burada (call_script, diyerek module_scripts'ten "script_change_player_relation_with_troop" scriptini etkinleştiriyoruz. Buradaki script kodunu değiştirerek farklı scriptleri etkinleştirebilirsiniz.
  "$g_talk_troop" Bunu kullandığımız zaman konuştuğumuz karakter kimse oyun onun kodunu etkinleştiriyor.
  MİKTAR İlişkimizin ne kadar değişeceğinin miktarı. Yani 5 yazarsanız ilişkimiz konuştuğumuz karakterle 5 artar, -50 yazarsanız 50 azalır. Size kalmış.

  Dialog kısmı tamam. Peki ne eksik? Yukarıdaki açıklamalarda bir script etkinleştirdiğimizi söylemiştik, şimdi o scripti ekleyeceğiz. Module_scripts'i açalım.

Code:
### # DUEL BY DRAGOS # ###
("dragos_duel",
	[	
	  (unlock_achievement, ACHIEVEMENT_PUGNACIOUS_D),
      (jump_to_menu, "mnu_dragos_duel"),
	  (finish_mission),

	]),
### # DUEL BY DRAGOS - END # ###

  Bununla ilgili fazla detaya girmeyeceğim, öğrenmemiz gerek bir yer var burada. Ona bakalım hemen.

  (jump_to_menu, "mnu_dragos_duel"), En sık kullanılan kodlardan birisi, bir menüye atlamanızı sağlar.

  Sırada ne var? Menüye atlıyoruz, ama hangi menüye? Hemen menümüzü ekleyelim. Açın module_game_menus dosyasını.

Code:
### # DRAGOS DUEL # ###
("dragos_duel",0,
   "Hazır mısın koç?",
   "none",
   [],
   [
     ("continue",[],"İvit...",
      [
        (assign, "$g_leave_encounter", 0),
        
        (modify_visitors_at_site, "scn_dragos_duel"),
        (reset_visitors),
        (set_visitor, 0, "trp_player"),
        (set_visitor, 1, "$g_duel_troop"),
        (set_jump_mission, "mt_duel_with_lord"),
        (jump_to_scene, "scn_dragos_duel"),
        (jump_to_menu, "mnu_dragos_duel_son"),
        (change_screen_mission),        
      ]),
    ]
  ),

(
  "dragos_duel_son",mnf_scale_picture,
   "Kimsin oğlum sen!? Kimsin lan!?",
   "none",
   [(set_background_mesh, "mesh_pic_victory"),
   ],
    [
      ("leave",[],"Devam edelim...",
       [(change_screen_return),
        ]
       ),
      ]
  ),
### # DRAGOS DUEL END # ###

  Menülerimize bakalım hemen. Burada gördüğünüz gibi 2 menü var. İlk menüye script'imiz sayesinde atlıyoruz. Ardın düellomuzu yapıyoruz ve bitince de ikinci menüye atlıyoruz. Menüleri incelemeden önce bağlantılarını bir kuralım kafamızda o zaman, karışıklık olmasın. Adama gittik, konuş dedik ve ilk dialog yaşandı, script etkinleşti ve bizi ilk menüye yolladı, ilk menüden düelloya girdik ve bitirdik, ikinci menüye atladık ve hayat kaldığı devam ediyor! Şu ana kadar kurduğumuz sistemin kabaca özeti bu. Hemen menülerimizi de inceleyelim ve dersimizi bitirelim hadi.

  (assign, "$g_leave_encounter", 0), Bu kod sayesinde tab'a bastığımız zaman sahneden ayrılamıyoruz, sol altta uyarı çıkıyor ayrılamazsınız diye. E düellodan kaçmak olmaz sonuçta :grin:
  (set_visitor, 0, "trp_player"), Bu koddan iki tane var fark ettiyseniz. Birisi trp_player, diğeri de dövüşeceğimiz karakter için. Bunlar sahnede kimin hangi entry point'te olacağını belirleyen kodlar. Entry point'leri (ve düello sırasında giydiğimiz itemleri) ayarlamak için mission template'i düzenlememiz gerekiyor ama o konuya girmeyeceğim.
  (jump_to_scene, "scn_dragos_duel"), Jump_to_menu kodu ile aynı mantık, başka bir sahneye atlamamızı sağlıyor.
  (change_screen_mission), Sahne atlama kodumuzun hemen ardından bu kodu kullanıyoruz. Ekranı değiştir komutu diyebiliriz bunun için.
  (set_background_mesh, "mesh_pic_victory"), Menü arkaplanındaki resmi ayarladığımız kod. Ben pic_victory resmini seçtim, siz değiştirebilirsiniz. Bu resimler Texure dosyasında bulunuyor ve kodlar ile mesh olarak sisteme tanıtılıyor, unutmayın. Var olan resimleri değiştirebilir veya onlardan seçebilirsiniz, böylece kodlarla uğraşmamış olursunuz.

  Sanırım bu kadar yeterli. Derste eksiklikler veya hatalar varsa söyleyin düzeltiyim, biraz aceleyle yazdım dolayısıyla hata olabilir. Kodu kullanan arkadaşların teşekkür kısmında ismime yer vermesi benim için kâfidir. Hadi kolay gelsin size! :party:
 
Küçük bir not, oyunda zaten düello özelliği var. Module_scripts'ten bu özelliği sadece hile modu açıkken değil normal zamanlarda da etkin olmak üzere ayarlayabilirsiniz. Ama eğer sizde benim gibi sadece bir karakter ile belli bir dialog'un sonunda kapışmak istiyorsanız derse devam edin :grin:

Öncelikle module_troops'tan karakterinizi oluşturun ve module_dialogs'u açın. Oluşturduğunuz karakter için bir dialog ekleyeceğiz, Ramun'un konuşmalarının altına eklemenizi tavsiye ederim. Mesela şöyle örnek bir dialog paylaşıyım, siz onu kendinize göre düzenleyin:

Code:
[trp_KARAKTER, "start", [], "Sen kim köpeksin sen!?","alsana1",[]],
  [trp_KARAKTER|plyr, "alsana1", [], "Sanane ulan ayı!","close_window",[(call_script, "script_change_player_relation_with_troop", "$g_talk_troop", MİKTAR),(call_script, "script_dragos_duel", "$g_talk_troop")]],

Ee ekledik de noldu? Şu oldu, artık module_troops'a eklediğiniz karaktere gidip konuşunca aranızda yukarıdaki dialoglar geçecek. Hadi gelin bu kodu biraz daha açalım.
trp_KARAKTER Module_troops'ta oluşturduğunuz karakterin id'si, yani kodu.
(call_script, "script_change_player_relation_with_troop", "$g_talk_troop", MİKTAR) Burada (call_script, diyerek module_scripts'ten "script_change_player_relation_with_troop" scriptini etkinleştiriyoruz. Buradaki script kodunu değiştirerek farklı scriptleri etkinleştirebilirsiniz.
"$g_talk_troop" Bunu kullandığımız zaman konuştuğumuz karakter kimse oyun onun kodunu etkinleştiriyor.
MİKTAR İlişkimizin ne kadar değişeceğinin miktarı. Yani 5 yazarsanız ilişkimiz konuştuğumuz karakterle 5 artar, -50 yazarsanız 50 azalır. Size kalmış.

Dialog kısmı tamam. Peki ne eksik? Yukarıdaki açıklamalarda bir script etkinleştirdiğimizi söylemiştik, şimdi o scripti ekleyeceğiz. Module_scripts'i açalım.

Code:
### # DUEL BY DRAGOS # ###
("dragos_duel",
    [  
      (unlock_achievement, ACHIEVEMENT_PUGNACIOUS_D),
      (jump_to_menu, "mnu_dragos_duel"),
      (finish_mission),

    ]),
### # DUEL BY DRAGOS - END # ###

Bununla ilgili fazla detaya girmeyeceğim, öğrenmemiz gerek bir yer var burada. Ona bakalım hemen.

(jump_to_menu, "mnu_dragos_duel"), En sık kullanılan kodlardan birisi, bir menüye atlamanızı sağlar.

Sırada ne var? Menüye atlıyoruz, ama hangi menüye? Hemen menümüzü ekleyelim. Açın module_game_menus dosyasını.

Code:
### # DRAGOS DUEL # ###
("dragos_duel",0,
   "Hazır mısın koç?",
   "none",
   [],
   [
     ("continue",[],"İvit...",
      [
        (assign, "$g_leave_encounter", 0),
      
        (modify_visitors_at_site, "scn_dragos_duel"),
        (reset_visitors),
        (set_visitor, 0, "trp_player"),
        (set_visitor, 1, "$g_duel_troop"),
        (set_jump_mission, "mt_duel_with_lord"),
        (jump_to_scene, "scn_dragos_duel"),
        (jump_to_menu, "mnu_dragos_duel_son"),
        (change_screen_mission),      
      ]),
    ]
  ),

(
  "dragos_duel_son",mnf_scale_picture,
   "Kimsin oğlum sen!? Kimsin lan!?",
   "none",
   [(set_background_mesh, "mesh_pic_victory"),
   ],
    [
      ("leave",[],"Devam edelim...",
       [(change_screen_return),
        ]
       ),
      ]
  ),
### # DRAGOS DUEL END # ###

Menülerimize bakalım hemen. Burada gördüğünüz gibi 2 menü var. İlk menüye script'imiz sayesinde atlıyoruz. Ardın düellomuzu yapıyoruz ve bitince de ikinci menüye atlıyoruz. Menüleri incelemeden önce bağlantılarını bir kuralım kafamızda o zaman, karışıklık olmasın. Adama gittik, konuş dedik ve ilk dialog yaşandı, script etkinleşti ve bizi ilk menüye yolladı, ilk menüden düelloya girdik ve bitirdik, ikinci menüye atladık ve hayat kaldığı devam ediyor! Şu ana kadar kurduğumuz sistemin kabaca özeti bu. Hemen menülerimizi de inceleyelim ve dersimizi bitirelim hadi.

(assign, "$g_leave_encounter", 0), Bu kod sayesinde tab'a bastığımız zaman sahneden ayrılamıyoruz, sol altta uyarı çıkıyor ayrılamazsınız diye. E düellodan kaçmak olmaz sonuçta :grin:
(set_visitor, 0, "trp_player"), Bu koddan iki tane var fark ettiyseniz. Birisi trp_player, diğeri de dövüşeceğimiz karakter için. Bunlar sahnede kimin hangi entry point'te olacağını belirleyen kodlar. Entry point'leri (ve düello sırasında giydiğimiz itemleri) ayarlamak için mission template'i düzenlememiz gerekiyor ama o konuya girmeyeceğim.
(jump_to_scene, "scn_dragos_duel"), Jump_to_menu kodu ile aynı mantık, başka bir sahneye atlamamızı sağlıyor.
(change_screen_mission), Sahne atlama kodumuzun hemen ardından bu kodu kullanıyoruz. Ekranı değiştir komutu diyebiliriz bunun için.
(set_background_mesh, "mesh_pic_victory"), Menü arkaplanındaki resmi ayarladığımız kod. Ben pic_victory resmini seçtim, siz değiştirebilirsiniz. Bu resimler Texure dosyasında bulunuyor ve kodlar ile mesh olarak sisteme tanıtılıyor, unutmayın. Var olan resimleri değiştirebilir veya onlardan seçebilirsiniz, böylece kodlarla uğraşmamış olursunuz.

Sanırım bu kadar yeterli. Derste eksiklikler veya hatalar varsa söyleyin düzeltiyim, biraz aceleyle yazdım dolayısıyla hata olabilir. Kodu kullanan arkadaşların teşekkür kısmında ismime yer vermesi benim için kâfidir. Hadi kolay gelsin size! :party:
Güzel kardeşim rica etsem troop ekleme kısmını ve cheatmenu olmadan düello yapabilme kısmını da ekleyebilir misin
 
Back
Top Bottom