Конечно. Ты избавляешься от лишних итераций, избавляешься от проверок 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]);
}
Последний раз редактировалось ziggi; 07.03.2016 в 16:06.
Kazoox (07.03.2016)
Вопрос: в чём разница между sscanf и sscanf2 кроме версии? Какую версию использовать желательнее?
Kazoox (07.03.2016)
Где-то на форуме говорилось, что PVar лучше использовать для "недолго-хранящихся" данных. Был совет, например, для проверки авторизации игрока, создавать массив. Верна ли данная теория? И в таком случае, для хранения ID секундного таймера игрока, например, лучше использовать массив на MAX_PLAYERS?
Об этом говорилось здесь. И там объяснялось почему эта "теория" верна.
Ну если таймер существует всё время, пока игрок находится на сервере, какой профит от использования pVar?
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Никакого, я полагаю. Просто я думаю, как же всё же лучше хранить его, в PVar или в массиве. Его ведь надо удалить при выходе игрока с сервера. Таймеры работ, я полагаю, можно хранить в PVar, а вот уже секундный таймер игрока в массиве, верно?
Последний раз редактировалось Alexok; 07.03.2016 в 22:23.
menu1.txt сам удаляется из папки scriptfiles, вероятнее всего после рестарта, но точно не ясно. Как исправить?
Такой вопрос, если сделать макрос какой нибудь и он будет использоваться во многих участках кода,
то он как то повлияет на быстродействие компилирования или быстродействие в самой игре?
[Anticheat]___Invisible Fly Hack
[Anticheat]____Weapon/Ammo Hack
[Function]______ResetPlayerWeaponSlot
[Function]_______FIX_SetPlayerAmmo
[ServerMod]______TDM | Zombie Apokalypse
Эту тему просматривают: 6 (пользователей: 0 , гостей: 6)