modumda para ve skor kaydetmeme sorunu var kontrol ettim fakat sorunu anlıyamadım yardım etmek isteyen kişi olursa yoruma discord adını atsın ekliyim halledelim
hacı allah rızası için istenmeden kodları atın. kodları at bakalım(register & login callbacklerini)
Alıntı yapılan: Fyunkan - 14 Mayıs 2020, 12:30:44hacı allah rızası için istenmeden kodları atın. kodları at bakalım(register & login callbacklerini)
Hepsi bu
#include <a_samp>
#include <a_mysql>
#include <foreach>
#include <easydialog>
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_DB "sa-mp"
new MySQL: mysqlConnect, corruptCheck[MAX_PLAYERS];
enum playerData
{
ID,
Name[25],
Password[65],
Salt[11],
passwordFails,
Kills,
Deaths,
Score,
Cash,
Cache: playerCache,
bool: loggedIn
}
new playerInfo[MAX_PLAYERS][playerData];
public OnGameModeInit()
{
SetGameModeText("Gungrounds v0.1 (r)");
new MySQLOpt: optionID = mysql_init_options();
mysql_set_option(optionID, AUTO_RECONNECT, true);
mysqlConnect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, optionID);
if(mysqlConnect == MYSQL_INVALID_HANDLE || mysql_errno(mysqlConnect) != 0)
{
print("MySQL baglantisi basariyla kuruldu.");
SendRconCommand("exit");
return 1;
}
print("MySQL baglantisi basarisiz oldu.");
mysql_tquery(mysqlConnect, "CREATE TABLE IF NOT EXISTS `PLAYERS` (`ID` int(11) NOT NULL AUTO_INCREMENT,`USERNAME` varchar(24) NOT NULL,`PASSWORD` char(65) NOT NULL,`SALT` char(11) NOT NULL,`SCORE` mediumint(7), `KILLS` mediumint(7), `CASH` mediumint(7) NOT NULL DEFAULT '0',`DEATHS` mediumint(7) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), UNIQUE KEY `USERNAME` (`USERNAME`))");
return 1;
}
public OnGameModeExit()
{
foreach(new i: Player)
{
if(IsPlayerConnected(i))
{
OnPlayerDisconnect(i, 1);
}
}
mysql_close(mysqlConnect);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
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)
{
new dbQuery[115];
playerInfo[playerid][Kills] = 0;
playerInfo[playerid][Deaths] = 0;
playerInfo[playerid][passwordFails] = 0;
GetPlayerName(playerid, playerInfo[playerid][Name], MAX_PLAYER_NAME);
corruptCheck[playerid]++;
mysql_format(mysqlConnect, dbQuery, sizeof(dbQuery), "SELECT * FROM `PLAYERS` WHERE `USERNAME` = '%e' LIMIT 1", playerInfo[playerid][Name]);
mysql_tquery(mysqlConnect, dbQuery, "OnPlayerDataCheck", "ii", playerid, corruptCheck[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
corruptCheck[playerid]++;
new dbQuery[256];
mysql_format(mysqlConnect, dbQuery, sizeof(dbQuery), "UPDATE `PLAYERS` SET `SCORE` = %d, `CASH` = %d, `KILLS` = %d, `DEATHS` = %d WHERE `ID` = %d LIMIT 1",
playerInfo[playerid][Score], playerInfo[playerid][Cash], playerInfo[playerid][Kills], playerInfo[playerid][Deaths], playerInfo[playerid][ID]);
mysql_tquery(mysqlConnect, dbQuery);
if(cache_is_valid(playerInfo[playerid][playerCache]))
{
cache_delete(playerInfo[playerid][playerCache]);
playerInfo[playerid][playerCache] = MYSQL_INVALID_CACHE;
}
playerInfo[playerid][loggedIn] = false;
print("OnPlayerDisconnect has been called.");
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
playerInfo[killerid][Kills]++;
playerInfo[playerid][Deaths]++;
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
if(playerInfo[playerid][loggedIn] == false) return 0;
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
forward OnPlayerDataCheck(playerid, corrupt_Check);
public OnPlayerDataCheck(playerid, corrupt_Check)
{
if (corrupt_Check != corruptCheck[playerid]) return Kick(playerid);
new String[150];
if(cache_num_rows() > 0)
{
cache_get_value(0, "PASSWORD", playerInfo[playerid][Password], 65);
cache_get_value(0, "SALT", playerInfo[playerid][Salt], 11);
playerInfo[playerid][playerCache] = cache_save();
format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", playerInfo[playerid][Name]);
Dialog_Show(playerid, dialogLogin, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
}
else
{
format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", playerInfo[playerid][Name]);
Dialog_Show(playerid, dialogRegister, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
}
return 1;
}
forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
SendClientMessage(playerid, -1, "You are now registered and has been logged in.");
playerInfo[playerid][loggedIn] = true;
return 1;
}
Dialog:dialogLogin(playerid, response, listitem, inputtext[])
{
if(!response) return Kick(playerid);
new Salted_Key[65];
SHA256_PassHash(inputtext, playerInfo[playerid][Salt], Salted_Key, 65);
if(strcmp(Salted_Key, playerInfo[playerid][Password]) == 0)
{
cache_set_active(playerInfo[playerid][playerCache]);
cache_get_value_int(0, "ID", playerInfo[playerid][ID]);
cache_get_value_int(0, "KILLS", playerInfo[playerid][Kills]);
cache_get_value_int(0, "DEATHS", playerInfo[playerid][Deaths]);
cache_get_value_int(0, "SCORE", playerInfo[playerid][Score]);
cache_get_value_int(0, "CASH", playerInfo[playerid][Cash]);
SetPlayerScore(playerid, playerInfo[playerid][Score]);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, playerInfo[playerid][Cash]);
cache_delete(playerInfo[playerid][playerCache]);
playerInfo[playerid][playerCache] = MYSQL_INVALID_CACHE;
playerInfo[playerid][loggedIn] = true;
SendClientMessage(playerid, 0x00FF00FF, "Logged in to the account.");
}
else
{
new String[150];
playerInfo[playerid][passwordFails] += 1;
printf("%s has been failed to login. (%d)", playerInfo[playerid][Name], playerInfo[playerid][passwordFails]);
if (playerInfo[playerid][passwordFails] >= 3)
{
format(String, sizeof(String), "%s has been kicked Reason: {FF0000}(%d/3) Login fails.", playerInfo[playerid][Name], playerInfo[playerid][passwordFails]);
SendClientMessageToAll(0x969696FF, String);
Kick(playerid);
}
else
{
format(String, sizeof(String), "Wrong password, you have %d out of 3 tries.", playerInfo[playerid][passwordFails]);
SendClientMessage(playerid, 0xFF0000FF, String);
format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
{0099FF}Please, input your password below to proceed to the game.\n\n", playerInfo[playerid][Name]);
Dialog_Show(playerid, dialogLogin, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
}
}
return 1;
}
Dialog:dialogRegister(playerid, response, listitem, inputtext[])
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
{
SendClientMessage(playerid, 0x969696FF, "Invalid password length, should be 5 - 60.");
new String[150];
format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
{0099FF}Please, input your password below to proceed.\n\n", playerInfo[playerid][Name]);
Dialog_Show(playerid, dialogRegister, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
}
else
{
for (new i = 0; i < 10; i++)
{
playerInfo[playerid][Salt][i] = random(79) + 47;
}
playerInfo[playerid][Salt][10] = 0;
SHA256_PassHash(inputtext, playerInfo[playerid][Salt], playerInfo[playerid][Password], 65);
new DB_Query[225];
mysql_format(mysqlConnect, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `SALT`, `SCORE`, `KILLS`, `CASH`, `DEATHS`)\
VALUES ('%e', '%s', '%e', '20', '0', '0', '0')", playerInfo[playerid][Name], playerInfo[playerid][Password], playerInfo[playerid][Salt]);
mysql_tquery(mysqlConnect, DB_Query, "OnPlayerRegister", "d", playerid);
}
return 1;
}
Kodları attım yardımcı olur musunuZ?
@Fyunkan
Alıntı yapılan: Bölüm kurallarıAçılan taleplerin son iletisi 10 günü geçmesi durumunda; konu kilitlenip, kilitli konular bölümüne taşınacaktır. Sorunu çözülen konularınızı kilitleyip, moderatörlere bildiriniz.
K/A.