Warband Script Enhancer 2 (v1.1.2.7)

Users who are viewing this thread

1.1.2.1
-Development of a multiplayer campaign mode has begun.
-Added messages font scale option.
-Added ti_on_agent_fill_collision_capsule trigger.
-Fixed string parsing with " symbol from module files.


Thanks to Azremen for major sponsoring development of a multiplayer campaign mode.
Thanks to noooxy for sponsoring development of a ti_on_agent_fill_collision_capsule trigger.
Thanks to Anoki for sponsoring development of a font scale option.

(ti_on_agent_fill_collision_capsule , 0, 0, [],
[
(store_trigger_param_1, ":agent_no"),
(store_trigger_param_2, ":radius"),

(position_move_z, pos1, 50),
(val_mul, ":radius", 2),
(set_trigger_result, ":radius"),
])

The multiplayer campaign mode is in an early stage of development and is not yet intended for public testing.
Currently ready: dedicated campaign server build, separation of campaign logic into server and client, server browser, basic network protocol, party replication.

 
I'm super excited for the campaign multiplayer, and I wanted to ask is there anyone we could help? Do you need extra programmers? If so what kind of experience/ languages should they know?
 
I heard that a multiplayer campaign already exists on Bannerlord. It would be very helpful for me to have detailed information on how they implemented all mechanics - time, battles, interactions in cities, dialogs, character and parties screens, etc.
As soon as work on the engine part is completed, campaign module system will be released into the open source.
 
Last edited:
I heard that a multiplayer campaign already exists on Bannerlord. It would be very helpful for me to have detailed information on how they implemented all mechanics - time, battles, interactions in cities, dialogs, character and parties screens, etc.
As soon as work on the engine part is completed, campaign module system will be released into the open source.
Looking for this I'm guessing: https://bannerlord-online.com/

There should be a bunch of videos on YouTube you could check out
 
Looking for this I'm guessing: https://bannerlord-online.com/

There should be a bunch of videos on YouTube you could check out
I don't think that's exactly what he's looking for.
Bannerlord online isn't a multiplayer campaign as it has no ai lords, but it's all player driven.
Though it might be helpful considering they still had to figure out time, battles, etc.
As for the multiplayer campaign mods, however, I couldn't find any that released. Best I found were still very early in development.
 
Hi! Could you please show how agent_set_attack_action and agent_set_defend_action work in the code?
Code:
    case agent_set_attack_action:
        if (mbCheckAgent(intValues[0]) && rglBetween(intValues[1], -2, 4) && rglBetween(intValues[2], 0, 2))
        {
            mbAgent *agent = g_mission->getAgent(intValues[0]);

            agent->m_attackOverrideType = intValues[1];
            agent->m_attackOverrideHold = intValues[2];
        }

        break;
    case agent_set_defend_action:
        if (mbCheckAgent(intValues[0]) && rglBetween(intValues[1], -2, 4) && values[2] >= 0)
        {
            mbAgent *agent = g_mission->getAgent(intValues[0]);

            agent->m_defendOverrideType = intValues[1];
            agent->m_defendOverrideDuration = values[2] / 1000.0f;
            agent->m_defendOverrideTimer.reset();
        }

        break;
void mbAgent::updateAiControl()
{
    m_control.m_flags1 = m_ai.m_control.m_flags1;
    m_control.m_flags2 = m_ai.m_control.m_flags2;
    setLookHeight(m_ai.m_control.m_lookDir.z);
    changeLookDirf(m_ai.m_control.m_lookDir.vec2().getAngle());

    __int64 missionTime = mbGetRawMissionTime();
    bool found = false;

    while (!m_ai.m_queuedControls.empty())
    {
        mbAgentAiQueuedControl *queuedControl = &m_ai.m_queuedControls.front();

        if (queuedControl->m_time >= missionTime)
            break;

        m_control.m_flags2 |= queuedControl->m_control.m_flags2;
        m_ai.m_actionControl = m_control;
        m_ai.m_queuedControls.pop_front();
        found = true;
    }

    if (!found)
        m_control.m_flags2 |= m_ai.m_actionControl.m_flags2;

    if (m_attackOverrideType >= 0)
    {
        m_control.m_flags2 &= ~(cf2_defend_mask|cf2_attack_mask);

        if (m_attackAction == aa_releasing)
            m_attackOverrideType = -1;
        else if (m_attackAction != aa_readying || m_attackOverrideHold)
            m_control.m_flags2 |= getAttackControlFlagsFromType(m_attackOverrideType);
    }
    else if (m_defendOverrideType >= 0)
    {
        m_control.m_flags2 &= ~(cf2_defend_mask|cf2_attack_mask);

        if (m_defendAction != da_blocking && m_defendAction != da_parrying)
        {
            m_control.m_flags2 |= getDefendControlFlagsFromType(m_defendOverrideType);
            m_defendOverrideTimer.reset();
        }
        else if (m_defendOverrideDuration > m_defendOverrideTimer.getElapsedTime())
        {
            m_control.m_flags2 |= getDefendControlFlagsFromType(m_defendOverrideType);
        }
        else
        {
            m_defendOverrideType = -1;
        }
    }

    if (m_attackOverrideType == -2)
    {
        m_control.m_flags2 &= ~cf2_attack_mask;
        m_attackOverrideType = -1;
    }

    if (m_defendOverrideType == -2)
    {
        m_control.m_flags2 &= ~cf2_defend_mask;
        m_defendOverrideType = -1;
    }
}
 
There is another Bannerlord campaign multiplayer project that is still in heavy development. You can find more information about it here.

Many concepts are transversal, especially time management. I am pretty sure that the team has opted for continuous time. Part of the work involves handling war party events where players may join ongoing battles or find themselves trapped in a besieged town they strolled into, etc.
 
got rgl error called "exception access violation" with code 10016


The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}
and APPID
{15C20B67-12E7-4BB6-92BB-7AFF07997402}
to the user LAPTOP-1SDITEK6\daus SID (S-1-5-21-1414802737-2192527179-2729334624-1001) from address LocalHost (Using LRPC) running in the application container Unavailable SID (Unavailable). This security permission can be modified using the Component Services administrative tool.
 
could you please show condition of ti_on_agent_fill_collision_capsule ? this trigger on what situation?
This trigger is needed when you are using very large or non-humanoid skeletons to correctly determine collisions of hits on an agent. A standard capsule is generated from two points - the position of the head bone and the middle between the positions of the feet bones. This trigger allows you to override this capsule.
 
got rgl error called "exception access violation" with code 10016


The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}
and APPID
{15C20B67-12E7-4BB6-92BB-7AFF07997402}
to the user LAPTOP-1SDITEK6\daus SID (S-1-5-21-1414802737-2192527179-2729334624-1001) from address LocalHost (Using LRPC) running in the application container Unavailable SID (Unavailable). This security permission can be modified using the Component Services administrative tool.
This doesn't seem to be a problem with WSE2. There is a problem with your system, try googling the solution.
 
Back
Top Bottom