Carrespawn

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, ich habe mir einen Befehl estellt der alle cars respawnen lässt. Auch die benutzten.



    Wie mache ich jetzt aber das nur die Cars zurück gespawnt werden wo nicht benutzt sind. Also da wo gerade keiner im auto/aufm roller/fahrrad ist.


    Hier mal der Befehl:



    ocmd:carrespawn(playerid,params[])
    {
    if(istSpielerAdmin(playerid,3))
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    SetVehicleToRespawn(i);
    }
    new string[64];
    format(string,sizeof(string),"Es wurden alle Fahrzeuge respawnt");
    SendClientMessageToAll(WEIß,string);
    }
    return 1;
    }



    Danke im vorraus


    MfG Exon


  • stock IsVehicleOccupied(vehicleid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)if(IsPlayerInVehicle(i, vehicleid))return 1;
    return 0;
    }


    Benutzt du halt so:

    ocmd:carrespawn(playerid,params[])
    {
    #pragma unused params
    if(!istSpielerAdmin(playerid,3))return 1;
    for(new i=0; i<MAX_VEHICLES; i++)if(!IsVehicleOccupied(i))SetVehicleToRespawn(i);
    SendClientMessageToAll(WEIß,"Es wurden alle Fahrzeuge respawnt");
    return 1;
    }


    //edit:
    Kleinere Verbesserungen


    Gruß, Piet

  • Oder 500 mal ressourcenschonender so:



    ocmd:carrespawn(playerid,params[])
    {
    if(istSpielerAdmin(playerid,3))
    {
    occupied[MAX_VEHICLES];
    for(new i; i < MAX_PLAYERS; i++ )
    if ( IsPlayerConnected(i) ) {
    if ( IsPlayerInAnyVehicle(i) ) {
    occupied[GetPlayerVehicleID(i)] = true;

    for(new i=0; i<MAX_VEHICLES; i++)
    if ( GetVehicleModel(i) != 0 ) // Existiert das Fahrzeug?
    if ( occupied[i] != true )
    SetVehicleToRespawn(i);
    new string[64];
    format(string,sizeof(string),"Es wurden alle Fahrzeuge respawnt");
    SendClientMessageToAll(WEIß,string);
    }
    return 1;
    }


    @Piet_Meier:
    Warum 500 mal ressourcenschonender?
    Du gehst 500 mal pro Auto durch.
    MAX_VEHICLES ist 2000
    So gehst du also 2000*500 schleifen durch ;)
    Heisst 1 mio schleifen durchlaufen.


    Meine geht einmal 500 und einmal 2000 durch :_)
    Bedeutet 2500
    Deine 1 mio :p

    ik bin der vito c:


  • Dafür ist deins nicht grad Fehlerfrei:
    Klammern nicht geschlossen und Variablen nicht erstellt...


    Aber danke, werde bei mir jetzt auch was umstellen

  • Ja hatte es nur mal eben so runtergeschrieben xD


    Ich wollte dich nicht kritisieren, sodass du jetzt bei mir Fehler suchen musst um mich "runter zumachen"
    Könntest sie ja verbessern :)


    Fehlerfreie Version:

    ocmd:carrespawn(playerid,params[])
    {
    if(istSpielerAdmin(playerid,3))
    {
    new occupied[MAX_VEHICLES];
    for(new i; i < MAX_PLAYERS; i++ )
    if ( IsPlayerConnected(i) )
    if ( IsPlayerInAnyVehicle(i) )
    occupied[GetPlayerVehicleID(i)] = true;

    for(new i=0; i<MAX_VEHICLES; i++)
    if ( GetVehicleModel(i) != 0 ) // Existiert das Fahrzeug?
    if ( occupied[i] != true )
    SetVehicleToRespawn(i);
    new string[64];
    format(string,sizeof(string),"Es wurden alle Fahrzeuge respawnt");
    SendClientMessageToAll(WEIß,string);
    }
    return 1;
    }

    ik bin der vito c: