SMS Befehl fehlerhaft

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,
    ich habe mich mal einem /sms Befehl versucht und der funktioniert nur teilweise. Ich erkläre euch das mal ganz primitiv, was nicht klappt^^: Spieler A mit der ID 0 (wenn man Tab drückt) hat die Nummer 3333. Spieler B hat die ID 1 und die Nummer 4444. Wenn Spieler B eine SMS an die Nummer 3333 schreibt, kommt diese auch an, genauso wie wenn Spieler B sich selber eine SMS schreibt, die kommt auch an. Wenn Spieler A sich selber eine SMS schreibt, kommt die ebenfalls an, aber wenn Spieler A eine SMS an die Nummer 4444 schreibt, wird ausgegeben, dass diese nicht existiert.
    Befehl:
    ocmd:sms(playerid,params[])
    {
    if(mobiInfo[playerid][Handy]!=1) return SendClientMessage(playerid,Gelb,"Du besitzt kein Handy! Kaufe dir eins im 24/7!");
    new cnumber,smstext[128],stringtop[128],stringtoc[128];
    if(sscanf(params,"ds[128]",cnumber,smstext)) return SendClientMessage(playerid,Weiss,"Benutzung: /sms [Nummer] [Text]");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(mobiInfo[i][Handynummer]!=cnumber) return SendClientMessage(playerid,Gelb,"Diese Nummer gibt es nicht!");
    format(stringtop,sizeof(stringtop),"SMS an %d: %s",cnumber,smstext);
    format(stringtoc,sizeof(stringtoc),"SMS von %d: %s",mobiInfo[playerid][Handynummer],smstext);
    SendClientMessage(playerid,Hellgruen,stringtop);
    SendClientMessage(i,Hellgruen,stringtoc);
    GivePlayerMoney(playerid,-15);
    return 1;
    }
    return 1;
    }
    Hatte mit printf auch mal beide Nummern ausgeben lassen beim Connect. Die stimmen ebenfalls, haben beide die richtigen Nummern (4444 und 3333)
    Irgendwie muss es an der Schleife liegen, was ist da falsch?

    Greetz

  • //Edit: falsch verstanden, return SendClientMessage ist jetzt in if(mobiInfo[i][Handynummer]!=cnumber) SendClientMessage(playerid,Gelb,"Diese Nummer gibt es nicht!"); geändert worden, Problem besteht weiterhin, nur dass ich jetzt die Nachricht bekommen, es existiert keine Nummer und beide Strings. Der Empfänger bekommt nichts mehr.

    Greetz

    Einmal editiert, zuletzt von Uppermost ()

  • Bin mir gerade verdammt unsicher, möchte nichts falsches von mir geben, aber ein Versuch ist es Wert:
    for(new i=-1; i<MAX_PLAYERS; i++)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • Du brichst die schleife immer ab
    Wenn es die nummer nicht gibt hast du ein return gesetzt
    Resultat ist das er den Code nicht weiter ausführt


    Ich hab ihn dir mal umgeschrieben
    ocmd:sms(playerid,params[])
    {
    if(mobiInfo[playerid][Handy]!=1) return SendClientMessage(playerid,Gelb,"Du besitzt kein Handy! Kaufe dir eins im 24/7!");
    new cnumber,smstext[128],stringtop[128],bool:numb = false;
    if(sscanf(params,"ds[128]",cnumber,smstext)) return SendClientMessage(playerid,Weiss,"Benutzung: /sms [Nummer] [Text]");
    for(new i=0; i< MAX_PLAYERS; i++)
    {
    if(mobiInfo[i][Handynummer]!=cnumber) continue;
    format(stringtop,sizeof(stringtop),"SMS an %d: %s",cnumber,smstext);
    SendClientMessage(playerid,Hellgruen,stringtop);
    format(stringtop,sizeof(stringtop),"SMS von %d: %s",mobiInfo[playerid][Handynummer],smstext);
    SendClientMessage(i,Hellgruen,stringtop);
    GivePlayerMoney(playerid,-15);
    numb = true;
    break;
    }
    if(!numb)SendClientMessage(playerid,Gelb,"Diese Nummer gibt es nicht!");
    return 1;
    }
    Sollte so gehen

    All in all it's just another brick in the wall