--
[ Picked text/plain from multipart/alternative ]
Yeah, it does.

On 4/19/07, Yahn Bernier <[EMAIL PROTECTED]> wrote:
>
> Does this error occur from a vanilla install of the SDK code?
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Justin Krenz
> Sent: Thursday, April 12, 2007 6:44 PM
> To: hlcoders@list.valvesoftware.com
> Subject: Re: [hlcoders] FW: SDK Needs to be fixed
>
> Prediction->IsFirstTimePredicted() did not fix the problem as the
> problem is not with simulating a command multiple times.  The problem is
> with the m_flNextPrimaryAttack variable.  Take a look at this:
>
> CMD#    m_flNextPrimaryAttack   gpGlobals->curtime
> CLIENT:
> 8255    125.99979               126.22500
> 8258    126.26978               126.27000
> 8261    126.26978               126.31499
> 8264    126.35978               126.36000
> SERVER:
> 8255    126.26978               126.31499
> 8258    126.35978               126.36000
> CLIENT:
> 8268    126.26978               126.42000
> 8270    126.44978               126.45000
> 8275    126.44978               126.52499
> 8276    126.53977               126.54000
> SERVER:
> 8270    126.44978               126.45000
> 8276    126.53977               126.54000
>
> This is information taken from just before PrimaryAttack() is called.
> As you can see, the extra weapon firings are from commands that are not
> being predicted multiple times.  They're from commands that only see the
> weapon as firing on the client.  What is not included here is
> information from just after PrimaryAttack() is called.  If I included
> that information, you would see that m_flNextPrimaryAttack is being
> updated to a time in the future as it should be during PrimaryAttack()
> and then has been reverted to an earlier time sometime inbetween the
> calls to PrimaryAttack.  That's the source of the problem and causes the
> client to fire the weapon multiple times.
>
>
>
> Yahn Bernier wrote:
> > This might not be the best fix.  Because of the way prediction works,
> > it's expected that variables from the server are set back and
> > re-simulated multiple times if there's latency in the connection.  You
>
> > have to make sure that you only create effects, etc., the first time
> > you predict a weapon firing on the client.  You can determine whether
> > this is the "first time predicted" by asking
> > prediction->IsFirstTimePredicted().
> >
> > The discrepency with ammo sounds like a bug in the mod where the
> > server and the client are not simulating the exact same # of bullets
> > to deduct from the clip.  There are shared random # generators and
> > other means to make sure that the same CUserCmd which causes firing
> > should deduct the same # of bullets on both client and server
> > (SharedRandomInt, etc.)
> >
> > Yahn
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Mark
> > Chandler
> > Sent: Thursday, April 12, 2007 4:22 PM
> > To: hlcoders@list.valvesoftware.com
> > Subject: RE: [hlcoders] FW: SDK Needs to be fixed
> >
> > Not sure but only half of this worked for ge:S source. But its given
> > me idea how to fix the rest so ill post up when im done.
> >
> > Mark [aka Lodle]
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Justin
> > Krenz
> > Sent: Friday, April 13, 2007 4:31 AM
> > To: hlcoders@list.valvesoftware.com
> > Subject: Re: [hlcoders] FW: SDK Needs to be fixed
> >
> > I was contacted personally by the Goldeneye Source team about this
> > bug, and I had fixed this already in Empires.  I assume since this is
> > a bug inherent in the HL2DM sdk that everyone will want to fix this
> > bug in their code.  This is the e-mail including the fix I sent to the
> GE team:
> >
> >
> >
> > The bug is caused by the networked variable m_flNextPrimaryAttack
> > being reset after the client has simulated firing, but the server has
> > not fired the weapon yet.  The client will fire their weapon and
> > increase m_flNextPrimaryAttack to a time in the future.  When the
> > client receives the next server update, this variable is reset to the
> > server's value of m_flNextPrimaryAttack which has not recorded that a
> > shot has been fired yet.  With the value now being less than curtime,
> > it's ok to fire the weapon again which is much sooner than it should
> be.
> >
> > This bug was also related to another bug we had where our ammo counter
>
> > would count down with each shot and then jump back up because the
> > client was firing shots and the server was correcting the client on
> > how many bullets had actually been fired.  This was also causing the
> > client to begin reloading their weapon when it did not need reloading.
> >
> > How to fix the first bug:
> >
> > In basecombatweapon_shared.h, add the following (create a variable to
> > store the last time the client fired):
> >
> > #ifdef CLIENT_DLL
> > float m_flPrevPrimaryAttack;
> > #endif
> >
> > In basecombatweapon_shared.cpp,
> > CBaseCombatWeapon::CBaseCombatWeapon(),
> > add the following (start the new variable off as 0):
> >
> > #ifdef CLIENT_DLL
> > m_flPrevPrimaryAttack = 0;
> > #endif
> >
> >
> > In basecombatweapon_shared.cpp, CBaseCombatWeapon::ItemPostFrame( void
>
> > ), find the lines that read:
> >
> > if ( ( pOwner->m_afButtonPressed & IN_ATTACK ) || (
> > pOwner->m_afButtonReleased & IN_ATTACK2 ) )
> > {
> >   m_flNextPrimaryAttack = gpGlobals->curtime; } PrimaryAttack();
> >
> >
> > Change the "PrimaryAttack();" line to the following:
> >
> > #ifdef CLIENT_DLL
> > if (m_flPrevPrimaryAttack <= gpGlobals->curtime) { #endif
> >   PrimaryAttack();
> > #ifdef CLIENT_DLL
> >   m_flPrevPrimaryAttack = m_flNextPrimaryAttack; } #endif
> >
> >
> > This stores the client's m_flNextPrimaryAttack variable in a separate,
>
> > non-networked variable that won't get "stomped" with each network
> > update.  We then check the m_flNextPrimaryAttack variable against the
> > client's m_flPrevPrimaryAttack to see if we should really be
> > simulating
> > PrimaryAttack() on the client again.  If your weapons have secondary
> > attacks that are susceptible to the same bug, you'll have to add
> > another variable for the secondary attack time and check against that.
> >
> > For the second bug, check your weapons' PrimaryAttack() functions and
> > make sure any lines that alter the weapon's m_iClip1 or m_iClip2
> > variable are only occurring on the server.  By default, there should
> > be a line that reads:
> >
> > if ( iBulletsToFire > m_iClip1 )
> >   iBulletsToFire = m_iClip1;
> > m_iClip1 -= iBulletsToFire;
> >
> > Surround the line that decrements m_iClip1 with #ifdef/#endif
> GAME_DLL:
> > #ifdef GAME_DLL
> > m_iClip1 -= iBulletsToFire;
> > #endif
> >
> > Otherwise, the client will reach m_iClip1 == 0 sooner than the server
> > and begin reloading while there may be one bullet left in the gun
> > according to the server.  You also might see that the ammo counter is
> > jumping around as the client decrements bullets, and then the server
> > says that there are more bullets in the gun causing the counter to
> > flash to a higher number.
> >
> >
> >
> > Mark Chandler wrote:
> >> This is a multipart message in MIME format.
> >> --
> >> [ Picked text/plain from multipart/alternative ]
> >>
> >>
> >> SDK Needs to be fixed
> >>
> >>   _____
> >>
> >> Hi,
> >>
> >> My name is mark and im one of the main programmers for a source mod
> >> called Golden Eye source (http://goldeneyesource.com). Now we have
> >> had
> >
> >> a major
> > bug
> >> that has been plaguing the mod for about 8 months to a year now. The
> > problem
> >> is that when firing a bullet in game some times it multi fires
> >> causing
> >
> >> two bullet decals to appear (or worse up to 50). This problem is
> >> hardly noticeable for pings from around 0-100 but gets worse after
> > that.
> >> The mod team and i have have spent countless of hours on this problem
>
> >> rewriting code and searching to what is causing this but with no
> luck.
> >>
> >> To prove that it is not the fault of golden eye modified source code
> >> i
> >
> >> started a new mod based on the advanced sdk. And guess what? Same
> > results.
> >> http://lodle.net/multifire2.avi
> >>
> >> Lag was introduced using net_fakelag (200 and 500) and from the video
>
> >> you can see the shoot gun going mad and the mp5 producing multi fire.
> >>
> >> I would post this on verc but hardly any valve employees go there any
> > more.
> >> So im posting it here in the attempt to get a solution to this
> > problem.
> >> Mark [aka lodle].
> >>
> >>
> >>
> >>
> > http://forums.steampowered.com/forums/showthread.php?p=6121132&posted=
> > 1#
> > post
> >> 6121132
> >>
> >>
> >>
> >> --
> >>
> >> _______________________________________________
> >> 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
> >
> > _______________________________________________
> > 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
> >
> >
>
> _______________________________________________
> 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
>
>


--
-omega
--

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to