В адресуемом "pulic xxxx" будут только с 6,7 или то что укажете в запросе:PHP код:
"SELECT `nickname`,`p_leader`,`online_status` FROM `"TABLE_ACC"` WHERE `p_leader` in (6,7)"
Пример
PHP код:
in (6,7,8,10,200,555,5555)
В адресуемом "pulic xxxx" будут только с 6,7 или то что укажете в запросе:PHP код:
"SELECT `nickname`,`p_leader`,`online_status` FROM `"TABLE_ACC"` WHERE `p_leader` in (6,7)"
Пример
PHP код:
in (6,7,8,10,200,555,5555)
Последний раз редактировалось seriu; 09.02.2019 в 00:41.
Сергей (09.02.2019)
Сергей (09.02.2019)
При авторизации, регистрации записывается ид игрока туда
Как оно записывается в переменную, если она не глобальная? Тогда может лучше так?
PHP код:
mysql_function_query(MysqlConnect, "SELECT `p_leader`,`online_status`,`nickname` FROM `"TABLE_ACC"`", true, "OnCheckLEADCallBack","i", playerid);
forward OnCheckLEADCallBack(playerid);
public OnCheckLEADCallBack(playerid)
Сергей (09.02.2019)
Так оно так-бы и было))
Так а что делать с этим то?
Ищу лидеров фракций.
Далее отсеиваю игроков, у которых ячейка p_leader равна 0
Далее, если нашло лидера Фракции 6 - Я получаю его имя, ровно так-же и с 7 фракцией.
НО, если игроков с такой лидеркой не нашло, я присваиваю переменной "Нет"
Вот, что снова, так сказать получилось по моей задумке:
На выходе имеем:PHP код:
forward OnCheckLEADCallBack();
public OnCheckLEADCallBack()
{
new
rows,
fields,
pl_leader,
name[MAX_PLAYER_NAME+1],names[MAX_PLAYER_NAME+1];
cache_get_data(rows, fields, MysqlConnect);
if(rows == 0) return 1;
new count[2];
for(new i = 0; i < rows; i++)
{
pl_leader = cache_get_field_content_int(i, "p_leader", MysqlConnect);
if(pl_leader == 6)
{
if(count[0] == 0)
{
cache_get_field_content(i, "nickname", name, MysqlConnect, MAX_PLAYER_NAME);
count[0] ++;
}
}
if(pl_leader == 7)
{
if(count[1] == 0)
{
cache_get_field_content(i, "nickname", names, MysqlConnect, MAX_PLAYER_NAME);
count[1]++;
}
}
}
if(count[0] == 0) strmid(name, "Нет", 0, strlen("Нет"), 4);
if(count[1] == 0) strmid(names, "Нет", 0, strlen("Нет"), 4);
printf("На выходе получаем: Фракция 1: %s | Фракция 2: %s",name,names);
return 1;
}
Или же при отсутствия игроков с данными лидерками:PHP код:
На выходе получаем: Фракция 1: Нет | Фракция 2: Test_Account
Вот и я хотел добиться такого-же эффекта, только с меньшими затратами, вот прямо чую, что можно сделать в 50 раз лучше, но, не пойму как...PHP код:
На выходе получаем: Фракция 1: Нет | Фракция 2: Нет
А получение онлайн статуса теперь в принципе не нужно. Так-как изменил задумку данной фичи)
Последний раз редактировалось Сергей; 09.02.2019 в 03:43.
Тебе двое людей выше уже сказали, что выборку лучше делать на стороне субд, чем циклом вручную.
PHP код:
mysql_function_query(MysqlConnect, !"SELECT `nickname`,`p_leader` FROM `"TABLE_ACC"` WHERE `p_leader` in (6,7)",
true, !"OnCheckLEADCallBack", "");
forward OnCheckLEADCallBack();
public OnCheckLEADCallBack()
{
new rows,
fields,
name1[MAX_PLAYER_NAME+1] = "Нет",
name2[MAX_PLAYER_NAME+1] = "Нет";
cache_get_data(rows, fields, MysqlConnect);
if(rows == 0) goto SKIP_CYCLE;
for(new i; i < rows; i++)
{
if(cache_get_field_content_int(i, "p_leader", MysqlConnect) == 6)
{
name1[0] = EOS;//не помню, чистит ли cache_get_field_content строку, если да - удалить это поле
cache_get_field_content(i, "nickname", name1, MysqlConnect, MAX_PLAYER_NAME);
}
else
{
name2[0] = EOS;
cache_get_field_content(i, "nickname", name2, MysqlConnect, MAX_PLAYER_NAME);
}
}
SKIP_CYCLE:
printf("На выходе получаем: Фракция 6: %s | Фракция 7: %s", name1, name2);
return 1;
}
Последний раз редактировалось UnO; 09.02.2019 в 04:50.
Сергей (09.02.2019)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)