Beiträge von Martin08

    Ja toll und in wie viel Prozent der Fälle steht das Fahrzeug genau Richtung Norden? Und selbst dann würde es nicht funktionieren, da man dann nur der y-Achse addieren müsste.
    Genauer gesagt würde es NUR funktionieren, wenn das Auto im Winkel von 45 ° richtung Nordosten steht ;)


    Trotzdem wäre das unsauber programmiert.

    Besser gesagt zerlegt sscanf einen String in seine Einzelteile.


    if(!sscanf(params,"uis",ID,Anzahl,Verbrechen))


    Du gibst ja zum Beispiel "/su 8 3 Autodiebstahl" ein. sscanf splittet jetzt die "8", die "3" und das "Autodiebstahl" auf und speichert sie in die variablen "ID","Anzahl" und "Verbrechen".



    Aber was hast du gegen meine Lösung? Funktioniert sie nicht oder was?

    Versuchs mal so:

    #include <Dini>


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_FIRE && oldkeys & KEY_CROUCH && IsteseineCBUGWaffe(playerid))
    {
    CBUGWARNUNGEN[playerid]++;


    new str[96];
    format(str, sizeof(str),"** Du hast den C-Bug %d / 3 mal ausgenutzt. Beim 3. mal erfolgt ein Kick!",CBUGWARNUNGEN[playerid]);
    SendClientMessage(playerid,COLOR_RED,str);


    if(CBUGWARNUNGEN[playerid] > 2)
    {
    new name[24];
    GetPlayerName(playerid,name,sizeof(name));
    format(str, sizeof(str),"%s.txt",name);
    if(dini_Exists(str))
    {
    dini_IntSet(string,"TimesKicked",strval(dini_Get(string,"Level")) + 1);
    }
    else
    {
    dini_Create(str);
    dini_IntSet(string,"TimesKicked",1);
    }


    CBUGWARNUNGEN[playerid] = 0;
    SendClientMessage(playerid,COLOR_RED,"** Du hast den C-Bug ausgenutzt, und wurdest deswegen gekickt!");
    Kick(playerid);
    }
    }
    return 1;
    }


    Wolltest du es so haben?

    Ich bin mir nicht sicher, aber es kann sein, dass der Zünder vor der Abfrage "if(GetPlayerWeapon(playerid) == 40)" verschwindet.


    Praktisch klickst du die Maus, in dem Moment wird der Zünder entfernt und er springt in OnPlayerKeyStateChange.
    Dort geht er dann bis zur Abfrage "newkeys == 4" und bleibt dann bei der nächsten Bedingung stehen, weil die Waffe ja schon von GTA aus gelöscht ist.


    Deswegen wäre eine Variabel, die du eben auf true und false setzt gar nicht so falsch.

    Naja wenn sich sowas Profi nennt... Aber darüber möchte ich nicht diskutieren. Wenn er damit zufrieden ist, was du ihm gemacht hat, okay. Wenn nicht, kann er gerne nochmal posten und ich helfe ihm (richtig) weiter ;)

    Das Problem ist, dass dein Script zwei "Wantedlevels" vergibt.
    Einmal ein selbsterstelltes, dass bis 25 geht. Und das von GTA, dass bis 6 Sterne geht.


    Ich bearbeite es dir mal so, dass das Selbsterstellte auch nur noch bis 6 geht und immer dem "GTA-WantedLevel" entspricht.


    dcmd_su(playerid,params[]){
    if(SpielerInfo[playerid][sFraktion] == TEAM_POLIZEI || SpielerInfo[playerid][sFraktion] == TEAM_FBI || SpielerInfo[playerid][sFraktion] == TEAM_SFPD || SpielerInfo[playerid][sFraktion] == TEAM_Bundeswehr)
    {
    new ID,Verbrechen[64],wLevel;
    if(!sscanf(params,"uis[64]",ID, wLevel, Verbrechen))
    {
    if(IsPlayerConnected(ID) && SpielerInfo[playerid][sEingeloggt])
    {
    if(IsAStateFaction(SpielerInfo[ID][sFraktion]))
    return SendClientMessage(playerid,Farbe_Grau,"Du kannst keine Staatsdiener Gesuchtenlevel geben.");

    if(SpielerInfo[ID][sGefangen] == 1)
    return SendClientMessage(playerid,Farbe_Grau,"Dieser Spieler ist bereits im Knast.");

    //if(SpielerInfo[ID][sWantedlevel] >= 25)
    // return SendClientMessage(playerid,Farbe_Grau,"Der Spieler hat die maximal anzahl an Wantedlevel bereits erreicht.");


    if(wLevel > 6 || wLevel < 0)
    return SendClientMessage(playerid,Farbe_Grau,"Das Wantedlevel muss zwischen 0 und 6 sein.");


    SpielerInfo[ID][sWantedlevel] = wLevel;
    SpielerInfo[ID][sVerbrechen]++;


    SetPlayerWantedLevel(ID,SpielerInfo[ID][sWantedlevel]);

    new Text[255];
    format(Text,sizeof(Text),"Du hast ein Verbrechen begangen ( %s ). Reporter: [%s].",Verbrechen,SpielerInfo[playerid][sName]);
    SendClientMessage(ID,Farbe_Leuchtrot,Text);
    SetPlayerWantedLevel(ID,SpielerInfo[ID][sWantedlevel]);
    format(Text,sizeof(Text),"Derzeitiges Wantedlevel: %d",SpielerInfo[ID][sWantedlevel]);
    SendClientMessage(ID,Farbe_Gelb,Text);
    format(Text,sizeof(Text),"%s hat das Wantedlevel von %s auf %d Wanteds gesetzt, Grund: %s.",SpielerInfo[playerid][sName],SpielerInfo[ID][sName],SpielerInfo[ID][sWantedlevel],Verbrechen);
    EnterToLog("Wanted",Text);


    ForAllPlayers(i)
    {
    if(SpielerInfo[i][sEingeloggt])
    {
    if(SpielerInfo[i][sFraktion] == TEAM_POLIZEI || SpielerInfo[i][sFraktion] == TEAM_FBI || SpielerInfo[i][sFraktion] == TEAM_SFPD || SpielerInfo[i][sFraktion] == TEAM_Bundeswehr)
    {
    format(Text,sizeof(Text),"** [Zentrale] | An alle Einheiten: Reporter: %s, over. **",SpielerInfo[playerid][sName]);
    SendClientMessage(i,0x8D8DFF00,Text);
    format(Text,sizeof(Text),"** [Zentrale] | Verbrechen: %s, Gesuchter: %s, Neues Wantedlevel: %d, over **", Verbrechen, SpielerInfo[ID][sName], SpielerInfo[ID][sWantedlevel]);
    SendClientMessage(i,0x8D8DFF00,Text);
    }
    }
    }

    }
    else SendClientMessage(playerid,Farbe_Grau,"Der gewählte Spieler ist nicht online.");
    }
    else SendClientMessage(playerid,Farbe_Grau,"Benutze: '/su(spect) [Playerid/Name] [Wantedlevel] [Verbrechen]'");
    }
    else SendClientMessage(playerid,Farbe_Grau,"Das darfst du nicht!");
    return true;
    }


    Falls, es durch die Änderung des höchsten Wantedlevels (25) zu Problemen kommen sollte, meld dich einfach nochmal, dann könnte man es auch anders lösen.

    Okay, ich weiß jetzt wo der Fehler liegt. Aber um ihn zu fixen muss ich wissen, wer alles den Checkpoint sehen soll.


    Jeder Spieler der Online ist?
    Alle Feuerwehrmänner? (Wenn es schon eine variable gibt, die das speichert.)
    ...

    Stimmt, wenn du es so haben möchtest, dass ausschließlich Leute mit Rang 4 zum Beispiel einen Befehl benutzen dürfen, dann stimmt es so.


    Wolltest du es aber so, dass alle die den 4. oder einen höheren Rang erreicht haben, den (z.B.) Befehl nutzen können, muss es so aussehen:


    stock IsPlayerRank(playerid,Rank)
    {
    if(GetPVarInt(playerid,"Rang")>=Rank)return 1;
    return 0;
    }


    Vergiss aber nicht dass du irgendwo den Wert setzt:
    SetPVarInt(playerid,"Rang",5); //Somit hätte der Spieler den Rang 5