[Wunsch]/spawnveh Befehl

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 hätte gerne das jemand mir hilft einen /spawnveh Befehl zu scripten oder einen schick den er/sie auch gleich erklärt.Mit diesem Befehl sollten man autos für sich im Spiel erstellen(porten) die auch nach einem Restart weider weg sind .Ich möchte nicht einfach Copy&Paste benutzen,ich möchte auch schon wissen wie es zu Stande kommt. Daher würde ich mich sehr über eure Hilfe freuen wenn ihr mir helfen könnt.


    z.B./spawnveh [carid] [farbe1] [farbe2]

  • //====================================VEH=======================================
    if(strcmp(cmd, "/spawnveh", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pAdmin] < 1337) // <--- kannst entscheiden ab welchen adm level man es benutzen darf
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Admin!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /spawnveh [carid] [color1] [color2]");
    return 1;
    }
    new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, " Auto Nummer nicht weniger als 400 oder höher als 611 sein !"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /spawnveh [carid] [color1] [color2]");
    return 1;
    }
    new color1;
    color1 = strval(tmp);
    if(color1 < 0 || color1 > 299) { SendClientMessage(playerid, COLOR_GREY, " Nicht Weniger als 0 oder höher 126 !"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /spawnveh [carid] [color1] [color2]");
    return 1;
    }
    new color2;
    color2 = strval(tmp);
    if(color2 < 0 || color2 > 126) { SendClientMessage(playerid, COLOR_GREY, " Nicht weniger als 0 oder höher als 126 !"); 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);
    CreatedCars[CreatedCar] = carid;
    CreatedCar++;
    Gas[carid] = GetGasMax(car);
    format(string, sizeof(string), " Du hast ein Fahrzeug gespawnt! Es hat die ID %d.", carid);
    SendClientMessage(playerid, COLOR_GREY, string);


    }
    return 1;
    }

  • KingCan:

    Zitat

    Ich möchte nicht einfach Copy&Paste benutzen,ich möchte auch schon wissen wie es zu Stande kommt.


    @TS:
    Da du ja nicht gesagt hast welche CMD art du bevorzugst, nehme ich mal ZCMD+sscanf.
    COMMAND:spawnveh(playerid,params[])//Sollte wohl selbst erklärend sein^^
    {
    /*Die varibalen die wir brauchen. */
    new ModelID,
    /*Als erstes Modelid die wir beim befehl angeben.*/

    new Farbe[2],
    /*Dann die beiden farben. Anstatt Farbe[2] könnte man auch Farbe1 und Farbe2 benutzen. Aber ich mach es lieber so.
    Kannst du ja ändern falls du magst^^*/

    new Float:VehPos[4];
    /*Die Floats wo wir zu erst die Position des Spielers drin speichern, um danach das Auto an deiser Position zu Erstellen.*/

    new vehicleid;
    /*Eine Variable, in der wir nachher die ID des erstellten Fahrzeugs Speichern um es weiter zu verwenden.*/

    if(SpielerInfo[playerid][pAdminLevel]<2) return SendClientMessage(playerid,FARBE_ROT,"Du bist kein Admin!");
    /*Falls du möchtest, das nur Admins bzw Spieler mit einem bestimmten Admin rang diesen befehl benutzen können, kannst du das hiermit machen.
    Du musst allerdings SpielerInfo[playerid][pAdminLevel] mit deinem Admin system abgleichen.
    Falls das Admin level des Spielers (SpielerInfo[playerid][pAdminLevel]) kleiner als 2 ist (<2) wird der Befehl durch das return Beendet und es
    wird dem Spieler die nachricht ausgegeben das er kein Admin ist.*/

    if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,FARBE_ROT,"Du bist nicht zu Fuß unterwegs!");
    /*Hier wird abgefragt, ob der Spieler auch zu Fuß unterwegs ist, falls nicht wird der Befehl durch das return Beendet und es wird dem Spieler
    die nachricht ausgegeben das er nicht zu Fuß unterwegs ist.*/

    if(sscanf(params, "ddd",ModelID,Farbe[0],Farbe[1])) return SendClientMessage(playerid, FARBE_ROT, "Funktion: /spawnveh [autoid] [farbe1] [farbe2]");
    /*Hier wird params, also das was nach dem befehle selbst kommt (/spawnveh [params]) in seine bestandteile zerlegt. Also ModeID und die beiden farben.
    Sollte das was der Spieler eingegeben hat irgendwie davon abweichen, wird der Befehl durch das return Beendet und es wird dem Spieler die nachricht ausgegeben wie er es richtig macht. */

    if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid, FARBE_ROT, "Fahrzeug-ID kann nicht unter 400 oder über 611 sein!");
    /* Hier wird überprüft ob die angegebene Modelid kleiner als 400 oder größer als 611 ist. Falls ja wird der Befehl wieder beendet und eine nachricht wird ausgegeben.*/

    if(Farbe[0] < 0 || Farbe[0] > 126 || Farbe[1] < 0 || Farbe[1] > 126) return SendClientMessage(playerid, FARBE_ROT, "Die Farbe kann nicht unter 0 oder über 126 sein!");
    /* Hier wird überprüft ob die angegebenen Farben zwischen 0 und 126 sind. Falls nein wird der Befehl wieder beendet und eine nachricht wird ausgegeben.*/

    GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
    /* Hier Nehmen wir die Position des Spielers (X,Y, und Z) und Speichern sie in der Variable VehPos[0] - VehPos[2]*/

    GetPlayerFacingAngle(playerid, VehPos[3]);
    /* Hier Nehmen wir die Blickrichtung (Angle) des Spielers und Speichern sie in der Variable VehPos[3]*/

    vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],Farbe[0],Farbe[1],-1);
    /* Nun erstellen wir das Fahrzeug mit der angegebenen ModeID, an der Position des Spielers und mit den angegebenen Farben. die -1 am ende steht für die
    Zeit nach wie viel Sekunden das Fahrzeug Respawnt wenn es nicht benutzt wird. -1 Beudeutet das es niemals respawnt.
    Durch das vehicleid = wird die Fahrzeug ID in der variable vehicleid gespeichert um diese weiter zu benutzen. */

    LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
    /* Nun nehmen wir das Fahrzeug (vehicleid) und Versetzen es in das Gleiche Interior wie der Spieler.
    Das Interior des Spielers bekommen wir durch GetPlayerInterior(playerid)*/

    SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
    /* Dann nehmen wir das Fahrzeug (vehicleid) und Setzen es in die gleiche Virtuelle Welt wie der Spieler*/

    PutPlayerInVehicle(playerid, vehicleid, 0);
    /* Und zu guter letzt nehmen wir den Spieler (playerid) und setzen ihn in das gerade erschaffene Fahrzeug (vehicleid) an den Sitzplatz 0, also als Fahrer */
    return 1;
    }


    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.