PDA

Просмотр полной версии : [Вопрос] Максимальное кол-во pVar для игрока



vovandolg
05.02.2016, 09:40
Определитесь уже, что Вы хотите использовать: PVar'ы ("tazer") или переменные (массив tazer_status).
P.S.: 2-й вариант желательнее, т.к. кол-во PVar'ов у каждого игрока ограничено.
Можно узнать сколько максимум PVar'ов можно юзать для каждого игрока?

DeimoS
05.02.2016, 11:50
Можно. Достаточно написать простой код, типа:

public OnPlayerConnect(playerid)
{
printf("До - %d", GetPVarsUpperIndex(playerid));
for(new i, string[30]; i < 1000000; i++)
{
format(string, sizeof(string), "pVarID_%d", i);
SetPVarInt(playerid, string, 1);
}
printf("После - %d", GetPVarsUpperIndex(playerid));
return 1;
}
И получится, что pVar всего 800 одновременно может "жить"

vovandolg
05.02.2016, 11:56
Всего 800 для одного игрока или всего всея мода?)

Profyan
05.02.2016, 12:02
Всего 800 для одного игрока или всего всея мода?)

Ты же создаешь для игрока.Поэтому логично предположить,что 800 - это лимит для одного игрока.

vovandolg
05.02.2016, 12:31
Это то да, но есть запасные варианты "а если", "а вдруг" вот и уточнил)
Тему можно закрывать.

Daniel_Cortez
05.02.2016, 13:15
Можно. Достаточно написать простой код, типа:

public OnPlayerConnect(playerid)
{
printf("До - %d", GetPVarsUpperIndex(playerid));
for(new i, string[30]; i < 1000000; i++)
{
format(string, sizeof(string), "pVarID_%d", i);
SetPVarInt(playerid, string, 1);
}
printf("После - %d", GetPVarsUpperIndex(playerid));
return 1;
}
И получится, что pVar всего 800 одновременно может "жить"
Зачем же тратить время на целый миллион итераций? Если превышен лимит PVar'ов, функция SetPVarInt вернёт 0 (в случае успеха возвращается 1), это и можно сделать условием выхода из цикла.
Примерно по такому же принципу я искал лимит SVar'ов (2000) в прошлом году: http://forum.sa-mp.com/showpost.php?p=3525533&postcount=161