arkopi
Wiek: 31 Na forum: 5579 dni Posty: 177
Piwa : 60
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]