Recent content by aliemre4611

  1. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Herkese merhabalar. Öncelikle emeğinize sağlık. Benim merak ettiğim konu oyunun orjinal spitems.xml dosyasıyla oynamadan bir mod ayarlamak. Örneğin bazı atların değerlerini değiştireceğim ama bunu sadece submodule olarak ayaralamak istiyorum orjinale dokunmadan. Bunu banba anlatabilir misiniz. Güzel bir mod yaptım "fırlatılabilir mızrak" ama orjinal dosyaları değiştirerek. İnsanlar orjinal dosyalarını değiştirmek istemediği için mod rabet görmeyecektir

    "spitems.xml" dosyasını ayrı bir module dosyası açarak oraya kopyalayarak orada işleyebilirsin.
  2. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Çok yararlı olmuş şahsen şuan mod işine bulaşmak istemesem de uğraşmak isteyen arkadaşlar için güzel bir kaynak olur. Merak ettiğim bir şey var bu arada mod tools ilerleyen dönemde geldiğinde başlığın hâla geçerliliği olacak mı?

    Ona göre düzenlenecek.

    yeni dersler yüklenecekmi

    Şuan için hevesim kaçtı açıkçası. Oyun daha stabilize hale geldiğinde devam edeceğim derslere
  3. aliemre4611

    [Tutorial]Bannerlord İçin Mod Nasıl Yapılır

    Emeğinize sağlık türkçe forum için önemli şeyler bunlar. Yukarıda bir arkadaş da demiş ben de mod yapımı için bi tutorial başlatmıştım. İleride beraber bir şeyler yapabiliriz istersen. Devamı gelecekse merakla bekliyor olacağım... Saygılar.
  4. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Peki xml dosyasını nasıl açıyoruz.

    Xml dosyları için ilk derstte attığım linkten notepad plus'ı indirebilirsin.

    Türkçe kaynak yok diye dün arkadaşıma yakındım bugün ise bu konuyla karşılaştım. Sevincimi anlatamam :grin:

    :smile: Umarım yardımcı olabiliyorumdur türkçe forum adına...
  5. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    1 haftalık bir aradan sonra merhabalar arkadaşlar.
    Daha ayrıntılı bir özellik eklemesi ile karşınızdayım. Çok uzatmadan dersimize geçelim...

    Öncelikle visual studiomuzu açalım. Aşağıdaki resimde de gördüğünüz gibi yeni bir sınıf ekliyoruz. Özelliği yeni sınıfta yazacağım ben. İstiyorsanız kodları "Main"e de ekleyebilirsiniz. Bir sıkıntısı olmaz. Ben özellikleri ayrı ayrı sınıflandırmanın daha iyi olacağını düşünüyorum.
    (!!!Eğer kodları "Main"e ekleyecekseniz iki üç resim aşağıdaki "Submodule.dll"e eklentiyi yapmamalısınız!!!)



    Gelen pencereden "sınıf" seçiyoruz



    Gelen sınıfı dilediğimiz gibi adlandırabiliriz. Ben "Kontroletme" olarak adlandırdım gördüğünüz gibi.




    evet şimdi "Kontroletme" sayfasındaki her şeyi silip alttaki kodları yapıştıralım. Kodun içindeki örnek veriyorum "controlRandomAgent" gibi yeşil ifadeleri dilediğiniz gibi adlandırabilirsiniz. Kod içinde triggerlanacak şeyleri belirtmiş oluyoruz. Kodu inceleyin dediğimi anlayacaksınız. Kod multiplayer kısmındaki "CaptainBattle"dan örnek alınarak geçirilmiş olduğu için ellemedim ben...


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using TaleWorlds.CampaignSystem;
    using TaleWorlds.Core;
    using TaleWorlds.Library;
    using TaleWorlds.MountAndBlade;
    using TaleWorlds.MountAndBlade.ViewModelCollection;

    namespace Modumuz
    {
    public class Kontroletme : MBSubModuleBase
    {
    // Ana kodlar kontrol ettiğimiz karakterin canlı olup olmadığını sorgalayan kısım vs.
    protected override void OnApplicationTick(float dt)
    {
    bool flag = Game.Current != null && Game.Current.CurrentState <= Game.State.Running && Mission.Current != null && Mission.Current.Scene != null;
    if (flag)
    {
    bool flag2 = Agent.Main != null;
    if (flag2)
    {
    this.player = Agent.Main;
    this.timeOfDeath = Mission.Current.Time;
    }
    else
    {
    bool flag3 = this.player != null && this.player.Health <= 0f && Mission.Current.Time - this.timeOfDeath >= 2f;
    if (flag3)
    {
    List<Agent> list = Mission.Current.GetNearbyAllyAgents(new Vec2(0f, 0f), 1E+07f, this.player.Team).ToList<Agent>();
    bool flag4 = list.Count > 0;
    if (flag4)
    {
    bool flag5 = Campaign.Current != null && Campaign.Current.MainParty != null && Campaign.Current.MainParty.MemberRoster != null;
    if (flag5)
    {
    this.controlAgentFromParty(list);
    }
    else
    {
    this.controlRandomAgent(list);
    }
    }
    else
    {
    this.player = null;
    }
    }
    }
    }
    }

    // Random bir agent atamamızı sağlar
    private void controlRandomAgent(List<Agent> agents)
    {
    this.controlAgent(agents.GetRandomElement<Agent>());
    }

    // Kontrol edilen karakter öldükten sonra trgigerlanacak şeyler
    private void controlAgent(Agent agent)
    {
    try
    {
    agent.SetMaximumSpeedLimit(-1f, false);
    }
    catch (Exception ex)
    {
    }
    agent.Controller = this.player.Controller;
    try
    {
    ScoreboardVM scoreboardVM = (ScoreboardVM)Mission.Current.GetMissionBehaviour<BattleObserverMissionLogic>().BattleObserver;
    scoreboardVM.IsMainCharacterDead = false;
    }
    catch (Exception ex2)
    {
    }
    bool flag = agent.Name != null;
    if (flag)
    {
    InformationManager.DisplayMessage(new InformationMessage("Şuan kontrol etmektesiniz: " + agent.Name));
    }
    }

    private void controlAgentFromParty(List<Agent> agents)
    {
    List<string> list = new List<string>();
    foreach (Agent agent in agents)
    {
    list.Add(agent.Name);
    }
    List<CharacterObject> list2 = Campaign.Current.MainParty.MemberRoster.Troops.ToList<CharacterObject>();
    foreach (CharacterObject characterObject in list2)
    {
    int num = list.IndexOf(characterObject.Name.ToString());
    bool flag = num != -1;
    if (flag)
    {
    this.controlAgent(agents.ElementAt(num));
    return;
    }
    }
    this.controlRandomAgent(agents);
    }

    private Agent player = null;

    private float timeOfDeath = -1f;
    }
    }

    Kaydedelim yaptığımız değişiklikleri



    Bu aşamayı isterseniz atlayabilirsiniz. Ben güvenlik olsun diye ekledim. Çok da mühim değil. Başvuru olarak önceki derslerde MB klasöründen eklenmesi gerekenleri göstermiştim. Üstüne resimdeki 5 dosyayı da eklemeniz iyi olabilir. Bir sıkıntı çıkarırsa silebilirsiniz. Dediğim gibi mühim değil.



    Visualda son olarak şu şekilde gözükmeli kodlar



    Son kez kaydedip yukarıdan "derle"ye tıklıyoruz. Kodlar modumuza eklenmiş oluyor. İşimiz bitti sayılır. Son olarak Modulesde modumuzun klasöründeki "SubModule" dosyasını açıp resimdeki gibi kodları ekliyoruz.

    <SubModule>
    <Name value="Modumuz"/>
    <DLLName value="Modumuz.dll"/>
    <SubModuleClassType value="Modumuz.Kontroletme"/>
    <Tags>
    <Tag key="DedicatedServerType" value="none" />
    <Tag key="IsNoRenderModeElement" value="false" />
    </Tags>
    </SubModule>



    Ve artık ölünce savaşımız bitmiyor....

  6. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Bu konu çok gerilerde kalmış devamı gelecek mi acaba? iyi bir eğitim olabilir bu forum için bu konu.

    Gelecek. Şu 1 haftadır modülleri karıştırıyorum. Oyun da hep güncelleme halinde malum. Acele etmeye gerek yok henüz modlama için diye düşünüyorum. Tam sürüm çıkana kadar haftada bir iki ders atmaya çalışacağım.

    Sana ulaşabileceğim bir discord adresin veya ismin var mıdır bende senin öğrendiklerini biraz araştırdım ve aynı konumdayım seninle eğer ileride bir mod yapmak istersen beraber yapabiliriz

    Herhangi bir platformda aliemre461 nickim. Steamden discorddan vs. ulaşabilirsin
  7. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Güzel bir anlatım olmuş da, merak ettiğim bir şey var. Taleworlds'ün yayınlayacağız dediği Modlama Araçlarını ne zaman yayınlayacağı belli mi acaba?

    Tarih vermemişlerdi en son. Bakmak lazım modding bölümüne. Ama oyunun tam oturmasını beklerler diye düşünüyorum...
  8. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Selamlar hepinize. Bugünkü konumuz kolaydan başlayarak yeni bir menü seçeneği eklemek olsun...

    Öncelikle visual studioda projemizi açıyoruz ve alttaki gibi eklentilerimizi yapıyoruz. Bu kodlar başvuru olarak eklediğimiz ana oyun dosyalarından gereken kısımları taramamızı sağlayacak.



    Ardından alttaki kodu şekildeki gibi yapıştırıyoruz. Bu yeni bir menü eklememizi ve sonucunda triggerlanacak şeyi girmiş olduk. Bu tarz kodların işleyişini oyunun modül dosyalarını inceleyerek öğrenebilirsiniz.

    protected override void OnSubModuleLoad()
    {
    Module.CurrentModule.AddInitialStateOption(new InitialStateOption("yenisekme",
    new TextObject("En büyük hükümdar?", null),
    9990,
    () => { InformationManager.DisplayMessage(new InformationMessage("Sancar Han!")); },
    false));
    }




    ve bu şekilde bir manzara ile karşılaşıyoruz



    dnSpy uygulamasından da kod dizinin module dosyamıza nasıl girildiğini de görebiliriz. Uygulamanın nasıl işlediğini de anlamış olursunuz




    İyi forumlar dilerim hepinize...
  9. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Bir programcı olarak anlatımınızı merakla bekliyorum.bakalım neler çıkacak ileride. Allah kolaylık versin.

    Edit: C mi kullanacaksınız C#'mı?

    C# ie ilerlenir gibi duruyor şuan
  10. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Selamlar forum ahalisi ikinci ders olarak mantık kavrama açısından kaynak kodlarını nasıl görebileceğimizi göstermeye çalışacağım eklentileri yaparken bu kodlardan yararlanacağımız için önemli burası. Malumunuz henüz talewords modüle dosyalarını paylaşmadı bu şekilde biz ulaşmış olacağız. İlerde module dosyaları paylaşıldıktan sonra bu dersin bir önemi kalmayacak. Fakat erken aşamada bu dosyalara ulaşmadan büyük eklentiler yapamayız. Ayrıca mod yapmanın da ötesinde bu dosyaları inceleyip şuan erken erişimde aktif olmayan özellikleri de görebilirsiniz. Üstüne bunları kendi modunuzmuş gibi ayrı bi modulede aktifleştirip oyun etkisini de görebilirsiniz. Talewords çoğu özelliğin kodlarını girmiş fakat şuan aktif değil. Ben inceledim bir süre gözüme çarpanlar quest kısmında yeni görevler ve diğer dosyalarda şuan oyunda olmayan yeni diyalogları gördüm. Umarım ki talewords hızlıca aktifleştirir bunları. Şimdi geçelim dersimize...


    https://github.com/0xd4d/dnSpy/releases

    Üstteki linkten aşağıda resimde gördüğünüz zip dosyasını indirmeniz gerekli öncelikle. Bu uygulama dediğim gibi kaynak kodlarını görmemizi sağlayacak.



    İnen dosyaları istediğiniz yerde bir klasör açıp aktarın.



    Ardından "dnSpy.exe" uygulamasını çalıştıralım. Açılan uygulamada sol üstten dosya sekmesinden "Aç" sekmesini seçin



    Resimde gördüğünüz gibi Bannerlord'un istediğiniz bir klasöründeki dosyayı seçin. İlk derste "Talewords.vsvsvsvs" şeklinde ismi olan dosyaları göstermiştim. Bizim işlem göreceğimiz asıl kodlar bu dosyalarda. İçindeki kodları görmek istediğiniz bir dosyayı seçin. Ben örnek olarak "core" dosyasını seçtim.



    Ardından yine resimde gördüğünüz gibi panele dosyalar yüklenmiş olacak. Panelden seçtiğiniz dosyaya sol taraftan tıklayın.



    Altta gördüğünüz gibi ben "core" dosyasından "banner" sekmesini seçtim ve o dosyadaki oyundaki bayrak hakkında girilenleri şekildeki gibi görebiliyorum. Artık istediğim gibi bunları düzenleyebilirim. Bu uygulama aracılığı ile ileride bir moddaki özelliklerin kaynak kodlarını da görebiliriz. Fakat değişiklikleri sakın buradan yapmayın !!! Burası sadece kodları görmek için değişiklikleri buradaki kodları baz alıp inceleyip kendi "module" dosyamızda yapacağız....



    Haydi iyi incelemeler...
  11. aliemre4611

    Bannerlord Mod Yapımı Dersleri - Öldükten Sonra Savaşa Devam Etme

    Saygıdeğer forum ahalisi. malumunuz oyun çıktı insanlar oynamaya başladı. Mount&Blade’i Mb yapan modlama konusunda da yavaştan ilerleyebiliriz. Ben bu konuda hem bireysel java, c vs bildiğim için hem de yabancı forumdan ve Youtube’dan da takip ederek öğrendiğim için foruma ufak bir tutorial...
Back
Top Bottom