Fahrzeuge löschen [offen]

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 Abend Community,


    Ich habe in meinem Script diesen befehl zum Fahrzeuge spawnen:

    Spoiler anzeigen
    ocmd:veh(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,Rot,"S.Y.S.T.E.M: Du bist kein Admin / Rang 4.");
    {
    new Float:x, Float:y, Float:z;
    new Text3D:supportveh[MAX_VEHICLES];
    new c1,c2,vid;
    if(sscanf(params,"iii",vid,c1,c2))return SendClientMessage(playerid,Orange,"S.Y.S.T.E.M: /veh [CarID] [Farbe1] [Farbe2]");
    {
    if(vid<402||vid>603)return SendClientMessage(playerid,Rot,"Ungültige Fahrzeug-ID.");
    {
    GetPlayerPos(playerid,x,y,z);
    new car;
    SetVehicleNumberPlate(car = CreateVehicle(vid,x,y,z,3,c1,c2,-1),"Support");
    PutPlayerInVehicle(playerid,car,0);
    SendClientMessage(playerid,Rot,"Du hast ein Support Fahrzeug gespawnt.");
    supportveh[car] = Create3DTextLabel("Support Fahrzeug", Blau,0.0,0.0,0.0,30.0,0,1);
    Attach3DTextLabelToVehicle(supportveh[car],car,0.0,0.0,2.0);
    return 1;
    }
    }
    }
    }


    Nur meine frage ist,
    wenn ich 10 fahrzeuge erstelle, wie kann ich alle auf einmal mit einem befehl löschen?


    Gruß Runcorn

    Einmal editiert, zuletzt von Runcorn ()

  • Hey, du benutzt dort den Befehl aus meinem Tutorial, finde ich toll :)
    Ich mach dir den Befehl und erkläre dir den.

    ocmd:delall(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    DestroyVehicle(i);
    }
    }
    return 1;
    }

    Als 1. brauchst du eine Schleife, dir durch alle Fahrzeuge geht.
    Dannach musst du sie ja nur löschen :)

  • Ja, gib dem Auto eine Variable...:


    ocmd:veh(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,Rot,"S.Y.S.T.E.M: Du bist kein Admin / Rang 4.");
    {
    new Float:x, Float:y, Float:z;
    new Text3D:supportveh[MAX_VEHICLES];
    new c1,c2,vid;
    if(sscanf(params,"iii",vid,c1,c2))return SendClientMessage(playerid,Orange,"S.Y.S.T.E.M: /veh [CarID] [Farbe1] [Farbe2]");
    {
    if(vid<402||vid>603)return SendClientMessage(playerid,Rot,"Ungültige Fahrzeug-ID.");
    {
    GetPlayerPos(playerid,x,y,z);
    new car,supportcarf;
    supportcarf = SetVehicleNumberPlate(car = CreateVehicle(vid,x,y,z,3,c1,c2,-1),"Support");
    PutPlayerInVehicle(playerid,car,0);
    SendClientMessage(playerid,Rot,"Du hast ein Support Fahrzeug gespawnt.");
    supportveh[car] = Create3DTextLabel("Support Fahrzeug", Blau,0.0,0.0,0.0,30.0,0,1);
    Attach3DTextLabelToVehicle(supportveh[car],car,0.0,0.0,2.0);
    return 1;
    }
    }
    }
    }


    DAs löschen dann:


    SQL
    ocmd:delall(playerid,params[])
    {
        if(isPlayerAnAdmin(playerid,4))
        {
                DestroyVehicle(supportcarf);
        }
        return 1;
    }


    Sollte glaube ich so klappen..

  • if(strcmp(cmd, "/dtc", true) == 0)
    {
    if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] >= 2)
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Du bist in keinem Fahrzeug.!");
    new CarIDDelete = GetPlayerVehicleID(playerid);
    for(new fc;fc<sizeof(FactionCars);fc++){
    if(FactionCars[CarIDDelete][fVehid] >= 400 && FactionCars[CarIDDelete][fVehid] <= 611){
    if(DestroyVehicle(FactionCars[CarIDDelete][fCarid])){
    return SendClientMessage(playerid, COLOR_YELLOW, "Das ist ein Fraktionsauto. Nur zu löschen über /lfa.");
    }
    }
    }
    FahrzeugAus(CarIDDelete);
    DestroyVehicleEx(CarIDDelete);
    format(stringx, sizeof(stringx), "Du hast das Fahrzeug %d gelöscht.", CarIDDelete);
    SendClientMessage(playerid, COLOR_GREY, stringx);
    }
    return 1;
    }

  • @Über mir C&P von Systemen die du nicht gemacht hast tz.tz.tz



    Also erst brauchst du eine Variable gaaanz oben in deinen Script:


    new bool:AdminSpawned[MAX_VEHICLES]; //boolean true/False

    ocmd:veh(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,Rot,"S.Y.S.T.E.M: Du bist kein Admin / Rang 4.");
    {
    new Float:x, Float:y, Float:z;
    new Text3D:supportveh[MAX_VEHICLES];
    new c1,c2,vid;
    if(sscanf(params,"iii",vid,c1,c2))return SendClientMessage(playerid,Orange,"S.Y.S.T.E.M: /veh [CarID] [Farbe1] [Farbe2]");
    {
    if(vid<402||vid>603)return SendClientMessage(playerid,Rot,"Ungültige Fahrzeug-ID.");
    {
    GetPlayerPos(playerid,x,y,z);
    new car;
    SetVehicleNumberPlate(car = CreateVehicle(vid,x,y,z,3,c1,c2,-1),"Support");
    PutPlayerInVehicle(playerid,car,0);
    SendClientMessage(playerid,Rot,"Du hast ein Support Fahrzeug gespawnt.");
    supportveh[car] = Create3DTextLabel("Support Fahrzeug", Blau,0.0,0.0,0.0,30.0,0,1);
    Attach3DTextLabelToVehicle(supportveh[car],car,0.0,0.0,2.0);
    AdminSpawned[car] = true; // Auf "Ja" setzen ..
    return 1;
    }
    }
    }
    }


    ocmd:delall(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
    for(new v=0; v < MAX_VEHICLES; v++) {//durch alle vehicles loopen
    if(AdminSpawned[v]) // WEnn AdminSpawned ja ist
    {
    DestroyVehicle(v); // Löschen
    AdminSpawned[v]=false;//weil es nichtmehr existiert nein ^^
    }
    }
    }
    return 1;
    }

  • Hallo


    Also Du speicherst für jedes Fahrzeug den Ersteller. Möchtest Du nun deine Fahrzeuge zerstören, zerstörst Du nur die Fahrzeuge, welche auch deine ID haben, sprich welche Du erstellt hast. Sähe in etwa so aus:



    new VehicleOwnerAsID[MAX_VEHICLES]; // Speichert die Playerid des Erstellers, - 1 bedeutet nicht erstellt


    public OnGameModeInit()
    {
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    VehicleOwnerAsID[i] = -1; // Resetten
    }
    }


    ocmd:createveh(playerid, params[])
    {
    new modelid, color1, color2;
    if(sscanf(params, "iii", modelid, color1, color2)) return SendClientMessage(playerid, Rot, "Fehler");
    // Hier deine Adminabfrage/ Werteüberprufung what ever


    new vehid = CreateVehicle(...);
    VehicleOwnerAsID[vehid] = playerid;
    // Hier halt der restliche Code
    return 1;
    }


    ocmd:deletemyvehs(playerid, params[])
    {
    #pragma unused params
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(VehicleOwnerAsID[i] == playerid)
    {
    DestroyVehicle(i);
    VehicleOwnerAsID[i] = -1;
    }
    }
    return 1;
    }


    Gruss


    Edit: Die Lösung über mir würde auch gehen, nür können dann nicht mehrere Administratoren diesen Befehl benützen, was hier geht