MySQL problem
#1

I've made an vip system on an MySQL server made by me and when i give someone the vip it doesn't save

Command:
Код:
CMD:makevip(playerid, params[])
{
	if(Player[playerid][pAdminLevel] >= 3)
	{
		new id, level, string[126];
		if(sscanf(params, "ud", id, level))
			return SendClientMessage(playerid, -1, "Syntax: /makevip [playerid] [level]");
			
		Player[id][pvStatus] = level;
		
		format(string, sizeof(string), "%s has made you a VIP level %d", GetNameEx(playerid), level);
		SendClientMessage(id, -1, string);
		
		format(string, sizeof(string), "You have made %s a VIP level %d", GetNameEx(id), level);
		SendClientMessage(playerid, -1, string);
	}
	return 1;
}
I've made a stock to save automatic

Код:
stock SavePlayer(playerid)
{
	new query[356], EncryptedPass[130];
	
	WP_Hash(EncryptedPass, sizeof(EncryptedPass), Player[playerid][pPassword]);

	GetPlayerPos(playerid, Player[playerid][pPosition][0], Player[playerid][pPosition][1], Player[playerid][pPosition][2]);
	
	format(query, sizeof(query), "UPDATE accounts SET pName = '%s', pPassword = '%s', pAdminLevel = %d, pPlayerPos = '%f %f %f', pMoney = %d, pVip = %d, pMuted = %d, pWarnings = %d, pWarningReasons = '%s|%s|%s' WHERE pid = %d", GetName(playerid), Player[playerid][pPassword], Player[playerid][pAdminLevel], Player[playerid][pPosition][0], Player[playerid][pPosition][1], Player[playerid][pPosition][0], Player[playerid][pSkin], Player[playerid][pMoney], Player[playerid][pvStatus],
	Player[playerid][pMuted], Player[playerid][pWarnings], Player[playerid][pWarningReason1], Player[playerid][pWarningReason2], Player[playerid][pWarningReason3], Player[playerid][pID]);
	mysql_query(query);
	
	printf("Player ID %d (%s) has been saved", playerid, GetName(playerid));
}
Cand anybody help me please i use this MySQL:

https://sampforum.blast.hk/showthread.php?tid=122983
Reply
#2

Quote:
Originally Posted by AnoTek
Посмотреть сообщение
I've made an vip system on an MySQL server made by me and when i give someone the vip it doesn't save

Command:
Код:
CMD:makevip(playerid, params[])
{
	if(Player[playerid][pAdminLevel] >= 3)
	{
		new id, level, string[126];
		if(sscanf(params, "ud", id, level))
			return SendClientMessage(playerid, -1, "Syntax: /makevip [playerid] [level]");
			
		Player[id][pvStatus] = level;
		
		format(string, sizeof(string), "%s has made you a VIP level %d", GetNameEx(playerid), level);
		SendClientMessage(id, -1, string);
		
		format(string, sizeof(string), "You have made %s a VIP level %d", GetNameEx(id), level);
		SendClientMessage(playerid, -1, string);
	}
	return 1;
}
I've made a stock to save automatic

Код:
stock SavePlayer(playerid)
{
	new query[356], EncryptedPass[130];
	
	WP_Hash(EncryptedPass, sizeof(EncryptedPass), Player[playerid][pPassword]);

	GetPlayerPos(playerid, Player[playerid][pPosition][0], Player[playerid][pPosition][1], Player[playerid][pPosition][2]);
	
	format(query, sizeof(query), "UPDATE accounts SET pName = '%s', pPassword = '%s', pAdminLevel = %d, pPlayerPos = '%f %f %f', pMoney = %d, pVip = %d, pMuted = %d, pWarnings = %d, pWarningReasons = '%s|%s|%s' WHERE pid = %d", GetName(playerid), Player[playerid][pPassword], Player[playerid][pAdminLevel], Player[playerid][pPosition][0], Player[playerid][pPosition][1], Player[playerid][pPosition][0], Player[playerid][pSkin], Player[playerid][pMoney], Player[playerid][pvStatus],
	Player[playerid][pMuted], Player[playerid][pWarnings], Player[playerid][pWarningReason1], Player[playerid][pWarningReason2], Player[playerid][pWarningReason3], Player[playerid][pID]);
	mysql_query(query);
	
	printf("Player ID %d (%s) has been saved", playerid, GetName(playerid));
}
Cand anybody help me please i use this MySQL:

https://sampforum.blast.hk/showthread.php?tid=122983
Right under
pawn Код:
mysql_query(query);
add
pawn Код:
printf(query);
and post the output here, because everything seems to be pretty normal with this code, except for tons of variables..

Greetings.
Reply
#3

Doesn't work but on the console show me that:
Reply
#4

Solved it thanks!
Reply
#5

Here is a better view:
Код:
	"UPDATE accounts SET 
	pName = '%s', 
	pPassword = '%s', 
	pAdminLevel = %d, 
	pPlayerPos = '%f %f %f', 
	pMoney = %d, 
	pVip = %d, 
	pMuted = %d, 
	pWarnings = %d, 
	pWarningReasons = '%s|%s|%s' 
	WHERE pid = %d", 
	GetName(playerid), 
	Player[playerid][pPassword], 
	Player[playerid][pAdminLevel], 
	Player[playerid][pPosition][0], 
	Player[playerid][pPosition][1], 
	Player[playerid][pPosition][0], 
	Player[playerid][pSkin], 
	Player[playerid][pMoney], 
	Player[playerid][pvStatus],
	Player[playerid][pMuted], 
	Player[playerid][pWarnings], 
	Player[playerid][pWarningReason1], 
	Player[playerid][pWarningReason2], 
	Player[playerid][pWarningReason3],
	Player[playerid][pID]
1- pPlayerPos is saving in a weird order, the array is saving as: [0] [1] [0]. I assume the z position should be [2].
2- Player[playerid][pSkin] is setting the 'pMoney' field, and there is no Skin field in the query itself.
3- Player[playerid][pvStatus] has no field too.

TIP: Let me ask you, why do you need to save the VIP stats, Admin stats or even the warnings and the reasons every single time you save the player? These variables never change unless in specific conditions which are not to common to be saved everytime you update the player.
Only save these when you change the variable ingame, its way better.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)