"Все заглавные - значит все буквы верхнего регистра до единой." - в таком случае, не знаю, как для остальных, но, лично для меня, сильно падает читабельность кода.
Вид для печати
Так у тебя вначале :
?? что тут не читабельного, так-же в предыдущим сообщение я оставил примечание: "Да и обычно оператором "const" выделяют вроде как максимальное значение чего либо,я бы оставил просто энуменатор id диалогов, и варианты никакие не нужны.", как у тебя это сделано сейчас.PHP код:
const
MAX_ADMIN_TELEPORTS = 2, // Максимальное количество телепортов. При добавлении нового телепорта инкрементируйте данное значение (добавляйте +1 к значению).
MAX_ADMIN_TELEPORT_NAME = 17, // Максимальное количество символов в названии телепорта
MAX_AT_SECTIONS_NAME = 28; // Максимальное количество символов в названии раздела телепортов
Да, думаю, что самое время попробовать :)
Уже нашёл информацию от DC по поводу перехватов. Попробую освоить в ближайшее время, и, если всё будет благополучно - постараюсь реализовать твою задумку по поводу FS/Include :good2:
Upd: обновил первый пост (убрал вариант с константами для диалогов).
Update: Релиз системы в include.
Ссылка на скачивание в первом посте.
P.S Сегодня осилил только знакомство с перехватами и написание include-версии.
P.S.S Возможно, в скором времени, при наличии времени, займусь реализацией обновлений (но это не точно :D)
Мне кажется можно избежать циклов, когда игрок входит/выходит в динамическую зону (если создаются динамические зоны одновременно, то есть в данном случае)
Да и не совсем понятно зачем было создавать итератор, если ты их используешь лишь в данных пабликах :grin:PHP код:
public OnPlayerEnterDynamicArea(playerid, areaid) // Когда игрок входит в динамическую зону
{
if(atInfo[0][atDynamicArea] <= areaid <= atInfo[MAX_ADMIN_TELEPORTS - 1][atDynamicArea])
{
new
cout = areaid - atInfo[0][atDynamicArea];
atInfo[cout][atNumberOfPlayers]++; // Инкрементируем количество игроков в указанной динамической зоне
if(atData[cout][atGreenZone] == 1) // Если зона, в которую вошёл игрок, является "зелёной" (anti-dm)
{
p_green_zone_status{playerid} = 1; // Устанавливаем игроку статус "находится в зелёной зоне"
SetPVarInt(playerid, "damage_in_green_zone", 0); // Устанавливаем игроку количество попыток нанести урон в "зелёной зоне" на 0
}
return 1;
}
return 1;
}
public OnPlayerLeaveDynamicArea(playerid, areaid) // Когда игрок покидает динамическую зону
{
if(atInfo[0][atDynamicArea] <= areaid <= atInfo[MAX_ADMIN_TELEPORTS - 1][atDynamicArea])
{
new
cout = areaid - atInfo[0][atDynamicArea];
atInfo[cout][atNumberOfPlayers]--; // Декрементируем количество игроков в указанной динамической зоне
if(atData[cout][atGreenZone] == 1) // Если зона, из которой вышел игрок, является "зелёной" (anti-dm)
{
p_green_zone_status{playerid} = 0; // Устанавливаем игроку статус "не находится в зелёной зоне"
DeletePVar(playerid, "damage_in_green_zone"); // Удаляем PVar с информацией о количестве попыток нанести урон в "зелёной зоне"
}
return 1;
}
return 1;
}
С учётом того, что это паблик-система, цикл тут является защитой "от дурака". Если до вызова функции с загрузкой зон будет создано несколько динамических зон, а потом какая-нибудь одна из зон будет удалена, твой код уже не будет работать нормально
Чтоб быстрее искать нужную зону?
Хотя вообще такое актуально только для ситуаций, когда зоны могут во время работы сервера удаляться. Если удаления нет, то можно обойтись обычным циклом.