Admin soll Privatcars erstellen

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,
    wie ihr der Überschrifft entnehmen könnt, möchte ich gerne das ein Admin einem User ein Privat Auto erstellen kann.
    Ich habe mir mal den code zusammen gebastelt ( ich weis wirklich nicht ob das so richtig ist )


    also kommen wir zum Befehl:

    if(strcmp(cmd, "/accar", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 2001)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "NUTZUNG: /accar [ID] [Model]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "Geht nur von 400 bis 611"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /accar [ID][Model]");
    return 1;
    }
    AdminGiveCar(giveplayerid,car);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new msgstring[64];
    format(msgstring, sizeof(msgstring), "Admin %s gab dir als Geschenk das Auto mit der ID %d",sendername,car);
    SendClientMessage(giveplayerid, COLOR_ROT, msgstring);
    }
    }
    return 1;
    }


    und das ist die Funktion AdminGiveCar


    Spoiler anzeigen


    Function AdminGiveCar(playerid,Model)
    {
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
    new File: hFile = fopen(str, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "CarId=0\n");fwrite(hFile, var);
    format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
    format(var, 32, "CarPos_x=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x]);fwrite(hFile, var);
    format(var, 32, "CarPos_y=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y]);fwrite(hFile, var);
    format(var, 32, "CarPos_z=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z]);fwrite(hFile, var);
    format(var, 32, "CarRotate=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate]);fwrite(hFile, var);
    format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
    format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
    format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
    format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
    format(var, 32, "CarFB=0\n");fwrite(hFile, var);
    format(var, 32, "CarRB=0\n");fwrite(hFile, var);
    format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
    format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
    format(var, 32, "CarHood=0\n");fwrite(hFile, var);
    format(var, 32, "CarVents=0\n");fwrite(hFile, var);
    format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
    format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
    format(var, 32, "Plate=XXX\n");fwrite(hFile, var);
    fclose(hFile);
    }
    }


    Kann mir jemand helfen und mir sagen was ich noch machen muss ?



    Mfg Saphire :rolleyes:


    Jeffry:
    Vielleicht kannst du ja helfen :D

    Einmal editiert, zuletzt von Saphire ()

  • new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "Geht nur von 400 bis 611"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /accar [ID][Model]");
    return 1;
    }

    zu:
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /accar [ID][Model]");
    return 1;
    }
    new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "Geht nur von 400 bis 611"); return 1; }


    Mehr fällt mir auf den ersten Blick nicht auf. Was ist denn das Problem, also was geht nicht?

  • Da steht ja auch nichts mit CreateVehicle. Schau mal in den scriptfiles nach, ob die Fahrzeugdatei dort erstellt wird, wenn du den Befehl eingibst. Wenn ja, dann musst du nur noch das Fahrzeug mit CreateVehicle erstellen/laden, gleich wie bei den normal gekauften Fahrzeugen.

  • Jeffry:
    Ja die Datei wird erstellt.
    das steht drin.

    Spoiler anzeigen


    CarId=0
    CarModel=560
    CarPos_x=0.000
    CarPos_y=0.000
    CarPos_z=0.000
    CarRotate=0.000
    CarNitro=0
    CarHyd=0
    CarWheel=0
    CarAusp=0
    CarSideL=0
    CarSideR=0
    CarFB=0
    CarRB=0
    CarSpoiler=0
    CarRoof=0
    CarHood=0
    CarVents=0
    CarLamps=0
    CarPJ=-1
    CarC1=-1
    CarC2=-1
    Plate=XXX




    Kann ich das einfach so machen ?


    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid,x,y,z);
    CreateVehicle(car, X,Y,Z, 0.0, 0, 0, -1);
    also ganz unten im Befehl ?


    Mfg Saphire :rolleyes:

  • Ist im Prinzip das gleiche kannst das ja mal versuchen :)
    Mach es dort rein, wo du das Fahrzeug erstellen willst.
    Denke mal ganz unten im Befehl.
    new Float:x,Float:y,Float:z,Float:r;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,r);
    CreateVehicle(car,x,y,z,r,-1,-1,-1);

  • Function AdminGiveCar(playerid,adminid,Model)
    {
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
    new File: hFile = fopen(str, io_write);
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(adminid, x, y, z);
    GetPlayerFacingAngle(adminid, a);
    //UND DANN HIER DAS CreateVehicle!!
    //Eben so, wie du das Fahrzeug auch normal erstellst.
    if (hFile)
    {
    new var[32];
    format(var, 32, "CarId=0\n");fwrite(hFile, var);
    format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
    format(var, 32, "CarPos_x=%.3f\n",x);fwrite(hFile, var);
    format(var, 32, "CarPos_y=%.3f\n",y);fwrite(hFile, var);
    format(var, 32, "CarPos_z=%.3f\n",z);fwrite(hFile, var);
    format(var, 32, "CarRotate=%.3f\n",a);fwrite(hFile, var);
    format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
    format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
    format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
    format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
    format(var, 32, "CarFB=0\n");fwrite(hFile, var);
    format(var, 32, "CarRB=0\n");fwrite(hFile, var);
    format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
    format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
    format(var, 32, "CarHood=0\n");fwrite(hFile, var);
    format(var, 32, "CarVents=0\n");fwrite(hFile, var);
    format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
    format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
    format(var, 32, "Plate=XXX\n");fwrite(hFile, var);
    fclose(hFile);
    }
    }


    Und:
    AdminGiveCar(giveplayerid,car);
    zu:
    AdminGiveCar(giveplayerid,playerid,car);

  • Jeffry:


    Ich habe es einfach mit CreateVehicle gemacht.
    also so:
    CreateVehicle(Model,x,y,z,a,1,1,-1);


    Ich glaub ich muss das wohl ändern :D


    Wenn ich mir vom Autohaus ein Autokaufe dann wird das auto so erstellt:



    PlayerCar[playerid][Slot][CarId] = CreateVehicle(PlayerCar[playerid][Slot][CarModel],PlayerCar[playerid][Slot][CarPos_x],PlayerCar[playerid][Slot][CarPos_y],PlayerCar[playerid][Slot][CarPos_z],PlayerCar[playerid][Slot][CarRotate],PlayerCar[playerid][Slot][CarC1],PlayerCar[playerid][Slot][CarC2], 60000);/*vehicle spawn*/


    Soll ich das auch so machen ?



    Mfg

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Jeffry:
    Nein ich erklär es dir nochmal.
    Der Befehl klappt soweit, das Auto wird erstellt, ich kann damit fahren und es wird auch unter /carkey angezeigt.
    Das Problem ist nur, ich kann es nach dem erstellen nicht parken oder öffnen.


    Wenn ich ein Server Restart mache dann klappt das alles. Also ich kann dann parken und öffnen.


    Hoffentlich ist das verständlicher geschrieben :D


    Mfg Saphire

  • Jeffry:


    Ja ich bekomm eine Nachricht.
    undzwar genau diese :

    "Du bist nicht in deinem Fahrzeug/Du hast nicht den Schlüssel zu diesem Fahrzeug ausgewählt!"


    Befehl dazu:



    if (strcmp("/park", cmdtext, true, 10) == 0)
    {
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    new newcar = GetPlayerVehicleID(playerid);
    if (newcar == PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId])
    {
    new Float:X,Float:Y,Float:Z;
    new Float:z_rot;
    GetPlayerPos(playerid, X,Y,Z);
    GetVehicleZAngle(newcar, z_rot);
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x] = X;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y] = Y;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z] = Z;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate] = z_rot;
    SendClientMessage(playerid, COLOR_YELLOW4, " Du hast dein Fahrzeug hier geparkt, ab nun kannst du dein Fahrzeug hier finden!");
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY," Du bist nicht in deinem Fahrzeug/Du hast nicht den Schlüssel zu diesem Fahrzeug ausgewählt!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du besitzt Kein Fahrzeug für deinen Ausgewählten Schlüssel!");
    return 1;
    }
    return 1;
    }



    So sieht mein AdminGiveCar aus:



    Function AdminGiveCar(playerid,adminid,Model)
    {
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    new File: hFile = fopen(str, io_write);
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(adminid, x, y, z);
    GetPlayerFacingAngle(adminid, a);
    CreateVehicle(Model,x,y,z,a,1,1,-1);
    if (hFile)
    {
    new var[32];
    format(var, 32, "CarPos_x=%.3f\n",x);fwrite(hFile, var);
    format(var, 32, "CarPos_y=%.3f\n",y);fwrite(hFile, var);
    format(var, 32, "CarPos_z=%.3f\n",z);fwrite(hFile, var);
    format(var, 32, "CarRotate=%.3f\n",a);fwrite(hFile, var);
    format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
    format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
    format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
    format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
    format(var, 32, "CarFB=0\n");fwrite(hFile, var);
    format(var, 32, "CarRB=0\n");fwrite(hFile, var);
    format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
    format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
    format(var, 32, "CarHood=0\n");fwrite(hFile, var);
    format(var, 32, "CarVents=0\n");fwrite(hFile, var);
    format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
    format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
    format(var, 32, "Plate=XXX\n");fwrite(hFile, var);
    fclose(hFile);
    }
    }


    Ich habe das einfach mit CreateVehicle gemacht.


    So wird es im Autohaus erstellt :



    Mfg Saphire :D

    Einmal editiert, zuletzt von Saphire ()