|
Originally Posted by $ЂЯĢ
Get user ID first (OnPlayerRequestClass or something) and save it in PVar. If you get 0, it means that username hasn't been registered yet.
Код:
SELECT uid FROM mybb_players WHERE username='%s' LIMIT 1 Код:
SELECT * FROM mybb_players WHERE uid=(SELECT uid FROM mybb_users WHERE uid=%d AND password=MD5('%s')) LIMIT 1
|
[23:26:12] CMySQLHandler::Ping() - Connection is still alive.
[23:26:12] >> mysql_real_escape_string( Connection handle: 1 )
[23:26:12] CMySQLHandler::EscapeString(William_Stevenson); - Escaped 17 characters to William_Stevenson.
[23:26:12] >> mysql_query( Connection handle: 1 )
[23:26:12] CMySQLHandler::Query(SELECT gid FROM `mybb_players` WHERE username='William_Stevenson' LIMIT 1,resultID) - Threaded query with id 0 started. (Extra ID: 0)
[23:26:12] CMySQLHandler::Ping() - Connection is still alive.
[23:26:12] CMySQLHandler::ProcessQueryThread(SELECT gid FROM `mybb_players` WHERE username='William_Stevenson' LIMIT 1, Resultid: 0) - Data is getting passed to OnQueryFinish() - (Threadsafe: Yes)
[23:26:12] OnQueryFinish("SELECT gid FROM `mybb_players` WHERE username='William_Stevenson' LIMIT 1",0) - Called.
[23:26:12] >> mysql_store_result( Connection handle: 1 )
[23:26:12] CMySQLHandler::StoreResult() - Result was stored.
[23:26:12] >> mysql_retrieve_row( Connection handle: 1 )
[23:26:12] >> mysql_fetch_field_row( Connection handle: 1 )
[23:26:12] CMySQLHandler::FetchField("gid") - 1
[23:26:12] >> mysql_free_result( Connection handle: 1 )
[23:26:12] CMySQLHandler::FreeResult() - Result was successfully free'd.
[23:26:16] >> mysql_reconnect( Connection handle: 1 )
[23:26:16] CMySQLHandler::Ping() - Connection is still alive.
[23:26:16] >> mysql_real_escape_string( Connection handle: 1 )
[23:26:16] CMySQLHandler::EscapeString(12345678); - Escaped 8 characters to 12345678.
[23:26:16] >> mysql_query( Connection handle: 1 )
[23:26:16] CMySQLHandler::Query(SELECT * FROM `mybb_players` WHERE gid = (SELECT uid FROM `mybb_users` WHERE uid='1' AND password=MD5('12345678')) LIMIT 1,resultID) - Threaded query with id 1 started. (Extra ID: 0)
[23:26:16] CMySQLHandler::Ping() - Connection is still alive.
[23:26:16] CMySQLHandler::ProcessQueryThread(SELECT * FROM `mybb_players` WHERE gid = (SELECT uid FROM `mybb_users` WHERE uid='1' AND password=MD5('12345678')) LIMIT 1, Resultid: 1) - Data is getting passed to OnQueryFinish() - (Threadsafe: Yes)
[23:26:16] OnQueryFinish("SELECT * FROM `mybb_players` WHERE gid = (SELECT uid FROM `mybb_users` WHERE uid='1' AND password=MD5('12345678')) LIMIT 1",1) - Called.
[23:26:16] >> mysql_store_result( Connection handle: 1 )
[23:26:16] CMySQLHandler::StoreResult() - Result was stored.
[23:26:16] >> mysql_retrieve_row( Connection handle: 1 )
[23:26:16] >> mysql_free_result( Connection handle: 1 )
[23:26:16] CMySQLHandler::FreeResult() - Result was successfully free'd.
|
Originally Posted by pziemczyk
gid is global id from mybb_users
|
SELECT gid,uid FROM mybb_players WHERE username='%s' LIMIT 1
SELECT * FROM mybb_players WHERE uid=%d AND gid=(SELECT uid FROM mybb_users WHERE uid=%d AND password=MD5('%s')) LIMIT 1
public OnPlayerRequestClass(playerid, classid)
{
new query[80];
if (IsPlayerNPC(playerid)) return SpawnPlayer(playerid);
TogglePlayerSpectating(playerid, 1);
mysql_reconnect();
mysql_real_escape_string(LoginName(playerid), LoginName(playerid));
format(query, sizeof(query), "SELECT gid,uid FROM `mybb_players` WHERE username='%s' LIMIT 1", LoginName(playerid));
mysql_query(query, 0, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Login", "...", "Login", "Change nick");
return 1;
}
case 1: // Login Input
{
if (response)
{
new query[180];
mysql_reconnect();
mysql_real_escape_string(inputtext, inputtext);
format(query, sizeof(query), "SELECT * FROM mybb_players WHERE uid=%d AND gid=(SELECT uid FROM mybb_users WHERE uid=%d AND password=MD5('%s')) LIMIT 1",
PlayerData[playerid][pUID], PlayerData[playerid][pGID], inputtext);
mysql_query(query, 1, playerid);
}
else
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Zmiana nicku postaci", "Aby zmienić nick, wprowadź nowy nick do pola i zatwierdź.\nPamiętaj, że nick nie może zawierać znakуw: !#^&*(){}|<>?, oraz procentu", "Zmień nick", "Anuluj");
}
}
case 0: // Getting Global ID
{
if (IsPlayerConnected(extraid))
{
new field[11];
mysql_store_result();
if (mysql_retrieve_row())
{
mysql_fetch_field_row(field, "uid"); PlayerData[extraid][pUID] = strval(field);
mysql_fetch_field_row(field, "gid"); PlayerData[extraid][pGID] = strval(field);
}
mysql_free_result();
}
else
{
mysql_store_result();
mysql_free_result();
}
return 1;
}
case 1: // Loading Player Data
{
if (IsPlayerConnected(extraid))
{
new string[128], field[11];
mysql_store_result();
if (mysql_retrieve_row())
{
mysql_fetch_field_row(field, "admin"); PlayerData[extraid][pAL] = strval(field);
mysql_fetch_field_row(field, "blocked"); PlayerData[extraid][pBlocked] = strval(field);
mysql_fetch_field_row(field, "muted"); PlayerData[extraid][pMute] = strval(field);
mysql_fetch_field_row(field, "aj"); PlayerData[extraid][pAJ] = strval(field);
mysql_fetch_field_row(field, "vi"); PlayerData[extraid][pVI] = strval(field);
mysql_fetch_field_row(field, "health"); PlayerData[extraid][pHealth] = floatstr(field);
mysql_fetch_field_row(field, "gender"); PlayerData[extraid][pGender] = strval(field);
mysql_fetch_field_row(field, "money"); PlayerData[extraid][pMoney] = strval(field);
mysql_fetch_field_row(field, "bank"); PlayerData[extraid][pBank] = strval(field);
mysql_fetch_field_row(field, "faction"); PlayerData[extraid][pFaction] = strval(field);
mysql_fetch_field_row(field, "rfaction"); PlayerData[extraid][pFactionRank] = strval(field);
mysql_fetch_field_row(field, "business"); PlayerData[extraid][pBusiness] = strval(field);
mysql_fetch_field_row(field, "rbusiness"); PlayerData[extraid][pBusinessRank] = strval(field);
mysql_fetch_field_row(field, "x"); PlayerData[extraid][pLastPos][0] = floatstr(field);
mysql_fetch_field_row(field, "y"); PlayerData[extraid][pLastPos][1] = floatstr(field);
mysql_fetch_field_row(field, "z"); PlayerData[extraid][pLastPos][2] = floatstr(field);
mysql_fetch_field_row(field, "angle"); PlayerData[extraid][pLastPos][3] = floatstr(field);
mysql_fetch_field_row(field, "vw"); PlayerData[extraid][pVW] = strval(field);
mysql_fetch_field_row(field, "interior"); PlayerData[extraid][pInterior] = strval(field);
mysql_fetch_field_row(field, "skin"); PlayerData[extraid][pSkin] = strval(field);
mysql_fetch_field_row(field, "online"); PlayerData[extraid][pOnline] = strval(field);
PlayerData[extraid][pMessages] = 1;
format(string, sizeof(string), "Zalogowałeś się jako %s (ID %d, UID %d, GID %d). Miłej gry!", PlayerName(extraid), extraid, PlayerData[extraid][pUID], PlayerData[extraid][pGID]);
SendClientMessage(extraid, COLOR_DARKRED, string);
}
mysql_free_result();
}
else
{
mysql_store_result();
mysql_free_result();
}
}
|
Originally Posted by Slice
try changing
Код:
stock salt_password( const password[ 32 ], const salt[ 16 ] )
{
new hash[ sizeof( password ) + sizeof( salt ) ]
Код:
stock salt_password( const password[ ], const salt[ ] )
{
new hash[ 33 ]
|
|
Originally Posted by Calgon
Quote:
|
mysql_query(query);
printf("ERROR: %d",mysql_errno());
[00:07:54] CMySQLHandler::Query(SELECT id FROM usuarios WHERE username='Astaroth') - Successfully executed. [00:07:54] >> mysql_errno( Connection handle: 1 )
ERROR: 11862392
?.
|
Originally Posted by [SP
LilGunna © ]
anybody have example on how to use this? |


echo Executing Server Config... lanmode 0 rcon_password res maxplayers 50 port 7777 hostname SA-MP 0.3 Server gamemode0 MysqlScript 1 filterscripts plugins mysql.dll announce 0 query 1 weburl www.sa-mp.com maxnpc 0 onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000
plugins mysql.dll libmySQL.dll