Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2013-02-12, 15:37


arkopi







Wiek: 31
Na forum: 5579 dni
Posty: 177

Piwa: 60

Respekt: 50

Ostrzeżeń: 20%
Witam znalazlem rejestracje ktora dziala prawid?owo lecz system zapisu plikow jest nieco dziwny poniewaz konta nie zapisuja sie osobno w scriptfiles lecz w folderze rejestracja.db i wszystko jest pomieszane i nie mozna dokonac zmiany hasla oraz nicku.
Chcialbym aby to wygladalo tak:
Scriptfile/konto1.ini konto2.ini itd.
tak jak jest w innych rejestracjach




Kod:


//Include
#include <a_samp>
#include <sscanf2>
#define FILTERSCRIPT
#include <zcmd>
//Definicje
#define MAX_GRACZY 100

#define COL_GREEN "{6EF83C}"
#define COL_RED "{F81414}"
#define COL_BLUE "{00C0FF}"

#define Wersja 1.1v
#define Autor Ninjaa[A]//Zakaz usuwania/zmieniania tej linijki.

#define DIALOG_STYLE_PASSWORD (3)
//new'sy
new DB:Database;
enum pInfo
{
g_Login,
q_kill,
q_smierc,
q_dead,
};
new P_DATA[MAX_GRACZY][pInfo];
new Text:Dajrespekt[MAX_GRACZY];
//Public'ki
public OnFilterScriptInit()
{
print("\nSystem Rejestracji(Wersja "#Wersja")\n"), print("\nAutor "#Autor")\n");
Database = db_open("Rejestracja.db");
db_query(Database, "CREATE TABLE IF NOT EXISTS `GRACZ` (`NICK`, `HASLO`, `IP`, `SCORE`, `CASH`, `KILL`, `DEAD`, `SAMOBOJ`)");

SetTimer("StatusG", 1000, 1);

for(new i=0;i<MAX_GRACZY;i++)
{
Dajrespekt[i] = TextDrawCreate(501.000000,99.000000,"Respekt: 4");
TextDrawAlignment(Dajrespekt[i],0);
TextDrawBackgroundColor(Dajrespekt[i],0x00000033);
TextDrawFont(Dajrespekt[i],1);
TextDrawLetterSize(Dajrespekt[i],0.359999,1.000000);
TextDrawColor(Dajrespekt[i],0x00ffff99);
TextDrawSetOutline(Dajrespekt[i],1);
TextDrawSetProportional(Dajrespekt[i],1);
TextDrawSetShadow(Dajrespekt[i],1);
}
return 1;
}

public OnFilterScriptExit()
{
db_close(Database);
return 1;
}

public OnPlayerConnect(playerid)
{
new Query[550], DBResult:Result, name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
P_DATA[playerid][g_Login] = false;
P_DATA[playerid][q_kill] = false;
P_DATA[playerid][q_smierc] = false;
P_DATA[playerid][q_dead] = false;

format(Query, sizeof(Query), "SELECT `NICK` FROM `GRACZ` WHERE `NICK` = '%s'", DB_Name(name));
Result = db_query(Database, Query);

if(db_num_rows(Result))
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Musisz sie zalogowac\n\nPodaj swoje haslo", name, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Logowanie", Query, "Login", "Wyjdz");
}
else
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Nie jestes jeszcze zarejestrowany"COL_RED"\n\nZarejestruj sie", name, playerid);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "{FFFFFF}Rejestracja", Query, "Rejestruj", "Wyjdz");
}
db_free_result(Result);
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
new Query[200], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(P_DATA[playerid][g_Login] == 1)
{
format(Query,sizeof(Query),"UPDATE `GRACZ` SET SCORE = '%d', CASH = '%d', KILL = '%d', DEAD = '%d',SAMOBOJ = '%d' WHERE `NICK` = '%s'", GetPlayerScore(playerid), GetPlayerMoney(playerid), P_DATA[playerid][q_kill], P_DATA[playerid][q_smierc], P_DATA[playerid][q_dead], DB_Name(name));
db_query(Database, Query);
P_DATA[playerid][g_Login] = false;
}
TextDrawHideForPlayer(playerid, Dajrespekt[playerid]);
return 1;
}

public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, Dajrespekt[playerid]);
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
SetPlayerScore(playerid, GetPlayerScore(playerid) -1);
P_DATA[playerid][q_dead]--;
}
else
{
SetPlayerScore(playerid, GetPlayerScore(playerid) -2);
SetPlayerScore(killerid, GetPlayerScore(killerid) +2);
P_DATA[playerid][q_kill]++;
P_DATA[killerid][q_smierc]++;
}
TextDrawHideForPlayer(playerid, Dajrespekt[playerid]);
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new Query[256], DBResult:Result, name[MAX_PLAYER_NAME], ip[16];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerIp(playerid, ip, sizeof(ip));
if(dialogid == 1)
{
if(response)
{
format(Query, sizeof(Query), "SELECT * FROM `GRACZ` WHERE `NICK` = '%s' AND `HASLO` = '%s'", DB_Name(name), DB_Name(inputtext));
Result = db_query(Database, Query);
if(db_num_rows(Result))
{
new Field[40];
db_get_field_assoc(Result, "SCORE", Field, 30);
SetPlayerScore(playerid, strval(Field));

db_get_field_assoc(Result, "CASH", Field, 30);
GivePlayerMoney(playerid, strval(Field));

db_get_field_assoc(Result, "KILL", Field, 30);
P_DATA[playerid][q_kill] = strval(Field);

db_get_field_assoc(Result, "DEAD", Field, 30);
P_DATA[playerid][q_smierc] = strval(Field);

db_get_field_assoc(Result, "SAMOBOJ", Field, 30);
P_DATA[playerid][q_dead] = strval(Field);

P_DATA[playerid][g_Login] = true;
SendClientMessage(playerid, -1, "Zalogowales "COL_GREEN"sie{FFFFFF} Prawidlowo! ");
}
else
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Musisz sie zalogowac\n\nPodaj swoje haslo", name, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Logowanie", Query, "Login", "Wyjdz");
SendClientMessage(playerid, -1, ""COL_RED"Blad{FFFFFF} Nieprawidlowe Haslo!");
}
db_free_result(Result);
}
else return Kick(playerid);
}
if(dialogid == 0)
{
if(response)
{
if(strlen(inputtext) > 24 || strlen(inputtext) < 3)
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Nie jestes jeszcze zarejestrowany"COL_RED"\n\nZarejestruj sie", name, playerid);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "{FFFFFF}Rejestracja", Query, "Rejestruj", "Wyjdz");
SendClientMessage(playerid, -1, "Haslo musi zawierac od 3 - 24 liter/liczb!");
}
else
{
format(Query, sizeof(Query), "INSERT INTO `GRACZ` (`NICK`, `HASLO`, `IP`, `SCORE`, `CASH`, `KILL`, `DEAD`, `SAMOBOJ`) VALUES('%s','%s','%s', '0', '500', '0', '0', '0')", DB_Name(name), DB_Name(inputtext), DB_Name(ip));
db_query(Database, Query);
P_DATA[playerid][g_Login] = true;
GivePlayerMoney(playerid, 1400);
SetPlayerScore(playerid, 0);
SendClientMessage(playerid, -1, "Zarejestrowa?es "COL_GREEN"Si?{FFFFFF} Pozytywnie!");
}
}
else return Kick(playerid);
}
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
new string[300];

if(P_DATA[clickedplayerid][g_Login])
{
strcat(string,"Zabitych: %d\n", P_DATA[clickedplayerid][q_kill]);
strcat(string,"Smierci: %d\n", P_DATA[clickedplayerid][q_smierc]);
strcat(string,"Samobojstw: %d\n", P_DATA[clickedplayerid][q_dead]);
strcat(string,"Kasa: %d\n", GetPlayerMoney(clickedplayerid));
ShowPlayerDialog(playerid,24,0,"Staty",string,"OK","");
}
else
{
SendClientMessage(playerid,3,"Ten gracz nie jest zalogowany!");
}
return 1;
}

public OnPlayerText(playerid, text[])
{
new Query[150], name[MAX_PLAYER_NAME], string[600];
GetPlayerName(playerid, name, sizeof(name));
if(!P_DATA[playerid][g_Login])
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Musisz sie zalogowac\n\nPodaj swoje haslo", name, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Logowanie", Query, "Login", "Wyjdz");
SendClientMessage(playerid, -1, ""COL_RED"Nie mo?esz pisa? na chacie je?eli nie jeste? zalogowany");
return 0;
}
if(IsPlayerAdmin(playerid))
{
format(string, sizeof(string), "(Admin:'%d'): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
if(!IsPlayerAdmin(playerid))
{
format(string, sizeof(string), "(ID:'%d'): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
return 1;
}

public OnPlayerCommandReceived(playerid, cmdtext[])
{
new Query[150], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!P_DATA[playerid][g_Login])
{
format(Query, sizeof(Query), "{FFFFFF}Witaj "COL_BLUE"%s (%d){FFFFFF} Musisz sie zalogowac\n\nPodaj swoje haslo", name, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Logowanie", Query, "Login", "Wyjdz");
SendClientMessage(playerid, -1, ""COL_RED"Nie mo?esz uzywac komend je?eli nie jeste? zalogowany");
return 0;
}
return 1;
}
//w?asne public'ki
forward StatusG();
public StatusG()
{
new string[340];

for(new i=0;i<MAX_GRACZY;i++)
{
format(string, sizeof(string), "Respekt: ~w~~h~%d", GetPlayerScore(i));
TextDrawSetString(Dajrespekt[i], string);
}

return 1;
}
forward PlayerKick();
public PlayerKick()
{
for(new x=0;x<MAX_GRACZY;x++){
Kick(x);
}
return 1;
}
//Stock'i
stock DB_Name(text[])
{
new set[80 * 2], ch, i, j;
while ((ch = text[i++]) && j < sizeof (set))
{
if (ch == '\'')
{
if (j < sizeof (set) - 2)
{
set[j++] = '\'';
set[j++] = '\'';
}
}
else if (j < sizeof (set))
{
set[j++] = ch;
}
else
{
j++;
}
}
set[sizeof (set) - 1] = '\0';
return set;
}
stock ZakazanaNazwa(name[])
{
new set = strlen(name);

if(set > 24 || set < 3)
return 0;

for(new j; j != set; j++)
switch(name[j])
{
case 'a'..'z', 'A'..'Z', '0'..'9', '[', ']':
continue;
default:
return 0;
}
return 1;

}
[/code]

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-02-12, 16:29


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

Lepiej znale?? inny skrypt na rejestracj?, ni? ten przerabia?.
Polecam program: http://sourceforge.net/projects/sqlitebrowser/
Mo?na nim bezproblemowo przegl?da? baz? danych SQLite.
Osobi?cie korzystam tylko z SQLite i szczerze mog? ten spos?b zapisu poleci? - przy 1000 zarejestrowanych graczy masz tylko 1000 wpis?w, a nie 1000 plik?w.

Pozdrawiam

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-02-12, 16:40


arkopi







Wiek: 31
Na forum: 5579 dni
Posty: 177

Piwa: 60

Respekt: 50

Ostrzeżeń: 20%
Cytat:

Lepiej znale?? inny skrypt na rejestracj?, ni? ten przerabia?.


jet taki problem ze nie ma rejestracji w gui zeby dzialaly poprawnie



a w tym squlite nie bardzo wiem o co w tym chodzi bo jestem zielony

Postaw piwo autorowi tego posta
 

 
Tagi: rejestracja
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » [INNE] Rejestracja Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku