Problem mit Checkpoint Aktualisierungen

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 Breadfish Community,


    ich habe ein kleines Problem zu meinen Checkpoint. Normalerweise sollten sie sich Aktualisieren, aber dies tun sie nicht.


    Code 1:
    forward updateOrtenCheckpoint(playerid, zielid);


    Code 2:
    public updateOrtenCheckpoint(playerid, zielid){new Float:X,Float:Y,Float:Z;GetPlayerPos(zielid, X,Y,Z);SetPlayerCheckpoint(playerid, X,Y,Z, 6, CP_SERVICEhelfermann, CP_TYPE_helfermann);return true;}


    Code 3:
    CMD:acceptwheelman(playerid, params[])
    {
    new pID, string[128], Float:X,Float:Y,Float:Z;
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_GREY, "/acceptwheelman [Spieler]");
    if(Spieler[playerid][pFraktion] != 10)return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Wheelman.");
    if(!IsLoggedIn(pID))return SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist nicht eingeloggt.");
    if(pServiceWheelman[pID] == 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler benötigt keinen Wheelman.");
    if(GetPlayerInterior(pID) > 0 || GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist in einem Interior. Ortung nicht möglich.");


    pServiceWheelman[pID] = 0;
    GetPlayerPos(pID, X,Y,Z);
    SetPlayerCheckpoint(playerid, X,Y,Z, 6, CP_SERVICEWHEELMAN, CP_TYPE_WHEELMAN);
    format(string, sizeof(string), "Wheelman %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);


    format(string, sizeof(string), "Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    // SetPlayerMarkerForPlayer(playerid, pID, 0xFF0000FF);
    ortenTimer[playerid] = SetTimerEx("updateOrtenCheckpoint", 1000, true, "ii", playerid, GetName(pID));
    return 1;
    }



    Aber immer wenn er dies annimmt geht der Checkpoint zum den Coordinaten: 0, 0, 0


    Ich bedanke mich im voraus für eine Antwort


    MfG,
    KaltesSnickers

  • Hallo.


    Könntest du bitte mal den Code 3 erneut senden. weil es ist so unerkennbar weil alle Zeilen zusammen gemischt sind

  • Hallo.
    Könntest du bitte mal den Code 3 erneut senden. weil es ist so unerkennbar weil alle Zeilen zusammen gemischt sind

    CMD:acceptwheelman(playerid, params[])
    {
    new pID, string[128], Float:X,Float:Y,Float:Z;
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_GREY, "/acceptwheelman [Spieler]");
    if(Spieler[playerid][pFraktion] != 10)return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Wheelman.");
    if(!IsLoggedIn(pID))return SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist nicht eingeloggt.");
    if(pServiceWheelman[pID] == 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler benötigt keinen Wheelman.");
    if(GetPlayerInterior(pID) > 0 || GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist in einem Interior. Ortung nicht möglich.");


    pServiceWheelman[pID] = 0;
    GetPlayerPos(pID, X,Y,Z);
    SetPlayerCheckpoint(playerid, X,Y,Z, 6, CP_SERVICEWHEELMAN, CP_TYPE_WHEELMAN);
    format(string, sizeof(string), "Wheelman %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);


    format(string, sizeof(string), "Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    // SetPlayerMarkerForPlayer(playerid, pID, 0xFF0000FF);
    ortenTimer[playerid] = SetTimerEx("updateOrtenCheckpoint", 1000, true, "ii", playerid, GetName(pID));
    return 1;
    }

  • Poste bitte noch dein "updateOrtenCheckpoint" public
    @KaltesSnickers


    public updateOrtenCheckpoint(playerid, zielid)//playerid ist die ID des spielers der den Checkpoint sehen soll, zielid ist die ID des Spielers an dessen Position der Checkpoint erstellt werden soll.
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(zielid, X,Y,Z);
    SetPlayerCheckpoint(playerid, X,Y,Z, 6, CP_SERVICEWHEELMAN, CP_TYPE_WHEELMAN);
    return true;
    }

  • Also ich habe es so gemacht und es funktioniert wie geschmiert:




    ocmd:acceptwhcall(playerid,params[])
    {
    if(Spieler[playerid][vTeam] != 9)return SendClientMessage(playerid,COLOR_GRAD2,"* Du bist kein Mitglied der Wheelman Agency.");
    new pID,string[128];
    if(sscanf(params, "u", pID))return SendClientMessage(playerid,COLOR_GRAD2,"** FEHLER: /acceptwhcall [ID/Name]");
    if(NeedWH[pID] == 0)return SendClientMessage(playerid,COLOR_GRAD2,"* Der Spieler braucht keinen Wheelman.");
    format(string, sizeof(string), "* Du hast den Anruf von %s angenommen.",SpielerName(pID));
    SendClientMessage(playerid,COLOR_TÜRKIS,string);
    format(string, sizeof(string), "* Wheelman %s hat dein Auftrag angenommen.",SpielerName(playerid));
    SendClientMessage(pID,COLOR_TÜRKIS,string);


    Auftrag[playerid] = 1;
    AktuellerAuftrag[playerid] = pID;


    //Spieler-finden
    new Float:Pos[3];
    GetPlayerPos(pID,Pos[0],Pos[1],Pos[2]);
    Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4);
    CheckpointTimer[playerid] = SetTimerEx("UpdateCheckpoint",1000,1,"ii",playerid,pID);
    return 1;
    }


    //das public:
    forward UpdateCheckpoint(playerid,playerid2);
    public UpdateCheckpoint(playerid,playerid2)
    {
    new Float:Pos[3];
    GetPlayerPos(playerid2,Pos[0],Pos[1],Pos[2]);
    Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4);
    return 1;
    }


    //ganz oben noch:
    new CheckpointTimer[MAX_PLAYERS],Checkpoint[MAX_PLAYERS];


    und wenn der kunde sich ausloggt:
    KillTimer(CheckpointTimer[playerid]);

    Mit freundlichen Grüßen,


    Keslo

  • Also ich habe es so gemacht und es funktioniert wie geschmiert:



    ocmd:acceptwhcall(playerid,params[]){ if(Spieler[playerid][vTeam] != 9)return SendClientMessage(playerid,COLOR_GRAD2,"* Du bist kein Mitglied der Wheelman Agency."); new pID,string[128]; if(sscanf(params, "u", pID))return SendClientMessage(playerid,COLOR_GRAD2,"** FEHLER: /acceptwhcall [ID/Name]"); if(NeedWH[pID] == 0)return SendClientMessage(playerid,COLOR_GRAD2,"* Der Spieler braucht keinen Wheelman."); format(string, sizeof(string), "* Du hast den Anruf von %s angenommen.",SpielerName(pID)); SendClientMessage(playerid,COLOR_TÜRKIS,string); format(string, sizeof(string), "* Wheelman %s hat dein Auftrag angenommen.",SpielerName(playerid)); SendClientMessage(pID,COLOR_TÜRKIS,string); Auftrag[playerid] = 1; AktuellerAuftrag[playerid] = pID; //Spieler-finden new Float:Pos[3]; GetPlayerPos(pID,Pos[0],Pos[1],Pos[2]); Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4); CheckpointTimer[playerid] = SetTimerEx("UpdateCheckpoint",1000,1,"ii",playerid,pID); return 1;}//das public:forward UpdateCheckpoint(playerid,playerid2);public UpdateCheckpoint(playerid,playerid2){ new Float:Pos[3]; GetPlayerPos(playerid2,Pos[0],Pos[1],Pos[2]); Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4); return 1;}//ganz oben noch:new CheckpointTimer[MAX_PLAYERS],Checkpoint[MAX_PLAYERS];und wenn der kunde sich ausloggt: KillTimer(CheckpointTimer[playerid]);

    Vielen Dank, dieser Code hat mich weitergebracht.


    Und ich habe noch eine kleine Frage, da du ein Wheelman System hast.
    Es geht um das Spieler ins Auto ziehen.


    Ich muss es 3 Mal eingeben, damit der Spieler im Auto sitzt.
    erstes mal: Für den Spieler ist man im Auto und für den Wheelman ist der Spieler im anderen Auto.


    zweites mal: Spieler ist immer noch im Auto und führ den Wheelman ist der Spieler immer noch im anderen Auto


    Drittes mal: Spieler ist im Auto und für Wheelman auch

  • Wenn du Lust hast, meld dich doch bei mir per PN :) Habe dir schon etwas geschrieben.


    Hier hast du mein Grab-System:




    ocmd:freefromcar(playerid,params[])
    {
    if(Spieler[playerid][vTeam] != 9)return SendClientMessage(playerid,COLOR_GRAD2,"* Du bist kein Wheelman.");
    new string[64],pID;
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_GRAD2, "** FEHLER: /freefromcar [SpielerID/Name]");
    if(GetDistanceBetweenPlayers(playerid,pID) <= 8)
    {
    if(pID == playerid)return SendClientMessage(playerid, COLOR_GRAD2, "* Du kannst dich selber nicht befreien.");
    if(GetPlayerState(pID) == PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_GRAD2, "* Der Spieler darf nicht der Fahrer sein.");
    if(Cuffed[pID] == 0)return SendClientMessage(playerid,COLOR_GRAD2,"* Der Spieler muss gefesselt sein.");


    if(AktuellerAuftrag[playerid] == pID)
    {
    format(string, sizeof(string), "* Jemand versucht %s in sein Fahrzeug zu ziehen.", SpielerName(pID));
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    SetTimerEx("rgrabtimer",1000*7,0,"ii",playerid,pID);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD2,"* Der Spieler ist nicht dein Kunde.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD2,"* Der Spieler ist nicht in deiner Nähe.");
    }
    return 1;
    }


    forward rgrabtimer(playerid,playerid2);
    public rgrabtimer(playerid,playerid2)
    {
    if(GetDistanceBetweenPlayers(playerid,playerid2) <= 8)
    {
    RemovePlayerFromVehicle(playerid2);
    SetTimerEx("ziehen",2000,0,"ii",playerid,playerid2);
    }
    else
    {
    SendClientMessage(playerid2,COLOR_GRAD2,"* Der Wheelman ist nicht mehr in deiner Nähe.");
    SendClientMessage(playerid,COLOR_GRAD2,"* Der beauftragte Spieler ist nicht mehr in deiner Nähe.");
    }
    }


    forward ziehen(playerid,playerid2);
    public ziehen(playerid,playerid2)
    {
    new car = GetPlayerVehicleID(playerid);
    new string[128];
    new Float:x,Float:y,Float:z;
    SetPlayerPos(playerid2,x,y,z);
    format(string, sizeof(string), "* Du wurdest von %s ins Fahrzeug gezogen.", SpielerName(playerid));
    SendClientMessage(playerid2, COLOR_GRAD2, string);
    PutPlayerInVehicle(playerid2, car, 1);
    ProxDetector(30.0, playerid, "* Reinziehen erfolgreich.", COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    GameTextForPlayer(playerid,"Gib Gas!",3000,1);
    }

    Mit freundlichen Grüßen,


    Keslo