Raptor007 / aq2-tng

Action Quake 2: The Next Generation. Raptor007's sandbox for testing changes. When verified stable, this code is pushed to the official aq2-tng repo:
https://github.com/aq2-tng/aq2-tng/tree/bots
4 stars 2 forks source link

ETE Slipper enhancement, TNG scoreboard beautification #113

Closed darkshade9 closed 2 years ago

darkshade9 commented 2 years ago

I am not sure how you wanted to handle the change.txt or TNG-manual.exe file, but wanted to fill it out for documentation purposes.

Raptor007 commented 2 years ago

It thinks a_match.c, a_xmenu.c, and tng_stats.c were entirely replaced because your text editor changed the linefeeds from LF to CRLF, so every line is technically changed. Visual Studio is notorious for doing this. Please change those back so the git history is cleaner and I can more properly review the changes to those files. Notepad++ can do this easily; in the status bar at the bottom, right-click where it says "Windows (CR LF)" and change it to "Unix (LF)" then save the file.

My preferred fix for the extended ASCII is to replace with equivalent C escapes:

a_xmenu.c

static XMENU_TITLE xRaw[] = {
  "\x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82",  // double line
  "previous page",
  "next page",
  "Use [ and ] to move cursor",
  "ENTER to select, TAB to exit",
  "\x1D\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x1F",  // single line
  "\x80\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x81\x82"  // double line
};

a_match.c

    if(teamCount == 3) {
        gi.bprintf(PRINT_HIGH, "\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
        gi.bprintf(PRINT_HIGH, " Team 1 Score - Team 2 Score - Team 3 Score\n");
        gi.bprintf(PRINT_HIGH, "    [%d]           [%d]           [%d]\n", teams[TEAM1].score, teams[TEAM2].score, teams[TEAM3].score);
        gi.bprintf(PRINT_HIGH, " Total Played Time: %d:%02d\n", mins, secs);
        gi.bprintf(PRINT_HIGH, "\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
    } else {
        int team1score = 0, team2score = 0;

        if(ctf->value) {
            GetCTFScores(&team1score, &team2score);
        } else {
            team1score = teams[TEAM1].score;
            team2score = teams[TEAM2].score;
        }
        gi.bprintf(PRINT_HIGH, "\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
        gi.bprintf(PRINT_HIGH, " Team 1 Score - Team 2 Score\n");
        gi.bprintf(PRINT_HIGH, "     [%d]           [%d]\n", team1score, team2score);
        gi.bprintf(PRINT_HIGH, " Total Played Time: %d:%02d\n", mins, secs);
        gi.bprintf(PRINT_HIGH, "\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
    }

a_team.c

  {"\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F", PMENU_ALIGN_CENTER, NULL, NULL},
        sprintf( string + strlen(string),
            "yv 40 string2 \"%s\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F%s%s%s%s%s%s%s%s\" ",
            ((s2f & SCORES2_TEAM)   ? "\x9D\x9E\x9E\x9F "   : ""),
            ((s2f & SCORES2_TIME)   ? " \x9D\x9E\x9E\x9F"   : ""),
            ((s2f & SCORES2_PING)   ? " \x9D\x9E\x9E\x9F"   : ""),
            ((s2f & SCORES2_CAPS)   ? " \x9D\x9E\x9E\x9F"   : ""),
            ((s2f & SCORES2_SCORE)  ? " \x9D\x9E\x9E\x9E\x9F"  : ""),
            ((s2f & SCORES2_KILLS)  ? " \x9D\x9E\x9E\x9E\x9F"  : ""),
            ((s2f & SCORES2_DEATHS) ? " \x9D\x9E\x9E\x9E\x9E\x9F" : ""),
            ((s2f & SCORES2_DAMAGE) ? " \x9D\x9E\x9E\x9E\x9E\x9F" : ""),
            ((s2f & SCORES2_ACC)    ? " \x9D\x9E\x9F"   : "")
        );

tng_stats.c

            gi.cprintf (targetent, PRINT_HIGH, "\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
            gi.cprintf (targetent, PRINT_HIGH, "PlayerID  Name                  Accuracy\n");
            gi.cprintf (targetent, PRINT_HIGH, "\n  Use \"stats <PlayerID>\" for\n  individual stats\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
    sprintf(stathead, "\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F Statistics for %s \x9D", ent->client->pers.netname);
    len = strlen(stathead);
    for (i = len; i < 55; i++) {
        stathead[i] = '\x9E';
    }
    stathead[i] = 0;
    strcat(stathead, "\x9F\n");
        gi.cprintf (targetent, PRINT_HIGH, "\n  Player has not fired a shot.\n");
        gi.cprintf (targetent, PRINT_HIGH, "\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n\n");
    gi.cprintf (targetent, PRINT_HIGH, "\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n");
    gi.cprintf (targetent, PRINT_HIGH, "Average Accuracy:                         %.2f\n", perc_hit); // Average
    gi.cprintf (targetent, PRINT_HIGH, "\n\x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F\n\n");
    sprintf(string + strlen (string),
        "xv 0 yv 40 string2 \"Frags Player          Shots   Acc   FPM \" "
        "xv 0 yv 48 string2 \"\x9D\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9F\" ");

//        strcpy (string, "xv 0 yv 32 string2 \"Frags Player          Time Ping Damage Kills\" "
//                "xv 0 yv 40 string2 \"\x9D\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9F \x9D\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9E\x9F \x9D\x9E\x9E\x9E\x9F\" ");

However, I can do this part. I just need you to fix those linefeeds first so I can see where changes need to be made. Thanks!

Raptor007 commented 2 years ago

Oh, and I think it should be master.q2servers.com in aq2_tp.cfg, not master.q2.servers.com, right? (Extra dot.)

darkshade9 commented 2 years ago

Line endings should be set to LF now, and I fixed the value in the cfg file (I think it was an old edit someone else contributed?)