Fahrzeug Spawn | Befehl wird nicht befolgt

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 Tag,


    Mein Name lautet CIBERKLILLER.
    Und zwar bräuchte ich mal eure Hilfe!
    Ich habe einen Fahrzeug Respawn mit optionaler Zeit geschrieben!
    Dieser wird nach Beendigung dieser Zeit aber nicht durchgeführt.
    Das System sollte alle Fahrzeuge Respawnen wo keine Bei/Fahrer enthalten sind.


    Quelltext:
    new vID;
    for(new i;i<GetMaxPlayers();i++){
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(!sStats[i][Eingeloggt])continue;
    if(IsPlayerInAnyVehicle(i))continue;
    vID = GetPlayerVehicleID(i);
    SetVehicleToRespawn(vID);
    }


    Könnt ihr einen Fehler in diesem Quellcode finden ?


    Mit freundlichen Grüßen,


    CIBERKILLER.

  • Ahh mir ist gerade ein Logik Fehler aufgefallen.
    Doch es spawnen autos nur respawnen tuhen sie nicht ;)


    Also ich habe frage ab wenn er in einem fahrzeug sitzt soll er übersprungen werden.


    Aber dann benutze ich noch wie ein Depp GetPlayerVehicleID ...


    Gibt es möglichkeit abzufragen ob ein fahrzeug leer ist?

  • Du machst eine Schleife und gibst die maximalen Spieler an? :huh:
    Du willst doch die Autos respawnen?
    new bool:unwanted[...];
    for(new i; i<GetMaxPlayers; i++) if(IsPlayerInAnyVehicle(i)) { unwanted[GetPlayerVehicleID(i)]=true; }
    for(new car; car < ...; car++) if(!unwanted[car]) SetVehicleToRespawn(car);


    L.G.

  • if(!unwanted[car]
    is das ne neue funktion bei samp? kenn ich noch nicht.



    for(new s=0;s<MAX_PLAYERS;s++)
    {
    if(IsPlayerConnected(s)&&IsPlayerInAnyVehicle(s))
    {
    cararrayvar[GetPlayerVehicleID(s)]=1;
    }
    }
    for(new v=0;v<MAX_VEHICLES;v++)
    {
    if(cararrayvar[v]==1)continue;
    SetVehicleToRespawn(v);
    }


  • Stimmt auch wieder ^^.
    IsPlayerInAnyVehicle(i) wäre die Abfrage soweit ich weiß

  • is das ne neue funktion bei samp? kenn ich noch nicht.


    Die Deklaration aus deinem Code (beziehe mich auf MAX_PLAYERS) ist total unnötig.
    Zudem verwendest du unnötig viele Klammern und keine booleans.
    Und nein unwanted ist keine Funktion. ("new bool:unwanted[...];")
    Also wird es wohl eine Variable sein, genauer eine Array. ;)
    Im Grunde genommen ist...
    if(!unwanted[car])
    das Gleiche, wie
    if(unwanted[car] == false)
    (! bedeutet immer "alles außer")
    Kannste dir so vorstellen.:
    if(unwanted[car])
    if(unwanted[car] == true)
    Jetzt schreiben wir oben aber sozusagen, "alles außer true", also false.
    Wie wir wissen ist 0 das gleiche, wie false.


    L.G.

  • Aktuell Funktioniert es immer noch nicht.


    Quellcode:


    new vID, i;
    for(;i<GetMaxPlayers();i++){
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(!sStats[i][Eingeloggt])continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    vID = GetPlayerVehicleID(i);
    VehicleFree[vID] = false;
    }
    for(;i<MAX_VEHICLES;i++){
    if(VehicleFree[i] == false)continue;
    SetVehicleToRespawn(i);
    }

  • Wenn du Beiträge komplett ignorierst, kann man dir auch nicht helfen... :wacko:
    L.G.


    Ich ignoriere keinen einzigen Beitrag!
    Jetzt erkläre mir doch bitte sich in diesem Quellcode der Fehler befindet! (Es mag so aussehen dass ich sie ignoriere)


    Generell heißt es für mich in der Schleife mit if abfragen & continue zu arbeiten! So habe ich das Gelernt!

  • Du deklarierst 'i' global für beide Schleifen, so zählt er einfach weiter.
    Zudem machst du unnötig viele Abfragen.
    Wenn jemand nicht online, eingeloggt oder sonst etwas ist, dann sitzt er auch nicht in einem Auto.
    -> IsPlayerInAnyVehicle.


    Ich hatte dir bereits ein beispiel gemacht ;)
    new bool:unwanted[...];
    for(new i; i<GetMaxPlayers; i++) if(IsPlayerInAnyVehicle(i)) { unwanted[GetPlayerVehicleID(i)]=true; }
    for(new car; car < ...; car++) if(!unwanted[car]) SetVehicleToRespawn(car);

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • //Edit: Ja...hast recht, deins ist schneller, da die 2. Schleife erheblich niedriger ist, sry ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()