Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

По MySQL R7 - как сделать сохранения при выключении мода

Статус
В этой теме нельзя размещать новые ответы.

dimazhelek

Эксперт
Пользователь
Регистрация
5 Май 2013
Сообщения
1,479
Лучшие ответы
0
Репутация
382
Помогите пожалуйста! У меня при дисконнекте с сервера все отлично сохраняет, но если я выключу и включу мод то у меня сохранит только: Ник, ключ, лвл, а переменную тест, и деньги не сохраняет

PHP:
#include <a_samp>
#include <a_mysql>
#include <streamer>
#include <zcmd>
#include <sscanf2>
#define mysql_host "localhost"
#define mysql_db "new"
#define mysql_user "root"
#define mysql_pass ""
#define COLOR_WHITE 0xFFFFFFAA
#include "../include/gl_common.inc"
#include <foreach>


new connectionHandle;
enum pInfo
{
    Key[128],
    Level[60],
    Money,
    Test
};
new PlayerInfo[MAX_PLAYERS][pInfo];

#define send(%0,%1) SendClientMessage(%0, -1, %1)

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
}

#endif

public OnGameModeInit()
{
    connectionHandle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
    if(mysql_ping() != 1) print("MySQL ñîåäèíåíèå, false.");
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
    SaveAccounts();
    mysql_close(connectionHandle);
	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 str[128];
    mysql_real_escape_string(Name(playerid), Name(playerid));
    format(str, sizeof(str),"SELECT `Name` FROM `Accounts` WHERE `Name` = '%s'", Name(playerid));
    mysql_function_query(connectionHandle, str, true, "OnPlayerRegCheck","d", playerid);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SaveKey(playerid);
    SaveMoney(playerid);
    SaveTest(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
    if(!GetPVarInt(playerid, "Logged")) return true;
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
    if(!GetPVarInt(playerid, "Logged")) return true;
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

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)
{
	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)
{
    SetMoney(playerid, PlayerInfo[playerid][Money]);
	SetPlayerScore(playerid, PlayerInfo[playerid][Level]);
	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[])
{
    switch(dialogid)
    {
         case 1:
        {
            if(!strlen(inputtext))return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Ðåãèñòðàöèÿ","____________________________________________\nÄîáðî ïîæàëîâàòü íà ñåðâåð!\nÂàø àêêàóíò íå çàðåãèñòðèðîâàí!\n\nÂâåäèòå ïàðîëü:\n____________________________________________","Äàëåå","Îòìåíà");
            OnPlayerRegister(playerid,inputtext);
            return 1;
        }
        case 2:
        {
            if(!strlen(inputtext))return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Àâòîðèçàöèÿ","____________________________________________\nÇäðàâñòâóéòå!\n\nÂû çàðåãèñòðèðîâàíû!\nÂâåäèòå ïàðîëü:\n____________________________________________","Âõîä","Îòìåíà");
            OnPlayerLogin(playerid,inputtext);
            return 1;
        }
    }
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}
stock Name(i) { new pl[24]; GetPlayerName(i, pl, 24); return pl; }

forward OnPlayerRegCheck(playerid);
public OnPlayerRegCheck(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new rows, fields;
        cache_get_data(rows, fields);
        if(rows)
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Àâòîðèçàöèÿ","\n____________________________________________\nÇäðàâñòâóéòå!\n\nÂû çàðåãèñòðèðîâàíû!\nÂâåäèòå ïàðîëü:\n____________________________________________","Âõîä","Îòìåíà");
        else
            ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Ðåãèñòðàöèÿ","____________________________________________\nÄîáðî ïîæàëîâàòü íà ñåðâåð!\nÂàø àêêàóíò íå çàðåãèñòðèðîâàí!\n\nÂâåäèòå ïàðîëü:\n____________________________________________","Äàëåå","Îòìåíà");
    }
    return 1;
}

stock OnPlayerRegister(p, password[])
{
    new str[128];
    format(str, sizeof(str), "INSERT INTO `accounts` (`Name`, `Key`) VALUES ('%s', '%s')", Name(p), password);
    mysql_function_query(connectionHandle, str, false, "RegisterCallback","d", p);
    return 1;
}

forward RegisterCallback(playerid);
public RegisterCallback(playerid)
{
    send(playerid,"Ðåãèñòðàöèÿ ïðîøëà óñïåøíî!");
    PlayerInfo[playerid][Level] = 1;
    PlayerInfo[playerid][Money] = 0;
    SetPVarInt(playerid,"Logged", 1), SpawnPlayer(playerid);
    return 1;
}

stock SaveKey(playerid)
{
    new src[128],query[256];
    format(query,sizeof(query),"UPDATE 'accounts' SET ");
    format(src,sizeof(src),"UPDATE `Accounts` SET `Key` = '%d'", PlayerInfo[playerid][Key]);
    format(src,sizeof(src)," WHERE `Name`='%s'",Name(playerid));
    strcat(query,src,sizeof(query));
    mysql_query(src, -1, 0, connectionHandle);
    return true;
}
stock SaveLevel(p)
{
    if(GetPVarInt(p,"Logged") > 0)
    {
        new str[128];
        format(str,sizeof(str),"UPDATE `Accounts` SET `Level` = '%d'", PlayerInfo[p][Level]);
        format(str, sizeof(str),"%s WHERE `Name` = '%s'", str, Name(p));
        mysql_query(str, -1, 0, connectionHandle);
    }
     return 1;
}
stock SaveMoney(p)
{
    if(GetPVarInt(p,"Logged") > 0)
    {
        new str[128];
        format(str,sizeof(str),"UPDATE `Accounts` SET `Money` = '%d'", PlayerInfo[p][Money]);
        format(str, sizeof(str),"%s WHERE `Name` = '%s'", str, Name(p));
        mysql_query(str, -1, 0, connectionHandle);
    }
     return 1;
}
stock SaveTest(p)
{
    if(GetPVarInt(p,"Logged") > 0)
    {
        new str[128];
        format(str,sizeof(str),"UPDATE `Accounts` SET `Test` = '%d'", PlayerInfo[p][Test]);
        format(str, sizeof(str),"%s WHERE `Name` = '%s'", str, Name(p));
        mysql_query(str, -1, 0, connectionHandle);
    }
     return 1;
}
stock OnPlayerLogin(i, password[])
{
    new str[128];
    format(str, sizeof(str),"SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Key` = '%s'", Name(i), password);
    mysql_function_query(connectionHandle, str, true, "LoginCallback","ds", i, password);
    return 1;
}

forward LoginCallback(i, password[]);
public LoginCallback(i, password[])
{
    new rows, fields, string[144], maximum[128];
    cache_get_data(rows, fields);
    if(!rows)
    {
          	if(GetPVarInt(i, "wrongPass") == 2) return send(i,"Âû ââåëè 3 ðàçà íåâåðíûé ïàðîëü, ïîýòîìó áûëè êèêíóòû ñåðâåðîì."), Kick(i);
   			SetPVarInt(i, "wrongPass", GetPVarInt(i, "wrongPass")+1);
         	format(string, sizeof(string), "Íåâåðíûé ïàðîëü(îñòàëîñü %i/3)\nÂâåäèòå ïàðîëü:", 3 - GetPVarInt(i, "wrongPass"));
          	ShowPlayerDialog(i, 2, DIALOG_STYLE_PASSWORD, "Àâòîðèçàöèÿ", string, "Âõîä", "Îòìåíà");
        return 1;
    }
    cache_get_field_content(0, "Level", maximum), PlayerInfo[i][Level] = strval(maximum);
    SetPVarInt(i, "Logged", 1);
    send(i, "Âû óñïåøíî àâòîðèçîâàëèñü!");
    SpawnPlayer(i), SaveKey(i), SaveMoney(i), SaveTest(i);
    return 1;
}
stock GiveMoney(playerid, amount)
{
    PlayerInfo[playerid][Money] += amount;
    GivePlayerMoney(playerid, amount);
}
//------------------------------------------------------------------------------
stock SetMoney(playerid, amount)
{
    PlayerInfo[playerid][Money] = amount;
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, amount);
}
stock SaveAccounts()
{
    foreach(Player, i)
	{
        if(!IsPlayerConnected(i)) continue;
		SaveKey(i);
		SaveLevel(i);
		SaveMoney(i);
		SaveTest(i);
	}
    return 1;
}
CMD:g(playerid, params[])
{
	if(GetPVarInt(playerid, "Logged") == 0) return 1;
	if(sscanf(params, "ud", params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE, "Ââåäèòå: /givemoney [id èãðîêà] [êîë-âî äåíåã]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Èãðîê íå â ñåòè!");
	if(params[1] > 10000000 || params[1] < 1) return SendClientMessage(playerid, COLOR_WHITE, "Êîë-âî äåíåã îò 1 äî 10000000!");
	GiveMoney(params[0], params[1]);
	return 1;
}
CMD:b(playerid)
{
	PlayerInfo[playerid][Test] ++;
	return true;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу