Brauche ich eine "for" schleife?

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
  • Hallo liebe Scripter,


    Ich habe nach langer Zeit wieder angefangen mit dem Scripten.
    Ich "arbeite" gerade an einem FraktionsSpawn System, aber ich komm gerade bei einem Error nicht weiter.


    Error Meldung :


    *:\*\*\*\wichtiges\Script Backups\Script Backup Server Ordner\gamemodes\NewScript.pwn(139) : error 032: array index out of bounds (variable "FSpawn")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Error.


    Betreffende Zeile:



    for(new i = 0; i <sizeof(FSpawn); i++) //(Hier ist der Fehler = Zeile 139)
    {
    if(SpielerInformation[playerid][Fraktion] == FSpawn[FraktionsID])
    {
    SetPlayerPos(playerid,FSpawn[i][fs_x],FSpawn[i][fs_y],FSpawn[i][fs_z]);
    SetPlayerInterior(playerid,FSpawn[i][fs_interior]);
    }
    }


    Ich hoffe, dass Ihr mir helfen könnt.

    Mit freundlichen Grüßen,
    Dachdecker

  • new fID = SpielerInformation[playerid][Fraktion];
    SetPlayerPos(playerid,FSpawn[fID][fs_x],FSpawn[fID][fs_y],FSpawn[fID][fs_z]);
    SetPlayerInterior(playerid,FSpawn[fID][fs_interior]);


    Ich schätze das ist was du haben willst.


    Oder hast du es anders aufgebaut?

  • Ich habe zuerst ein enum erstellt:



    enum fsSpawn
    {
    Float: fs_x,
    Float: fs_y,
    Float: fs_z,
    fs_interior ,
    FraktionsID

    }
    new FSpawn[][fsSpawn] =
    {
    {246.375991,109.245994,1003.218750, 10, 1}
    };


    Und dann habe Ich den Code von Oben bei OnPlayerSpawn reingeschrieben. Aber der Compiler spuckt diesen Error aus.

    Mit freundlichen Grüßen,
    Dachdecker

  • Dann so:
    for(new i = 0; i <sizeof(FSpawn); i++)
    {
    if(SpielerInformation[playerid][Fraktion] == FSpawn[i][FraktionsID])
    {
    SetPlayerPos(playerid,FSpawn[i][fs_x],FSpawn[i][fs_y],FSpawn[i][fs_z]);
    SetPlayerInterior(playerid,FSpawn[i][fs_interior]);
    break;
    }
    }