Abfragen ob NPC mit Spieler im Fahrzeug sitzt

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 Tag,


    ich habe mehrere NPCs auf meinem Server und man kann sie auf Befehl losfahren lassen.
    Das Problem ist, wenn ich in der Nähe von 2 oder mehreren NPC bin, fahren alle los. Kann ich über den NPC irgendwie abfragen ob der Spieler mit ihm zusammen im Fahrzeug sitzt?



    Viele Grüße
    Gimbo


  • stock GetVehicleNPCDriver(playerid)
    {
    new vID = GetPlayerVehicleID(playerid), string[64];
    for(new i = 0; i < MAX_NPCS; i++)
    {
    if(!IsPlayerConnected(i) && !IsPlayerNPC(i)) continue;
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vID)
    {
    format(string, sizeof(string), "NPC %i sitzt als Fahrer in deinem Fahrzeug!", i);
    SendClientMessage(playerid, -1, string);
    return i;
    }
    }
    return -1;
    }


    Beispiel:

    ocmd:drive(playerid, params[])
    {
    if(!IsPlayerInVehicle(playerid)) return SendClientMessage(playerid, -1, "Du musst in einem Fahrzeug sitzen.");
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "Du darfst nicht der Fahrer von dem Fahrzeug sein.");
    new GetVehicleNPCDriver(playerid);
    if(npcdriver == -1) return SendClientMessage(playerid, -1, "Dein Fahrzeug hat keinen NPC-Fahrer.");

    // "npcdriver" wäre jetzt dann die NPC ID, mit der kannst du weiterarbeiten
    return 1;
    }


    Have fun :)

  • oh okey, schade...
    trz danke für die Info :)


    Noch ne Frage :D
    NPC'S werden nur erstellt wenn der Server gestartet wird?
    Oder würde es gehen das man dann trotz das der Server an ist einen Bot connecten lässt und auch wieder disconnecten kann?
    Weil ich suche nach einer Möglichkeit, dass man bei bestimmten Fahrzeugen und bestimmten Aktionen einen beifahrer haben soll,
    nur ich möchte nicht das das die ganze Zeit Slots verbraucht.

  • NPC'S werden nur erstellt wenn der Server gestartet wird?
    Oder würde es gehen das man dann trotz das der Server an ist einen Bot connecten lässt und auch wieder disconnecten kann?
    Weil ich suche nach einer Möglichkeit, dass man bei bestimmten Fahrzeugen und bestimmten Aktionen einen beifahrer haben soll,
    nur ich möchte nicht das das die ganze Zeit Slots verbraucht.

    Nein, du kannst jederzeit einen NPC connecten ;)
    Er bekommt dann halt die kleinste ID, die gerade frei ist.

  • stock GetVehicleNPCDriver(playerid){ new vID = GetPlayerVehicleID(playerid), string[64]; for(new i = 0; i < MAX_NPCS; i++) { if(!IsPlayerConnected(i) && !IsPlayerNPC(i)) continue; if(GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vID) { format(string, sizeof(string), "NPC %i sitzt als Fahrer in deinem Fahrzeug!", i); SendClientMessage(playerid, -1, string); return i; } } return -1;}


    Beispiel:
    ocmd:drive(playerid, params[]){ if(!IsPlayerInVehicle(playerid)) return SendClientMessage(playerid, -1, "Du musst in einem Fahrzeug sitzen."); if(GetPlayerState(i) == PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "Du darfst nicht der Fahrer von dem Fahrzeug sein."); new GetVehicleNPCDriver(playerid); if(npcdriver == -1) return SendClientMessage(playerid, -1, "Dein Fahrzeug hat keinen NPC-Fahrer."); // "npcdriver" wäre jetzt dann die NPC ID, mit der kannst du weiterarbeiten return 1;}


    Have fun :)


    @Jeffry, @m4a_X: Danke für eure Antworten, jedoch ist das nicht genau das was ich möchte.
    Ich möchte nicht in meinem Gamemode abfragen ob ein NPC in meinem Fahrzeug sitzt, sondern in der NPC Datei abfagen ob ein Spieler in dem Fahrzeug des NPC sitzt.


    Kurz zur Verständnis: Ich habe Chauffeure auf meinem Server, die auf schriftliches Kommando los fahren. Aber nicht ein Command wie z.B.: '/go' sondern bei einer Textnachricht wie z.B.: "Fahr los".
    Wenn die Chauffeure jetzt aber alle nebeneinander stehen und ein Spieler davor "Fahr los" schreibt, fahren alle los. Deshalb muss der NPC wissen, ob der Spieler der gerade "Fahr los" geschrieben hat, in seinem Fahrzeug sitzt, bevor er lös fährt.


    Code
    new Float:x, Float: y, Float:z;
    GetMyPos(x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid, 4, x, y, z)) return 1; // hier hab ich mal als Alternativlösung abgefragt ob er 4 Meter weit entfernt ist von dem jeweiligen Bot.
    if(strfind(text, "fahr los", true) != -1) {
    	if(IsPlayerInRangeOfPoint(playerid, 50, 488.0621,-1500.0964,21.9101) && BotIsRecording == 0) {
    			StartPlayback("record");
      		}
    	}


    Viele Grüße
    Gimbo

  • Nutz FCNPC und RouteConnector Plugin damit kannst du ihm ein Ziel geben und er kann dahin fahren ohne Recording.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • In der NPC File:
    new myid;


    public OnPlayerText(playerid, text[])
    {
    if(strfind(text, "fahr los", true) != -1)
    {
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(myid))
    {
    //Starten...
    }
    }
    return 1;
    }


    public OnNPCConnect(myplayerid)
    {
    myid = myplayerid;
    return 1;
    }