Skripta koju koristim:moja
Detaljan opis problema:Dakle ako je pass u hassu [pawn]260965141[/pawn]
Kako da napravim cmd npr.hass i onda sifra u hasu i da on odhassa u posalje mi messange? Neznam ovo u cmd napraviti
Dio skripte:[pawn]stock udb_hash(buf[]) //HASH PASS
{
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
[/pawn]
Neke slike/video za lakse dobivanje pomoci(neobavezno)://
Hash je napravljen da se ne moze decrypt, procitaj na netu, a ako hoces da ti upisuje kao string onda ga radi kao string, npr.
new string[128];
format(string, 128, "Igrac %d novac %d", GetPlayerMoney(playerid));
print(string);
A hash ti se bazira na int-u
new string;
string = udb_hash("Bla bla");
print(string);
Pa ako hoces string pw ides lijepo definisati varijablu u kojoj spremas igracev PW
enum Player{
playerPW[20] //20 je duzina maksimalna koju mozes upisati u string...
}
new PI[MAX_PLAYERS][Player];
//komanda
CMD:changepw(playerid,params[])
{
new newpw[20];
if(sscanf(params,"s[20]",newpw)) return SendClientMessage(playerid,-1,"/changepw [pw]");
if(strlen(newpw) > 20 || strlen(newpw) < 5) return SendClientMessage(playerid,-1,"* {ff0000}Duzina od 5 do 20 karaktera");
format(PI[playerid][playerPW], 20, "%s", newpw);
new string[128];
format(string,128,"Novi pw je %s", newpw);
SendClientMessage(playerid,-1,string);
//sacuvas npr MySQL
new sacuvaj[200],igracevoime[MAX_PLAYER_NAME];
GetPlayerName(playerid,igracevoime,sizeof igracevoime);
mysql_format(Handle, sacuvaj, sizeof sacuvaj, "UPDATE `players` SET `pw` = '%s' WHERE `name` = '%s'", newpw, igracevoime);
mysql_query(Handle, sacuvaj);
return 1;
}
//provjera u login
if(!strcmp(PI[playerid][playerPW], inputtext)) {
//uspijesan login
}
else {
//neuspijesan
}
strlen nije potreban, dovoljno je ovako:
if(newpw > 20 || newpw < 5) return SendClientMessage(playerid,-1,"* {ff0000}Duzina od 5 do 20 karaktera");
I kod format koristi sizeof a ne da rucno upises vrijednost, jer kad mjenjas vrijednos stringa onda moras i rucno promjeniti vrijednost u drugom parametru, iz ovoga primjera:
kako si ti napisao:
new string[128];
format(string, 128,"Novi pw je %s", newpw);
Kako je lakse za koristiti:
new string[128];
format(string, sizeof(string),"Novi pw je %s", newpw);
PS. u ovom slucaju je previse da stavis 128 polja za string, smanji ih.
LP. :)
Ne ja imam sistem koji radi imam sve ali hocu da pomocu neceg mogu videti pass igracev
Citat: GamingNiksy poslato Mart 21, 2016, 12:32:44 POSLE PODNE
Ne ja imam sistem koji radi imam sve ali hocu da pomocu neceg mogu videti pass igracev
Ne mozes "de-hashovati" igracev pw, jedino sto mozes je da ne koristis hash.
A kako onda to funkcionise?
Dakle nemos to desifrirat samo tekst mozes sifrirat i usporedit je li isti?
Kako znam, kad hash password, poslije toga ga viÅ¡e ne možeÅ¡ proÄitati...
Citat: GamingNiksy poslato Mart 21, 2016, 13:23:05 POSLE PODNE
Dakle nemos to desifrirat samo tekst mozes sifrirat i usporedit je li isti?
Tako je.
Citat: Lenon poslato Mart 21, 2016, 12:28:41 POSLE PODNE
strlen nije potreban, dovoljno je ovako:
if(newpw > 20 || newpw < 5) return SendClientMessage(playerid,-1,"* {ff0000}Duzina od 5 do 20 karaktera");
I kod format koristi sizeof a ne da rucno upises vrijednost, jer kad mjenjas vrijednos stringa onda moras i rucno promjeniti vrijednost u drugom parametru, iz ovoga primjera:
kako si ti napisao:
new string[128];
format(string, 128,"Novi pw je %s", newpw);
Kako je lakse za koristiti:
new string[128];
format(string, sizeof(string),"Novi pw je %s", newpw);
PS. u ovom slucaju je previse da stavis 128 polja za string, smanji ih.
LP. :)
Ako bude znao ovo uraditi znace i smanjiti string, a strlen uopste ne smeta i stvar je navike. Sifeof nisam pisao zato sto sam ovo na brzinu objasnio ... xD
Hvala svima reseno! LOCK
(http://www.libertycommon.org/StudentLife/Website/img/lock-in/lock.png)