Загрузка и сохранение в MySQL
Короткий урок об загрузке и сохранении скилла в базу данных.
Допустим скиллы будут храниться в константе pSkill в энуменаторе p_info.
enum p_info
{
pSkill[11] //11 - общее количество оружия, которым можно указать скилл [0..10]
};
new pInfo[MAX_PLAYERS][p_info];
Дальше перехватываем функцию SetPlayerSkillLevel и добавляем в нее сохранение скилла в переменную.
stock samp__SetPlayerSkillLevel(playerid, skill, level);
{
SetPlayerSkillLevel(playerid, skill, level);
return pInfo[playerid][pSkill][skill] = level;
}
#if defined _ALS_SetPlayerSkillLevel
#undef SetPlayerSkillLevel
#else
#define _ALS_SetPlayerSkillLevel
#endif
#define SetPlayerSkillLevel samp__SetPlayerSkillLevel
В коллбэк завершения регистрации/авторизации:
for (new i = 0; i < 11; i++)
{
SetPlayerSkillLevel(playerid, i, pInfo[playerid][pSkill][i]);
}
В дисконнект после сохранения:
for (new i = 0; i < 11; i++)
{
pInfo[playerid][pSkill][i] = 0;
}
Сохранение в MySQL R39
stock Save(playerid)
{
static
str[] = "UPDATE `accounts` SET `Skill` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `pID` = '%d'";
new
string[sizeof str + 11*3 + 11 - 2*12];
format(string, sizeof string, str,
pInfo[playerid][pSkill][0],
pInfo[playerid][pSkill][1],
pInfo[playerid][pSkill][2],
pInfo[playerid][pSkill][3],
pInfo[playerid][pSkill][4],
pInfo[playerid][pSkill][5],
pInfo[playerid][pSkill][6],
pInfo[playerid][pSkill][7],
pInfo[playerid][pSkill][8],
pInfo[playerid][pSkill][9],
pInfo[playerid][pSkill][10],
);
mysql_function_query(myBD, string, false, "", "");
return 1;
}
Сохранение в MySQL R40
stock Save(playerid)
{
static
str[] = "UPDATE `accounts` SET `Skill` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `pID` = '%d'";
new
string[sizeof str + 11*3 + 11 - 2*12];
format(string, sizeof string, str,
pInfo[playerid][pSkill][0],
pInfo[playerid][pSkill][1],
pInfo[playerid][pSkill][2],
pInfo[playerid][pSkill][3],
pInfo[playerid][pSkill][4],
pInfo[playerid][pSkill][5],
pInfo[playerid][pSkill][6],
pInfo[playerid][pSkill][7],
pInfo[playerid][pSkill][8],
pInfo[playerid][pSkill][9],
pInfo[playerid][pSkill][10]
);
mysql_tquery(myBD, string, "", "");
return 1;
}
Загрузка в MySQL R39
public Upload(playerid)
{
new
buffer[50];
//Для загрузки понадобится плагин sscanf2
sscanf(buffer, "p<|>iiiiiiiiiiiii",
pInfo[playerid][pSkill][0],
pInfo[playerid][pSkill][1],
pInfo[playerid][pSkill][2],
pInfo[playerid][pSkill][3],
pInfo[playerid][pSkill][4],
pInfo[playerid][pSkill][5],
pInfo[playerid][pSkill][6],
pInfo[playerid][pSkill][7],
pInfo[playerid][pSkill][8],
pInfo[playerid][pSkill][9],
pInfo[playerid][pSkill][10]
);
cache_get_field_content(0, "Skill", buffer, myBD, 50);
return 1;
}
Загрузка в MySQL R40
public Upload(playerid)
{
new
buffer[50];
//Для загрузки понадобится плагин sscanf2
sscanf(buffer, "p<|>iiiiiiiiiiiii",
pInfo[playerid][pSkill][0],
pInfo[playerid][pSkill][1],
pInfo[playerid][pSkill][2],
pInfo[playerid][pSkill][3],
pInfo[playerid][pSkill][4],
pInfo[playerid][pSkill][5],
pInfo[playerid][pSkill][6],
pInfo[playerid][pSkill][7],
pInfo[playerid][pSkill][8],
pInfo[playerid][pSkill][9],
pInfo[playerid][pSkill][10]
);
cache_get_value_name(0, "Skill", buffer);
return 1;
}
Сообщение отредактировал m1n1vv: 31 января 2017 - 21:31