Problem mit for schleifen

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
  • Guten Abend


    und zwar habe ich da ein problem mit meinen For Schleifen und zwar wird eine geladen und danach wird nichts mehr geladen, doch verstehe ich nicht warum.


    Hier mal meine Schleifen und alles was dazu gehört.


    #define MAX_POLICECAR 14


    #define MAX_ATM 1
    enum AtmData
    {
    Float:AtmX,
    Float:AtmY,
    Float:AtmZ,
    Float:AtmrX,
    Float:AtmrY,
    Float:AtmrZ,
    Float:AtmdD,
    }


    enum PoliceCarData
    {
    pCCarModelID,
    Float:pCCarX,
    Float:pCCarY,
    Float:pCCarZ,
    Float:pCCarR,
    pCCarColor1,
    pCCarColor2
    }
    new AtmInfo[MAX_ATM][AtmData] = {
    {484.92270, -1733.87378, 10.65922,0.00000, 0.00000, 0.00000}
    };


    new PCarInfo[MAX_POLICECAR][PoliceCarData] = {
    {596,1535.7343,-1666.6582,13.1040,359.2610,0,1},
    {596,1602.6775,-1700.1176,5.6116,89.6742,0,1},
    {596,1595.7317,-1711.3826,5.6120,359.4987,0,1},
    {596,1587.3856,-1711.7770,5.6121,0.4507,0,1},
    {596,1583.1158,-1711.7247,5.6110,0.0642,0,1},
    {596,1578.7289,-1711.7631,5.6109,0.2236,0,1},
    {596,1574.2306,-1711.3650,5.6122,0.7656,0,1},
    {596,1528.4746,-1688.1270,5.6120,269.4387,0,1},
    {601,1526.5720,-1643.6841,5.6493,181.4371,1,1},
    {601,1530.5476,-1644.2468,5.6494,180.4172,1,1},
    {601,1534.7646,-1644.2480,5.6494,179.8398,1,1},
    {427,1539.1793,-1644.9073,6.0225,180.1942,0,1},
    {427,1545.4449,-1651.1746,6.0208,90.3090,0,1},
    {427,1545.1791,-1658.9369,6.0222,89.5052,0,1}
    };
    new pcar[MAX_POLICECAR];
    for(new a = 0; a <= MAX_ATM; a++)
    {
    CreateObject(2942,AtmInfo[a][AtmX],AtmInfo[a][AtmY],AtmInfo[a][AtmZ],AtmInfo[a][AtmrX],AtmInfo[a][AtmrY],AtmInfo[a][AtmrZ],AtmInfo[a][AtmdD]);
    printf("a: %i",a);
    }


    for(new p = 0; p <= MAX_POLICECAR; p++)
    {
    pcar[p] = AddStaticVehicle(PCarInfo[p][pCCarModelID],PCarInfo[p][pCCarX],PCarInfo[p][pCCarY],PCarInfo[p][pCCarZ],PCarInfo[p][pCCarR],PCarInfo[p][pCCarColor1],PCarInfo[p][pCCarColor2]);
    printf("p: %i",p);
    }



    Hier noch einmal was mir der Print in der Console ausgibt.


    Code
    [22:28:29] 
    [22:28:29] Filterscripts
    [22:28:29] ---------------
    [22:28:29]   Loaded 0 filterscripts.
    
    
    [22:28:29] a: 0
    [22:28:29]


    Hoffe ihr könnt mir bei meinem Problem helfen, denn ich finde einfach denn fehler nicht. Google hat leider auch nicht die erhoffte Lösung gebracht.

  • for(new a = 0; a <= MAX_ATM; a++)


    MAX_ATM ist gleich 1, deine Schleife wird für a=0 und a=1 ausgeführt.


    AtmInfo[a] wäre also bei a=1 AtmInfo[1], spräche also die zweite Zeile des Arrays an.
    Da das Array aber (MAX_ATM ist wie gesagt 1) nur eine Zeile hat, also nur die Zeile "0", versucht der Code
    eine Zeile zu lesen, die es im Array nicht gibt => Crash.


    Funktionieren würde wohl:


    for(new a = 0; a != MAX_ATM; a++)


    Wie du siehst, wurde das "<=" durch "!=" ersetzt, weswegen die Schleife bei (vor) a=1 abgebrochen wird, da a bei a=1 eben nicht mehr ungleich 1 ist.


    EDIT: Kaliber war schneller, Aussage ist dieselbe => Ob "<" oder "!=" spielt keine Rolle, in einigen Sprachen ist "!=" minimal (minmal!) schneller, daher benutze ich gerne "!=".
    Spielt aber von der Funktionalität her, wie gesagt, keine Rolle.