Ist es richtig, dass ich den Pvar beim Login auf -1 setze ?
Ja daran liegt es, das ist falsch, mach das weg
Heißt, MAX_CODE_LEN muss auf 5 definiert sein um 4 Slots zu haben.
Nein auf 4..für 4 Slots
Ist es richtig, dass ich den Pvar beim Login auf -1 setze ?
Ja daran liegt es, das ist falsch, mach das weg
Heißt, MAX_CODE_LEN muss auf 5 definiert sein um 4 Slots zu haben.
Nein auf 4..für 4 Slots
Zitat von KaliberNein auf 4..für 4 Slots
Ich entschuldige mich für diese Dumme Frage.
Dem Log geht es soweit ganz gut, er zeigt keine Fehler.
Allerdings ist der Code 0
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
for(new i; i < 9; i++)
{
if(playertextid == PlayerText:JamKeyNum[i][playerid])
{
new c = GetPVarInt(playerid,"c_index"),string[64];
pInfo[playerid][pBankcode][c] = i;
SCME(playerid,-1,"Du hast %d angeklickt!",i);
if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1);
else
{
DeletePVar(playerid, "c_index");
SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode]));
}
break;
}
}
return 0;
}
Alles anzeigen
Allerdings ist der Code 0
Wird denn im Chat immer die richtige Zahl ausgegeben?
printe dir evtl mal die Variable...ist merkwürdig o:
Was mir gerade auffällt ist, dass die letzte Zahl also die 9 nicht funktioniert, wenn ich diese anklicke.
Das Array ist 10 groß heißt, dass es theoretisch klappen sollte.
Die Variable pInfo[playerid][pBankcode] ist immer gleich der angeklickten Zahl. Allerdings immer nur gleich der ersten angeklickten Zahl. Drücke ich zuerst die 1 ist es auch die 1 dann z.B die 3 dann ist die Zahl immer noch eine 1.
Nach den 4 Versuchen wird der Code wieder auf 0 gesetzt.
for(new i; i < 9; i++)
{
if(playertextid == PlayerText:JamKeyNum[i][playerid])
{
new c = GetPVarInt(playerid,"c_index"),string[64];
pInfo[playerid][pBankcode][c] = i;
SCME(playerid,-1,"Du hast %d angeklickt!",i);
if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1);
else
{
DeletePVar(playerid, "c_index");
SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode]));
}
break;
}
}
return 0;
Alles anzeigen
Muss in Zeile 1 eine 10 stehen um mein erst genannten Problem zu lösen?
Muss in Zeile 1 eine 10 stehen um mein erst genannten Problem zu lösen?
Das kann gut sein...
Schreib mal unter die Zeile 6:
printf("[%d] + %d = %d",c,i,strval(pInfo[playerid][pBankcode]);
Und dann klick mal alles an und zeig mal, was er da printet
http://prntscr.com/nic3cs
strval(pInfo[playerid][pBankcode]) wird ja benutzt um es anzuzeigen bzw. strval um es zu konvertieren, aber wie frage ich später die Variable ab? Muss ich da auch strval vorschreiben?
Ahhh meiiin Fehler, hier mach es mal so:
for(new i; i < 9; i++)
{
if(playertextid == PlayerText:JamKeyNum[i][playerid])
{
new c = GetPVarInt(playerid,"c_index"),string[64];
if(c == 0) strdel(pInfo[playerid][pBankcode],0,MAX_CODE_LEN);
pInfo[playerid][pBankcode][c] = 0x30 + i;
SCME(playerid,-1,"Du hast %d angeklickt!",i);
if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1);
else
{
DeletePVar(playerid, "c_index");
SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode]));
}
break;
}
}
Alles anzeigen
PS: Richtig um später diesen Wert als Zahl zu verwenden, einfach [wiki]strval[/wiki] nutzen
klappt soweit!
Fehler die ich mir schon gedacht hatte:
Wenn ich mit einer 0 starte und 3 mal die 1 anfüge ist das Ergebnis 111 soll aber 0111 sein.
Benutze ich die 0 als 2. Stelle (o. Aufwärts) funktioniert es gut.
Kann ich den Code auch zurücksetzten? Ich hab einen C button der einfach die eingabe clearn soll.
Kann ich den Code auch zurücksetzten?
Klar mit: strdel(pInfo[playerid][pBankcode],0,MAX_CODE_LEN);
Du kannst auch eine 0 vorne anzeigen lassen mit einer eigenen Funktion:
stock val(const string[])
{
new tmp[MAX_CODE_LEN];
for(new i; i<MAX_CODE_LEN; i++) format("%s%c",string,string[i]);
return tmp;
}
und dann einfach:
[*]SCME(playerid,-1,"Dein Code ist: %s",val(pInfo[playerid][pBankcode]));
strdel(pInfo[playerid][pBankcode],0,MAX_CODE_LEN);
Ich will die aktuelle Eingabe "löschen" um den Code neu einzugeben, mache ich das hiermit, oder lösche ich damit den Endcode?
Du musst den Endcode damit clearen und die Eingabe mit:
DeletePVar(playerid, "c_index");
Löschen.
Ich habe irgendwie ein Problem die 0 vorne anzeigen zu lassen.
Argument 2 Error
Muss ja so richtig sein oder?
stock val(const string[])
{
new tmp[MAX_CODE_LEN];
for(new i; i<MAX_CODE_LEN; i++) format("%s%c",string,string[i]);
return tmp;
}
Wird der so halt nur angezeigt also z.B
Code ist 123
zeigt er mir 0123 an
aber in der Variable steht 123, heißt wenn ich den Code abgleiche und er eine 0 angibt stimmt es wieder nicht überein oder reicht es aus, wenn ich bei der Abfrage wieder val benutze?
//Edit:
Problem besteht weiterhin, hab mal mehr Infos angegeben
Wie sieht denn deine Abfrage aus?
Was für Errors/Warnings kommen?
Habe die Abfrage noch nicht gemacht, weil ich zuerst den 4 stelligen Code brauch, kann Val ja nicht benutzten er sagt mir nur Argument 2 Error in der Zeile wo ich val benutzte.