Поиск значений в массиве с использование for

SatanLxrd

Новичок
Автор темы
3
0
То что я создал должно работать так.
1.если игрок сел в транспорт
2.перебираем массив
3.если мы сели в автомобиль который есть в созданном массиве с авто.
4.Выводим сообщение игроку о автомобиле в который он сел. Содержимое пример: "Название:%s Тип:%s ID Т.С: %d"

Но дело в том то что всегда пишет информацию нулевой строки массива, инфу об инфернусе
При этом так всегда, не важно в какую машину я сел.

Код:
#define MAX_LIST_CAR 3

enum cInfo
{
        cVehID,
        cVehName[9],
        cVehType[9]
}

new VehicleInfo[MAX_LIST_CAR][cInfo] =
{
        {411,"Инфернус","Спорт"},
        {412,"Вуду","Лоурайд"},
        {413,"Пони","Грузовик"}
};

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
        new tempveh;
        new st[69];
        for(new i; i<MAX_LIST_CAR; i++)
        {
                if(vehicleid == VehicleInfo[i][cVehID])
                {
                        tempveh = i;
                }
        }
        format(st,sizeof(st),"Вы сели в автомобиль - Название: %s | Тип: %s | ID:%d",VehicleInfo[tempveh][cVehName],VehicleInfo[tempveh][cVehType],VehicleInfo[tempveh][cVehID]);
        SendClientMessage(playerid,0x00FF00FF,st);
        return 1;
}
 
Последнее редактирование:

SatanLxrd

Новичок
Автор темы
3
0
Решено !

В условие сверял ид авто, а не ид модели.

Кому понадобиться может быть, вот правильный код.

Код:
#define MAX_LIST_CAR 3
enum cInfo
{
    cVehID,
    cVehName[9],
    cVehType[9]
}
new VehicleInfo[MAX_LIST_CAR][cInfo] =
{
    {411, "Инфернус","Спорт"},
    {412, "Вуду","Лоурайд"},
    {413, "Пони","Грузовик"}
};
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    for(new i; i < MAX_LIST_CAR; i++)
    {
        if(GetVehicleModel(vehicleid) != VehicleInfo[i][cVehID])
            continue;
        new st[69];
        format(st,sizeof(st),"Вы сели в автомобиль - Название: %s | Тип: %s | ID:%d",
            VehicleInfo[i][cVehName], VehicleInfo[i][cVehType], VehicleInfo[i][cVehID]);
        SendClientMessage(playerid,0x00FF00FF,st);
        break;
    }
    return 1;
}
 

index

Известный
126
82
Это новый уровень вопросов.
Сам задал, сам ответил.
Правильно делает. Если у кого-то возникнет подобная проблема - в этой же теме он найдет решение, а не удручающее сообщение "Всё, закрывате, я сам решил".
 

SatanLxrd

Новичок
Автор темы
3
0
В этой же теме добавлю, так как мне кое кто это подсказал.

За место.
Код:
#define MAX_LIST_CAR ЧИСЛО

Можно использовать
Код:
#define MAX_LIST_CAR sizeof(VehicleInfo)

new VehicleInfo[][cInfo] =
{
    {411, "Инфернус","Спорт"},
    {412, "Вуду","Лоурайд"},
    {413, "Пони","Грузовик"}
};
Тогда компилятор будет сам подсчитывать размер кол-во строк массива.