Ни с того, ни с сего перестали работать два динамических чекпоинта. Стример последней версии.
1.
2.
Другие динамические чекпоинты работают исправно
Вид для печати
И скинь строку из логов при взятии неработающих чекпоинтовPHP код:
public OnPlayerEnterDynamicCP(playerid,checkpointid)
{
printf("\n\n%d (%d|%d)\n\n",checkpointid, musor_info[0][mCP], musor_info[MAX_MUSORS-1][mCP]);
if(checkpointid >= musor_info[0][mCP] && checkpointid <= musor_info[MAX_MUSORS-1][mCP])
{
SendClientMessage(playerid, -1, "a");
}
}
P.S. Перенёс тему в раздел с вопросами
Наступал по разу на три чекпоинтаPHP код:
[07:50:17]
41 (1|0)
[07:50:19]
42 (1|0)
[07:50:23]
43 (1|0)
Эмм, у тебя musor_info[MAX_MUSORS-1][mCP] хранит нуль.
Сейчас у тебя условие выглядит так:
И ни одно значение никогда не попадёт под это условие.PHP код:
if(42 >= 1 && 42 <= 0)
Либо ты не создаёшь достаточно чекпоинтов, оставляя последнюю ячейку пустой, либо какая-то ошибка при создании есть.
А причём тут значение MAX_MUSORS? Через "MAX_MUSORS-1" ты обращался к ячейке массива и использовал в условии именно значение ячейки, а не значение "MAX_MUSORS".
Чтоб всё работало как нужно, следует целиком заполнять массив данными или хотя бы последний чекпоинт заносить в последнюю ячейку (но это будет нелогично и глупо).
А если тебе нужно оставить свободные ячейки для последующего создания новых чекпоинтов, при этом, ты так же хочешь их и удалять прямо из игры, то надёжнее всего создать итератор с MAX_MUSORS ячеек и записывать в него номера занятых ячеек. Тогда условие будет выглядеть так:
if(checkpointid >= musor_info[0][mCP] && checkpointid <= musor_info[Iter_Last(/*имя итератора*/)][mCP])
Ну а если удалять из игры не собираешься, то можно просто создать переменную, которая будет хранить в себе индекс последней занятой ячейки и уже в условии вызывать эту переменную вместо "MAX_MUSORS-1"