Gespawnte Autos wieder Löschen

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 suche einen Befehl der alle erstellte Autos die ich hier erstellt habe:

    COMMAND:spawn(playerid,params[])
    {
    new vID;
    if(sscanf(params, "d", vID))
    {
    return SendClientMessage(playerid,rot,"/spawn [ID]");
    }


    if(vID < 400 || vID > 611)
    {
    return SendClientMessage(playerid,gelb,"Nur Vehicle-ID's von 400-611 benutzen!");
    }


    else
    {
    new Float:x, Float:y, Float:z, Float:a;
    new string[256];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,a);
    CreateVehicle(vID, x+5, y, z, a+90, 0, 0, -1);


    format(string, sizeof(string), "Fahrzeug ID %d gespawnt.", vID);
    SendClientMessage(playerid, blau, string);
    }
    return 1;
    }
    DestroyVehicle(vID); 
    Mit einem Befehl gelöscht werden, das die Autos mit "vID" gelöscht werden. ZB mit /delspawncars, ich weiss dass man es mit bloss wo :D

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)


  • ocmd:delcar(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT, "Du bist kein Admin!");
    if(IsPlayerInAnyVehicle(playerid))
    {
    DestroyVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, GRÜN, "Du hast dass Auto erfolgreich gelöscht!");
    }
    return 1;
    }

    Hiermit kannste das Auto löschen, wo du drinnen sitzt, evtl. hilft dir das ja


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Hi


    Schnell per Notepad getippt, ich hoffe es stimmt so. Also der Sinn dahinter ist, dass wenn Du ein Auto erstellt, die Vehicleid als Erstellerwert den Wert von playerid/der des Spielers erhält. Sprich das erstellte fahrzeug wurde vom Spieler x erstellt. Wenn Du es nun löschen willst, vergleichste einfach die Fahrzeugid mit der playerid.


    new PlayerHasCreated[MAX_VEHICLES];


    // Initialisierung
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    PlayerHasCreated[i] = -1; // -1 stellt einen ungültigen Spieler dar
    }


    // Fahrzeug erstellen
    new id = CreateVehicle(...);
    PlayerHasCreated[id] = playerid; // das Fahrzeug mit der ID wurde vom Spieler playerid erstellt


    // Alle selbst erstellten fahrzeuge löschen
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    if(PlayerHasCreated[i] == playerid)
    {
    DestroyVehicle(i);
    PlayerHasCreated[i] = -1;
    }
    }


    Gruss


    Edit: So können mehrere Spieler Autos selbe rerstellen, ohne dass sie sich diese gegenseitig weglöschen. Zudem kannst Du so selber mehrere Fahrzeuge erstellen
    Edit 2: Typo entfernt -.-


  • Hey :),
    das habe ich schon, aber ich will das wenn ich den Befehl eingebe dass es nur die neu gespawnten löscht egal ob ich drinne sitze oder nicht ;)


    Dudalus Ich habe das jetzt so:
    COMMAND:delveh(playerid,params[])
    {
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    createStatus[i] = -1; // -1 stellt einen ungültigen Spieler dar
    }


    // Fahrzeug erstellen
    new id = CreateVehicle(...)
    PlayerHasCreated[id] = playerid; // das Fahrzeug mit der ID wurde vom Spieler playerid erstellt


    // Alle selbst erstellten fahrzeuge löschen
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    if(PlayerHasCreated[i] == playerid)
    {
    DestroyVehicle(i);
    PlayerHasCreated[i] = -1;
    }
    }
    return 1;
    }
    Da kommt dann aber das:
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2230) : error 017: undefined symbol "createStatus"
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2230) : warning 215: expression has no effect
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2230) : error 001: expected token: ";", but found "]"
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2230) : error 029: invalid expression, assumed zero
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2230) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • Habs bei mir so (muss angepasst werden!)



    forward IsASpawnedCar(carid);
    new SpawnedCar[MAX_VEHICLES];


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmd, "/veh", true) == 0 || strcmp(cmd, "/v", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 1337)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Benutze: [/v]eh [carid] [color1] [color2]");
    return 1;
    }
    new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_RED, "AutoID kann nur wischen 400 und 611 sein!"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Benutze: [/v]eh [carid] [color1] [color2]");
    return 1;
    }
    new color1;
    color1 = strval(tmp);
    if(color1 < 0 || color1 > 200000000) { SendClientMessage(playerid, COLOR_RED, "FarbID kann nur zwischen 1 und 200 sein!"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Benutze: [/v]eh [carid] [color1] [color2]");
    return 1;
    }
    new color2;
    color2 = strval(tmp);
    if(color2 < 0 || color2 > 200) { SendClientMessage(playerid, COLOR_RED, "FarbID kann nur zwischen 1 und 200 sein!"); return 1; }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    new carid = CreateVehicle(car, X,Y,Z, 0.0, color1, color2, 60000);
    SpawnedCar[vehnumber] = carid;
    vehnumber += 1;
    CreatedCars[CreatedCar] = carid;
    CreatedCar ++;
    format(string, sizeof(string), "Fahrzeug %d spawned.", carid);
    SendClientMessage(playerid, COLOR_GREY, string);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    SetVehicleNumberPlate(carid,"SpawnedCar");
    format(string, 256, "[ADMIN]: %s hat sich ein Auto gespawnt: %d.", sendername,car);
    ABroadCast(COLOR_LIGHTRED,string,1);
    Tank[carid] = 100;
    }
    }


    return 1;
    }


    if(strcmp(cmd,"/desspawned",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    format(string,sizeof(string),"[ADMIN]: %s(%d) hat alle gespawnten Fahrzeuge zerstört.",sendername,playerid);
    SendAdminMessage(COLOR_YELLOW, string);
    for(new v=0; v<MAX_VEHICLES; v++)
    {
    if(IsASpawnedCar(v))
    {
    DestroyVehicle(v);
    SpawnedCar[v] = 0;
    }
    }
    }
    return 1;
    }
    }


    public IsASpawnedCar(carid)
    {
    for(new i = 0; i < sizeof(SpawnedCar); i++)
    {
    if(carid == SpawnedCar[i])
    {
    return 1;
    }
    }
    return 0;
    }

  • new dascar[MAX_PLAYERS];



    COMMAND:spawn(playerid,params[])
    {
    new vID;
    if(sscanf(params, "d", vID))
    {
    return SendClientMessage(playerid,rot,"/spawn [ID]");
    }


    if(vID < 400 || vID > 611)
    {
    return SendClientMessage(playerid,gelb,"Nur Vehicle-ID's von 400-611 benutzen!");
    }


    else
    {
    new Float:x, Float:y, Float:z, Float:a;
    new string[256];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,a);
    dascar[playerid] = CreateVehicle(vID, x+5, y, z, a+90, 0, 0, -1);


    format(string, sizeof(string), "Fahrzeug ID %d gespawnt.", vID);
    SendClientMessage(playerid, blau, string);
    }
    return 1;
    }


    DestroyVehicle(dascar[playerid]);


    So sollte es gehen :D

  • Hey :) bei mir kommt das :P
    COMMAND:spawn(playerid,params[])
    {
    new spawncar;
    if(sscanf(params, "d", spawncar))
    {
    return SendClientMessage(playerid,rot,"/spawn [ID]");
    }


    if(spawncar < 400 || spawncar > 611)
    {
    return SendClientMessage(playerid,gelb,"Nur Vehicle-ID's von 400-611 benutzen!");
    }


    else
    {
    new Float:x, Float:y, Float:z, Float:a;
    new string[256];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,a);
    spawnedcar[playerid] = CreateVehicle(spawncar, x+5, y, z, a+90, 0, 0, -1);


    format(string, sizeof(string), "Fahrzeug ID %d gespawnt.", spawncar);
    SendClientMessage(playerid, blau, string);
    }
    return 1;
    }


    COMMAND:delspawn[playerid,params[])
    {
    DestroyVehicle(spawnedcar[playerid]);
    return 1;
    }
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2253) : error 010: invalid function or declaration
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2256) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    ZEILE:
    COMMAND:delspawn[playerid,params[])
    {
    DestroyVehicle(spawnedcar[playerid]);
    return 1;
    }

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

    6 Mal editiert, zuletzt von Freestyyler ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • delspawn( ...keine eckige Klanmer


    OMG bin ich heute verpeilt :D
    Vielen Dank :)
    Wenn ich jetzt den Befehl eingebe löscht es nicht alle Fahrzeuge die ich gespawnt habe sondern nur das wo ich als letztes gespawnt habe, was kann ich da machen das es alle gespawnten entfernt?

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • for(new i = 1; i < MAX_VEHICLES; i++)
    {
    PlayerHasCreated[i] = -1; // -1 stellt einen ungültigen Spieler dar
    }


    Könntest du da noch hinschreiben wo hin was kommt?
    ich habs mal versuch aber da kommt das raus :P
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2245) : error 017: undefined symbol "PlayerHasCreated"
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2245) : warning 215: expression has no effect
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2245) : error 001: expected token: ";", but found "]"
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2245) : error 029: invalid expression, assumed zero
    C:\Users\Robin\Desktop\GTA Server 8090\gamemodes\thenewgamers.pwn(2245) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    Zeile:
    PlayerHasCreated[spawncar] = CreateVehicle(spawncar, x+5, y, z, a+90, 0, 0, -1);

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • COMMAND:spawn(playerid,params[])
    {
    new spawncar;
    if(sscanf(params, "d", spawncar))
    {
    return SendClientMessage(playerid,rot,"/spawn [ID]");
    }


    if(spawncar < 400 || spawncar > 611)
    {
    return SendClientMessage(playerid,gelb,"Nur Vehicle-ID's von 400-611 benutzen!");
    }


    else
    {
    new Float:x, Float:y, Float:z, Float:a;
    new string[256];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,a);
    new vehicleid = CreateVehicle(spawncar, x+5, y, z, a+90, 0, 0, -1);
    PlayerHasCreated[vehicleid] = playerid;


    format(string, sizeof(string), "Fahrzeug ID %d gespawnt.", spawncar);
    SendClientMessage(playerid, blau, string);
    }
    return 1;
    }


    COMMAND:delspawn(playerid,params[])
    {
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    if(PlayerHasCreated[i] == playerid)
    {
    DestroyVehicle(i);
    PlayerHasCreated[i] = -1;
    }
    }
    return 1;
    }
    Jetzt hat es alle Autos gelöscht, nicht nur die die ich gespawnt habe sondern auch die die Normal da waren also über /save

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

    Einmal editiert, zuletzt von Freestyyler ()

  • Ich tippe mal Du bist playerid 0 und hast den Initialisierungscode nicht verwendet ?


    PS: Benötigt COMMAND:delveh nicht noch ein #pragma unused params


    Ja ich bin PlayerID 0, und von pragma und so habe ich fast keine ahnung, wäre nett wenn du mir dabei helfen würdest.
    Ist das ZB sowas?
    stock IsVehicleUnused(vehicleid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInVehicle(i, vehicleid)) return 0;
    }
    return 1;
    }

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • Ich teile meine Antwort in 2 Teile:


    1.) Der Standardwert eines Integers liegt dummerweise bei 0 und Du hast die playerid 0. Darum solltest Du den Wert beim Starten des Servers oder Filterscripts im ganzen Array PlayerHasCreated auf -1 setzen, da es keinen Spieler mit der ID -1 gibt. Das Codestück hierfür habe ich weiter oben gepostet. Wenn es als Filterscript geladen wird, benutze OnFilterScriptInit, ansonsten OnGameModeInit


    2.) COMMAND wird soweit ich weiss von ZCMD benutzt, ein ZCMD ohne Parameter sollte so aussehen:



    COMMAND:foobar(playerid, params[])
    {
    #pragma unused params
    return 1;
    }


    Das #pragma unused params solltest Du nur verwenden, wenn der Befehl keine Parameter hat, also zB /foobar, der Befehl /foo 34 Hallo darf dann logischerweise kein #pragma unused params enthalten



    Edit: Was willste mit dem Code...bitte lese endlich mein Codebeispiel...

  • Ich habe es, Vielen Dank besonders an "Dudalus".
    //Closed


    Fertiges:


    Ganz Oben:
    new PlayerHasCreated[MAX_VEHICLES];


    Initialisierung:
    public OnGameModeInit()
    {
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    PlayerHasCreated[i] = -1; // -1 stellt einen ungültigen Spieler dar
    }
    }


    Zum Erstellen der Fahrzeuge:
    COMMAND:spawn(playerid,params[])
    {
    new spawncar;
    if(sscanf(params, "d", spawncar))
    {
    return SendClientMessage(playerid,rot,"Tippe: /spawn [ID]");
    }


    if(spawncar < 400 || spawncar > 611)
    {
    return SendClientMessage(playerid,gelb,"Nur Fahrzeug-ID's von 400-611 benutzen!");
    }


    else
    {
    new Float:x, Float:y, Float:z, Float:a;
    new string[256];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,a);
    new vehicleid = CreateVehicle(spawncar, x+5, y, z+3, a+90, 0, 0, -1);
    PlayerHasCreated[vehicleid] = playerid;


    format(string, sizeof(string), "Du hast ein Fahrzeug mit der ID %d gespawnt.", spawncar);
    SendClientMessage(playerid, blau, string);
    }
    return 1;
    }


    Zum Löschen der Gespawnten Fahrzeuge:
    COMMAND:delspawn(playerid,params[])
    {
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    if(PlayerHasCreated[i] == playerid)
    if(IsVehicleUnused(i))
    {
    DestroyVehicle(i);
    PlayerHasCreated[i] = -1;
    }
    }
    SendClientMessage(playerid,blau,"Du hast alle gespawnten Fahrzeuge gelöscht!");
    return 1;
    }


    Zusätzlich noch Fahrzeug IDs von beliebten Fahrzeugen (nicht alle) :
    COMMAND:f(playerid,params[])
    {
    SendClientMessage(playerid,blau,"=============================================== {FFFF00}Fahrzeuge mit IDs{0000FF} ===============================================");
    SendClientMessage(playerid,blau2,"Dumper [406] - Infernus [411] - BF Injection [424] - Hunter [425] - Panzer [432] - Squallo [446] - Seasparrow [447] - Tram [449] - Turismo [451]");
    SendClientMessage(playerid,blau2,"Monster [556] - Faggio [462] - Sanchez [468] - Sparrow [469] - Patriot [470] - Quad [471] - Schlauchboot [473] - Rustler [476] - Maverick [487]");
    SendClientMessage(playerid,blau2,"FBI Rancher [490] - Jetmax [493] - Hotring [494] - Sandking [495] - P. Maverick [497] - Hydra [520] - NRG [522] - Tow Truck [525] - Vortex [539]");
    SendClientMessage(playerid,blau2,"Cargobob [548] - Uranus [558] - Jester [559] - Sultan [560] - Raindance [563] - Flash [565] - Bandito [568] - Kart [571] - Dune [573]");
    SendClientMessage(playerid,blau2,"Club [589] - Dodo [593] - LSPD [596] - P. Ranger [599]");
    SendClientMessage(playerid,blau,"=============================================================================================================");
    return 1;
    }

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

    2 Mal editiert, zuletzt von Freestyyler ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen