MYSQL problem
#1

I don't know why but this GM have a big problem with the database.
As you can see in this picture, I've made my 1st account, and i registred another 2 accounts and the database set the last 2 account admin level 1, without doing something.


Here is the GM.

Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <foreach>
#include <a_mysql>

//============================================================================//
//                                  Define s                                  //
//============================================================================//

#define SERVER_NAME     ""
#define SERVER_TIME     ""
#define SERVER_GRAVITY  ""
#define SERVER_MAP      ""
#define SERVER_WEBSITE  ""

#define SQL_HOST ""
#define SQL_USER ""
#define SQL_PASS ""
#define SQL_DB 	 ""

#define Blue    "{003DF5}"
#define Red     "{FF0000}"
#define Green   "{66FF00}"
#define White   "{FFFFFF}"

#define COLOR_RED 0xFF0000FF
#define COLOR_LIME 0xFF000000

#define DIALOG_REGISTER         100
#define DIALOG_LOGIN            101
#define DIALOG_POS              102


//============================================================================//
//                                  New's                                     //
//============================================================================//

enum pInfo
{
    pScore,
    pMoney,
    pLevel,
    pVIP,
    pKMA,
    pRank,
    pKills,
    pDeaths,
    pMuted,
    pJailed,
    pFrozen,
    pMutedTimes,
    pJailedTimes,
    pFrozenTimes,
    pBanned,
    pBannedBy[24],
    pLogins,
    pCookies,
    Float:pPosX,
    Float:pPosY,
    Float:pPosZ,
    Float:pPosA
}

new PlayerInfo[MAX_PLAYERS][pInfo];
new MoneyGiven[MAX_PLAYERS];
new IsRegistered[MAX_PLAYERS];
new Logged[MAX_PLAYERS];
new JustLogged[MAX_PLAYERS];
new Text:Textdraw1;

//============================================================================//
//                                  Forwards                                  //
//============================================================================//

forward  	HideMessage1(playerid);

//============================================================================//
//                                  Main                                      //
//============================================================================//

main(){}

//============================================================================//
//                                  Publics                                   //
//============================================================================//
public OnGameModeInit()
{

	new stuff[128];

	format(stuff, 128, "hostname %s", SERVER_NAME);
	SendRconCommand(stuff);
	
	format(stuff, 128, "mapname %s", SERVER_MAP);
	SendRconCommand(stuff);

	format(stuff, 128, "worldtime %s", SERVER_WEBSITE);
	SendRconCommand(stuff);
	
	SetGameModeText("Drift/Race/Freeroam");
	
    AddPlayerClass(1, 1694.3789,1447.9192,10.7634,269.8285, 0, 0, 0, 0, 0, 0);
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
    mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(40), score INT(20), money INT(20), level INT(20), vip INT(20), kma INT(20), rank INT(20), kills INT(20), deaths INT(20), muted INT(20), jailed INT(20), frozen INT(20), mutedtimes INT(20), jailedtimes INT(20), frozentimes INT(20), banned INT(20), bannedby VARCHAR(24), logins INT(20), posx INT(20), posy INT(20), posz INT(20), posa INT(20), IP VARCHAR(15) )");
    mysql_debug(1);
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(!Logged[playerid])
    {
        if(!IsRegistered[playerid])
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel");
            return 0;
        }
        if(IsRegistered[playerid] == 1)
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel");
            return 0;
        }
    }
    return 1;
}


public OnPlayerSpawn(playerid)
{
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(MoneyGiven[playerid] != -1)
    {
        GivePlayerMoney(playerid, MoneyGiven[playerid]);
        MoneyGiven[playerid] = -1;
    }
    if(JustLogged[playerid] == 1)
    {
    	ShowPlayerDialog(playerid, DIALOG_POS, DIALOG_STYLE_MSGBOX, ""Blue"Sucessfully logged-in!", ""White"You have sucessfully logged-in to your account!\n\n"White"Would you like to load you previous possition?", "Yes", "No");
    	JustLogged[playerid] = 0;
	}
    return 1;
}

public OnPlayerConnect(playerid)
{
    RemoveUnderScore(playerid);
    TextDrawHideForPlayer(playerid, Textdraw1);
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    MoneyGiven[playerid] = -1;
    JustLogged[playerid] = 0;
    new query[300], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", pname);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows)
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel");
    }
    if(rows == 1)
    {
        new IP[2][15];
        mysql_fetch_field_row(IP[0],"IP");
        GetPlayerIp(playerid, IP[1], 15);
        if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true))
        {
            MySQL_Login(playerid);
        }
        else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel");
            IsRegistered[playerid] = 1;
        }
    }
    mysql_free_result();
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(Logged[playerid] == 1)
    {
        new Float:x, Float:y, Float:z, Float:a;
        GetPlayerPos(playerid, x, y, z);
        GetPlayerFacingAngle(playerid, a);
        PlayerInfo[playerid][pPosX] = x;
        PlayerInfo[playerid][pPosY] = y;
        PlayerInfo[playerid][pPosZ] = z;
        PlayerInfo[playerid][pPosA] = a;
        new score = GetPlayerScore(playerid);
        new money = GetPlayerMoney(playerid);
        new query[300], pname[24];
        GetPlayerName(playerid, pname, 24);
        format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d, level=%d, vip=%d, kma=%d, rank=%d, kills=%d, deaths=%d, muted=%d, jailed=%d, frozen=%d, mutedtimes=%d, jailedtimes=%d, frozentimes=%d, banned=%d, bannedby='%s', logins=%d, posx=%f, posy=%f, posz=%f, posa=%f  WHERE user='%s'",
		score,
		money,
		PlayerInfo[playerid][pLevel],
		PlayerInfo[playerid][pVIP],
		PlayerInfo[playerid][pKMA],
		PlayerInfo[playerid][pRank],
		PlayerInfo[playerid][pKills],
		PlayerInfo[playerid][pDeaths],
		PlayerInfo[playerid][pMuted],
		PlayerInfo[playerid][pJailed],
		PlayerInfo[playerid][pFrozen],
		PlayerInfo[playerid][pMutedTimes],
		PlayerInfo[playerid][pJailedTimes],
		PlayerInfo[playerid][pFrozenTimes],
		PlayerInfo[playerid][pBanned],
		PlayerInfo[playerid][pBannedBy],
		PlayerInfo[playerid][pLogins],
  		PlayerInfo[playerid][pPosX],
        PlayerInfo[playerid][pPosY],
        PlayerInfo[playerid][pPosZ],
        PlayerInfo[playerid][pPosA],
		pname);
        mysql_query(query);
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    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 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[])
{
	if(dialogid == DIALOG_POS)
	{
	    if(response)
	    {
	        SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
	        SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
	        SendMessage(playerid, "~g~Info: ~w~Sucessfully loaded your last possition!");
		}
		else if(!response)
		{
		    return 1;
		}
	}
	//================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            if(!strlen(inputtext) || strlen(inputtext) > 100)
            {
            	SendMessage(playerid, "~r~Error: ~w~You must insert a password between 1-100 characters!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel");
            }
            else if(strlen(inputtext) > 0 && strlen(inputtext) < 100)
            {
                new escpass[100];
                mysql_real_escape_string(inputtext, escpass);
                MySQL_Register(playerid, escpass);
            }
        }
        if(!response)
        {
        		SendMessage(playerid, "~r~Error: ~w~You must register before logging in!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""Blue"Please register",""White"Welcome to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to register!\n\n"White"Please insert a password below:", "Register", "Cancel");
        }
    }
    if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
                SendMessage(playerid, "~r~Error: ~w~You must login before you spawn!");
                ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel");
        }
        if(response)
        {
            new query[200], pname[24], escapepass[100];
            GetPlayerName(playerid, pname, 24);
            mysql_real_escape_string(inputtext, escapepass);
            format(query, sizeof(query), "SELECT `user` FROM playerdata WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass);
            mysql_query(query);
            mysql_store_result();
            new numrows = mysql_num_rows();
            if(numrows == 1) MySQL_Login(playerid);
            if(!numrows)
            {
                ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""Blue"Please log-in", ""White"Welcome back to "Red""SERVER_NAME""White"!\n"White"In order to start playing, you have to log-in!\n\n"White"Please insert "Red"your"White" password below:", "Login", "Cancel");
                SendMessage(playerid, "~r~Error: ~w~Incorrect password!");
            }
            mysql_free_result();
        }
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

//============================================================================//
//                                  Player Commands                           //
//============================================================================//

CMD:savepossition(playerid, params[])
{
	new Float:x, Float:y, Float:z, Float:a;
 	GetPlayerPos(playerid, x, y, z);
 	GetPlayerFacingAngle(playerid, a);
 	PlayerInfo[playerid][pPosX] = x;
 	PlayerInfo[playerid][pPosY] = y;
 	PlayerInfo[playerid][pPosZ] = z;
 	PlayerInfo[playerid][pPosA] = a;
 	SendMessage(playerid, "~g~Info: ~w~Possition saved!");
 	return 1;
}

CMD:sp(playerid, params[])
{
	return cmd_savepossition(playerid, params);
}

CMD:loadpossition(playerid, params[])
{
	SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
	SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
	SendMessage(playerid, "~g~Info: ~w~Possition loaded!");
	return 1;
}

CMD:lp(playerid, params[])
{
	return cmd_loadpossition(playerid, params);
}

//============================================================================//
//                                  Admin Commands                            //
//============================================================================//


CMD:setadmin(playerid, params[])
{
   	new alevel, str[128], pname[24], Nam[24], ID;
	if(!(PlayerInfo[playerid][pLevel] > 1)) return 0;
	if(sscanf(params,"ui",ID,alevel)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFFF} /setadmin [ID] [Level 1-2]");
	if(alevel > 3) return SendClientMessage(playerid,COLOR_RED," ERROR:{FFFFFF} Levels avalible 1-2!");
	if(!IsPlayerConnected(ID))return SendClientMessage(playerid,COLOR_RED,"ERROR: {FFFFFF}That user is not connected.");
	if(PlayerInfo[ID][pLevel] == alevel) return SendClientMessage(playerid,COLOR_RED, "ERROR: {FFFFFF}That person is already this admin level!");
  	GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);
   	GetPlayerName(ID,pname,MAX_PLAYER_NAME);
   	if(alevel == 0)
   	{
    	format(str, sizeof(str),"%s has your Admin level to %d on the server.",Nam,alevel);
		SendClientMessage(ID,COLOR_RED,str);
 		format(str, sizeof(str),"You had set {FFFFFF}%s {FF0000}admin level to {FFFFFF}%d!",pname,alevel);
		SendClientMessage(playerid,COLOR_RED,str);
   		PlayerInfo[ID][pLevel] = alevel;
   		return 1;
	}
	format(str, sizeof(str),"{FFFFFF}%s {FF0000}has set your admin level to {FFFFFF}%d {FF0000}on the server.",Nam,alevel);
	SendClientMessage(ID,COLOR_RED,str);
	format(str, sizeof(str),"You have set {FFFFFF}%s {FF0000}admin level {FFFFFF}%d!",pname,alevel);
	SendClientMessage(playerid,COLOR_RED,str);
	format(str,sizeof(str),"Administrator %s has set %s Admin level to %d",Nam,pname,alevel);
	MessageToAdmins(COLOR_LIME,str);
	PlayerInfo[ID][pLevel] = alevel;
	return 1;
}
//============================================================================//
//                                  Stocks /  Publics                         //
//============================================================================//

public HideMessage1(playerid)
{
	TextDrawHideForPlayer(playerid, Textdraw1);
	return 1;
}

stock RemoveUnderScore(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i = 0; i < MAX_PLAYER_NAME; i++)
    {
        if(name[i] == '_') name[i] = ' ';
    }
    return name;
}

stock SendMessage(playerid, message[])
{
	TextDrawHideForPlayer(playerid, Textdraw1);
	TextDrawSetString(Textdraw1, message);
	TextDrawShowForPlayer(playerid, Textdraw1);
	SetTimer("HideMessage1", 5000, false);
	return 1;
}



stock ErrorMessage(playerid, message[])
{
	new string[128];
	format(string, sizeof string, ""Red"[Error] "White"%s", message);
	SendClientMessage(playerid, -1, string);
	return 1;
}

stock MySQL_Register(playerid, passwordstring[])
{
    new query[350], pname[24], IP[15];
    new Bannedby[20];
    format(Bannedby, 20, "Not Banned");
    GetPlayerName(playerid, pname, 24);
    GetPlayerIp(playerid, IP, 15);
    format(query, sizeof(query), "INSERT INTO playerdata (user, password, score, money, level, vip, kma, rank, kills, deaths, muted, jailed, frozen, mutedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa, IP) VALUES('%s', SHA1('%s'), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '%s', 0, 0, 0, 0, 0, '%s')", pname, passwordstring, Bannedby, IP);
    mysql_query(query);
    SendMessage(playerid, "~g~Info: ~w~You have been registered on this server!");
    Logged[playerid] = 1;
    return 1;
}

stock MySQL_Login(playerid)
{
    new query[300], pname[24], savingstring[20];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT score, money, level, vip, kma, rank, kills, deaths, muted, jailed, frozen, mutedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa FROM playerdata WHERE user = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
        mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "level"); PlayerInfo[playerid][pLevel] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "vip"); PlayerInfo[playerid][pVIP] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "kma"); PlayerInfo[playerid][pKMA] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "rank"); PlayerInfo[playerid][pRank] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "kills"); PlayerInfo[playerid][pKills] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "deaths"); PlayerInfo[playerid][pDeaths] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "muted"); PlayerInfo[playerid][pMuted] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "jailed"); PlayerInfo[playerid][pJailed] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "frozen"); PlayerInfo[playerid][pFrozen] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "mutedtimes"); PlayerInfo[playerid][pMutedTimes] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "jailedtimes"); PlayerInfo[playerid][pJailedTimes] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "frozentimes"); PlayerInfo[playerid][pFrozenTimes] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "banned"); PlayerInfo[playerid][pBanned] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "bannedby"); PlayerInfo[playerid][pBannedBy] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "logins"); PlayerInfo[playerid][pLogins] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "posx"); PlayerInfo[playerid][pPosX] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "posy"); PlayerInfo[playerid][pPosY] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "posz"); PlayerInfo[playerid][pPosZ] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "posa"); PlayerInfo[playerid][pPosA] = strval(savingstring);
    }
    mysql_free_result();
    JustLogged[playerid] = 1;
    Logged[playerid] = 1;
    PlayerInfo[playerid][pLogins]++;
    SendMessage(playerid, "~g~Info: ~w~You have been logged-in!");
    return 1;
}

stock GetName(playerid)
{
	new pname[24];
	GetPlayerName(playerid, pname, 24);
	return pname;
}
forward MessageToAdmins(color,const string[]);
public MessageToAdmins(color,const string[])
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	if(IsPlayerConnected(i) == 1)
	if(PlayerInfo[i][pLevel] > 0)
	SendClientMessage(i, COLOR_LIME ,string);
	}
	return 1;
}
Reply
#2

do you have the defaults in the table structures set to 0?
Reply
#3

Check your database SQL defaults.

In phpMyAdmin:
  1. Click the 'structure' tab
  2. Click the pencil icon on the 'level' line
  3. Change the default to 0
Otherwise, in OnPlayerConnect, make sure you set all player variables to 0, otherwise newly connecting players will get the stats from other players.
Reply
#4

Ok i found where is the problem,
When i connect on server everything is ok, looks good in DB
But when i disconnect it sets the previous player data.

Is something wrong?

Код:
public OnPlayerDisconnect(playerid, reason)
{
	new pnamee[24];
	new string[39 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, pnamee, sizeof(pnamee));
    switch(reason)
    {
        case 0: format(string, sizeof(string), "%s has left the server. (Lost Connection)", pnamee);
        case 1: format(string, sizeof(string), "%s has left the server.", pnamee);
    }
    SendClientMessageToAll(COLOR_GREY, string);
	//================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(Logged[playerid] == 1)
	{
		new score = GetPlayerScore(playerid);
        new money = GetPlayerMoney(playerid);
        new query[300], pname[24];
        GetPlayerName(playerid, pname, 24);
        format(query, sizeof(query), "UPDATE playedata SET score=%d, money=%d, admin=%d, vip=%d, skin=%d, banned=%d, bannedby='%s' WHERE user='%s'",score, money, PlayerInfo[playerid][pAdmin] ,PlayerInfo[playerid][pVIP] ,PlayerInfo[playerid][pSkin] ,
		PlayerInfo[playerid][pBanned],
		PlayerInfo[playerid][pBannedBy],
		pname);
        mysql_query(query);
  	}
    return 1;
Reply
#5

you better remove the saving part from the OnPlayerDisconnect and save them in a 4sec timer instead
Reply
#6

Код:
UPDATE `playedata` SET `score`=%d, `money`=%d, `admin`=%d, `vip`=%d, `skin`=%d, `banned`=%d, `bannedby`=%s WHERE `user`=%s LIMIT 1
Clears tables in the `level` onplayerconnect?


Код:
forward SaveData(playerid);
public SaveData(playerid)
{
if(Logged[playerid] == 1)
{
new score = GetPlayerScore(playerid);
new money = GetPlayerMoney(playerid);
new query[380], pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), 
"UPDATE `playedata` SET `score`=%d, `money`=%d, `admin`=%d, `vip`=%d, `skin`=%d, `banned`=%d, `bannedby`=%s WHERE `user`=%s LIMIT 1'",score, money, PlayerInfo[playerid][pAdmin] ,PlayerInfo[playerid][pVIP] ,PlayerInfo[playerid][pSkin] ,
PlayerInfo[playerid][pBanned],
PlayerInfo[playerid][pBannedBy], pname);
mysql_query(query);
}
return 1;
}

//And use in onplayerspawn or somewhere
SetPVarInt(playerid, "SaveDatas", SetTimerEx("SaveData", 5*2000, 1, "d", playerid));
Reply
#7

Quote:
Originally Posted by THE_KNOWN
Посмотреть сообщение
you better remove the saving part from the OnPlayerDisconnect and save them in a 4sec timer instead
And how should i do this, i'm not so expert in mysql system .
Reply
#8

pawn Код:
forward SaveStats();

OnGameModeInit():

SetTimer("SaveStats",4000,1);


public SaveStats()
{
    for(new i;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            SavePlayer(playerid);
        }
    }
    return 1;
}

stock SavePlayer(playerid)
{
    if(Logged[playerid] == 1)
    {
        new score = GetPlayerScore(playerid);
        new money = GetPlayerMoney(playerid);
        new query[300], pname[24];
        GetPlayerName(playerid, pname, 24);
        format(query, sizeof(query), "UPDATE playedata SET score=%d, money=%d, admin=%d, vip=%d, skin=%d, banned=%d, bannedby='%s' WHERE user='%s'",score, money, PlayerInfo[playerid][pAdmin] ,PlayerInfo[playerid][pVIP] ,PlayerInfo[playerid][pSkin] ,
        PlayerInfo[playerid][pBanned],
        PlayerInfo[playerid][pBannedBy],
        pname);
        mysql_query(query);
    }
    return 1;
}
Reply
#9

@Up
It will not be too much lag when every 4 seconds, for example, perform 40 queries?
It will be terrible for MySQL Databases
Reply
#10

The SaveStarts works ok but nothing happen, same thing.

Here is a part of my gamemode


Код:
//============================================================================//
//                                  Includes                                  //
//============================================================================//

#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <foreach>
#include <a_mysql>
#include <streamer>

//============================================================================//
//                                  Define s                                  //
//============================================================================//

#define SQL_HOST "127.0.0.1"
#define SQL_USER "root"
#define SQL_PASS ""
#define SQL_DB 	 "drift"

#define Blue    "{003DF5}"
#define Red     "{FF0000}"
#define Green   "{66FF00}"
#define White   "{FFFFFF}"

#define DIALOG_REGISTER         100
#define DIALOG_LOGIN            101
#define DIALOG_POS              102

#define COLOR_CYAN 0x99FFFFAA
#define COLOR_INDIGO 0x4B00B0AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xFF0000FF
#define COLOR_LIME 0x10F441AA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0xFF0000FF
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_PINK 0xFF66FFAA
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{FF0000}"
#define COL_GREEN "{00FF00}"
#define GELTONA 0xFFFF00FF
#define BALTA 0xFFFFFFFF

#define MAX_MESSAGES 50
#define MAX_API_LENGTH 38
#define MAX_PLAYER_IP 15
#define MAX_REASON_LENGTH 50
#define MAX_EXTRA_LENGTH 63
#define MAX_TIME_LENGTH 5

#define PRESSED(%0) \
	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define IsPlayerNotInVehicle(%0) (!IsPlayerInAnyVehicle(%0))

//============================================================================//
//                                  New's                                     //
//============================================================================//

enum MessageInfo
{
        textmsg[182],
        colormsg
}
new Doggy, Bogdan, Carl, ProDrift;
new msg[100];
new car;
new Messages[MAX_MESSAGES][MessageInfo];
new CurrentMessageID;
new TimerAlreadyActivated;
new Text:Textdraw20;
new Text:Textdraw21;
new SpawnedVehicles[MAX_PLAYERS];
new COLORMENU;
new Nam[MAX_PLAYER_NAME];
new VehicleNames[212][] = {
{"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
{"Banshee"},{"Predator"},{"Bus"},{"Rihno"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
{"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
{"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
{"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
{"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
{"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
{"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
{"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
{"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
{"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
{"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
{"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
{"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
{"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
{"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
{"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
{"Utility Trailer"}
};

enum pInfo
{
    pScore,
    pMoney,
    pAdmin,
    pVIP,
    pSkin,
    pBanned,
    pBannedBy[24]
}

new PlayerInfo[MAX_PLAYERS][pInfo];
new MoneyGiven[MAX_PLAYERS];
new IsRegistered[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

//============================================================================//
//                                  Forwards                                  //
//============================================================================//

forward  	HideMessage1(playerid);
forward 	MessageToAdmins(color,const string[]);
forward 	SendAutoMessage();
forward 	TimeUpdate();
forward 	VehicleOccupied(vehicleid);
forward 	SaveStats();

//============================================================================//
//                                  Main                                      //
//============================================================================//

main(){}

//============================================================================//
//                                  Publics                                   //
//============================================================================//
public OnGameModeInit()
{

	SetTimer("SaveStats",4000,1);
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
 	mysql_query("CREATE TABLE IF NOT EXISTS playedata(user VARCHAR(24), password VARCHAR(40), score INT(20) NULL, money INT(20) NULL, admin INT(20) NULL, vip INT(20) NULL, skin INT(20) NULL, banned INT(20) NULL, bannedby VARCHAR(24), IP VARCHAR(15) )");
	mysql_debug(1);


	Textdraw20 = TextDrawCreate(647.000000, 0.000000, "New Textdraw");
	TextDrawBackgroundColor(Textdraw20, 255);
	TextDrawFont(Textdraw20, 1);
	TextDrawLetterSize(Textdraw20, 0.500000, 5.399997);
	TextDrawColor(Textdraw20, -1);
	TextDrawSetOutline(Textdraw20, 0);
	TextDrawSetProportional(Textdraw20, 1);
	TextDrawSetShadow(Textdraw20, 1);
	TextDrawUseBox(Textdraw20, 1);
	TextDrawBoxColor(Textdraw20, 255);
	TextDrawTextSize(Textdraw20, -167.000000, 76.000000);

	Textdraw21 = TextDrawCreate(647.000000, 342.000000, "New Textdraw");
	TextDrawBackgroundColor(Textdraw21, 255);
	TextDrawFont(Textdraw21, 0);
	TextDrawLetterSize(Textdraw21, 0.500000, 5.999996);
	TextDrawColor(Textdraw21, -1);
	TextDrawSetOutline(Textdraw21, 0);
	TextDrawSetProportional(Textdraw21, 1);
	TextDrawSetShadow(Textdraw21, 1);
	TextDrawUseBox(Textdraw21, 1);
	TextDrawBoxColor(Textdraw21, 255);
	TextDrawTextSize(Textdraw21, -167.000000, 76.000000);

    
    return 1;
}

public OnGameModeExit()
{
	TextDrawHideForAll(Textdraw20);
	TextDrawDestroy(Textdraw20);
	TextDrawHideForAll(Textdraw21);
	TextDrawDestroy(Textdraw21);
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	SetPlayerTime(playerid, 0, 0 );
	SetPlayerWeather( playerid, 17);
	SetPlayerPos(playerid,1679.2479,1447.9485,47.7780);
	SetPlayerFacingAngle(playerid, 89.8345);
	SetPlayerCameraPos(playerid,1667.3199,1447.8243,47.7780);
	SetPlayerCameraLookAt(playerid,1679.2479,1447.9485,47.7780);
	return 1;
}


public OnPlayerSpawn(playerid)
{

	SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);

	SetPlayerTime(playerid, 12, 0);
 	TextDrawHideForPlayer(playerid, Textdraw20);
	TextDrawHideForPlayer(playerid, Textdraw21);
    return 1;
}

public OnPlayerConnect(playerid)
{

	SetPlayerWeather( playerid, 17);
	SetPlayerTime(playerid, 0, 0 );


    SetPlayerColor(playerid, COLOR_WHITE);
	TextDrawShowForPlayer(playerid, Textdraw20);
	TextDrawShowForPlayer(playerid, Textdraw21);

	new pnamee[MAX_PLAYER_NAME], string[100 + MAX_PLAYER_NAME];
	GetPlayerName(playerid, pnamee, sizeof(pnamee));
	format(string, sizeof(string), "%s {FFFFFF}has joined the server", pnamee);
	SendClientMessageToAll(COLOR_LIME, string);

    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    MoneyGiven[playerid] = -1;
    new query[300], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT IP FROM `playedata` WHERE user = '%s' LIMIT 1", pname);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows)
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
    }
    if(rows == 1)
    {
        new IP[2][15];
        mysql_fetch_field_row(IP[0],"IP");
        GetPlayerIp(playerid, IP[1], 15);
        if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true))
        {
            MySQL_Login(playerid);
        }
        else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
            IsRegistered[playerid] = 1;
        }
	}
    mysql_free_result();
    return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
	new pnamee[24];
	new string[39 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, pnamee, sizeof(pnamee));
    switch(reason)
    {
        case 0: format(string, sizeof(string), "%s has left the server. (Lost Connection)", pnamee);
        case 1: format(string, sizeof(string), "%s has left the server.", pnamee);
    }
    SendClientMessageToAll(COLOR_GREY, string);
    return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	//================================================================//
    //                              MySQL part                        //
    //================================================================//

	if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            if(!strlen(inputtext) || strlen(inputtext) > 100)
            {
            	SendClientMessage(playerid,COLOR_RED, "ERROR: {FFFFFF}You must insert a password between 1-100 characters!");
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
            }
            else if(strlen(inputtext) > 0 && strlen(inputtext) < 100)
            {
                new escpass[100];
                mysql_real_escape_string(inputtext, escpass);
                MySQL_Register(playerid, escpass);
            }
        }
        if(!response)
        {
			Kick(playerid);
        }
    }
    if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
			Kick(playerid);
        }
        if(response)
        {
            if(strlen(inputtext) > 0 && strlen(inputtext) < 100)
			{
	            new query[200], pname[24], escapepass[100];
	            GetPlayerName(playerid, pname, 24);
	            mysql_real_escape_string(inputtext, escapepass);

	            format(query, sizeof(query), "SELECT `user` FROM playedata WHERE user = '%s' AND password = SHA1('%s')", pname, escapepass);
	            mysql_query(query);
	            mysql_store_result();
	            new numrows = mysql_num_rows();
	            if(numrows == 1) MySQL_Login(playerid);
	            if(!numrows)
	            {
             		ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
	            }
	            mysql_free_result();
            }
			else
			{
 	 		ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
			}
        }
    }
   	if(dialogid == COLORMENU)
	{
		if(response)
		 {
			if(listitem == 0)
			{
				SetPlayerColor(playerid, COLOR_BLUE);
			}
			if(listitem == 1)
			{
                SetPlayerColor(playerid, COLOR_YELLOW);
			}
			if(listitem > 1)
			{
                SetPlayerColor(playerid, COLOR_ORANGE);
			}
			if(listitem == 3)
			{
                SetPlayerColor(playerid, COLOR_PINK);
			}
			if(listitem == 4)
			{
                SetPlayerColor(playerid, COLOR_GREY);
			}
			if(listitem == 5)
			{
                SetPlayerColor(playerid, COLOR_INDIGO);
			}
			if(listitem == 6)
			{
                SetPlayerColor(playerid, COLOR_CYAN);
			}
		}
		return 1;
	}
	return 1;
}

//============================================================================//
//                                  Admin commands                            //
//============================================================================//

CMD:setadmin(playerid, params[])
{
	new levels, ID;
	new pname[MAX_PLAYER_NAME];
	new str[256];
	if(!IsPlayerAdmin(playerid))return 0;
    if(sscanf(params,"ui",ID,levels)) return SendClientMessage(playerid,COLOR_RED, "USAGE: /setadmin [ID] [Level 1-4]");//it will show this if you dont use the format properly
    if(levels > 2) return SendClientMessage(playerid,COLOR_RED,"LEVELS AVAILABLE 1-2!");//Available levels
    if(!IsPlayerConnected(ID))return SendClientMessage(playerid,COLOR_RED,"That user is not connected.");//Detect if the id/partofname is connected
    if(PlayerInfo[ID][pAdmin] == levels) return SendClientMessage(playerid,COLOR_RED, "ERROR: That person is already this admin level!");//Detect if the guy is already the level you setted
    GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//define the playerid name
    GetPlayerName(ID,pname,MAX_PLAYER_NAME);//define the other person name
    if(levels == 0)
    {
        format(str, sizeof(str),"%s has set your admin level to %d on the server.",Nam,levels);
        SendClientMessage(ID,COLOR_RED,str);
        format(str, sizeof(str),"You had set %s admin level to %d!",pname,levels);
        SendClientMessage(playerid,COLOR_RED,str);
        PlayerInfo[ID][pAdmin] = levels;//this sets the player level
        return 1;
    }
    format(str, sizeof(str),"%s has your Admin level to %d on the server.",Nam,levels);
    SendClientMessage(ID,COLOR_RED,str);
    format(str, sizeof(str),"You had set %s Admin level to %d!",pname,levels);
    SendClientMessage(playerid,COLOR_RED,str);
    PlayerInfo[ID][pAdmin] = levels;
    return 1;
}
//============================================================================//
//                                  Stocks /  Publics                         //
//============================================================================//
stock MySQL_Register(playerid, passwordstring[])
{
    new query[350], pname[24], IP[15];
    new Bannedby[20];
    format(Bannedby, 20, "Not Banned");
    GetPlayerName(playerid, pname, 24);
    GetPlayerIp(playerid, IP, 15);
    format(query, sizeof(query), "INSERT INTO playedata (user, password, score, money, admin, vip, skin, banned, bannedby, IP) VALUES('%s', SHA1('%s'), 0, 0, 0, 0, 0, 0, '%s', '%s')", pname, passwordstring, Bannedby, IP);
    mysql_query(query);
 	SendClientMessage(playerid,COLOR_LIME, "You have been registered on this server!");
    Logged[playerid] = 1;
    return 1;
}
stock MySQL_Login(playerid)
{
    new query[300], pname[24], savingstring[20];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT score, money, admin, vip, skin, banned, bannedby, FROM playedata WHERE user = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
        mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "admin"); PlayerInfo[playerid][pAdmin] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "vip"); PlayerInfo[playerid][pVIP] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "skin"); PlayerInfo[playerid][pSkin] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "banned"); PlayerInfo[playerid][pBanned] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "bannedby"); PlayerInfo[playerid][pBannedBy] = strval(savingstring);
    }
    mysql_free_result();
    Logged[playerid] = 1;
    SendClientMessage(playerid,COLOR_WHITE, "Welcome back, feel free to do what do you want!");
    return 1;
}
stock IsValidSkin(SkinID)
{
        if((SkinID >= 1 && SkinID <= 2)||(SkinID == 7)||(SkinID >= 9 && SkinID <= 41)||(SkinID >= 43 && SkinID <= 64)||(SkinID >= 66 && SkinID <= 73)||(SkinID >= 75 && SkinID <= 85)||(SkinID >= 87 && SkinID <= 118)||(SkinID >= 120 && SkinID <= 148)||(SkinID >= 150 && SkinID <= 207)||(SkinID >= 209 && SkinID <= 264)||(SkinID >= 274 && SkinID <= 288)||(SkinID >= 290 && SkinID <= 299)) return true;
        else return false;
}
stock AddRandomMessage(Msgcolor,Msgtext[])
{
        format(Messages[CurrentMessageID][textmsg],182,"%s",Msgtext);
        Messages[CurrentMessageID][colormsg] = Msgcolor;
        CurrentMessageID++;
        if(TimerAlreadyActivated == 0)
        {
                #if defined MESSAGE_DELAY
                SetTimer("SendAutoMessage",MESSAGE_DELAY*120000);
                #else
                SetTimer("SendAutoMessage",120000,true);
                #endif
                TimerAlreadyActivated = 1;
        }
        return 1;
}

public SendAutoMessage()
{
        new randmsg = random(CurrentMessageID);
        SendClientMessageToAll(Messages[randmsg][colormsg],Messages[randmsg][textmsg]);
        return 1;
}
stock Nitro(vehicleid)
{
   switch(GetVehicleModel(vehicleid))
   {
     case
          520:
          return false ;
   }
   return true ;
}
public MessageToAdmins(color,const string[])
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	if(IsPlayerConnected(i) == 1)
	if(PlayerInfo[i][pAdmin] > 0)
	SendClientMessage(i, COLOR_LIME ,string);
	}
	return 1;
}
GetVehicleModelIDFromName(vname[])
{
	for(new i = 0; i < 211; i++)
	{
	if ( strfind(VehicleNames[i], vname, true) != -1 )
	return i + 400;
	}
	return -1;
}
////////////////////////////////////////////////////////////////////////////////

stock IsNumeric(string[])
{
	for (new i = 0, j = strlen(string);
	i < j; i++)
	{
	if (string[i] > '9' || string[i] < '0')
	return 0;
	}
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
stock strtok(const str[], &index)
{
	new length = strlen(str);
	while ((index < length) && (str[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (str[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = str[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
////////////////////////////////////////////////////////////////////////////////
public VehicleOccupied(vehicleid)
{
	for(new i=0;i<MAX_PLAYERS;i++)
	{
		if(IsPlayerInVehicle(i,vehicleid)) return 1;
	}
	return 0;
}
public SaveStats()
{
    for(new i;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
			new playerid;
		    SavePlayer(playerid);
        }
    }
    return 1;
}

stock SavePlayer(playerid)
{
    if(Logged[playerid] == 1)
    {
        new score = GetPlayerScore(playerid);
        new money = GetPlayerMoney(playerid);
        new query[300], pname[24];
        GetPlayerName(playerid, pname, 24);
        format(query, sizeof(query), "UPDATE playedata SET score=%d, money=%d, admin=%d, vip=%d, skin=%d, banned=%d, bannedby='%s' WHERE user='%s'",score, money, PlayerInfo[playerid][pAdmin] ,PlayerInfo[playerid][pVIP] ,PlayerInfo[playerid][pSkin] ,
        PlayerInfo[playerid][pBanned],
        PlayerInfo[playerid][pBannedBy],
        pname);
        mysql_query(query);
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)