Function macht nicht das was sie soll ?

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
  • Schönen guten Tag,


    ich habe ein Problem, undzwar würde ich gerne wenn keiner Online ist mit Wanteds ihm eine Message senden lassen, das keine Wantedler
    Online sind. Doch das Problem ist ich lasse ihn die Wantedler in einem Dialog anzeigen, welches auch Funktioniert, aber wenn keine Online
    Sind, dann passiert einfach nichts & an der Stelle würde ich ihm gerne eine Message senden lassen. Ich habe schon einiges ausprobiert aber es funktioniert
    nicht.


    Kann mir jemand helfen ?


    if(SpielerInfo[i][Wantedlevel] <= 9)
    {
    SendClientMessage(playerid,Orange,"Keine Straftäter vorhanden!");
    return 1;
    }
    else
    {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),i,GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string));
    }


    Greetz.

  • !SpielerInfo[i][Wantedlevel]) continue;


    Du kannst hier doch einfach eine Nachricht returnen lassen das keiner online ist wenn die Schleife durchgelaufen ist und keiner Wanteds hat bevor du den Dialog öffnen lässt.

    KleineHilfe 2.0

  • !SpielerInfo[i][Wantedlevel]) continue;


    Du kannst hier doch einfach eine Nachricht returnen lassen das keiner online ist wenn die Schleife durchgelaufen ist und keiner Wanteds hat.


    Das Problem ist dann, das er wenn jemand Wanteds hat, das kein Dialog kommt. Habe ich auch schon ausprobiert..

  • Lass einen globalen Zähler sich um 1 addieren wenn jemand Wanteds hat, wenn der Zähler auf 0 steht, deine Aktion ausfüren :thumbup:


    //Edit


    Die Methode von Dark.Shadow ist natürlich etwas schöner^^

    KleineHilfe 2.0

  • Was soll ein Globaler Zähler bringen ?
    Komischerweise selbst so hier:


    new test = GetPlayerWantedLevel(i);
    if(test > 0)
    {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),GetPlayerScore(playerid),GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string));
    }
    else { SendClientMessage(playerid,Orange,"Keine Straftäter vorhanden!"); return 1; }


    Bekomem ich jedesmal die Message gesendet das keine Straftäter Online sind, Obwohl mein Wantedlevel 3 ist ...
    Kann mir das bitte jemand erklären ? Weil normalerweise kommt er doch garnicht in die erste Function rein oder nicht ? Ich würde gerne wissen wieso er trotzdem
    die erste Function ausführt.

  • new count = 0;
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),i,GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string));
    count++; //Spieler gefunden, count wird erhöht
    }
    if(count == 0)return SendClientMessage(playerid,0xFF0000FF,"Keine Spieler gefunden."); //Wenn count immer noch 0 ist wurde kein Spieler gefunden
    else ShowPlayerDialog(...);

  • Du gehst das falsch an


    Versuch es einfach mal so

    public ShowWanteds(playerid)
    {
    new bool:first = true;
    for ( new i; i < MAX_PLAYERS; i++ )
    {
    if ( IsPlayerConnected(i) )
    {
    if(GetPlayerWantedLevel(i) > 0)
    {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),GetPlayerScore(playerid),GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string));
    first = false;
    }
    }
    }

    if ( first == true )
    {
    SendClientMessage(playerid, -1, "Es gibt keine Straftäter!");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_LIST, "Wanteds", string, "Ok","Abbrechen");
    }
    }

    ik bin der vito c:

  • Zeig mal bitte mehr Code :rolleyes:



    for(new i; i<MAX_PLAYERS; i++)
    {
    new test = GetPlayerWantedLevel(i);
    if(test > 0)
    {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),GetPlayerScore(playerid),GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string));
    }
    else { SendClientMessage(playerid,Orange,"Keine Straftäter vorhanden!"); return 1; }
    }
    ShowPlayerDialog(playerid,DIALOG_AKTEN,DIALOG_STYLE_LIST,"{0091FF}Staatscomputer",string,"Auswahl","Verlassen");
    CancelSelectTextDraw(playerid);

  • Nun, das funktioniert so natürlich nicht ^^


    Die richtigen Lösungen wurden schon oben geschrieben :)


    Aber ich kann auch nochmal eine schreiben, es sollte so aussehen:


    new bool:gef,i;
    for(; i!=MAX_PLAYERS; i++) {
    if(!SpielerInfo[i][Eingeloggt] || !SpielerInfo[i][Wantedlevel]) continue;
    format(buffer,sizeof(buffer),"Name: %s Level: %i Wantedlevel: %i Fahndungslevel: %i\n",SpielerName(i),GetPlayerScore(playerid),GetPlayerWantedLevel(i),SpielerInfo[i][Wantedlevel]);
    strins(string,buffer,strlen(string),sizeof(string)),gef=true;
    }
    if(!gef) return SendClientMessage(playerid,Orange,"Keine Straftäter vorhanden!");
    ShowPlayerDialog(playerid,DIALOG_AKTEN,DIALOG_STYLE_LIST,"{0091FF}Staatscomputer",string,"Auswahl","Verlassen");
    CancelSelectTextDraw(playerid);
    return 1;


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich nehme mal an weil du die Abfrage des Counter/Bools nicht in die direkte Funktion eingebaut hast?


    Das von Kaliber if(!gef) return SendClientMessage(playerid,Orange,"Keine Straftäter vorhanden!"); gehört direkt unter den CMD.

    KleineHilfe 2.0

  • EDIT; Könnt ihr mir aber erklären wieso er trotzdem das ausgeführt hat, obwohl keine Wantedleveler Online waren ?
    Das verstehe ich nicht.


    Erhöhst du auch wirklich den Spielern, die ein WantedLevel bekommen, die Variable SpielerInfo[playerid][Wantedlevel]?


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Erhöhst du auch wirklich den Spielern, die ein WantedLevel bekommen, die Variable SpielerInfo[playerid][Wantedlevel]?


    mfg. :thumbup:


    Ich denk doch 8)


    ocmd:su(playerid,params[])
    {
    if(SpielerInfo[playerid][Eingeloggt] == 0)return SendClientMessage(playerid,Grau,"Du bist nicht eingeloggt!");
    if(!IsCop(playerid))return SendClientMessage(playerid,Orange,"Du bist nicht befugt!");
    new wanted,grund[32],pID,string[512];
    new wantedlevell = SpielerInfo[pID][Wantedlevel]+wanted;
    if(sscanf(params,"uis",pID,wanted,grund))return SendClientMessage(playerid,Gelb,"Staatsbefehl: Wantedvergabe [Player ID][Wanted Anzahl][Grund]");
    if(SpielerInfo[pID][FDuty] == 1)return SendClientMessage(playerid,Orange,"Du kannst keinen Staatsbeamten anklagen!");
    if(wanted > 60)return SendClientMessage(playerid,Orange,"Du kannst Maximal 60 Wanteds vergeben !");
    if(wantedlevell > 60)return SendClientMessage(playerid,Orange,"Ein Spieler kann Maximal 60 Wanteds haben!");
    SpielerInfo[pID][Wantedlevel] += wanted;
    String(pID,Rot,"%s(%i) hat dir mit dem Grund %s %i Wanteds gegeben.",SpielerName(playerid),playerid,grund);
    format(string,sizeof(string),"%s(%i) hat %s(%i) mit dem Grund %s %i Wanteds gegeben.",SpielerName(playerid),playerid,SpielerName(pID),pID,grund,wanted);
    SendCopMessage(Gelb,string);
    CheckWanteds(pID);
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen