Beiträge von Sebastian.

    Wenn zum Beispiel der erste array Eintrag nicht deinen Koordinaten entspricht, springt es sofort in dein "Else" Abschnitt rein, sendet die Nachricht und das return beendet die schleife dann damit auch.


    Von daher arbeite mit einem boolean , den du auf true setzt, wenn deine abfrage zu trifft.
    Außerhalb der schleife fragst du dann ab, ob er auf false ist. Wenn er auf false ist, sendest du ihm die Nachricht, das er nicht an einem haus ist

    Ich hab damit zwar noch nie gearbeitet, bzw ich mache die Farbe wenn immer direkt in den string rein, aber du deklarierst ja deine Farbe als ein String.. versuch es mal so
    ohne die (" ")

    #define HTML_LIGHTBLUE {00FFFF}

    Genau, jetzt werden die Wanteds auf 0 gesetzt.


    Jedoch spawnt der Spieler immernoch am normalen spawn.
    von daher arbeite mit SetPlayerPos und den Koordinaten von der Knast Zelle

    Die wanteds gehen auch da nicht weg, da dort auch kein SetPlayerWantedLevel vorhanden ist.
    Der Spieler spawnt am normalen spawn, weil du ihn auch komplett respawnen lässt..
    diese Zeile lässt ihn respawnen

    SpawnPlayer(giveplayerid);

    damit der Spieler alle Wanteds wegbekommt, muss du das selbe, wie du auch vorhin bei dem /clear eingefügt hat, einfügen.

    Spieler[giveplayerid][Wanteds] = 0;
    SetPlayerWantedLevel(giveplayerid,0);

    also entweder du macht dein /clear so

    ocmd:clear(playerid,params[]) {
    new pID,string[111],string2[111];
    if(sscanf(params,"u",pID)) { return SendClientMessage(playerid,BLAU,"Benutzung: /clear [playerid]"); }
    if(pID == playerid) { return SendClientMessage(playerid,ROT,"Du kannst nicht deine eigene Akte reinigen!"); }
    if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 14)
    {
    SetPVarInt(pID,"Wanted",0);
    Spieler[pID][Wanteds] = 0;
    SetPlayerWantedLevel(pID,0);
    format(string2,sizeof(string2),"Du hast %s seine Akte gereinigt",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string2);
    format(string,sizeof(string),"%s hat deine Akte gereinigt",SpielerName(playerid));
    SendClientMessage(pID,HELLBLAU,string);
    }
    return 1;
    }


    oder du lässt die variable ganz weg, und arbeitest nur mit Set- / GetPlayerWantedLevel

    da du ja bei deinem Wanted übersicht befehl die variable formatierst, also als aktuelle wanteds ausgeben lässt, musst du diese variable logischer weise auch an die Wanteds immer anpassen.


    oder du macht es so:

    format(string, sizeof(string), "%s%s [ID: %d]: %d", string, SpielerName(i), i, GetPlayerWantedLevel(i));


    hier lässt du einfach die aktuellen "genauen" Wanteds ausgeben

    Mhh.. du kannst ja mal mehrere Theorien ausprobieren.
    z.B mit GetPlayerVehicleSeat

    if(newstate == PLAYER_STATE_PASSENGER)
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(i == playerid)continue;
    if(GetPlayerVehicleID(i)==GetPlayerVehicleID(playerid){
    if(GetPlayerVehicleSeat(i) == 0){
    SetPlayerArmedWeapon(playerid,0);
    }
    }
    }
    }
    }

    Das kannst du auch ganz einfach alleine testen, indem du dir Wanteds gibst, und bei dem /clear befehl diese Abfrage aus klammerst.



    //if(pID == playerid)return SendClientMessage(playerid,ROT,"Du kannst nicht deine eigene Akte reinigen!");

    Versuch den Command "/clear" mal so

    Spoiler anzeigen

    ocmd:clear(playerid,params[]) {
    new pID,string[128];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"Benutzung: /clear [playerid]");
    if(pID == playerid)return SendClientMessage(playerid,ROT,"Du kannst nicht deine eigene Akte reinigen!");
    if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 14){
    SetPVarInt(pID,"Wanted",0);
    SetPlayerWantedLevel(pID,0);
    format(string,sizeof(string),"Du hast %s seine Akte gereinigt",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string);
    format(string,sizeof(string),"%s hat deine Akte gereinigt",SpielerName(playerid));
    SendClientMessage(pID,HELLBLAU,string);
    }
    return 1;
    }

    es liegt an dieser Zeile hier. Continue bewirkt, wenn deine Abfrage zutrifft, alles "übersprungen" wird und wieder am Anfang beginnt

    if(IsPlayerInRangeOfPoint(playerid,5.0,PlayerHaus[i][Hausx],PlayerHaus[i][Hausy],PlayerHaus[i][Hausz])) continue;

    von daher versuch es mal so:

    if(IsPlayerInRangeOfPoint(playerid,5.0,PlayerHaus[i][Hausx],PlayerHaus[i][Hausy],PlayerHaus[i][Hausz])){
    //...
    }