So viele Klammern machen Ärger

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
  • Also ich habe mal wieder ein paar Errors die für mich unlösbar sind.
    Es geht bei einer Checkpoint Fahrt um sizeof().
    Naja, eigentlich wollte ich die ABfrage so machen:
    if(Checkpoint[playerid] < (sizeof(JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_x])))


    Doch da kommen jetzt die Errors:


    Code
    error 001: expected token: "]", but found "-identifier-"
    error 001: expected token: ";", but found ")"
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line


    Also habe ich die Zahl die IsAJobCar ausgeben sollte unter JobID[playerid] gespeichert.
    Also sieht die Abfrage so aus:
    if(Checkpoint[playerid] < (sizeof(JobInfo[JobID[playerid]][Checkpoints_x])))


    Gibt allerdings die gleichen Errors.
    Habe es auch schon so probiert:


    if(Checkpoint[playerid] < (sizeof(JobInfo[JobID][playerid][Checkpoints_x])))
    und so:
    if(Checkpoint[playerid] < (sizeof(JobInfo[JobID][Checkpoints_x][playerid])))


    Geht alles nicht.

    ...

  • sizeof gibt dir die größe des arrays aus z.b.


    new bsp[10];
    new bsp2[5];


    dann gibt sizeof(bsp) 10 und sizeof(bsp2) 5 zurück.


    und ist das array "JobInfo" wirklich 3dimensional? soetwas ist ziemlich kompliziert...
    was willst du mit dieser abfrage bezwecken?

  • Es ist unter ONPlayerEnterCeckpoint.
    Das soll bezwecken, dass wenn der letzte Checkpoint erreicht ist also wenn Checkpoint[playerid] gleich groß ist wie JobInfo[ID][Checkpoints_x] soll kein neuer Checkpoint mehr erstellt werden, da es wie ja schon erwähnt der letzte ist.

    ...

  • Wenn ich das jetzt richtig verstehe dann so:
    if(Checkpoint[playerid] == JobInfo[JobID][Checkpoints_x][playerid])

    Da ist aber nicht die Größe von ...[Checkpoints_x]... mit drin und die brauche ich.


    zeig mal deine deklaration von "JobInfo"


    also new JobInfo[..][..] usw.

    Da:
    enum p_infos
    {
    Name[64],
    Model,
    Float:xx,
    Float:yy,
    Float:zz,
    Float:rr,
    Color1,
    Color2,
    Float:Checkpoints_x[MaxCheckpoints],
    Float:Checkpoints_y[MaxCheckpoints],
    Float:Checkpoints_z[MaxCheckpoints]
    };
    new JobInfo[MAX_PLAYERS][p_infos];


    #define MaxCheckpoints 70

    ...

  • nehm einfach MaxCheckpoints (wobei das umgeschrieben werden sollte in MAX_CHECKPOINTS)


    wenn du nicht immer alle checkpoints verwendest solltest du überprüfen ob der nächste gültig ist.


    if(Checkpoint[playerid] == MaxCheckpoints || (0 == JobInfo[playerid][Checkpoints_x[Checkpoint[playerid]]] && 0 == JobInfo[playerid][Checkpoints_y[Checkpoint[playerid]]] && 0 == JobInfo[playerid][Checkpoints_z[Checkpoint[playerid]]]))


    wird ausgeführt wenn der letzte checkpoint oder die maximale anzahl an checkpoints erreicht wurde.


    dabei sollte man sicher gehen, dass der checkpoint, der nach dem letzten zu aktivierenden checkpoint steht, immer koordinaten 0 hat. damit wird gekennzeichnet, dass der letzte checkpoint erreicht wurde. (falls du mal weniger als 70 checkpoints benutzt)

    Mein erstes eigenes Spiel


    meine Tutorials:
    Nachos Torsystem


    scripten ist kein spiel, es ist arbeit(die sehr viel spass machen kann).
    gewöhn dich an den gedanken arbeiten zu müssen oder lass es sein.

    Einmal editiert, zuletzt von NachoMan ()