Вход

Просмотр полной версии : [Вопрос] GPS координаты путаются



johnlaw
30.04.2018, 07:27
Не могу понять вроде бы всё выполнил верно однако какие то работают правильно какие то путаются.
Вот код:


enum e_COORD_GPS_INFO
{
name_gps[31],
Float:pos_x,
Float:pos_y,
Float:pos_z //gpscmd
};
static const GPSCoords[][e_COORD_GPS_INFO] =
{
// Основные места [0-3]
{"Автошкола", 2263.7710,-1341.3430, 23.9836},
{"Мэрия", 1476.1597, -1739.5961, 13.5469},
{"Центральный банк", 1421.6970, -1706.2607, 13.5469},
{"Магазин одежды", 1738.7910, -1586.7731, 13.5540},
{"Магазин мебели", 1738.8630, -1589.2484, 13.5438},
// Работы [4-9]
{"Лесопилка", 2005.8917, 2355.4607, 30.6250},
{"Шахта", 2094.4832,-631.7184,63.7913},
{"Продавец пиццы", 2103.7483,-1806.2817,13.5547},
{"База дальнобойщиков", -119.5016, -381.8493, 1.4297},
{"База таксистов", 1104.0240,-1741.0205,13.4709},
{"База автобусников",1242.4487,-1832.6426,13.3960},
{"Мэрия [Работы штата]",1476.1597,-1739.5961,13.5469},
// Конечная остановка автобусов [10-11]
{"Конечная в ЛС", 2263.7710,-1341.3430,23.9836},//
{"Конечная в СФ", 2263.7710,-1341.3430,23.9836},//
// Местоположение организации
// Гос. орг. LS [12-15]
{"Мэрия ЛС", 1476.1597,-1739.5961,13.5469},
{"LSPD", 1541.0000,-1675.4686,13.5517},
{"Больница ЛС", 1178.6862,-1323.6720,14.1323},
{"Радиоцентр ЛС", 2263.7710,-1341.3430,23.9836},//
// Гос. орг. SF [16-20]
{"Мэрия СФ", 2263.7710,-1341.3430,23.9836},//
{"SFPD", 2263.7710,-1341.3430,23.9836},//
{"FBI", 2263.7710,-1341.3430,23.9836},//
{"Больница СФ", 2263.7710,-1341.3430,23.9836},//
{"Радиоцентр СФ", 2263.7710,-1341.3430,23.9836},//
// Преступные группировки (Мафии) [21-23]
{"Русская мафия", -2810.0884,-329.6508,7.0313},
{"La Cosa Nostra", 1263.7715,-2053.2397,59.3391},
{"Yakuza", 1527.4115,656.5926,10.8771},
// Преступные группировки (Банды) [24-28]
{"Groove Street", 2494.0842,-1669.8505,13.3359},
{"Vagos Gang", 2782.7385,-1619.1322,10.9219},
{"Varios Los Aztecas", 1670.4502,-2113.2258,13.5469},
{"Rifa Gang", 2262.1743,-1045.3622,51.3493},
{"Ballas Gang", 2515.0266,-2008.8679,13.2813}
};


case DIALOG_GPS: //gpscmd
{
if(!response) return true;
switch(listitem)
{
case 0: ShowPlayerDialog(playerid,DIALOG_GPS+1,DIALOG_STYLE_LIST,"GPS | Основные места","Автошкола\nМэрия\nЦентральный банк\nМагазин мебели","Выбрать","Назад"), SetPVarInt(playerid, "GPSTip", 1);
case 1: ShowPlayerDialog(playerid,DIALOG_GPS+1,DIALOG_STYLE_LIST,"GPS | Работы","Лесопилка\nШахта по добычи металла\nПродавец пиццы\nБаза дальнобойщиков\nБаза таксистов\nБаза автобусников\nМэрия ({d3d3d3}Работы штата{ffffff})","Выбрать","Назад"), SetPVarInt(playerid, "GPSTip", 2);
case 2: ShowPlayerDialog(playerid,DIALOG_GPS+1,DIALOG_STYLE_LIST,"GPS | Конечные остановки","Конечная в ЛС\nКонечная в СФ","Выбрать","Назад"), SetPVarInt(playerid, "GPSTip", 3);
case 3: ShowPlayerDialog(playerid,DIALOG_GPS+2,DIALOG_STYLE_LIST,"GPS | Местоположение организации","Гос. организации ЛС\nГос. организации СФ\nМафии\nБанды","Выбрать","Назад");
case 4: ShowPlayerDialog(playerid,DIALOG_GPS+3,DIALOG_STYLE_LIST,"GPS | Бизнесы","Бизнесы в LS\nБизнесы в SF","Выбрать","Отмена");
case 5: send(playerid, -1, "[Авторынки] В разработке");
}
return true;
}
case DIALOG_GPS+1:
{
if(!response) return gps_load(playerid);
new listem, str[50];
switch(GetPVarInt(playerid, "GPSTip"))
{
case 1: listem = listitem;
case 2: listem = listitem+3;
case 3: listem = listitem+4;
case 4: listem = listitem+12;
case 5: listem = listitem+16;
case 6: listem = listitem+21;
case 7: listem = listitem+24;
}
DeletePVar(playerid, "GPSTip");

SetPlayerCheckpoint(playerid,GPSCoords[listem][pos_x],GPSCoords[listem][pos_y],GPSCoords[listem][pos_z],5.0);
f(str, "[%s] Метка отмечена на карте.", GPSCoords[listem][name_gps]);
send(playerid,COLOR_WHITE,str);
return true;
}
case DIALOG_GPS+2:
{
if(!response) return gps_load(playerid);
new str[90], str2[512], foren[2];
switch(listitem)
{
case 0: foren[0] = 12, foren[1] = 15;
case 1: foren[0] = 16, foren[1] = 20;
case 2: foren[0] = 21, foren[1] = 23;
case 3: foren[0] = 24, foren[1] = 28;
}
SetPVarInt(playerid, "GPSTip", listitem+4);
for(new i = foren[0]; i < foren[1]; i++)
{
f(str, "%s\n",GPSCoords[i][0]);
strcat(str2, str);
}
ShowPlayerDialog(playerid,DIALOG_GPS+1,DIALOG_STYLE_LIST,"GPS | Местоположение организации", str2, "Далее","Отмена");
return true;
}
case DIALOG_GPS+3:
{
if(!response) return true;
if(listitem == 0) SetPVarInt(playerid, "GPSG", C_LS);
else SetPVarInt(playerid, "GPSG", C_SF);
ShowPlayerDialog(playerid,DIALOG_GPS+4,DIALOG_STYLE_LIST,"GPS | Бизнесы","Магазины оружия\nЗакусочные(бургер)\nЗакусочные(курица)\nЗакусочные(pizza)\nМагазины(24/7)\nМагазины одежды\nКлубы","Выбрать","Отмена");
return 1;
}
case DIALOG_GPS+4:
{
if(!response) return true;
new listem, str[90], str2[512];
if(listitem < 4) listem = listitem+1;
else if(listitem == 5) listem = 8;
else if(listitem == 6) listem = 10;
send(playerid, -1, "Внимание! Бизнесы по городам не расставлены!");
for(new i; i < BIZNES; i++)
{
if(BiznesInfo[i][bTip] != listem/*|| BiznesInfo[i][bCity] != GetPVarInt(playerid, "GPSG")*/) continue;
f(str, "%s\n",GPSCoords[i][0]);
strcat(str2, str);
}
ShowPlayerDialog(playerid,DIALOG_GPS+6,DIALOG_STYLE_LIST,"GPS | Бизнесы", str2, "Далее","Отмена");
return 1;
}
case DIALOG_GPS+6:
{
if(!response) return true;
new str[70];
//if(Taxi_GO[playerid] == 1) SetPlayerCheckpoint(Taxi_Duty[GetPlayerVehicleID(playerid)],BiznesInfo[listitem+1][bEnterX],BiznesInfo[listitem+1][bEnterY],BiznesInfo[listitem+1][bEnterZ],5.0), SetPVarInt(playerid, "TaxiGo",1);
SetPlayerCheckpoint(playerid,BiznesInfo[listitem+1][bEnterX],BiznesInfo[listitem+1][bEnterY],BiznesInfo[listitem+1][bEnterZ],5.0);
f(str, "[%s] Метка отмечена на карте.", BiznesInfo[listitem+1][bMessage]);
send(playerid,COLOR_WHITE,str);
return 1;
}

Long-
03.05.2018, 13:05
case 1: listem = listitem;
case 2: listem = listitem+3;
case 3: listem = listitem+4;
case 4: listem = listitem+12;
case 5: listem = listitem+16;
case 6: listem = listitem+21;
case 7: listem = listitem+24;

проблема явно в этом блоке кода, так как именно этим ты задаешь какой пункт именно он выберет.