Ich nehme an so:
stock CheckRegister(playerid)
{
if(PlayerInfo[playerid][pSex] == 0)
{
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "~--------------------------------------------------------------------------------------~");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "Server: Bitte vervollständige deine Regestration!");
ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_LIST, ""SERVER_COLORHTML"["SERVER_TAG"] - Regestration [2/4]", ""HTML_WEIS"- Bitte wähle dein Geschlecht - \n"HTML_HELLBLAU"Männlich \n"HTML_PINK"Weiblich", "Weiter", "Abbruch");
}
else if(PlayerInfo[playerid][pAge] == 0)
{
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "~--------------------------------------------------------------------------------------~");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "Server: Bitte vervollständige deine Regestration!");
ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, ""SERVER_COLORHTML"["SERVER_TAG"] - Regestration [3/4]", ""HTML_WEIS"Bitte gebe hier dein "HTML_ROT"Geburtsdatum "HTML_WEIS"im Format "HTML_GELB"TT.MM.JJJJ"HTML_WEIS" an:", "Weiter", "Abbruch");
}
else if(PlayerInfo[playerid][pEmail] == 0)
{
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "~--------------------------------------------------------------------------------------~");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_WEIS, "");
SendClientMessage(playerid, COLOR_ROT, "Server: Bitte vervollständige deine Regestration!");
ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, ""SERVER_COLORHTML"["SERVER_NAME"] - Regestration [4/4]", ""HTML_WEIS"Bitte gebe hier eine gültige EMail-Adresse im Format "HTML_GELB"besipiel@"SERVER_DOMAIN""HTML_WEIS" ein:", "Weiter", "Abbruch");
}
return 1;
}
Beiträge von Jeffry
-
-
Du hast es falsch abgeändert, schaue dir meinen Post oben nochmal an.
So ist es richtig:
if(PlayerInfo[playerid][pSex] == 0) -
Welche Zeile ist die 576?
-
Am sinnvollsten ist es, gar keine Schleife zu nutzen, da sich die Zahl ohnehin nur an zwei Stellen ändern kann:
Unter den Includes:
new countOnlinePlayers;OnPlayerConnect:
if(!IsPlayerNPC(playerid)) countOnlinePlayers++;OnPlayerDisconnect:
if(!IsPlayerNPC(playerid)) countOnlinePlayers--;Ausgabe:
printf("Es sind %d Spieler online.", countOnlinePlayers); -
Das darfst/kannst du nur bei Strings so machen.
Bei Zahlen (Integer) musst du es so machen:
if(PlayerInfo[playerid][pSex][0] == '0')
zu:
if(PlayerInfo[playerid][pSex] == 0) -
if(PlayerInfo[playerid][pEMail][0] == '0')
{
SendClientClear(playerid), SendClientMessage(playerid, COLOR_ROT, "Server: Bitte vervollständige deine Regestration!");
ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, ""SERVER_COLORHTML"["SERVER_NAME"] - Regestration [4/4]", ""HTML_WEIS"Bitte gebe hier eine gültige EMail-Adresse im Format "HTML_GELB"support@"SERVER_DOMAIN""HTML_WEIS" ein:", "Weiter", "Abbruch");
return 1;
} -
cache_get_field_content(0, "email", PlayerInfo[playerid][pEmail], handle, 45);
-
Dann entferne das obige wieder.
Versuche die sscanf Include an erste Stelle der ganzen Includes zu setzen, es scheint als tritt ein Konflikt mit einer anderen Include auf.Falls das auch nicht geht, nutze die Version mit dem split anstatt sscanf, oder finde heraus, in welcher Include ebenfalls ein Hook auf OnNPCModeInit angewendet wird und entferne diese. Eventuell kann der Hook auch bearbeitet werden, sodass er mit sscanf kompatibel ist. Poste den eventuell, falls du ihn findest (Suche nach OnNPCModeInit, etwas mit ein paar #define's)
-
new str[145];
format(str, sizeof(str), "Du hast am %s Geburtstag, damit bist Du %d Jahre alt! Sehr schön :)", inputtext, age);
SendClientMessage(playerid, 0xFF0000FF, str); -
if(IsValidEmail(inputtext))
zu:
if(!IsValidEmail(inputtext)) -
Füge mal in deinem Code ein:
forward OnNPCModeInit(); -
PlayerInfo[playerid][pAge] = inputtext;
zu:
format(PlayerInfo[playerid][pAge], 11, inputtext); -
Nein, aber kann ich ja ändern
Das erklärt es. Die Funktion steht nur im Plugin zur Verfügung.
Download: http://forum.sa-mp.com/showthread.php?t=602923
Beachte, dass du dann die sscanf Funktion aus deinem Code entfernen musst.
-
Siehe hier:
GetPlayerAgenew age = GetPlayerAge(inputtext);
if(age == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Ungültiges Geburtsdatum.");new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
stock GetPlayerAge(input[]) //©Jeffry
{
new date[12];
strcat(date, input);
if(date[1] == '.') strins(date, "0", 0, 12);
if(date[4] == '.') strins(date, "0", 3, 12);
if(!date[9] || date[10]) return -1;
new day = 10*(date[0]-48)+(date[1]-48);
new month = 10*(date[3]-48)+(date[4]-48);
new year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48);
if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return -1;
if(month == 2)
{
if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return -1;
}
else if(day > g_days_m[month-1]) return -1;
new d, m, y;
getdate(y, m, d);
new age = y - year;
if(m < month) age--;
else if(m == month && d < day) age--;
return (age < 0) ? (-1) : (age);
} -
if(!IsValidEmail(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Keine gültige E-Mail.");
Alternativ zu der Funktion kannst du auch das RegEx Plugin nutzen, damit kann man noch genauer die Korrektheit einer E-Mail prüfen:
http://forum.sa-mp.com/showthread.php?t=247893 -
Kannst du bitte einen Screenshot aus der Datenbank posten, der alle Fahrzeuge zeigt?
-
So habe ich es versucht, auch die Zahlen printen lassen aber es ist immer nur 0...
Nutzt du das Plugin?
Habe mal was versucht, ich weiß sscanf wäre besser aber hier bekomme ich Werte und nicht ständig 0,
format(query, sizeof(query), "SELECT * FROM tabelle WHERE IP = '%i.%i.%i.'", zahl[0], zahl[1], zahl[2]);
zu:
format(query, sizeof(query), "SELECT * FROM tabelle WHERE IP = '%i.%i.%i.'", strval(zahl[0]), strval(zahl[1]), strval(zahl[2]));
Da die Zahlen hier Strings sind (split-bedingt). Oder %i zu %s. -
Du gibst dem Timer über SetTimerEx eine ID mit und machst dann über die ID einen Switch, über den du die entsprechende Nachricht dann ausgibst. So kannst du immer das gleiche Callback mit einer anderen ID aufrufen, und damit immer unterschiedliche Nachrichten ausgeben.
-
new id = strval(params);
Das würde die 00000000 in params auf eine 0 in id reduzieren (von String auf Integer = strval).
Alternativ kannst du auch sscanf nutzen.
-
Lass dir die IP mal per print ausgeben. Ist dort eventuell auch alles 0?
Falls nicht, versuche es hiermit:
http://forum.sa-mp.com/showthread.php?t=362764Code dazu:
strexplode(zahl, ip, ".");