Alles anzeigenDamit ich es richtig verstanden habe xD
Pawn-Quelltext
1
minrand(1000-2000)
so das wars ne?
Probieren geht über studieren...
Alles anzeigenDamit ich es richtig verstanden habe xD
Pawn-Quelltext
1
minrand(1000-2000)
so das wars ne?
Probieren geht über studieren...
Versuchs ma damit:
SetNameTagDrawDistance(50.0);
Habs jetzt irgentwie hinbekommen, nun möchte ich aber nen Passworthash einbauen, und zwar den adler32. Dazu hab ich das gefunden. Da wird aber nur gezeigt wie das ins Login kommt, es wird dort aber kein Hash beim Registerabschnitt gemacht.
Hier mein System mit Hash (nun wird das PW aber wieder gar nicht abgespeichert):
//oben
new tmppass[64];
dcmd_register(playerid, params[])
{
new data[46], s[256];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
if (!strlen(params)) return SendClientMessage(playerid,WHITE,"Verwendung: /register [Passwort]");
if(dini_Exists(data)) return SendClientMessage(playerid,WHITE,"Dieser Account ist bereits registriert.");
strmid(tmppass, s, 0, strlen(params), 255);
adler32_hash(tmppass);
OnPlayerRegister(playerid,tmppass);
return true;
}
dcmd_login(playerid, params[])
{
new data[46], s[256];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
if (logged[playerid] == true) return SendClientMessage(playerid,WHITE,"Du bist bereits eingeloggt.");
if (!strlen(params)) return SendClientMessage(playerid,WHITE,"Verwendung: /login [Passwort]");
if(!dini_Exists(data)) return SendClientMessage(playerid,WHITE,"Dieser Account ist noch nicht registriert.");
strmid(tmppass, s, 0, strlen(params), 255);
adler32_hash(tmppass);
OnPlayerLogin(playerid,tmppass);
return true;
}
//--------------------------------------------------------------------------------------------------------
OnPlayerRegister(playerid, pw[])
{
new data[64], s[64];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
dini_Create(data);
strmid(stats[playerid][password], pw, 0, strlen(pw), 255);
dini_Set(data,"password",pw);
dini_Set(data,"admin","0");
dini_Set(data,"cash","0");
format(s,sizeof(s),"Willkommen %s, du bist nun eingeloggt.",name[playerid]);
SendClientMessage(playerid, WHITE, s);
logged[playerid] = true;
SpawnPlayer(playerid);
return true;
}
OnPlayerLogin(playerid, pw[])
{
new data[64];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
if(adler32_hash(pw) == dini_Int(data, "password"))
{
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
stats[playerid][admin] = dini_Int(data,"admin");
stats[playerid][cash] = dini_Int(data,"cash");
SetPlayerMoney(playerid,stats[playerid][cash]);
format(data,sizeof(data),"Willkommen %s!",name[playerid]);
logged[playerid] = true;
SpawnPlayer(playerid);
SendClientMessage(playerid, WHITE, "Du hast dich erfolgreich eingeloggt.");
SpawnPlayer(playerid);
return true;
}
SendClientMessage(playerid,WHITE,"Das Passwort stimmt nicht mit dem Account überein.");
return true;
}
Btw, ja die Variablen sind aus dem GF ich hab es versucht so zu übernehmen mit dem anderen Hash..
Lol Sebihunter war wieder lustig drauf siehe den Editierverweis und die neue Überschrift in 3 seiner Themen
Das ist nicht dein Ernst oder? xD
Du hast mehr als 700 Posts, einen eigenen RL Gamemode rausgebracht (glaub Mini-RL) und fragst wie man ein Command mit Parameter erstellt?
Naja egal. Was benutzt du denn? Strtok oder DCMD?
und warum sollte dir das einer machen ? der sich dann fragt ob es nicht an ende heißt du hast es alleine gemacht ?
Das trifft den Nagel auf den Kopf xD
Ohja ich kann schon viel besser durchatmen
Aber ich bin leider neu in dcmd, bei strtock hätte ich das mit
tmp = strtok(cmdtext, idx);
gelöst aber bei dcmd ... Muss ich das so machen?:
pw = strval(params);
Btw. danke NachoMan dafür ist ein Forum da, nicht um den Fragenden die Ergebnisse auf dem Silberteller "hinzuwerfen", sondern ihm das denken selbst zu überlassen.
// Push, ich brauch es immer noch...
Von dem Parameter, das der Spieler bei /register eingibt.
Ja, der Spieler der /register bzw. /login eingibt.
Halt mich für dumm und verweis mich allen Tutorials der Welt, aber das verstehe ich nicht.
Was ich mir vorstellen könnte wäre
dini_Set(data,"passwort",pw);
Die Variable heißt pw und bezieht sich auf die Eingabe des Passworts.
Muss das also so heißen?:
pw = stats[playerid][password];
Mir ist schon klar wie man einer Variablen einen Wert zuweist, nur in diesem Beispiel fehlt mir das Verständnis zu wissen, welcher Wert dieser Variable zugeordnet werden muss.
Das würde wie aussehen? xD
Hallo, ich habe versucht ein Register/Loginsystem in Dini zu erstellen, allerdings wird entweder das PW nicht gespeichert oder es gibt Fehler im Script. Hier gibt es Fehler:
//oben
new pw[128];
new logged[MAX_PLAYERS];
dcmd_register(playerid, params[])
{
new data[64];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
if (!strlen(params)) return SendClientMessage(playerid,WHITE,"Verwendung: /register [Passwort]");
if(dini_Exists(data)) return SendClientMessage(playerid,WHITE,"Dieser Account ist bereits registriert.");
dini_Create(data);
dini_Set(data,"passwort",pw);
return true;
}
dcmd_login(playerid, params[])
{
new data[64], gets[64];
format(data,sizeof(data),"/user/%s.ini",name[playerid]);
if (logged[playerid] == 1) return SendClientMessage(playerid,WHITE,"Du bist bereits eingeloggt.");
if (!strlen(params)) return SendClientMessage(playerid,WHITE,"Verwendung: /login [Passwort]");
if(!dini_Exists(data)) return SendClientMessage(playerid,WHITE,"Dieser Account ist noch nicht registriert.");
gets = dini_Get(data,"password");
if(strcmp(gets, "password", false) != pw)
{
SpawnPlayer(playerid);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du hast dich erfolgreich eingeloggt");
}
SendClientMessage(playerid,WHITE,"Das Passwort stimmt nicht mit dem Account überein.");
return true;
}
Mein Ziel ist es jetzt, das dass Passwort richtig gespeichert wird. Ich sitze das jetzt schon seit Stunden dran, habe aber keine Ahnung wie ich das hinkriegen könnte.
mfg
surrender
Gf funktioniert einwandfrei
Werde mal nen gefixxed releasen.
Alter lass das, es ist gut wenn GF verschwindet -,-
Das hat die Welt gebraucht...
Ich bitte alle, die wissen wie man GF wieder zum laufen bringt, es nicht zu verrraten.
/sign
Hör auf zu husten sonst verschluckst du dich noch-,-
Bei Vista ist normalerweise immer eine solche Funktion integriert. Schau mal unter Start -> Alle Programme. Vielleicht findest du da was.
for(new v=0; v<MAX_VEHICLES,v++)
{
if(GetVehicleModel(v) == 591)
{
DestroyVehicle(v);
}
}
Müsste so gehen.