PDA

Просмотр полной версии : [Вопрос] Не получается сделать обновление данных в оффлайне и в онлайне.



Сергей
21.12.2018, 22:34
Доброго времени суток, проблема вот в чем, не получается сделать обновление данных игрока КАК онлайн, так и оффлайн.
Образно говоря, делаем запрос в базу данных, получаем из неё ответ, выясняется то, что у нас 2 игрока онлайн, и 2 игрока оффлайн.

Мы обновляем данные, как для оффлайн игроков, так и для онлайн игроков...
Помогите реализовать.


new mysql_Str[90];
format(mysql_Str, sizeof(mysql_Str), "SELECT * FROM `"UPD_save"` WHERE `frac_rank`='%d' AND `id_frack`='%d'", id_rank,id_frack);
mysql_function_query(MysqlConnect,mysql_Str, true, "AnsW_CallBack","ddd",playerid,id_rank,id_frack);



forward AnsW_CallBack(playerid,num_id,id_frs);
public AnsW_CallBack(playerid,num_id,id_frs)
{
new rows, fields;
cache_get_data(rows, fields,MysqlConnect);
// И вот теперь проблема
// Нужно обновить информацию как онлайн игрокам, так и игрокам которые в оффлайне. 4-рым игрокам сразу
return 1;
}

m1n1vv
22.12.2018, 05:52
Хз как у тебя версия MySQL


//Выдаю онлайн и оффлайн игрокам по $250 000
forward AnsW_CallBack(num_id, id_frs);
public AnsW_CallBack(num_id, id_frs)
{
static const
str[] = "UPDATE `accounts` SET `Money` = '%i', WHERE `ID` = '%i'";

new
id,
rows,
fields,
name[MAX_PLAYER_NAME],
playerid,
money,
string[sizeof str + 11*2 -2*2];

cache_get_data(rows, fields, MysqlConnect);

for (new i = 0; i < rows; i++)
{
cache_get_value_name(i, "Name", name, MAX_PLAYER_NAME);
cache_get_value_name_int(i, "Money", money);
cache_get_value_name_int(i, "ID", id);

money += 250000;

playerid = INVALID_PLAYER_ID;

foreach (new j: Player)
{
if(!strcmp(pInfo[j][pName], name)) //pInfo[j][pName] - переменная с именем игрока на сервере
{
playerid = j;
}
}

if (playerid != INVALID_PLAYER_ID)
{
pInfo[playerid][pMoney] = money;
}
else
{

format(string, sizeof string, str, money, id);
mysql_function_query(MysqlConnect, string, false, "", "");
}
}
return 1;
}

Сергей
22.12.2018, 13:54
Спасибо. Можно закрывать тему.