Problem beim vergleichen zweier Variablen

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
  • Hey,kann mir mal flott jemand den Fehler zeigen?^^
    Ich finde den nicht...


    Handynummer wird erfolgreich aus der Datenbank ausgelesen und an die Variable übergeben.
    Trotzdem spuckt mir das Script folgende Nachricht aus: SendClientMessage(playerid,FARBE_GRAU,"Nachricht konnte nicht versendet werden!");



    COMMAND:sms(playerid,params[])
    {
    new nummer,string[128];
    if(sscanf(params,"ds[128]",nummer,string))return SendClientMessage(playerid, FARBE_GRAU,"Benutze: /sms [nummer] [text]");
    if(SpielerInfo[playerid][pHandy] == 0 || SpielerInfo[playerid][HandyEingeschaltet] == false || SpielerInfo[playerid][pSimkarte] == 0)return SendClientMessage(playerid,FARBE_GRAU,"Du hast noch kein Handy oder es ist nicht eingeschaltet!");
    for(new i; i != MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(nummer == SpielerInfo[i][pHandynummer])
    {
    new str[128];
    format(str,sizeof(str),"SMS: %s |Nummer: '%d'",string,SpielerInfo[playerid][pHandynummer]);
    SendClientMessage(i,FARBE_GRAU,str);
    format(str,sizeof(str),"SMS an '%d' versendet!",nummer);
    SendClientMessage(playerid,FARBE_GRAU,str);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,FARBE_GRAU,"Nachricht konnte nicht versendet werden!");
    return 1;
    }
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von k4biX ()

  • i = maxplayer (i geht alle spieler durch)


    und dann guckst du bei nummer == SpielerInfo[alle spieler][..]


    mach das mit SpielerInfo[pID][..]
    und schreib oben halt pID hin


    also bis (IsPlayerConnectet(i))
    kannst du es so lassen

  • Ink ist wieder bei der Arbeit, merkt man direkt :p


    Lass dir mal über deinem

    Code
    if(nummer == SpielerInfo[i][pHandynummer])


    Die Variablen nummer und SpielerInfo[i][pHandynummer] printen via

    Code
    printf("%d - %d", nummer, SpielerInfo[i][pHandynummer]);


    Nur um sicherzugehen, dass auch wirklich irgendwo die gleichen Nummer stehen, wie es sein sollte.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Beim Login geladen:

    Code
    [22:08:13] Handynummer: 4343363


    Aber beim vergleichen funktioniert es nicht?

    Code
    [22:08:42] 4343363 - 0


    //edit: Ah natürlich, das Return bei else unterbricht die Schleife, aber wie kann ich das nun machen, dass wenn es keine Übereinstimmung findet, dass er mir die Nachricht einmal ausgibt, dass keine Nachricht versendet werden konnte?

  • Mal abgesehen, ob irgendwelche Handynummern falsche Werte haben, muss das Ganze so aussehen, sonst bricht es dir nach dem ersten Spieler ab (Ausser er hat durch Zufall grad die Nummer):



    COMMAND:sms(playerid,params[])
    {
    new nummer,string[128];
    if(sscanf(params,"ds[128]",nummer,string))return SendClientMessage(playerid, FARBE_GRAU,"Benutze: /sms [nummer] [text]");
    if(SpielerInfo[playerid][pHandy] == 0 || SpielerInfo[playerid][HandyEingeschaltet] == false || SpielerInfo[playerid][pSimkarte] == 0)return SendClientMessage(playerid,FARBE_GRAU,"Du hast noch kein Handy oder es ist nicht eingeschaltet!");
    for(new i; i != MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(nummer == SpielerInfo[i][pHandynummer])
    {
    new str[128];
    format(str,sizeof(str),"SMS: %s |Nummer: '%d'",string,SpielerInfo[playerid][pHandynummer]);
    SendClientMessage(i,FARBE_GRAU,str);
    format(str,sizeof(str),"SMS an '%d' versendet!",nummer);
    SendClientMessage(playerid,FARBE_GRAU,str);
    return 1;
    }
    }
    }
    SendClientMessage(playerid,FARBE_GRAU,"Nachricht konnte nicht versendet werden!"); // Wir haben alle 500 Spieler (Je nach Slotzahl) durch, aber keine passende Nummer konnte gefunden werden
    return 1;
    }


    Gruss