#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <crashdetect>
#include <streamer>
new SQL = -1, gQuery[256], gString[256];
#define function%0(%1) forward %0(%1); public %0(%1)
#define SCM SendClientMessage
enum pInfo {
pSQLID,
pName[MAX_PLAYER_NAME],
pPassword[32],
pEmail[32],
pAdmin,
pGender
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new
incercariParola[MAX_PLAYERS];
enum {
//Register
DIALOG_REGISTER,
DIALOG_EMAIL,
DIALOG_GENDER,
//Login
DIALOG_LOGIN
}
main() { }
public OnGameModeInit() {
SQL = mysql_connect("localhost", "root", "zeero", "");
SetGameModeText("0.1");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit() {
return 1;
}
public OnPlayerRequestClass(playerid, classid) {
TogglePlayerSpectating(playerid, true);
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid) {
incercariParola[playerid] = 0;
gQuery[0] = EOS;
mysql_format(SQL, gQuery, sizeof(gQuery), "SELECT * FROM `users` WHERE `Name`='%s' LIMIT 1", GetName(playerid));
mysql_tquery(SQL, gQuery, "checkAccount", "i", playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
switch(dialogid) {
case DIALOG_REGISTER: {
if(!response)
return Kick(playerid);
if(strlen(inputtext) < 6 || strlen(inputtext) > 32)
return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Scrie o parola pentru a te putea inregistra:", "Select", "Cancel");
gQuery[0] = EOS;
mysql_format(SQL, gQuery, sizeof(gQuery), "INSERT INTO `users` (`Name`, `Password`) VALUES ('%s', '%s')", GetName(playerid), inputtext);
mysql_tquery(SQL, gQuery, "insertAccount", "i", playerid);
gString[0] = EOS;
format(gString, sizeof(gString), "Parola ta contine %d caractere.", strlen(inputtext));
SCM(playerid, -1, gString);
format(PlayerInfo[playerid][pPassword], 32, inputtext);
ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Seteaza-ti adresa de email:", "Select", "Cancel");
}
case DIALOG_EMAIL: {
if(!response)
return Kick(playerid);
if(strlen(inputtext) < 6 || strlen(inputtext) > 32)
return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Seteaza-ti adresa de email:", "Select", "Cancel");
gQuery[0] = EOS;
mysql_format(SQL, gQuery, sizeof(gQuery), "UPDATE `users` SET `Email`='%s' WHERE `ID`='%d'", inputtext, PlayerInfo[playerid][pSQLID]);
mysql_tquery(SQL, gQuery, "", "");
gString[0] = EOS;
format(gString, sizeof(gString), "Email setat %s",inputtext);
SCM(playerid, -1, gString);
format(PlayerInfo[playerid][pEmail], 32, inputtext);
ShowPlayerDialog(playerid, DIALOG_GENDER, DIALOG_STYLE_MSGBOX, "Gender", "Seteaza-ti sexul:", "Masculin", "Feminin");
}
case DIALOG_GENDER: {
switch(response) {
case 0: {
PlayerInfo[playerid][pGender] = 1;
SCM(playerid, -1, "Sex setat: Feminin");
}
case 1: {
PlayerInfo[playerid][pGender] = 0;
SCM(playerid, -1, "Sex setat: Masculin");
}
}
gQuery[0] = EOS;
mysql_format(SQL, gQuery, sizeof(gQuery), "UPDATE `users` SET `Gender`='%s' WHERE `ID`='%d'", PlayerInfo[playerid][pGender], PlayerInfo[playerid][pSQLID]);
mysql_tquery(SQL, gQuery, "", "");
SpawnPlayer(playerid);
}
case DIALOG_LOGIN: {
if(!response)
return Kick(playerid);
mysql_format(SQL, gQuery, sizeof(gQuery), "SELECT * FROM `users` WHERE `Name`='%s' AND `Password`='%s' LIMIT 1", GetName(playerid), inputtext);
mysql_tquery(SQL, gQuery, "onLogin", "i", playerid);
SpawnPlayer(playerid);
}
}
return 1;
}
public OnPlayerDisconnect(playerid) {
return 1;
}
function onLogin(playerid) {
switch(cache_num_rows()) {
case 0: {
incercariParola[playerid] ++;
gString[0] = EOS;
format(gString, sizeof(gString), "Parola incorecta. (%d/3 incercari ramase)", incercariParola[playerid]);
SCM(playerid, -1, gString);
if(incercariParola[playerid] == 4) Kick(playerid);
else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Scrie parola pentru a te putea loga:", "Select", "Cancel");
}
case 1: {
new
result[64];
PlayerInfo[playerid][pSQLID] = cache_get_field_content_int(0, "ID");
PlayerInfo[playerid][pGender] = cache_get_field_content_int(0, "ID");
cache_get_field_content(0, "Name", result); format(PlayerInfo[playerid][pName], MAX_PLAYER_NAME, result);
cache_get_field_content(0, "Password", result); format(PlayerInfo[playerid][pPassword], MAX_PLAYER_NAME, result);
cache_get_field_content(0, "Gender", result); format(PlayerInfo[playerid][pGender], MAX_PLAYER_NAME, result);
printf("%s (user: %d) s-a logat. [Gender: %d, Name: %s, Password: %s, Email: %s]", GetName(playerid), PlayerInfo[playerid][pSQLID], PlayerInfo[playerid][pGender], PlayerInfo[playerid][pName], PlayerInfo[playerid][pPassword], PlayerInfo[playerid][pEmail]);
}
}
return 1;
}
function insertAccount(playerid) {
PlayerInfo[playerid][pSQLID] = cache_insert_id();
printf("%s s-a inregistrat cu SQLID-ul #%d", GetName(playerid), PlayerInfo[playerid][pSQLID]);
return 1;
}
function checkAccount(playerid) {
switch(cache_num_rows()) {
case 0: ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Scrie o parola pentru a te putea inregistra:", "Select", "Cancel");
case 1: ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Scrie parola pentru a te putea loga:", "Select", "Cancel");
}
}
stock GetName(playerid) {
new playerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
return playerName;
}
Aceasta este linia de cod, va rog ajutati-ma cu acele 2 erori
C:\Users\Robert\Desktop\ZEERO\pawno\include\sscanf2.inc(258) : warning 202: number of arguments does not match definition
C:\Users\Robert\Desktop\ZEERO\pawno\include\sscanf2.inc(271) : error 025: function heading differs from prototype
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.