direkt
Das gefällt mir ich hasse es eigentlich alles in nen neuen Public zu machen
direkt
Das gefällt mir ich hasse es eigentlich alles in nen neuen Public zu machen
Schönes Plugin nur kapiere ich den Untershcied nicht kannst du es nochmal genau sagen?
Echt Jez ich kann kein Dini mehr
Ja der key und salt sind 129 deshalb check ich das nicht?
bei dir steht da sql_get und so
Dini_get ect ist was anderes
Haha es gibt kein Dini_Get
Ja es hängt mal wieder ein Query am hashedpw?
http://www.rgn.nicowiss.de/hash3.JPG
sry weiter kann ich dann auch nicht helfen , ich bin eher ein dini typ
Das hat doch garnichts mit SQL oder Dini zu tun
Ausserdem will ich das nicht dehashen sondern mit dem Salt vergleichen oder wie man das nennt. Wnen ich das de end hashe bringt mir das gesamt System = 0
Also das password muss ja beim logging erstmal DE-HASHT werden , hast du dies gemacht?
Ja ist soga gleich
Wie meinst du das den ?
gibs du richtiges passwort ein und da steht das es falsch ist oder wie?
Ja das steht da und gestern Abend ging es ja noch
Edit:
Das hashpw und das Aus der Datenbank sind beides gleich also liegt es iwie hierran:
sql_get_field(result, 2, PlayerInfo[playerid][Password]);
if(!strcmp(inputtext,PlayerInfo[playerid][Password],true))
hast du auf 0.3x geupdatedt?
Hey Com,
Gestern habe ich mühsam mit Blackace das mit dem Hashen gefixxt
Jetzt habe ich weiter gescriptet aber nichts an den Hashzeug da rumgefummelt, da ich davon keine Ahnung habe.
So Problem, Passwort ist falsch:
case DIALOG_REGISTER:
{
new name[64 + sizeof(Servername)], namex[19 + sizeof(Servername)];
format(namex,sizeof(namex),"Registrierung auf %s",Servername);
format(name,sizeof(name),"Bitte wähle ein Passwort\num der %s Community beizutreten:",Servername);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, namex, name, "Anmelden", "Abbrechen"), US_PlayerInfo[playerid][login_count]++;
{
new salt[129], key[129], hashedpw[H_WHIRLPOOL_LEN], _string[450],buffer[256+128];
randomString(salt, 128);
randomString(key, 128);
format(_string, sizeof(_string), "INSERT INTO `Salts` (`Name`, `Salt`, `Key`) VALUES ('%s','%s','%s');", PlayerInfo[playerid][Name], salt, key);
db_free_result(db_query(saltdb, _string));
sql_escape_string(shandle[datarow], inputtext, _string);
strins(_string, salt, 0);
hhash_hmac(H_WHIRLPOOL, _string, key, hashedpw, H_WHIRLPOOL_LEN);
strins(PlayerInfo[playerid][Password], hashedpw, 0);
format(_string, 128, "INSERT INTO `accounts` (`name`, `password`, `whitelist`)");
format(buffer,sizeof(buffer),"VALUES ('%s', '%s', '%b');",PlayerInfo[playerid][Name], PlayerInfo[playerid][Password], PlayerInfo[playerid][Whitelist]);
strcat(_string,buffer);
sql_query(shandle[datarow], _string, QUERY_THREADED, "OnPlayerRegistred", "ri", playerid);
SpawnPlayer(playerid);
}
}
if(!response || US_PlayerInfo[playerid][login_count] == 3) { return _Kick(playerid,""HTML_WHITE"["HTML_ROT"Kick"HTML_WHITE"]: Registrierungsvorgang abgebrochen!"); }
return 1;
}
case DIALOG_LOGIN:
{
if(response)
{
if(!strlen(inputtext) || strlen(inputtext) > 128) { return 1; }
else
{
new _string[500], hashedpw[H_WHIRLPOOL_LEN], salt[129], key[129], DBResult:result;
print(PlayerInfo[playerid][Name]);
format(_string, sizeof(_string), "SELECT * FROM `Salts` WHERE `Name`='%s'", PlayerInfo[playerid][Name]);
result = db_query(saltdb, _string);
if(!db_num_rows(result)) { _Kick(playerid, ""HTML_WHITE"["HTML_ROT"SERVER"HTML_WHITE"] Es liegt ein Fehler bei deinem Account vor. Wende dich an einen Administrator! (Fehler-Code: No-Salt!)"); return 1; }
db_get_field_assoc(result, "Key", key, 129);
db_get_field_assoc(result, "Salt", salt, 129);
db_free_result(result);
printf("Key: %s",key), printf("Salt: %s",salt);
strdel(_string,0,sizeof(_string));
sql_escape_string(shandle[datarow], inputtext, _string);
strins(_string, salt, 0);
hhash_hmac(H_WHIRLPOOL, _string, key, hashedpw, H_WHIRLPOOL_LEN);
format(_string, sizeof(_string), "SELECT * FROM `accounts` WHERE `name` = '%s'", PlayerInfo[playerid][Name]);
sql_query(shandle[datarow], _string, QUERY_THREADED | QUERY_CACHED, "LoadPlayer", "ris", playerid,hashedpw);
SetSpawnInfo(playerid,0,0,1958.3783, 1343.1572, 15.3746,0,0,0,0,0,0,0);
TogglePlayerSpectating(playerid, 0);
}
}
}
In der Hashdatenbank ist nur eine Zeile nicht mehr!
Der LoadPlayer noch:
public LoadPlayer(Result:result, playerid, inputtext[])
{
sql_get_field(result, 2, PlayerInfo[playerid][Password]);
if(!strcmp(inputtext,PlayerInfo[playerid][Password],true))
{
PlayerInfo[playerid][Admin] = sql_get_field_int(result, 4);
PlayerInfo[playerid][Geld] = sql_get_field_int(result, 5);
PlayerInfo[playerid][Handynummer] = sql_get_field_int(result,6);
SpawnPlayer(playerid);
GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
US_PlayerInfo[playerid][loggedin] = true;
printf("* %s geladen. *", PlayerInfo[playerid][Name]);
}
else _Kick(playerid,"Error: Passwort falsch!");
sql_free_result(result);
return 1;
}
Danke euch
Das Übetragen von S4Y Accounts ist nicht gestattet
#Reported
Ja ich dachte da gibs was von Samp fertiges aber egal mach das dann eben selbst
Hey Com,
Da ich jetzt wenig Lust habe 40 Waffen einzutragen in ein Dialog und jede einzelnd zu editieren (OnDialogResponse),
und das meiner Meinung nach auch besser geht, mit einer for Schleife brauche ich eine Funktion um den Waffennamen mittels der ID rauszubekommen.
Danke euch
Kostet das Game was?
Hmm was bringt das in die Virtualen welten zu setzen?,.. das bringt ja eigentlich garnichts, weil dieser Bot soll ja nicht nur einmal abspielen sondern, immer wieder wenn sich ein User registriert, und es soll sich noch ein bot erstellen wenn sich noch jemand anderes registriert...
Mach eine Warteschleife, bzw in der Zeit wo der Bot noch reserviert ist was anderes
Impressum?
Ist ja gut jetzt
englische
Ist down seid gestern abend
Er möchte ein nameserver (hies doch so) auf seinem root habn
Naja da der Luncher ja nichtmal was richtiges dem Server bringt und zu unsicher ist ziehe ich leider zurück
Sieht für mich nicht so toll aus 2 / 10 wegen der Mühe
Alles verrutscht - teste den Server nicht