Navi setzen für den Fahrer

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 Nabend :)


    is das iwie möglich das wenn der Beifahrer ein weg punkt sich aussucht es dem fahrer auch zu setzen ?


    derzeitiger befehl



    ocmd:navi(playerid,params[])
    {


    ShowPlayerDialog(playerid,D_NAVI,DIALOG_STYLE_LIST,"Navigation","Stadthalle\nBank\nVerwahrstelle\nBCPD\nKrankenhaus\nFeuerwehr\nJobs\nGeschäfte","Einschalten","Ausschalten");
    return true;
    }

  • Schleife durch alle Fahrzeuge und Spieler. In diesem prüfst du welcher Spieler noch im Auto und ob es der Fahrer ist. Dann setzt du diesem auch den Wegpunkt.


    Ich würde schon vor den schleifen anfragen ob er selbst nicht der Fahrer ist, das spart Ressourcen.

  • infern eine schleife durch alle autos die aufn server sind
    weil ich muss doch nur das auto mir die id holen wo man als beifahrer drin ist

  • Ich hänge nur fest wie ich das ganze jetzt vom code her aussehen lassen muss ..

  • Überprüfen, ob GetPlayerState() gleich PLAYER_STATE_PASSENGER


    Falls Ja:

    • Loop durch alle Spieler (da MAX_PLAYERS < MAX_VEHICLES)

      • per GetPlayerVehicleID() und GetPlayerState() überprüfen, ob der Spieler im gleichen Fahrzeug ist wie playerid + ob PlayerState gleich PLAYER_STATE_DRIVER entspricht.
    • Falls ein Treffer -> Schleife beenden und der jeweiligen ID den Checkpoint geben.
    • Falls kein Treffer -> Existiert kein Beifahrer.




    Falls nein:

    • Fehlermeldung?


    Alternativ kannst du dir auch eine GetVehicleDriverID() Funktion o.ä. schreiben, sofern du häufiger damit arbeiten musst.

  • Die Idee gefällt mir, ist eine nette Funktionalität :)


    C
    stock SetVehicleCheckpoint(vehicleid, Float:x, Float:y, Float:z, Float:size)
    {
        for(new i=GetPlayerPoolSize(); i!=-1; i--)
        {
            if(IsPlayerConnected(i) && IsPlayerInVehicle(i,vehicleid)) SetPlayerCheckpoint(i,x,y,z,size);
        }
        return 1;
    }

    Jetzt kannst du einfach anstatt den Checkpoint für den Spieler und für das Fahrzeug zu setzen, einfach für das Fahrzeug setzen, dann bekommt jeder (auch der Fahrer), der in dem Fahrzeug ist, den Checkpoint angezeigt! :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Also so gemeint



    if(dialogid == D_Testnavi)
    {
    if(!response) return SendClientMessage(playerid,ROT,"Du das Navi ausgeschaltet."),DisablePlayerCheckpoint(playerid);
    new veh = GetPlayerVehicleID(playerid);
    switch(listitem)
    {
    case 0: SetVehicleCheckpoint(veh,1478.9865,-1739.6545,13.2613,5.0),SendClientMessage(playerid,WEISS, "Die Stadthalle, wird nun Rot auf der Karte angezeigt!");
    }
    }


    richtig ?
    und so bekommt jeder der aufn server ein fahrer ist den punkt ?


    eig meinte ich es so wie zb bei gta v online da wo der jenige beifahrer ist das nur dieser fahrer den bekommt ^^

  • aso durch die id dann :D jetzt leuchtet es mir ein danke dir (y)