I fixed it :D
The asserts had nothing to do with it :(

Its some code that was modified in the asw codebase, in
"game\server\basecombatweapon.cpp"
In the "Operator_FrameUpdate" method.
Basically the code in the orange box called Dispatch anim events for NPCs
and Players, but the new code in ASW calls it just for the player.

Before (line 123) :

>     CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
>     if ( pOwner == NULL ) // < --- That's the problem, it exits here
> before calling DispatchAnimEvent !
>         return;
>
>     CBaseViewModel *vm = pOwner->GetViewModel( m_nViewModelIndex );
>     if ( vm == NULL )
>         return;
>
>     // HACK: Player weapon and view model often use the same mdl, which
> results
>     // in duplicate anim events.  For now, let the view model handle the
> events
>     // if they're the same, which is the preferred behavior in general.
>     CStudioHdr *w_hdr = GetModelPtr();
>     CStudioHdr *v_hdr = vm->GetModelPtr();
>     if ( w_hdr->GetRenderHdr() != v_hdr->GetRenderHdr() )
>     {
>         // Animation events are passed back to the weapon's owner/operator
>         DispatchAnimEvents( pOperator );
>     }
>
>     // Update and dispatch the viewmodel events
>     if ( vm != NULL )
>     {
>         vm->StudioFrameAdvance();
>         vm->DispatchAnimEvents( this );
>     }
>

Fixed (line 123)

    CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
>     if ( pOwner == NULL )
>    {
>       //NPCs Please !
>       DispatchAnimEvents( pOperator ); //< -- just add a call to
> DispatchAnimEvents before returning for NPCs
>         return;
>    }
>
>     CBaseViewModel *vm = pOwner->GetViewModel( m_nViewModelIndex );
>     if ( vm == NULL )
>         return;
>
>     // HACK: Player weapon and view model often use the same mdl, which
> results
>     // in duplicate anim events.  For now, let the view model handle the
> events
>     // if they're the same, which is the preferred behavior in general.
>     CStudioHdr *w_hdr = GetModelPtr();
>     CStudioHdr *v_hdr = vm->GetModelPtr();
>     if ( w_hdr->GetRenderHdr() != v_hdr->GetRenderHdr() )
>     {
>         // Animation events are passed back to the weapon's owner/operator
>         DispatchAnimEvents( pOperator );
>     }
>
>     // Update and dispatch the viewmodel events
>     if ( vm != NULL )
>     {
>         vm->StudioFrameAdvance();
>         vm->DispatchAnimEvents( this );
>     }
>

After that fix npcs now fire their guns !
http://www.youtube.com/watch?v=r0TUzPwD81s


By the way, I read in some comments in the code that there was a new system
handling NPCs firing their guns, but I couldn't find it. Has anybody
anything to say about that ?

On Mon, Nov 28, 2011 at 8:01 PM, Psy_Commando <psycomma...@gmail.com> wrote:

> I did some debbuging, and I tracked down some of the problem, it seems
> HandleAnimEvent isn't called when the npc fires. It runs the firing anims
> all fines but the event doesn't trigger the firebullet ...
>
> And also the assert about the leaf system has some references to a
> basenpc, which I guess is the metropolice, so I guess you're right that its
> related.
>
> But how to fix it ?
>
> On Sun, Nov 27, 2011 at 6:19 PM, Psy_Commando <psycomma...@gmail.com>wrote:
>
>> Here's the stacktrace for the attachment not found assert :
>>
>>      Server.dll!CBaseAnimating::LookupAttachment(const char *
>> szName=0x19853144)  Line 1960 + 0xdf bytes    C++
>>      Server.dll!CAI_BaseActor::HeadTargetValidity(const Vector &
>> lookTargetPos={...})  Line 852 + 0xd bytes    C++
>>      Server.dll!CAI_BaseActor::MaintainLookTargets(float
>> flInterval=0.10000002)  Line 1685 + 0x26 bytes    C++
>>      Server.dll!CAI_BaseNPC::PostMovement()  Line 2997 + 0x1d bytes    C++
>>      Server.dll!CAI_BaseNPC::NPCThink()  Line 4081    C++
>>      Server.dll!CAI_BaseNPC::CallNPCThink()  Line 3888 + 0x12 bytes    C++
>>      Server.dll!CBaseEntity::Think()  Line 712 + 0x39 bytes    C++
>>      Server.dll!CBaseEntity::PhysicsDispatchThink(void (void)*
>> thinkFunc=0x18821222)  Line 1023 + 0x8 bytes    C++
>>      Server.dll!CBaseEntity::PhysicsRunSpecificThink(int
>> nContextIndex=-1, void (void)* thinkFunc=0x18821222)  Line 2108    C++
>>      Server.dll!CBaseEntity::PhysicsRunThink(CBaseEntity::thinkmethods_t
>> thinkMethod=THINK_FIRE_BASE_ONLY)  Line 1903 + 0xf bytes    C++
>>      Server.dll!CBaseEntity::StepSimulationThink(float dt=0.10000006)
>> Line 1738    C++
>>      Server.dll!CBaseEntity::PhysicsStep()  Line 1881    C++
>>      Server.dll!CBaseEntity::PhysicsSimulate()  Line 1862    C++
>>      Server.dll!Physics_SimulateEntity(CBaseEntity * pEntity=0x07f4f100)
>> Line 2112 + 0x12 bytes    C++
>>      Server.dll!Physics_RunThinkFunctions(bool simulating=true)  Line
>> 2169 + 0xf bytes    C++
>>      Server.dll!CServerGameDLL::GameFrame(bool simulating=true)  Line
>> 1310 + 0xa bytes    C++
>>      engine.dll!0ae2a425()
>>      ...
>>
>>
>> And here's the one about the vectors are equals:
>>      Client.dll!CClientLeafSystem::ComputeBounds(int nCount=101,
>> CClientLeafSystem::RenderableInfo_t * * ppRenderables=0x0018324c,
>> CClientLeafSystem::BuildRenderListInfo_t * pRLInfo=0x001825b0)  Line 2315 +
>> 0xa1 bytes    C++
>>      Client.dll!CClientLeafSystem::BuildRenderablesList(const
>> SetupRenderInfo_t & info={...})  Line 2607    C++
>>      Client.dll!CRendering3dView::SetupRenderablesList(int viewID=0)
>> Line 3530 + 0x24 bytes    C++
>>      Client.dll!CRendering3dView::BuildRenderableRenderLists(int
>> viewID=0)  Line 3645    C++
>>      Client.dll!CBaseWorldView::DrawSetup(float waterHeight=0.00000000,
>> int nSetupFlags=10272, float waterZAdjust=0.00000000, int
>> iForceViewLeaf=-1)  Line 5448    C++
>>      Client.dll!CSimpleWorldView::Draw()  Line 5600    C++
>>      Client.dll!CSimpleRenderExecutor::AddView(CRendering3dView *
>> pView=0x02c93200)  Line 953 + 0xf bytes    C++
>>      Client.dll!CViewRender::AddViewToScene(CRendering3dView *
>> pView=0x02c93200)  Line 329 + 0x3f bytes    C++
>>      Client.dll!CViewRender::DrawWorldAndEntities(bool bDrawSkybox=true,
>> const CViewSetup & viewIn={...}, int nClearFlags=34, ViewCustomVisibility_t
>> * pCustomVisibility=0x00000000)  Line 2920    C++
>>      Client.dll!CViewRender::ViewDrawScene(bool bDrew3dSkybox=false,
>> SkyboxVisibility_t nSkyboxVisible=SKYBOX_3DSKYBOX_VISIBLE, const CViewSetup
>> & view={...}, int nClearFlags=34, view_id_t viewID=VIEW_MAIN, bool
>> bDrawViewModel=true, int baseDrawFlags=0, ViewCustomVisibility_t *
>> pCustomVisibility=0x00000000)  Line 1448    C++
>>      Client.dll!CViewRender::RenderView(const CViewSetup & view={...},
>> const CViewSetup & hudViewSetup={...}, int nClearFlags=34, int
>> whatToDraw=3)  Line 2408    C++
>>      Client.dll!CViewRender::Render(vrect_t * rect=0x0018e588)  Line 1002
>> + 0x2b bytes    C++
>>      Client.dll!CHLClient::View_Render(vrect_t * rect=0x0018e588)  Line
>> 1607 + 0x19 bytes    C++
>>      engine.dll!0ae1b796()
>>      ...
>>
>>
>> They both seems completely unrelated to the issue to me. Could you at
>> least explain how those could affect npc not firing at their targets ?
>>
>>
>>
>> On Sun, Nov 27, 2011 at 6:01 PM, Tony "omega" Sergi 
>> <omegal...@gmail.com>wrote:
>>
>>> and i'm pretty sure both of them are by the soldier trying to fire the
>>> gun.
>>>
>>>
>>>
>>> On Mon, Nov 28, 2011 at 7:37 AM, Psy_Commando <psycomma...@gmail.com>wrote:
>>>
>>>> They are holding a weapon, its just underground.
>>>>
>>>> About the errors, I don't know, those are asserts mostly having to do
>>>> with the stunstick and the combine soldier model.
>>>>
>>>> These 2 are repeated infinitely :
>>>> "
>>>> e:\project sfr local\asw_sfr\src\game\client\clientleafsystem.cpp
>>>> (2315) : Assertion Failed: VectorsAreEqual( vecTestMaxs,
>>>> pInfo->m_vecAbsMaxs, 1e-3 )
>>>> e:\project sfr local\asw_sfr\src\game\server\baseanimating.cpp (1960) :
>>>> Couldn't find attachment forward on skeleton Combine_Soldier.mdl for object
>>>> comb1
>>>> "
>>>> But I'm pretty sure its some kind of conflict in the ai or weapon.
>>>>
>>>> On Sun, Nov 27, 2011 at 4:43 PM, Tony "omega" Sergi <
>>>> omegal...@gmail.com> wrote:
>>>>
>>>>> I'm not entirely sure because it was hard to read, but if you fix all
>>>>> of the errors in the console spam, you might solve your issue...
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 28, 2011 at 5:25 AM, Psy_Commando 
>>>>> <psycomma...@gmail.com>wrote:
>>>>>
>>>>>> yeah, they have smg1
>>>>>>
>>>>>>
>>>>>> On Sun, Nov 27, 2011 at 3:04 PM, Saul Rennison <
>>>>>> saul.renni...@gmail.com> wrote:
>>>>>>
>>>>>>> Do they even have their weapon equipped?
>>>>>>>
>>>>>>>
>>>>>>> Kind regards,
>>>>>>> *Saul Rennison*
>>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> To unsubscribe, edit your list preferences, or view the list archives,
>>>>> please visit:
>>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> To unsubscribe, edit your list preferences, or view the list archives,
>>>> please visit:
>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> -Tony
>>>
>>>
>>> _______________________________________________
>>> To unsubscribe, edit your list preferences, or view the list archives,
>>> please visit:
>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>
>>>
>>>
>>
>
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to