Porten mit dem Auto

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 leute ich bin es wie kan ich es im script einbauen das wenn ich zb /BSN mache und im auto sitze das ich da mit auto mich hinporte und nicht ohne auto ?? so vill ??



    if(strcmp("/Goto LS BSN", cmdtext, true, 10) ==0)
    {
    SetPlayerPos(playerid, 560,1198.8595,-882.4097,42.7054);
    SendClientMessage(playerid, COLOR_BLAU, "Du hast dich auf´s Dach vom Burger Shot Nord (BSN) geportet.");
    SendClientMessage(playerid, COLOR_ROT, "NUTZE DEINE ADMINRECHTE NICHT AUS SONST KANN ES MIT DEM OWNER ÄRGER GEBEN WEIL MAN ES IN DER LOG NACHLESEN KANN!");
    }

    MFG



    Xx5_GumxX


  • if(strcmp("/Goto LS BSN", cmdtext, true, 10) ==0)
    {
    new vehicleid;
    vehicleid=GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1198.8595,-882.4097,42.7054);
    SetVehiclePos(vehicleid,1198.8595,-882.4097,42.7054);
    PutPlayerInVehicle(playerid,vehicleid,0);
    SendClientMessage(playerid, COLOR_BLAU, "Du hast dich auf´s Dach vom Burger Shot Nord (BSN) geportet.");
    SendClientMessage(playerid, COLOR_ROT, "NUTZE DEINE ADMINRECHTE NICHT AUS SONST KANN ES MIT DEM OWNER ÄRGER GEBEN WEIL MAN ES IN DER LOG NACHLESEN KANN!");
    return 1;
    }

    2 Mal editiert, zuletzt von JanKNB135 ()

  • 1. du legst fest, wohin du dich teleportieren willst (Koordinaten bestimmen)
    2. mit SetPlayerPos(playerid,X,Y,Z) die Position des Spielers ändern
    3. eine Variable erstellen (in meinem Beispiel vehicleid)
    4. die fahrzeug ID herausfinden und mit der variablen speichern (vehicleid=GetPlayerVerhicleID(playerid))
    5. mit SetVehiclePos(variable deines autos,X,Y,Z) die Position des Autos ändern
    6. mit PutPlayerInVehicle(playerid,variable deines autos,sitzplatz) den Spieler ins auto setzen (sitzplatz 0 heißt, dass der Spieler Fahrer ist)


    Die Koordinaten des Spielers und des Autos sollten gleich sein

  • So oder wie??


    if(strcmp("/Goto LS Alhambra", cmdtext, true, 10) ==0)
    {
    SetPlayerPos(playerid, 1831.5189,-1684.9980,13.5469);
    SetVehiclePos(vehicleid, 560,1827.4189,-1683.1526,13.1677);
    SendClientMessage(playerid, COLOR_BLAU, "Du hast zum Alhambra geportet.");
    SendClientMessage(playerid, COLOR_ROT, "NUTZE DEINE ADMINRECHTE NICHT AUS SONST KANN ES MIT DEM OWNER ÄRGER GEBEN WEIL MAN ES IN DER LOG NACHLESEN KANN!");
    }

    MFG



    Xx5_GumxX

  • Bei dir hast du die Variable "vehicleid" noch nicht definiert. Über "SetPlayerPos" musst du noch "new vehicleid" schreiben und dann darunter "vehicleid=GetPlayerVehicleID(playerid)". Danach musst du unter "SetVehiclePos" noch "PutPlayerInVehicle(playerid,vehicleid,0)" schreiben, damit der Spieler ins Fahrzeug gesetzt wird.


    Fertig sieht das ganze dann so aus:



    if(strcmp("/Goto LS BSN", cmdtext, true, 10) ==0)
    {
    new vehicleid;
    vehicleid=GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1198.8595,-882.4097,42.7054);
    SetVehiclePos(vehicleid,1198.8595,-882.4097,42.7054);
    PutPlayerInVehicle(playerid,vehicleid,0);
    SendClientMessage(playerid, COLOR_BLAU, "Du hast dich auf´s Dach vom Burger Shot Nord (BSN) geportet.");
    SendClientMessage(playerid, COLOR_ROT, "NUTZE DEINE ADMINRECHTE NICHT AUS SONST KANN ES MIT DEM OWNER ÄRGER GEBEN WEIL MAN ES IN DER LOG NACHLESEN KANN!");
    return 1;
    }

  • also so ??


    if(strcmp("/Goto LS BSN", cmdtext, true, 10) ==0)
    {
    new vehicleid;
    vehicleid=GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1191.3796,-881.4205,43.0768);
    SetVehiclePos(vehicleid,1198.8595,-882.4097,42.7054);
    PutPlayerInVehicle(playerid,vehicleid,560);
    SendClientMessage(playerid, COLOR_BLAU, "Du hast dich zum Burger Shot Nord (BSN) geportet.");
    SendClientMessage(playerid, COLOR_ROT, "NUTZE DEINE ADMINRECHTE NICHT AUS SONST KANN ES MIT DEM OWNER ÄRGER GEBEN WEIL MAN ES IN DER LOG NACHLESEN KANN!");
    return 1;

    MFG



    Xx5_GumxX

    Einmal editiert, zuletzt von Xx5_GumxX ()

  • if(strcmp("/gotobsn", cmdtext, true, 10) == 0)
    {
    if(pInfo[playerid][pAdmin] >= 1)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(GetPlayerVehicleID(playerid),1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    else
    {
    SetPlayerPos(playerid, 1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    }
    return 1;
    }


    //edit Pawnquellcode..


  • if(strcmp("/gotobsn", cmdtext, true, 10) == 0)
    {
    if(pInfo[playerid][pAdmin] >= 1)
    {
    if (IsPlayerInAnyVehicle(playerid))//Abfrage ob der Spieler in einem Fahrzeug sitzt
    {
    new vid = GetPlayerVehicleID(playerid);//FahrzeugIDin die Variable "vid" setzen.
    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);//Spieler an die vorgegebene Position setzen
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);//Das gleiche auch mit dem Fahrzeug
    PutPlayerInVehicle(playerid,vid,0);//Spieler wieder in das Fahrzeug zurück setzen.
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    else
    {
    SetPlayerPos(playerid, 1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    }
    return 1;
    }


    Ersetz das einfach mit Deinem Befehl und es sollte funktionieren.



    Mfg,
    Hardcore

  • Also anstatt vid die fahrzeug id und welche id mus man einsetzten das ist egal mit welchem fahrzeug man sich portet??


    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);//Spieler an die vorgegebene Position setzen muss man das einmal saven oder muss man die positionenn 2 mal saven ??
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);//Das gleiche auch mit dem Fahrzeug


    muss man das einmal saven oder muss man die positionenn 2 mal saven ??

    MFG



    Xx5_GumxX

  • An dem Code brauchst DU garnichts verändern!



    new vid = GetPlayerVehicleID(playerid);


    liest die FahrzeugID des Fahrzeuges in dem man selber sitzt.
    Die FahrzeugID wird in die Variable "vid" gesetzt, somit ist "vid" wenn man bspw. in nem Infernus sitzt = Die ID des Fahrzeuges.


    Der Code sagt doch an sich eigentlich alles...
    Wie gesagt, verändern brauchst Du daran nichts.


    //Edit: Ja, es ist egal mit welchem Fahrzeug man sich portet.
    Esseidenn es sind feste Fahrzeuge wie Züge o.ä


    //Edit: Verbessert

  • Xx5_GumxX


    Nehmen wir mal den Befehl auseinander, um zu sehen was dort geschieht. Fangen wir ganz vorne an.


    if(pInfo[playerid][pAdmin] >= 1)
    Hier überprüfen wir (das Script) ob der Spieler ein höheres Adminlevel als 1 besitzt. Wenn das der Fall sein sollte, dann geht es weiter mit dem Code. Wenn es nicht der Fall sein sollte, dann kommt folgendes:
    else <--- Wenn der Spieler kein höheres Adminlevel als 1 hat dann kommt die SendClientMessage und der Befehl wird nicht weiter durchgeführt.
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    }


    Wenn der Spieler jetzt doch ein höheres Adminlevel als 1 besitzt, dann kommt die Frage ob er sich in einem Auto befindet. Das überprüft man mit if(IsPlayerInAnyVehicle(playerid))
    Wenn das nicht der Fall sein sollte, dann wird nur die Person, also ohne Auto zum BSN geportet.
    else <--- Wenn der Spieler sich nicht in einem Auto befindet, dann passiert das untere.
    {
    SetPlayerPos(playerid, 1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }


    Ist der Spieler jetzt doch in einem Auto, dann wird der Code der darunter ist fortgeführt. Der sieht ja so aus:
    new vid = GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);
    PutPlayerInVehicle(playerid,vid,0);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    Doch was geschieht da jetzt eigentlich. Nunja, zu allererst holen wir uns via new vid = GetPlayerVehicleID(playerid); seine Vehicle ID wo er gerade drinnen sitzt. Es ist völlig egal in welchem Auto er sich befindet, mit diesem Code wird die Vehicle ID bzw. die Auto ID herausgefunden.


    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);
    SetVehiclePos(vid <--- Hier ist die Vehicle ID wo wir durch GetPlayerVehicleID herausgefunden haben,1212.7854,-885.9028,42.9159);
    Hier wird 1. der Spieler an die Koordinaten gesetzt, aber auch das Auto wo er sich drinnen befindet, wird an diesen Punkt gesetzt. Die Koordinaten musst du gegeben falls ändern, wenn du dich woanders hin telepotieren möchtest. Somit währen jetzt Auto sowie Spieler an diesem Ort. Doch nun haben wir hier Folgendes:
    PutPlayerInVehicle(playerid,vid,0);
    Wenn diese Funktion jetzt nicht drinnen währe, dann würde der Spieler wahrscheinlich im Auto buggen und nicht im Auto sitzen, diese Funktion sorgt dafür das der Spieler in ein Auto gesetzt wird. Aber nicht in irgendeins, nein sondern in das, was mit geportet wurde.
    PutPlayerInVehicle(playerid, <--- es setzt den Spieler in das Auto
    PutPlayerInVehicle(playerid,vid <---- In welches Auto? In das Auto was mit geportet wurde (deswegen auch am Anfang new vid = GetPlayerVehicleID(playerid);
    PutPlayerInVehicle(playerid,vid,0 <---- Auf welche Sitzt im Auto? Auf dein Fahrer sitzt.


    So und zu guter letzt wird noch eine Message geschrieben, wenn er sich geportet hat
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    Und der ganze Befehl sieht dann so aus:


    if(strcmp("/gotobsn", cmdtext, true, 10) == 0)
    {
    if(pInfo[playerid][pAdmin] >= 1)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    new vid = GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);
    PutPlayerInVehicle(playerid,vid,0);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    else
    {
    SetPlayerPos(playerid, 1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    }
    return 1;
    }


    Hinweis: Hier sind noch die Passagier sitze aufgelistet (PutPlayerInVehicle da wo der sitzt bestimmt wird)

    Zitat

    0 - Driver
    1 - Front Passenger
    2 - Back left passenger
    3 - Back right passenger
    4+ - Passenger seats (coach etc.)


    So ich hoffe du hast es jetzt richtig verstanden, was es mit diesem Befehl auf sich hat.
    MfG: T4125Gamer

  • Ihr könnt noch 2 Zeilen sparen indem ihr das SetPlayerPos rausnehmt, DA sobald jemand in einem Fahrzeug als Fahrer sitzt und die Funktion SetVehiclePos aufgerufen wird, wird der Fahrer automatisch mit geportet.


    D.h. bei der Abfrage ob er in einem Auto ist nur so machen:


    new vid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");


    Und um es um noch eine Zeile zu verkürzen kann man es auch so machen:


    SetVehiclePos(GetPlayerVehicleID(playerid),1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");


    So hat man wieder etwas gespart. :P

  • Okay jetzt geht es danke an ALLE die mir geholfen haben aber warum ich immer ein error hatte ist weil ich noch kein Admin system habe gibs da i-wo ein gutes toturial ???
    muss man das immer so machen bei jeder position zu der ich mich mit dem auto porten möchte??

    MFG



    Xx5_GumxX

    Einmal editiert, zuletzt von Xx5_GumxX ()

  • Der Erro kam nur weil ich kein admin system habe


    Immer wenn ich den Befehl entferne


    if(pInfo[playerid][pAdmin] >= 1)


    dann ging der error weg




    PS : Hat jemand ein gutes Tutorial Video wie man admin befehle erstellt+ und den rängen zuweisst + das man mehere rnge einstellen kann



    muss immer nur den Code und den Befehl ändern oder muss ich noch i-was ändern wen ich zb /gotospawn machen möchte ??


    if(strcmp("/gotospawn", cmdtext, true, 10) == 0)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    new vid = GetPlayerVehicleID(playerid);
    SetPlayerPos(playerid,1212.7854,-885.9028,42.9159);
    SetVehiclePos(vid,1212.7854,-885.9028,42.9159);
    PutPlayerInVehicle(playerid,vid,0);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    else
    {
    SetPlayerPos(playerid, 1212.7854,-885.9028,42.9159);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich Teleportiert! Nutze dies nicht aus.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    }
    return 1;
    }

    MFG



    Xx5_GumxX

    Einmal editiert, zuletzt von Xx5_GumxX ()