Author Topic: Little sample of coding mistakes.  (Read 3338 times)

Offline adumbperson

  • Turn around in orbit!
Little sample of coding mistakes.
« on: May 25, 2019, 03:52:35 am »
Hello,

I wanted to show you galz and guyz, some error that I found while reading the many fonline sdk's that I've.

I wont say to which sdk the code belong... This post is done to help people write better code while implementing their dreams.

Code: [Select]
    uint16 centerhexX = 0;
    uint16 centerhexY = 0;
    if( valid( chosen ) && valid( target ) && !target.IsDead() && !target.IsChosen() )
    {
        centerhexX = target.HexX;
        centerhexY = target.HexY;
    }
    for( int i = 0; i < 6; i++ )
    {
        targethexX = centerhexX;
        targethexY = centerhexY;
        MoveHexByDir( targethexX, targethexY, i, radius );
        if( !GetHexPos( targethexX, targethexY,  drawx,    drawy  ) )
            return;
        coordsX[ i ] = drawx;
        coordsY[ i ] = drawy;
    }
    uint j;
    for( uint i = 0; i < 6; i++ )
    {
        j = i + 1;
        if( j > 5 )
            j = 0;
        int[] coords = { coordsX[ i ], coordsY[ i ], int(COLOR_RED), coordsX[ j ], coordsY[ j ], int(COLOR_RED) };
        DrawPrimitive( DRAW_PRIMITIVE_LINESTRIP, coords );
    }

This statement is wrong way to proceed...
Code: [Select]
    uint16 centerhexX = 0;
    uint16 centerhexY = 0;
    if( valid( chosen ) && valid( target ) && !target.IsDead() && !target.IsChosen() )
    {
        centerhexX = target.HexX;
        centerhexY = target.HexY;
    }

If there is an invalid pointer or/and that target is dead or/and target is chosen
centerhexX/Y wont be set to the right hexes... AND THE CODE STILL CONTINUE PROCESSING...

Hope this help.
How did I end in delivery with that kind of log about me... my god... I no sure it were a good idea to read my log... ~suicide -2022/05/18-

Offline Wipe

  • Rotator
  • Random is god
Re: Little sample of coding mistakes.
« Reply #1 on: May 25, 2019, 03:32:35 pm »
What you skipped is probably important.

If that's the same server i'm looking at, this is DrawDmgRadius() which contains
Code: [Select]
    if( !GetMonitorHex( __MouseX, __MouseY, centerhexX, centerhexY ) )
        return;
called some lines before part you pasted.

If there is an invalid pointer or/and that target is dead or/and target is chosen
centerhexX/Y wont be set to the right hexes... AND THE CODE STILL CONTINUE PROCESSING...
Isn't it exactly how it should be?

Take VC turret made as Critter as example:
If your cursor is over its "head", and you attack it, Client will change attack position to Critter's hex position, at turret's "feet", which is good few hexes below a cursor.
If your cursor is over its "head", but turret is dead already, nothing changes. You cannot attack dead Critters, so you attack hex under cursor instead - amount of care about rockets/nades/etc. in this function hints that it's connected to hexshooting.

This is a feedback function for players, so they know exactly where their attack, which might include splash damage, will end. It has to be consisted with Client/combat logic or it's worthless.

Just a wild guess, obviously. You didn't mention server name (i wonder why... :7), or any details after all. And it always could be copypaste from one server to another... which, in the end, does different things.
« Last Edit: May 25, 2019, 08:01:44 pm by Wipe »
Games are meant to be created, not played...

Offline adumbperson

  • Turn around in orbit!
Re: Little sample of coding mistakes.
« Reply #2 on: May 28, 2019, 05:47:28 am »
What you skipped is probably important.

If that's the same server i'm looking at, this is DrawDmgRadius() which contains
Code: [Select]
    if( !GetMonitorHex( __MouseX, __MouseY, centerhexX, centerhexY ) )
        return;
called some lines before part you pasted.
Isn't it exactly how it should be?

And... you are right.
I dunno how the hell i didn't see that call before posting this...
I must have been drunk or something while posting...
SHAME ON ME

Quote
Just a wild guess, obviously. You didn't mention server name (i wonder why... :7), or any details after all. And it always could be copypaste from one server to another... which, in the end, does different things.

It is fo2 sdk
How did I end in delivery with that kind of log about me... my god... I no sure it were a good idea to read my log... ~suicide -2022/05/18-