И тем не менее лучше использовать foreach?
Вид для печати
Конечно. Ты избавляешься от лишних итераций, избавляешься от проверок IsPlayerConnected и IsPlayerNPC.
Кстати, если ты планируешь использовать NPC, то использование GetPlayerPoolSize вообще теряет смысл, так как ID у NPC начинаются с последнего.
Более того, foreach - это не просто перебор игроков, это целая библиотека, которая позволяет создавать новые итераторы. Вот, например, перебор транспорта: http://pro-pawn.ru/showthread.php?13...нспорта
Вот так я использую foreach для работы со слотами банды:
Так с членами банды:PHP код:
static
Iterator:LoadedGangs<MAX_GANG>
stock Gang_IsActive(gangid)
{
return Iter_Contains(LoadedGangs, gangid);
}
stock Gang_SetActiveStatus(gangid, bool:status, bool:safe = false, &next_value = 0)
{
if (status) {
Iter_Add(LoadedGangs, gangid);
} else {
if (safe) {
Iter_SafeRemove(LoadedGangs, gangid, next_value);
} else {
Iter_Remove(LoadedGangs, gangid);
}
}
}
stock Gang_GetFreeSlot()
{
return Iter_Free(LoadedGangs);
}
Применений масса.PHP код:
new
Iterator:LoadedGangMembers[MAX_GANGS]<MAX_GANG_SIZE>;
GangMember_OnGameModeInit()
{
Iter_Init(LoadedGangMembers);
}
stock GangMember_IsActive(gangid, memberid)
{
return Iter_Contains(LoadedGangMembers[gangid], memberid);
}
stock GangMember_SetActiveStatus(gangid, memberid, bool:status, bool:safe = false, &next_value = 0)
{
if (status) {
Iter_Add(LoadedGangMembers[gangid], memberid);
} else {
if (safe) {
Iter_SafeRemove(LoadedGangMembers[gangid], memberid, next_value);
} else {
Iter_Remove(LoadedGangMembers[gangid], memberid);
}
}
}
stock GangMember_GetFreeSlot(gangid)
{
return Iter_Free(LoadedGangMembers[gangid]);
}
Вопрос: в чём разница между sscanf и sscanf2 кроме версии? Какую версию использовать желательнее?
Где-то на форуме говорилось, что PVar лучше использовать для "недолго-хранящихся" данных. Был совет, например, для проверки авторизации игрока, создавать массив. Верна ли данная теория? И в таком случае, для хранения ID секундного таймера игрока, например, лучше использовать массив на MAX_PLAYERS?
Об этом говорилось здесь. И там объяснялось почему эта "теория" верна.
Ну если таймер существует всё время, пока игрок находится на сервере, какой профит от использования pVar?
Никакого, я полагаю. Просто я думаю, как же всё же лучше хранить его, в PVar или в массиве. Его ведь надо удалить при выходе игрока с сервера. Таймеры работ, я полагаю, можно хранить в PVar, а вот уже секундный таймер игрока в массиве, верно?
menu1.txt сам удаляется из папки scriptfiles, вероятнее всего после рестарта, но точно не ясно. Как исправить?
Такой вопрос, если сделать макрос какой нибудь и он будет использоваться во многих участках кода,
то он как то повлияет на быстродействие компилирования или быстродействие в самой игре?