Помогите с if и массивом

korneew1288

Новичок
Автор темы
2
0
Ситуация такая.
Код:
        new Day, Month, Year;
        new date[13];
        getdate(Year, Month, Day);
        format(date,sizeof(date),"%02d.%02d.%d", Day, Month, Year);
        if(playerInfo[playerid][LastDate] == date[0])
        {
            SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
            SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
        }
        else SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0);
        printf("last_x: %f\nlast_y: %f\nlast_z: %f\nVirualWorldId: %d\ndate: %s\nLastData: %s", playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], playerInfo[playerid][VirualWorldId],date[0],playerInfo[playerid][LastDate]);

        return SpawnPlayer(playerid);

Консоль
Код:
last_x: 655.232971
last_y: -561.672973
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 01.03.2022

Моя идея такова. Зашел на сервер, если LastDate и полученная только что Date совпадают, то одно, если нет то другое действие. Прикол в чём. Я не могу прямо сравнить if(playerInfo[playerid][LastDate] == date)
Будет ругаться что date без индекса, так как pawno хочет форматировать данные через массив (new date[13];)
Если я делаю так if(playerInfo[playerid][LastDate] == date[0]) то выводится целая строка что и надо, но она не проходит проверку, видимо тип отличается. Над этой фигнёй **усь уже 3 день.
Объясните мне дураку в каком месте я туплю и почему. Плееез

LastData: 01.03.2022 не равен 06.03.2022 в консоле, потому что менял в базе данные для проверки и выхода в else
Код:
else SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0);

Да и вообще не могу понять, можно ли сравнить мягко говоря данные playerInfo[playerid][LastDate] и date в данном случае напрямую

Добавил еще дебаг

Код:
        if(playerInfo[playerid][LastDate] == date[0])
        {
            SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
            SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
            print("1"); -- ТУТ
        }
        else {SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0); print("0");-- И ТУТ}

Консоль

Код:
Первый заход смотреть на date и LastData
1
last_x: 655.232971
last_y: -558.604980
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 06.03.2022

Второй заход с изменённой датой смотреть на date и LastData
1
last_x: 655.232971
last_y: -558.604980
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 01.03.2022

Как видно, не попадаю в Else, почему, не понимаю
 
Последнее редактирование:

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Ситуация такая.
Код:
        new Day, Month, Year;
        new date[13];
        getdate(Year, Month, Day);
        format(date,sizeof(date),"%02d.%02d.%d", Day, Month, Year);
        if(playerInfo[playerid][LastDate] == date[0])
        {
            SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
            SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
        }
        else SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0);
        printf("last_x: %f\nlast_y: %f\nlast_z: %f\nVirualWorldId: %d\ndate: %s\nLastData: %s", playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], playerInfo[playerid][VirualWorldId],date[0],playerInfo[playerid][LastDate]);

        return SpawnPlayer(playerid);

Консоль
Код:
last_x: 655.232971
last_y: -561.672973
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 01.03.2022

Моя идея такова. Зашел на сервер, если LastDate и полученная только что Date совпадают, то одно, если нет то другое действие. Прикол в чём. Я не могу прямо сравнить if(playerInfo[playerid][LastDate] == date)
Будет ругаться что date без индекса, так как pawno хочет форматировать данные через массив (new date[13];)
Если я делаю так if(playerInfo[playerid][LastDate] == date[0]) то выводится целая строка что и надо, но она не проходит проверку, видимо тип отличается. Над этой фигнёй **усь уже 3 день.
Объясните мне дураку в каком месте я туплю и почему. Плееез

LastData: 01.03.2022 не равен 06.03.2022 в консоле, потому что менял в базе данные для проверки и выхода в else
Код:
else SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0);

Да и вообще не могу понять, можно ли сравнить мягко говоря данные playerInfo[playerid][LastDate] и date в данном случае напрямую

Добавил еще дебаг

Код:
        if(playerInfo[playerid][LastDate] == date[0])
        {
            SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
            SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
            print("1");
        }
        else {SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], rSpawns[i][x_pos], rSpawns[i][y_pos], rSpawns[i][z_pos], 0, 0, 0, 0, 0, 0, 0); print("0");}

Консоль

Код:
Первый заход смотреть на date и LastData
1
last_x: 655.232971
last_y: -558.604980
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 06.03.2022

Второй заход с изменённой датой смотреть на date и LastData
1
last_x: 655.232971
last_y: -558.604980
last_z: 22.147800
VirualWorldId: 0
date: 06.03.2022
LastData: 01.03.2022

Как видно, не попадаю в Else, почему, не понимаю
Код:
if (!strcmp(playerInfo[playerid][LastDate], date)) {
    SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
    SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
}
 
  • Влюблен
Реакции: korneew1288

korneew1288

Новичок
Автор темы
2
0
Код:
if (!strcmp(playerInfo[playerid][LastDate], date)) {
    SetSpawnInfo(playerid, 0, playerInfo[playerid][Skin], playerInfo[playerid][last_x], playerInfo[playerid][last_y], playerInfo[playerid][last_z], 0, 0, 0, 0, 0, 0, 0);
    SetPlayerVirtualWorld(playerid, playerInfo[playerid][VirualWorldId]);
}
Спасибо большое!
Это жесть, я тупил 3 дня D: Спасть не мог, Спасибо еще раз