YRace

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,
    ich benutze das YRace filmterscript. Ich habe es in meinem Gamemode eingebaut und angepasst.
    So, wenn nun aber jemand einen Rekord fährt, fehlt ein Checkpoint. D:
    Ich verstehe nicht wieso :/
    Bitte um Hilfe


    Das habe ich bei OnPlayerEnterRaceCheckpoint
    new racerank;
    racerank=CheckBestRace(playerid,RaceTime);
    new Rekstring[200];
    if(racerank == 1)
    {
    format(Rekstring,sizeof(Rekstring),"Neuer Highscore(1) bei %s von %s",CRaceName, SpielerName(playerid));
    SendClientMessageToAll(Gelb, Rekstring);
    GameTextForPlayer(playerid,"~y~Neuer Highscore (1)",13000,3);
    GivePlayerMoney(playerid, GetPlayerMoney(playerid)+10000);
    }
    if(racerank == 2)
    {
    format(Rekstring,sizeof(Rekstring),"Neuer Highscore(2) bei %s von %s",CRaceName, SpielerName(playerid));
    SendClientMessageToAll(Gelb, Rekstring);
    GameTextForPlayer(playerid,"~y~Neuer Highscore (2)",13000,3);
    }
    if(racerank == 3)
    {
    format(Rekstring,sizeof(Rekstring),"Neuer Highscore(3) bei %s von %s",CRaceName, SpielerName(playerid));
    SendClientMessageToAll(Gelb, Rekstring);
    GameTextForPlayer(playerid,"~y~Neuer Highscore (3)",13000,3);
    }
    if(racerank == 4)
    {
    format(Rekstring,sizeof(Rekstring),"Neuer Highscore(4) bei %s von %s",CRaceName, SpielerName(playerid));
    SendClientMessageToAll(Gelb, Rekstring);
    GameTextForPlayer(playerid,"~y~Neuer Highscore (4)",13000,3);
    }
    if(racerank == 5)
    {
    format(Rekstring,sizeof(Rekstring),"Neuer Highscore(5) bei %s von %s",CRaceName, SpielerName(playerid));
    SendClientMessageToAll(Gelb, Rekstring);
    GameTextForPlayer(playerid,"~y~Neuer Highscore (5)",13000,3);
    }



    public CheckBestRace(playerid,racetime)
    {
    if(TopRacerTimes[4]<racetime && TopRacerTimes[4] != 0) return 0;
    for(new i;i<5;i++)
    {
    if(TopRacerTimes[i] == 0)
    {
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    TopRacers[i]=playername;
    TopRacerTimes[i]=racetime;
    ScoreChange=1;
    return i+1;
    }
    else if(TopRacerTimes[i] > racetime)
    {
    for(new j=4;j>=i;j--)
    {
    TopRacerTimes[j+1]=TopRacerTimes[j];
    TopRacers[j+1]=TopRacers[j];
    }
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    TopRacerTimes[i]=racetime;
    TopRacers[i]=playername;
    ScoreChange=1;
    return i+1;
    }
    }
    return -1;
    }

    "when you got nothing to lose, then baby you got it all" - OPERATOR

  • for(new j=4;j>=i;j--)
    {
    TopRacerTimes[j+1]=TopRacerTimes[j];
    TopRacers[j+1]=TopRacers[j];
    }


    Hier kommst du auf [5], das heißt wenn du TopRacerTimes mit [5] definiert hast, dann sprengst du das Array.
    Ich weiß allerdings nicht wie du es definiert hast. :rolleyes:

  • Also, ich schätze mal das der Fehler hier liegt


    public SaveScores()
    {
    if(ScoreChange == 1)
    {
    fremove(CFile);
    new File:f,Float:x,Float:y,Float:z, templine[512];
    f = fopen(CFile,io_write);
    format(templine,sizeof(templine),"YRACE %s %d %d %d %f\n", CBuilder, ORacemode, ORacelaps, OAirrace, OCPsize);
    fwrite(f,templine);
    format(templine,sizeof(templine),"%s %d %s %d %s %d %s %d %s %d\n",
    TopRacers[0],TopRacerTimes[0],TopRacers[1], TopRacerTimes[1], TopRacers[2],TopRacerTimes[2],
    TopRacers[3],TopRacerTimes[3],TopRacers[4], TopRacerTimes[4]);
    fwrite(f,templine);
    for(new i = 0; i < LCurrentCheckpoint+1;i++)
    {
    x=RaceCheckpoints[i][0];
    y=RaceCheckpoints[i][1];
    z=RaceCheckpoints[i][2];
    format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
    fwrite(f,templine);
    }
    fclose(f);
    }
    ScoreChange=0;
    }


    Jeffry
    Muss ich da jetzt überall einfach printf("DEBUG"); eintragen?
    Und vorallem sind auch Strings mit %d auszugeben?

    "when you got nothing to lose, then baby you got it all" - OPERATOR

    Einmal editiert, zuletzt von XHSD ()