Форум Pawn.Wiki - Воплоти мечту в реальность!: Проблема с Автопарком фракций - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Проблема с Автопарком фракций

#1
Пользователь офлайн   DragyTuk 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Здравствуйте у меня почему-то такая фигня что те авто которые прописаны в массиве в какой-то организации например я в Армии в диалоге пишут теже авто которые в массиве тоесть если 400 айди в 3,400,10 то пишет LandStalker ну короче думаю вы поняли но когда я хочу заспавнить то берется вобще авто с другого массива 1,415,10 вот так например

enum e_ORGANIZATION_PARKING_INFO
{
    TEAM_ID,
    MODEL_ID,
    CARS_COUNT
};

// Автопарк фракций
new ORGANIZATION_CAR_INFO[][e_ORGANIZATION_PARKING_INFO] =
{
    {1, 596, 10}, // Полиция МВД
    {1, 597, 10},
    {1, 598, 10},
    {1, 599, 10},
    {1, 427, 10},

    {2, 528, 10}, // ФСБ
    {2, 533, 10},
    {2, 552, 10},
    {2, 427, 10},
    {2, 599, 10},

    {3, 440, 10}, // Армия
    {3, 478, 10},
    {3, 433, 10},

    {4, 400, 5}, // Батыревская ОПГ
    {4, 421, 5},
    {4, 565, 5},

    {5, 412, 10}, // Арзамаская ОПГ
    {5, 529, 10},
    {5, 543, 10},

    {6, 507, 10}, // Мэрия
    {6, 491, 10},
    {6, 561, 10},
    {6, 543, 10},
    {6, 555, 10},

    {7, 415, 20}, // Больница г.Арзамас

    {8, 400, 10}, // Лыткаринская ОПГ
    {8, 421, 10},
    {8, 579, 10},

    {9, 582, 20}, // Россия 24

    {10, 505, 10}, // Хитманы
    {10, 579, 10},
    {10, 565, 10},
    {10, 597, 10},

    {11, 559, 10}, // Стритрейсеры
    {11, 466, 10},
    {11, 402, 10},
    {11, 415, 10},
    {11, 502, 10},
    {11, 533, 10}
};

new PlayerVeh[MAX_PLAYERS] = 0, VehicleOrg[MAX_PLAYERS] = 0, VehicleTeam[MAX_VEHICLES] = 0, VehicleOwner[MAX_VEHICLES] = 0;

case 9198:
        {
            if(!response) return 1;
            new item_data;

            switch(PI[playerid][pMember])
            {
                case 1:
                {
                    item_data = listitem;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 1, 79, 300, 1, VEHICLE_ACTION_TYPE_POLICE);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 2:
                {
                    item_data = listitem + 3;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_FSB);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 3:
                {
                    item_data = listitem + 21;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_ARMY);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 4:
                {
                    item_data = listitem + 7;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_BATOPG);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 5:
                {
                    item_data = listitem + 10;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_ARZOPG);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 6:
                {
                    item_data = listitem + 13;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_MERIA);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 7:
                {
                    item_data = listitem + 34;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 1, 79, 300, 1, VEHICLE_ACTION_TYPE_MEDIC);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 8:
                {
                    item_data = listitem + 17;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_LITOPG);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 9:
                {
                    item_data = listitem + 20;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_RUSSIA24);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 10:
                {
                    item_data = listitem + 24;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_HITMAN);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
                case 11:
                {
                    item_data = listitem + 28;

                    if(ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0) return SendClientMessage(playerid, COLOR_WHITE, !"В паркинге не осталось транспорта данного вида.");

                    new ParkingID = GetPVarInt(playerid, "ParkingSelected");

                    PlayerVeh[playerid] = AddStaticVehicleEx(ORGANIZATION_CAR_INFO[item_data][MODEL_ID], park_info[ParkingID][park_x], park_info[ParkingID][park_y], park_info[ParkingID][park_z], park_info[ParkingID][park_r], 0, 0, 300, 1, VEHICLE_ACTION_TYPE_STREET);
                    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

                    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
                    VehicleOwner[PlayerVeh[playerid]] = playerid;

                    DeletePVar(playerid, "ParkingSelected");
                }
            }
            PutPlayerInVeh(playerid, PlayerVeh[playerid], 0);
            zavodis[playerid] = 0;

            format(stringer1, sizeof(stringer1), "[R]{FFFFFF}{FFFFFF} %s %s[%d] взял автомобиль '%s [ID: %d]' с паркинга. Остаток: %d т/с.", fRankName[PI[playerid][pMember]-1][PI[playerid][pRank]-1],PI[playerid][pNames], playerid, g_vehicle_info[ORGANIZATION_CAR_INFO[item_data][MODEL_ID] - 400][VI_NAME], ORGANIZATION_CAR_INFO[item_data][MODEL_ID], ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]);
            return SendRadioMessage(PI[playerid][pMember], TEAM_BLUE_COLOR, stringer1);
        }

CREATE TABLE `parkings` (
  `park_id` int(11) NOT NULL,
  `park_x` float NOT NULL,
  `park_y` float NOT NULL,
  `park_z` float NOT NULL,
  `park_r` float NOT NULL,
  `park_org` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `parkings` (`park_id`, `park_x`, `park_y`, `park_z`, `park_r`, `park_org`) VALUES
(0, 166.865, 1268.07, 5.6389, 73.6414, 1),
(1, 513.126, 277.537, 12.344, 1.0381, 2),
(2, 1811.81, 1698.5, 15.185, 1.049, 3),
(3, 1945.36, 2163.36, 15.6384, 178.163, 4),
(4, 173.128, 452.698, 11.0485, 67.1421, 5),
(5, -70.4435, 824.496, 12.0029, 346.272, 6),
(6, 478.127, 1734.75, 11.9972, 20.7274, 7),
(7, -2347.84, 57.0775, 21.1551, 206.971, 8),
(8, 2144.99, -1933.84, 18.5986, 68.9986, 9),
(9, -1075.75, 2203.4, 37.9994, 179.072, 10),
(10, -219.337, 461.359, 12.7966, 343.804, 11);

0

#2
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Для начала убери повторяющейся код.
Вот как пример
case 9198:
{
    if (!response)
    {
        return 0;
    }
    new fractionid = PI[playerid][pMember],
        item_data;

    //Можно добавить проверку на валидность фракции

    static const listid[] = {0, 3, 21, 7, 10, 13, 34, 17, 20, 24, 28};

    item_data = listitem + listid[fractionid - 1];

    if (ORGANIZATION_CAR_INFO[item_data][CARS_COUNT] <= 0)
    {
        SendClientMessage(
            playerid,
            COLOR_WHITE,
            "В паркинге не осталось транспорта данного вида."
        );
        return 0;
    }
    new parkingid = GetPVarInt(playerid, "ParkingSelected");

    PlayerVeh[playerid] = AddStaticVehicleEx(
        ORGANIZATION_CAR_INFO[item_data][MODEL_ID],
        park_info[parkingid][park_x],
        park_info[parkingid][park_y],
        park_info[parkingid][park_z],
        park_info[parkingid][park_r],
        1,
        79,
        300,
        1,
        VEHICLE_ACTION_TYPE_POLICE
    );
    ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]--;

    VehicleOrg[playerid] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
    VehicleTeam[PlayerVeh[playerid]] = ORGANIZATION_CAR_INFO[item_data][TEAM_ID];
    VehicleOwner[PlayerVeh[playerid]] = playerid;

    DeletePVar(playerid, "ParkingSelected");

    PutPlayerInVeh(playerid, PlayerVeh[playerid], 0);
    zavodis[playerid] = 0;

    new
        modelid = ORGANIZATION_CAR_INFO[item_data][MODEL_ID] - 400,
        rankid = PI[playerid][pRank];

    format(stringer1, sizeof(stringer1),
        "[R]{FFFFFF}{FFFFFF} %s %s[%d] взял автомобиль '%s [ID: %d]' с паркинга. Остаток: %d т/с.",
        fRankName[fractionid - 1][rankid - 1],
        PI[playerid][pNames],
        playerid,
        g_vehicle_info[modelid][VI_NAME],
        ORGANIZATION_CAR_INFO[item_data][MODEL_ID],
        ORGANIZATION_CAR_INFO[item_data][CARS_COUNT]
    );
    return SendRadioMessage(fractionid, TEAM_BLUE_COLOR, stringer1);
}


Теперь сделай дебаг через printf и посмотри в логах, что не так.

Ну и сама реализация, какая-то не правильная, я про эти числа 3,20,24 и т.д.
Если ты захочешь добавить новый транспорт, что ты будешь делать, все это пересчитывать заново, каждый раз?
Тут нужно продумать более гибкую систему.

Сообщение отредактировал Saibot: 27 апреля 2025 - 21:05

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика