Problem!
#1

Hello
I am using World War IV's script..score, cash do not save when the server restarts.
Код:
CMD:setcash(playerid, params[])
{
	if (! IsPlayerAdmin(playerid) && pStats[playerid][userAdmin] < 3)
	{
	    return SendClientMessage(playerid, COLOR_TOMATO, "You must be admin level 3+ to use this command.");
	}

	new targetid, amount;
	if (sscanf(params, "ui", targetid, amount))
	{
		return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setcash [player] [amount]");
	}

	if (! IsPlayerConnected(targetid))
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "The specified player is not conected.");
	}

	if (pStats[playerid][userAdmin] < pStats[targetid][userAdmin])
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "You cannot use this command on higher level admin.");
	}

	ResetPlayerMoney(targetid);
	GivePlayerMoney(targetid, amount);
	PlayerPlaySound(targetid, 1057, 0.0, 0.0, 0.0);
	PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);

	new buf[150];
	format(buf, sizeof(buf), "Admin %s(%i) has set your money to $%i.", ReturnPlayerName(playerid), playerid, amount);
	SendClientMessage(targetid, COLOR_DODGER_BLUE, buf);
	format(buf, sizeof(buf), "You have set %s(%i)'s money to $%i.", ReturnPlayerName(targetid), targetid, amount);
	SendClientMessage(playerid, COLOR_DODGER_BLUE, buf);
	return 1;
}
Код:
CMD:setscore(playerid, params[])
{
	if (! IsPlayerAdmin(playerid) && pStats[playerid][userAdmin] < 3)
	{
	    return SendClientMessage(playerid, COLOR_TOMATO, "You must be admin level 3+ to use this command.");
	}

	new targetid, amount;
	if (sscanf(params, "ui", targetid, amount))
	{
		return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setscore [player] [amount]");
	}

	if (! IsPlayerConnected(targetid))
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "The specified player is not conected.");
	}

	if (pStats[playerid][userAdmin] < pStats[targetid][userAdmin])
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "You cannot use this command on higher level admin.");
	}

	SetPlayerScore(targetid, amount);
	PlayerPlaySound(targetid, 1057, 0.0, 0.0, 0.0);
	PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);

	new buf[150];
	format(buf, sizeof(buf), "Admin %s(%i) has set your score to %i.", ReturnPlayerName(playerid), playerid, amount);
	SendClientMessage(targetid, COLOR_DODGER_BLUE, buf);
	format(buf, sizeof(buf), "You have set %s(%i)'s score to %i.", ReturnPlayerName(targetid), targetid, amount);
	SendClientMessage(playerid, COLOR_DODGER_BLUE, buf);
	return 1;
}
Код:
CMD:givecash(playerid, params[])
{
	if (! IsPlayerAdmin(playerid) && pStats[playerid][userAdmin] < 3)
	{
	    return SendClientMessage(playerid, COLOR_TOMATO, "You must be admin level 3+ to use this command.");
	}

	new targetid, amount;
	if (sscanf(params, "ui", targetid, amount))
	{
		return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /givecash [player] [amount]");
	}

	if (! IsPlayerConnected(targetid))
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "The specified player is not conected.");
	}

	GivePlayerMoney(targetid, amount);
	PlayerPlaySound(targetid, 1057, 0.0, 0.0, 0.0);
	PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);

	new buf[150];
	format(buf, sizeof(buf), "Admin %s(%i) has given you money $%i.", ReturnPlayerName(playerid), playerid, amount);
	SendClientMessage(targetid, COLOR_DODGER_BLUE, buf);
	format(buf, sizeof(buf), "You have given %s(%i)'s money $%i.", ReturnPlayerName(targetid), targetid, amount);
	SendClientMessage(playerid, COLOR_DODGER_BLUE, buf);
	return 1;
}
Код:
CMD:givescore(playerid, params[])
{
	if (! IsPlayerAdmin(playerid) && pStats[playerid][userAdmin] < 3)
	{
	    return SendClientMessage(playerid, COLOR_TOMATO, "You must be admin level 3+ to use this command.");
	}

	new targetid, amount;
	if (sscanf(params, "ui", targetid, amount))
	{
		return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /givescore [player] [amount]");
	}

	if (! IsPlayerConnected(targetid))
	{
		return SendClientMessage(playerid, COLOR_TOMATO, "The specified player is not conected.");
	}

	SetPlayerScore(targetid, amount);
	PlayerPlaySound(targetid, 1057, 0.0, 0.0, 0.0);
	PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);

	new buf[150];
	format(buf, sizeof(buf), "Admin %s(%i) has given you score to %i.", ReturnPlayerName(playerid), playerid, amount);
	SendClientMessage(targetid, COLOR_DODGER_BLUE, buf);
	format(buf, sizeof(buf), "You have given %s(%i)'s score %i.", ReturnPlayerName(targetid), targetid, amount);
	SendClientMessage(playerid, COLOR_DODGER_BLUE, buf);
	return 1;
}
HERE WHERE IT MUST BE SAVED!

Код:
	yoursql_open("Server.db");

	yoursql_verify_table(SQL:0, "users");
	yoursql_verify_column(SQL:0, "users/name", SQL_STRING);
	yoursql_verify_column(SQL:0, "users/password", SQL_STRING);
	yoursql_verify_column(SQL:0, "users/email", SQL_STRING);
	yoursql_verify_column(SQL:0, "users/ip", SQL_STRING);
	yoursql_verify_column(SQL:0, "users/register_on", SQL_STRING);
	yoursql_verify_column(SQL:0, "users/auto_login", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/kills", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/deaths", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/score", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/money", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/zones", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/headshots", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/admin", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/vip", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/weapon1", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/weapon2", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/weapon3", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/hours", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/minutes", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "users/seconds", SQL_NUMBER);

	yoursql_verify_table(SQL:0, "bans");
	yoursql_verify_column(SQL:0, "bans/name", SQL_STRING);
	yoursql_verify_column(SQL:0, "bans/ip", SQL_STRING);
	yoursql_verify_column(SQL:0, "bans/admin_name", SQL_STRING);
	yoursql_verify_column(SQL:0, "bans/reason", SQL_STRING);
	yoursql_verify_column(SQL:0, "bans/date", SQL_STRING);
	yoursql_verify_column(SQL:0, "bans/type", SQL_NUMBER);
	yoursql_verify_column(SQL:0, "bans/expire", SQL_NUMBER);
Reply
#2

this simply just sets the player's cash/score w/o updating the data base, I would say either use a timer to save all the players' stats (Each 5mns maybe) or you can easly update the player's score/cash directly in the cmd.

Whenever the server restarts it doesn't save your data.

Also saving the users' data in OnGameModeExit may help (Not sure)
Reply
#3

You could use this method if you're meaning to restart the server by a command.

PHP код:
forward RestartServer();
public 
RestartServer()
{
    
SendRconCommand("gmx");
    return 
1;
}
CMD:gmx(playerid,params[])
{
    if (! 
IsPlayerAdmin(playerid) && pStats[playerid][userAdmin] < 3)
    {
        for(new 
id 0id MAX_PLAYERSid++)
        {
            if(
IsPlayerConnected(id))
            {
                  
Kick(id); // Kicks all the players online
                  
SetTimer("RestartServer",2000,false); // Restarts the server in 2 seconds or change to 1000 less
            
}
        }
    }
    return 
1;

This will kick all the players online before the restart. Which will save their stats.
Or if you mean about server unexpected crashes and restarts, use mongi's idea with timers.
Reply
#4

I got gmx cmd..but its the same..when the server restarts everything will be reseted
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)