strmid(PIN[playerid], inputtext, 0, strlen(inputtext));
Falls das nicht hilft, wie hast du PIN deklariert (new...)?
strmid(PIN[playerid], inputtext, 0, strlen(inputtext));
Falls das nicht hilft, wie hast du PIN deklariert (new...)?
Bereits wie oben probiert gehabt, brachte auch nichts.
new PIN[MAX_PLAYERS][32]; //PIN Zwischenspeicherung
Hast du es mal mit format probiert?
format(PIN[playerid], sizeof(PIN[]), inputtext);
Falls das auch nicht geht, wird der Code überhaupt aufgerufen? Wenn ja, woran siehst du, dass der PIN nicht oder falsch gespeichert wird? Werden nur Zahlen gespeichert, dann kannst du es auch als Integer speichern.
Lediglich Zahlen.
Müsste doch auch so gehen?
PIN[playerid] = inputtext;
PIN[playerid] = strval(inputtext);
Dann aber auch nur
new PIN[MAX_PLAYERS];
Wenn es nur Zahlen sind (max. 9 Stellen), dann auf jeden Fall so.
Ging vorhin noch, jetzt komischerweise wird mir der PIN immer als Falscher Pin wiedergeben. Datenbank ist 1337, meine Eingabe ist 1337. Bereits geprintet. Woran liegt das bitte?
if(playertextid == BankGUI1[playerid][1]) //Authentifizieren
{
if(PlayerInfo[playerid][pBankkontoState] == 1)return ShowPlayerDialog(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, ""HTML_SERVER""#SERVER_NAME": "HTML_WHITE"Konto gesperrt", ""HTML_WHITE"Dein Konto wurde von der Zentralen Bank gesperrt.\n\n"HTML_SERVER"Info:"HTML_WHITE" Fahre zur Bank und lasse dein Konto wieder freischalten.", "Bestätigen", "");
if(PINReady[playerid] == 0)return ShowPlayerDialog(playerid, DIALOG_NOPIN, DIALOG_STYLE_MSGBOX, ""HTML_SERVER""#SERVER_NAME": "HTML_WHITE"PIN eingeben", ""HTML_WHITE"Du hast kein PIN eingegeben und kannst dich somit nicht einloggen.\n\n"HTML_SERVER"Info:"HTML_WHITE" Drücke erst auf das PIN Feld und gebe ein PIN ein.", "Bestätigen", "");
if(!strcmp(PIN[playerid], PlayerInfo[playerid][pPIN], true))
{
for(new j; j < 7; j++)
{
PlayerTextDrawHide(playerid, BankGUI1[playerid][j]);
}
for(new j; j < 10; j++)
{
PlayerTextDrawShow(playerid, BankGUI2[playerid][j]);
}
new string[128], day, month, year;
format(string, sizeof(string),"%d", PlayerInfo[playerid][pKontonummer]);
PlayerTextDrawSetString(playerid, BankGUI2[playerid][1], string);
getdate(year, month, day);
format(string, sizeof(string),"%02d.%02d.%d", day, month, year);
PlayerTextDrawSetString(playerid, BankGUI2[playerid][2], string);
format(string, sizeof(string),"%s", PlayerInfo[playerid][pName]);
PlayerTextDrawSetString(playerid, BankGUI2[playerid][3], string);
PlayerTextDrawSetString(playerid, BankGUI2[playerid][4], "Girokonto");
new Bankmoney = PlayerInfo[playerid][pBankguthaben];
if(Bankmoney < 0)
{
format(string, sizeof(string),"~r~+$%d", Bankmoney);
}
else if(Bankmoney > 0)
{
format(string, sizeof(string),"~g~-$%d", Bankmoney);
}
else if(Bankmoney == 0)
{
format(string, sizeof(string),"~b~$%d", Bankmoney);
}
PlayerTextDrawSetString(playerid, BankGUI2[playerid][5], string);
PINWrongCount[playerid] = 0;
PINReady[playerid] = 0;
}
else
{
PINWrongCount[playerid] ++;
PlayerTextDrawShow(playerid, BankGUI1[playerid][4]);
switch(PINWrongCount[playerid])
{
case 1: PlayerTextDrawSetString(playerid, BankGUI1[playerid][5], "Falscher PIN (Versuch 1 / 3)");
case 2: PlayerTextDrawSetString(playerid, BankGUI1[playerid][5], "Falscher PIN (Versuch 2 / 3)");
case 3:
{
PlayerInfo[playerid][pBankkontoState] = 1;
PlayerTextDrawSetString(playerid, BankGUI1[playerid][5], "Konto gesperrt (3 / 3 Versuchen)");
}
}
PINReady[playerid] = 0;
PlayerTextDrawHide(playerid, BankGUI1[playerid][6]);
PlayerTextDrawShow(playerid, BankGUI1[playerid][5]);
}
return 1;
}
if(!strcmp(PIN[playerid], PlayerInfo[playerid][pPIN], true))
Zu
if(PIN[playerid] == PlayerInfo[playerid][pPIN])
strcmp ist nicht mehr notwendig, da es kein String mehr ist.
Will abfragen ob die Nummer 5 Zeichen lang ist, geht aber nicht so, wie gewollt.
if(strval(Kontonummer[playerid]) <= 11111 && strval(Kontonummer[playerid]) >= 99999)
So fragst du ja auch ab, ob die Nummer kleiner 11111 und größer 99999 ist...das ist ja ein Widerspruch, das geht ja nicht xD
Meine Frage ist nun, wie hast du Kontonummer deklariert?
Kontonummer[MAX_PLAYERS]
Jetzt gehen alle, außer Kontonummern, die 5 Zeichen lang sind ![]()
Kontonummer wird so zwischengespeichert
case DIALOG_KONTONUMMER:
{
if(response)
{
Kontonummer[playerid] = strval(inputtext);
TransferKontonummerReady[playerid] = 1;
new string[128];
format(string, sizeof(string),"~l~%d", strval(inputtext));
PlayerTextDrawSetString(playerid, BankGUI5[playerid][2], string);
}
}
Jetzt gehen alle, außer Kontonummern, die 5 Zeichen lang sind
Wie sieht denn dein Code mit der Abfrage aus usw.
Und welche Pin-Nummer gibst du ein?
Da Jeffry dir zu Intgern geraten hat, kannst du keine Kontonummern benutzten, die mit 0 beginnen, also wirklich nur reine Zahlenwerte die größer als 10000 sind.
Willkürliche PIN Nummern gebe ich immer ein, um zu testen, ob diese wirklich nur 5 Zeichen lang sein dürfen.
Abfrage wäre halt ab hier.
if(Kontonummer[playerid] >= 10000 && Kontonummer[playerid] <= 99999)
...ja, aber wie sieht der Code darunter aus.
Denn ich vermute, du hast eine umgekehrte Logik in deinem Code, sonst würden ja nur die Nummern zwischen 10.000 und 99.999 funktionieren...weil die Abfrage ist ja eindeutig ![]()
Der ganze Code schaut so aus:
if(Kontonummer[playerid] >= 10000 && Kontonummer[playerid] <= 99999)
{
new string[128];
HideMessageBank(playerid);
HideMessageBank2(playerid);
HideMessageBank3(playerid);
HideMessageBank4(playerid);
HideMessageBank5(playerid);
PlayerTextDrawShow(playerid, BankMessage[playerid][4]);
format(string, sizeof(string),"Die Kontonummer muss 5 Zeichen lang sein", TransferAmount[playerid]);
convert_encoding(string);
PlayerTextDrawSetString(playerid, BankMessage[playerid][3], string);
format(string,sizeof(string),"Kontonummer: %d", Kontonummer[playerid]);
SendClientMessage(playerid, -1, string);
PlayerTextDrawShow(playerid, BankMessage[playerid][3]);
SetTimerEx("HideMessageBank3", 2500, false, "i", playerid);
PlayerTextDrawHide(playerid, BankGUI5[playerid][2]);
PlayerTextDrawHide(playerid, BankGUI5[playerid][3]);
PlayerTextDrawHide(playerid, BankGUI5[playerid][3]);
PlayerTextDrawShow(playerid, BankGUI5[playerid][2]);
PlayerTextDrawShow(playerid, BankGUI5[playerid][3]);
PlayerTextDrawShow(playerid, BankGUI5[playerid][3]);
return 1;
}
Ja und da ist dein Fehler...wenn die Länge stimmt, rufst du den Abschnitt auf, wo gesagt wird, dass es nicht stimmt...
Also musst du die Logik umkehren:
if(!(Kontonummer[playerid] >= 10000 && Kontonummer[playerid] <= 99999))
Hallo Leute
Bei mir läuft die Server Uhr um 5min vor. Ist auch nach einem Restart so an was kann das liegen???
Freue mich auf eure Hilfe:
MFG
an was kann das liegen
Dein SA:MP-Server bezieht seine Uhrzeit von deinem Server (der dahinter steht).
Scheint so, als ob die Uhrzeit da falsch gehen würde, also einfach mal die synchronisieren ![]()
Der Server läuft per Samp4You hab nicht genau verstanden was du meinst ![]()