Problem mit SetPlayerMarkerForPlayer

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, habe ein komisches Problem mit meiner SetPlayerMarkerForPlayer Funktion..


    Hier mein Code:



    #define C_BLUEMARKER 0x0000FFFF


    //code


    public OnGameModeInit()
    {
    ShowPlayerMarkers(0);
    //code
    }



    //Befehl
    SetPlayerMarkerForFraction(Player[playerid][pFraction],playerid,C_BLUEMARKER);



    stock SetPlayerMarkerForFraction(fra,pid,color)
    {
    for(new p=0;p<MAX_PLAYERS;p++)
    {
    if(!IsPlayerConnected(p)) continue;
    if(!Player[p][pLogged]) continue;
    if(!Player[p][pDuty]) continue;
    if(IsInFraction(p) != fra) continue;
    if(p == pid) continue;
    SetPlayerMarkerForPlayer(p, pid, color); //habe es hier auch schon probiert, direkt die Farbe C_BLUEMARKER anzugeben
    }
    return 1;
    }


    Der Spieler bekommt zwar einen blauen Namen, aber auf der Minimap ist er nicht drauf.
    Jemand ne Ahnung? :(


    MFG selEcT


  • Printe das ganze doch einmal.


    stock SetPlayerMarkerForFraction(fra,pid,color)
    {
    print("Test 1");
    for(new p=0;p<MAX_PLAYERS;p++)
    {
    print("Test 2");
    if(!IsPlayerConnected(p)) continue;
    print("connected");
    printf("pLogged: %d", Player[p][pLogged]);
    if(!Player[p][pLogged]) continue;
    printf("Duty: %d",Player[p][pDuty]);
    if(!Player[p][pDuty]) continue;
    if(IsInFraction(p) != fra) continue;
    print("Ist in Frak");
    if(p == pid) continue;
    printf("p: %d, pid: %d", p, pid);
    SetPlayerMarkerForPlayer(p, pid, color); //habe es hier auch schon probiert, direkt die Farbe C_BLUEMARKER anzugeben
    }
    return 1;
    }


    L.G.
    heyho




  • Wie gesagt, es funktioniert wie es soll, auch der Spielername wird blau. Nur da erscheint kein Marker auf der Map :/


    MFG

  • Blockiert es^^
    Heißt, warscheinlich möchtest du es bei dir selber sehen^^.
    Mach diese Abfrage mal einfach raus:
    if(p == pid) continue;


    L.G.
    heyho


    Nicht ganz, der Kollege ist pid (PlayerID 1) und hat den Befehl ausgeführt (das ich seine Position sehen soll). Somit sollte der Marker nur mir angezeigt werden.
    Aber ich probiere es mal so ohne die Abfrage (was m.M.n. allerdings keinen Sinn macht, ich möchte ja nicht mir meinen Marker anzeigen lassen..)


    edit: wie ich es vermutet habe, funzt immernoch nicht.. X(

  • Könntest du uns kurz senden, was ausgegeben wird?




    Ich frage mich, was du dir erhoffst zu finden :S


    //edit: könnte SetPlayerColor eine Auswirkung darauf haben?

  • SetPlayerColor verändert nur die Spielerfarbe vom Spieler, also playerid.


    Jo, doch wenn man dem die Farbe Invisible / Transparent gibt, verschwindet theoretisch auch der Marker. Und wenn die Farbe vorher auf Invisible gestellt wird, wird er auch nix anzeigen (obwohl die Farbe wieder überschrieben wird mit Marker.. hmm..)


    edit: zum Verständnis, kann ShowPlayerMarkers auf 0 sein oder MUSS es auf 1 sein, damit das überhaupt klappt? ;)

  • Du sry ich bin anfänger kenn mich auch nicht richtig aus :D aber so mal ne frage Reicht
    da kein SetPlayerColor(playerid,Farbe); ?



    falls nicht sry bitte nicht gleich mobben hier ^^


    Ich mobbe niemanden, der wenig / keine Ahnung hat ;)


    SetPlayerColor setzt lediglich die Spielerfarbe (in der Tabliste), SetPlayerMarkerForPlayer setzt den Marker noch dazu (bitte korrigieren, sollte ich hier was falsches sagen :D).



    edit: habs doch vermutet.. wenn ShowPlayerMarkers auf 1 gesetzt ist, funktioniert es.