SetPlayerMarkerForPlayer Problem - Selfmade Script

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

  • if(newkeys & KEY_SUBMISSION)
    {
    if(SpielerDarfBefehl("kontrolle",playerid))
    {
    if(GetPVarInt(playerid,"ruft") == 1) return SCM(playerid,rot,"Du hast schon Verstärkung gerufen! 30 Sekunden warten");
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerDarfBefehl("kontrolle",i))
    {
    new s[50];
    SetPlayerMarkerForPlayer(playerid,i,rot);
    SetPVarInt(playerid,"ruft",1);
    SetTimerEx("NeedCops",60000,0,"d",playerid);
    format(s,sizeof(s),"Polizist: %s: benötigt Verstärkung!",PlayerName[playerid]);
    SendMessageToTeam(playerid,COLOR_LIGHTBLUE,s);
    }
    }
    }
    return 1;
    }


    Folgendes Problem ist, das wenn 2 Cops Online sind bei beiden diese Funktion ausgeführt wird.

  • Ich verstehe nicht ganz was du meinst. Welche Funktion wird fuer beide aufgerufen?


    Habe einfach mal ein paar optimisierungen vorgenommen, da du z.B. SetPVarInt und SetTimerEx immer wieder in der for-schleife aufgerufen hast. (Unter der Annahme geschrieben, dass du mit 'SpielerDarfBefehl("kontrolle"' ueberpruefst, ob der Spieler ein Cop ist.)

    if(newkeys & KEY_SUBMISSION)
    {
    if(SpielerDarfBefehl("kontrolle",playerid))
    {
    if(GetPVarInt(playerid,"ruft") == 1) return SCM(playerid,rot,"Du hast schon Verstärkung gerufen! 30 Sekunden warten");
    SetPVarInt(playerid,"ruft",1);
    SetTimerEx("NeedCops",60000,0,"d",playerid);
    new s[50];
    format(s,sizeof(s),"Polizist: %s: benötigt Verstärkung!",PlayerName[playerid]);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && SpielerDarfBefehl("kontrolle",i))
    {
    SetPlayerMarkerForPlayer(i,playerid,rot);
    SCM(i, COLOR_LIGHTBLUE, s);
    //SendMessageToTeam(playerid,COLOR_LIGHTBLUE,s);
    }
    }
    }
    return 1;
    }

    Alternativ kann man auch SendMessageToTeam vor die for-schleife setzen, sofern SendMessageToTeam eine Nachricht an das team der uebergebenen playerid sendet. Ausser, wenn SendMessageToTeam eine 'for( i < MAX_PLAYERS )'-schleife benutzt, denn dann ist SCM dort wo es jetzt ist nutzvoller, da man sich dann eine for-MAX-Players schleife spart.