搜索结果: *

  1. Fix Campaign Map AI

    I made a mod that allowed lords to recruit scouts in their parties and i'm not sure it changes much in this domain. Just my 2 cents in the subject.

    Lords often have already really high stats with how they are generated, like 200 in everything, and adding a scout with 250 won't change much in this.
    I guess the issue is more about the models and game design, like someone said, the cat & mouth issue is the absolute cancer, if you find it fun to have 20 smalls armies of 30 people raiding your villages and able to run away at supersonic speed as soon as you approach to come back the exact second you leave, then the game is perfect right?

    The speed calculation is broken, the spotting calculation is broken too and both works together, if you change one without changing the second you will simply make things even worst.
  2. Steam Workshop Support

    After some testing.
    Creating a new module using the dev tools and throwing the folder structure in my mod solved the export issue (or it's setting my mod unofficial, what would mean mods are default official, what looks like a bug), but don't allows me to update on the workshop anyway.

    While i'm here and testing the Workshop.exe :
    -When i try to create a new mod on steam i got a strange error, the console counts many things with this pattern status: k_EItemUpdateStatusPrepatingConfig 0 / 0 (or sometime 0 / 201139)
    And at the end Status: k_EItemUpdateStatusInvalid 0 / 0 Uploading item failed. File not found!
    After this i have an empty item on my workshop, with no name no pic, and 0mb of file, so really empty.
    -When i try to update the empty item it does the counting again i have different values for preparing content most 0 / 0 but sometime one or two lines with different values, never the sames and ending with the same two lines.

    The update methods bug if you set the ModuleFolder inside M&B2 directory, i guess it doesn't like spaces or special characters or both, while the create doesn't care, that's a bit funny.
    Also why when i select only client on the export it still copies the Win64_Shipping_wEditor content which obviously shouldn't be there?


    Here is my last attempt at uploading,
    插入代码块:
    Starting...
    Status: k_EItemUpdateStatusPreparingConfig 0 / 0
    Status: k_EItemUpdateStatusPreparingConfig 0 / 0
    Status: k_EItemUpdateStatusPreparingConfig 0 / 0
    Status: k_EItemUpdateStatusPreparingContent 0 / 0
    Status: k_EItemUpdateStatusPreparingContent 0 / 0
    Status: k_EItemUpdateStatusPreparingContent 0 / 0
    Status: k_EItemUpdateStatusPreparingContent 0 / 0
    Status: k_EItemUpdateStatusPreparingContent 164984 / 206594
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 0
    Status: k_EItemUpdateStatusUploadingContent 0 / 535
    Status: k_EItemUpdateStatusUploadingContent 0 / 535
    Status: k_EItemUpdateStatusUploadingContent 0 / 535
    Status: k_EItemUpdateStatusUploadingContent 0 / 535
    Status: k_EItemUpdateStatusUploadingContent 535 / 535
    Status: k_EItemUpdateStatusUploadingContent 535 / 535
    Status: k_EItemUpdateStatusUploadingContent 535 / 535
    Status: k_EItemUpdateStatusUploadingContent 535 / 535
    Status: k_EItemUpdateStatusUploadingContent 535 / 535
    Status: k_EItemUpdateStatusInvalid 0 / 0
    Uploading item failed. File not found!
    Finished...

    My guess at this error, you are trying to write somewhere you shouldn't to build the package ...


    Edit: Finally done, used steamcmd to know what the error truly was, thanks people from TLD from warband, they are always so much over the top lol. Yeah it's an issue already existing back then and could fix most issues thanks to them.
  3. Steam Workshop Support

    Native modules don't appear for me there either. But, I am able to get my module published and it does appear there. My guess is that there is something wrong with your SubModule.xml, the location of your modules or the folder structure within your modules. I can check it if you link your modules if you uploaded them elsewhere before.
    Yeah sure you can get it here https://www.nexusmods.com/mountandblade2bannerlord/mods/1033 or https://www.reasontech.fr/bannerlord/UsefulCompanions/UsefulCompanions-f102.zip

    They are not the lastest versions but shouldn't change anything from my issue.
  4. Steam Workshop Support

    Been a few times i tried to upload my mod on the workshop and since your editor don't want to work for me, and here we are forced to use it, i always end with an empty item if i try to go simply for the console command.

    A good picture is better than a long text
    editor.jpg

    @Dejan My publish module list is always empty, there aren't even the native modules inside, how am i supposed to make this thing work?
  5. Resolved Two main issues: Main Char Equipped as Horse archer but in Cavalry, 1to 2 my troops rout when I lead but not for Send Troops

    After investigating a bit :

    The rooted troops are those wielding banners, i don't know why they are always marked as rooted and couldn't check if they truly were in battle. But putting more banners in your party leads to more rooted troops.

    For the formation issue it's strictly hero related and what is really stupid is when you actually command your troops ingame (Like pressing 1 key) you can see how they are composed and clearly you have identified troops not where they should be, a horse archer icone in your infantery for example. Looks like someone messed in the code with heroes affectation cause the game knows perfectly if they are infantry or not, if they are archers or not.
  6. e1.6.0-v1.2.0 Modding Adjustments & Access Modifiers Changes

    @Dejan
    I have a small request too, if someone even care at all now.
    In the village class there is a property "tradebound" that is supposed to be updated from time to time in the game and is purely economic. But first the game is really buggy on this and secondly i just want to change the behavior to something different, so two good reason to let people access it, but of course if the property is public, the set method is internal.

    插入代码块:
    public Settlement TradeBound
            {
                get
                {
                    if (!this._bound.IsTown)
                    {
                        return this._tradeBound;
                    }
                    return this._bound;
                }
                internal set      // <-------------------------------------------------- this here
                {
                    if (this._tradeBound != value && !this._bound.IsTown)
                    {
                        Settlement tradeBound = this._tradeBound;
                        if (tradeBound != null)
                        {
                            tradeBound.Town.RemoveTradeBoundVillageInternal(this);
                        }
                        this._tradeBound = value;
                        Settlement tradeBound2 = this._tradeBound;
                        if (tradeBound2 == null)
                        {
                            return;
                        }
                        tradeBound2.Town.SetTradeBoundVillageInternal(this);
                    }
                }
            }

    I don't remember who said internal should be purely removed from the code and i tend to agree more and more. If it can have someuse for classes, this kind of ... Is just here to annoy and spit at the face of modders. It's like saying "Yeah we wanted to make it private, but if we did we couldn't make the game work, it was above our skills. So we made it internal cause we know it should be public but it's funnier to see you struggle with reflection to have it working, because we are so much better than you AHAHAH".

    So yes please, can you remove this internal? And many others that truly have no sense either? And no it's not good coding practice, it's the exact opposite.
    Thank you for your time if you read this.
  7. Creating wanderers from simple to unnecessarily tedious past 1.7

    The XSLT can't break easily, using C# for something like this is actually to my point of view the way to break everything. The XML files changes a lot less often than the internal code from my experience lol.

    I've been messing a bit with the XSLT part for a few days now and i see no drawback to using this method (except it's still more complicated than what it was before)
  8. Creating wanderers from simple to unnecessarily tedious past 1.7

    Ok it's the second option that needs to be avoided as much as possible, cause removing a mod that adds a culture to the game makes your saves crash.
    So if you change the way you put a wanderer in the game it will make all older saves incompatible, while the XSLT solution keeps compatibility.
  9. Creating wanderers from simple to unnecessarily tedious past 1.7

    ...xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:strip-space elements="*"/> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/>...
  10. Resolved Two main issues: Main Char Equipped as Horse archer but in Cavalry, 1to 2 my troops rout when I lead but not for Send Troops

    The new auto group system is really bad, not that it's bad in itself, i was surprised how clean it was for once and that Taleworld did a really good work at it, but it's a disease pretty common in most computer science since the 2010 year where the developer thinks his work is perfect and that he knows better than YOU what YOU want.

    So first yeah it's a mess to put your companions in the right group and those not captain usually are moved randomly between them each new battle, but ok, why not.

    But secondly the game apparently have no clue what is cavalry and what is mounted archer cause i always end up with mounted archers with no spear in my main cataphract group and charging like idiots to get killed. I changed the groups a few times, using tricks to set them correctly and for a battle i could have what i wanted and what i was supposed to get, but surprise, next battle all have been reset ...
    r5iVDDp.jpg


    Here is one short example, how my main char ends up in a full shock cavalry formation while equipped with bows and no polearm?! Also you don't see on the screenshot but one of my shock cavalry (spear and shield) is in the infantry formation and so on, nothing is done correctly.

    And since it's not fixed but change a lot i guess there is some use of the random function ... Don't wonder too much why it's broken ...



    PS: also i have the same issue than OP now, every fight i have a legionary rooted out even against a group of 3 looters ...
  11. e1.6.0-v1.2.0 Modding Adjustments & Access Modifiers Changes

    Wanderers weren't nobles, at least most of them. Now they all become automatically when joining your clan and loose it as soon as they leave. That's a bit strange to my point of view as being a noble is related to the family more than the clan.
  12. e1.6.0-v1.2.0 Modding Adjustments & Access Modifiers Changes

    @Dejan

    Ok, after reading the patch and been pretty excited about the new options i got my hands in coding and it's a cold shower.

    First, why fore single OR multiplayer for a module? What happen for modes like the one trying to make the campaign a coop, it will be a single player AND multiplayer mod you can play both. Again starting to restrict badly what modders are trying to achieve.

    Secondly, why remove isNoble in the hero class. Ok you moved it to the clan class but it has no sense at all. So a hero not noble joining a clan becomes nobles and is not anymore when he is kicked out? What about the the herocreation that was actually giving bonus depending on if the hero was noble or not, mainly in leadership, it was a bit like his education and how he was raised, so now all the clan have the bonus no matter what, while other non noble clans won't have it, even if you marry a noble woman.

    Finally where is the IHeroCreationCampaignBehavior implemented in the last version? If you actually try to use it now you got an exception in submodule class of the game with a "reflection" error that do not tells you anything except "Oh dude there's an error" come on guys ...
  13. e1.6.0-v1.2.0 Modding Adjustments & Access Modifiers Changes

    And thank you for the rework of the hero creator.
  14. Saving mod data/settings - Thoughts

    Alright so trying to continue debugging where it's being messed up.

    Went to CampaignBehaviorManager witch manages all the data collected in the various behaviors with two methods OnBeforeSave() and OnGameLoaded() obviously the names are self explanatory.

    On before load checks every behavior in the game (They are stored in a dictionary) and call for each behavior in the dic, CampaignBehaviorDataStore.SaveBehaviorData(campaignBehavior). Here my behavior is in the dic and the method is correctly called on him. On a comment, putting a string id as you asked is a bit useless as it already have a unique name including the prefix of my mod. So unless you start to call all your behaviors UCsomething it's unlikely i'll have any issues with this :wink:

    So after a bit of trying i found my behavior was the #192 in the list making it a lot easier to check what was saved or not. And at save my values are correctly collected. And to my biggest surprise they were also correctly collected on loading! Checking the values with a break in OnGameLoaded() with DNspy got me the values i saved correctly with my old methods pre 1.7.1.
    So all is fine and correctly loaded in CampaignBehaviorDataStore but the issue is my behaviors are completely missing in private List<CampaignBehaviorBase> _campaignBehaviors; and since you make a foreach on this list to run syncdata that explains why my syncdata are constantly skipped.

    Now that i have the root of the issue i focus my attention on this list ... SetBehaviors(IEnumerable<CampaignBehaviorBase> inputComponents) seem to also miss them completely and list only basegame behaviors.
    So loading a game, no matter how, _campaignBehaviors shows 189 items and saving right behind it shows 193 items and ...from 194 to 379 (so 185 more) null values ...
    ghostvalues.jpg

    I'm not an absolute expert at C# coding but this really looks like something that shouldn't be there.

    So why on loading a game my behaviors (All of them) are completely ignored and on saving, using the same class of yours (not you personally but TW), the same values, they are correctly listed. Now i know the issue is on your side and you really changed something more than only the save system with 1.7.1.


    Edit : So apparently, the game load my save before i actually use AddBehavior(CampaignBehaviorBase campaignBehavior), seriously ... So now loading happens earlier in the loading process and will mess a bit more with all it's phases. When will we have a proper documentation about things like this? When will you correctly communicate on so sensible changes? I mean come on, it's how to set up a mod properly and we have not a single word about how to use it properly.
  15. Saving mod data/settings - Thoughts

    No change for me. When you say it seemed fine that mean you couldn't find an error in the code or it was running fine in the debugger?

    Even with your change i can't get back the values from my savegame, they are not stored in or not loaded, but all i put inside simply vanishes. (And was working perfectly before 1.7.1)

    I'd love to debug it myself but i don't have the tools. I can't check in the saves if my variables makes it there as it's in binary format and can't read it properly. I can't either really check your code as DNspy do not give me values, but only allows me to put break points.
  16. Saving mod data/settings - Thoughts

    Hey, no i only have a single UCDialogues behavior that i use to load all the dialogues i want to add in games. Not sure what you mean about custom stringID but if you want the version compatible with 1.7.1, here it is, starting to be a bit old as i do not update before i could solve this issue.

    I don't know if you needed the source code or the complied version, if you need the source i'll make a zip if needed.
  17. e1.6.0-v1.2.0 Modding Adjustments & Access Modifiers Changes

    Hello,

    I tag here cause i asked a few times for help and got only a bit from another modder but it was also beyond his abilities. So i have an issue in my mod related to saving (and maybe loading) introduced with 1.7.1 of Bannerlord and it's now monthes i'm trying to figure what is going wrong and why it suddenly stopped working.

    Here is the initial thread where i explain my issue with the various answers and what we tried.
    So if @Dejan could have a look or at least tell me if someone is aware of it, or even looking about the issue? As it's pretty specific i was expecting someone to come back to me and ask precision or to share my code but got nothing like this.
  18. Saving mod data/settings - Thoughts

    I asked on the discord and pointed to this thread.
  19. Saving mod data/settings - Thoughts

    Nope i never reset the class. It's a pretty simple class with 5 variables in it, 4 accessible and one for internal config, the constructor simply put them at default and syncdata is supposed to be called after this. (If it's called before the initiating phase it would be an issue lol)

    But once again the method is actually never called on loading that's what really bugs me. If it was called at least i could check what is wrong or i would get an error, or have some values to check in debug mode, but no stop on loading, never like i put in my post. And on saving all seem correct ... I even used DNSspy to put a break point in TW code and on saving the IdataStore is correctly created and have my 4 values in it and the two boolean issaving and isloading at the right values to when saving ... That's really something deeper in TW code that is affecting all this and i don't know what.
后退
顶部 底部