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?
SMS Befehl fehlerhaft
- Uppermost
- Geschlossen
- Erledigt
-
-
Durch return beendest du die For-Schleife dementsprechend läuft diese nicht durch alle durch
-
//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.
-
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++) -
-
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ührtIch 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 -
breadfish.de
Hat das Thema geschlossen.