Script wird nicht weiter ausgeführt

  • Script wird nicht weiter ausgeführt

    Hallo nochmal!

    Da ich heute mal wieder Lust auf Pawn hatte, habe ich mein Script ein bisschen erweitert und jetzt versteh ich die Welt nicht mehr.
    Beim folgenden Code (ist ein stock, das in OnGameModeInit aufgerufen wird) wird der Code nach der Schleife einfach nicht ausgeführt. Alles was nach diesem Code in OnGameModeInit ausgeführt werden sollte, wird ebenfalls nie mehr aufgerufen.
    [pwn]new vehicleid=1, loaded=0;
    while(vehicleid <= MAX_MYSQL_VEHICLES)
    {
    if(LoadVehicle(vehicleid)) loaded++;
    vehicleid++;
    print("Debug 4 (Loop)");
    }

    print("Debug 5");[/pwn]

    Ausgegeben wird:

    Quellcode

    1. Debug 4 (Loop)
    2. Debug 4 (Loop)
    3. Debug 4 (Loop)
    4. [DEBUG] main() ausgeführt

    Die Schleife wird ganz normal ausgeführt, aber danach macht er einfach gar nichts mehr, was in OnGameModeInit steht.
    Ich versteh es einfach nicht, vielleicht kann mir jemand helfen.

    Mit freundlichen Grüßen
    FlasH
  • [pwn]stock ()
    {
    new vehicleid=1, loaded=0;
    while(vehicleid <= MAX_MYSQL_VEHICLES)
    {
    if(LoadVehicle(vehicleid)) loaded++;
    vehicleid++;
    print("Debug 4 (Loop)");
    }
    print("Debug 5");
    printf(" %d Fahrzeuge geladen.", loaded);
    return 1;
    }[/pwn]
    Das ist ja das komische.
    An LoadVehicle liegt es nicht, weil das ja noch ganz normal funktioniert und die Fahrzeuge auch lädt.
    Aber nach der while-Schleife geht einfach nichts mehr. Debug 5 und "x Fahrzeuge geladen" wird auch nicht ausgegeben.
  • [pwn]stock /* ??? */()
    {
    new vehicleid = 1,
    loaded = 0;
    while(vehicleid <= MAX_MYSQL_VEHICLES) {
    if(LoadVehicle(vehicleid)) {
    loaded++;
    vehicleid++;
    }
    print("Debug 4 (Loop)");
    }
    print("Debug 5");
    printf(" %d Fahrzeuge geladen.", loaded);
    return 1;
    }

    // wenn nicht, dann das mal:
    stock /* ??? */()
    {
    new loaded = 0;
    for(new vehicleid; vehicleid <= MAX_MYSQL_VEHICLES; vehicleid++) {
    if(LoadVehicle(vehicleid)) {
    loaded++;
    }
    print("Debug 4 (Loop)");
    }
    print("Debug 5");
    printf(" %d Fahrzeuge geladen.", loaded);
    return 1;
    }[/pwn]
  • Das erste kann nicht funktionieren, weil dann vehicleid nur hochgesetzt wird, wenn das Fahrzeug auch geladen wird.
    Da aber manche Fahrzeuge extra rausgelöscht worden sind (Model = 0), wird vehicleid nicht mehr +1 gezählt und es ist eine Endlosschleife.
    Und jetzt hat sich meine Verwirrung noch vergrößert, denn deine untere Version wird bei mir überhaupt nicht ausgeführt.
    Sprich, weder Debug 4 noch Debug 5 werden ausgegeben.

    Ich glaub ich werde verrückt, sowas geht doch garnicht?!