PDA

Просмотр полной версии : [Вопрос] GPS навигатор



denis01
25.08.2014, 09:23
Здраствуйте пользователи Pro-Pawn
Не могли бы подсказать как можно улушить код




new Text:GPSON[ MAX_PLAYERS ];


GPSON[playerid] = TextDrawCreate(68.0, 315,"GPS On");
TextDrawAlignment(GPSON [playerid],0);
TextDrawBackgroundColor(GPSON [playerid],0x000000FF);
TextDrawFont(GPSON [playerid],1);
TextDrawSetOutline(GPSON [playerid], 1);
TextDrawLetterSize(GPSON [playerid],0.3100,1.300);
TextDrawColor(GPSON [playerid],0x99C700FF);
TextDrawSetProportional(GPSON [playerid],1);


CMD:gps(playerid, params[])//if(strcmp(cmd, "/gps", true) ==0)
{
UNGPS(playerid);
SPD(playerid,65, DIALOG_STYLE_LIST, "{ffd200}GPS", "1. Общественные места\n2. Транспортные узлы\n3. Государственные организации\n4. Базы банд и мафий\n5. По работе\n6. Банки\n7. Бизнес", "Выбрать", "Отмена");
return 1;
}


case 65:
{
if(!response) return 1;
switch(listitem)
{
case 0: SPD(playerid, 66, DIALOG_STYLE_LIST, ""Y"Общественные места", "Мэрия Лос-Сантос\nМэрия Сан-Фиерро\nМэрия Лас-Вентурас\nАдминистрация Президента\nАвтошкола\nВоенкомат\nАвторынок эконом-классa (ЛС)\nАвторынок среднего класса (СФ)\nАвторынок среднего класса №2 (СФ)\nАвторынок премиум класса (ЛВ)\nМото-Вело рынок (ЛС)\nЛодочная станция Сан-Фиерро", "Отметить", "Назад");
case 1: SPD(playerid, 67, DIALOG_STYLE_LIST, ""Y"Транспортные узлы", "Ж/Д Вокзал Лос Сантоса\nЦентральная автостанция (Лос-Сантос)\nЖ/Д Вокзал и автостанция Сан-Фиерро\nЖ/Д Вокзал и автостанция Лас Вентурас\nЖ/Д Станция Лас-Вентурас-2\nЖ/Д Станция Лос-Сантос-2", "Отметить", "Назад");
case 2:SPD(playerid, 68, DIALOG_STYLE_LIST, ""Y"Государственные организации", "Полиция Лос-Сантос\nПолиция Сан-Фиерро\nПолиция Лас-Вентурас\nБаза ФБР\nМинистерство Обороны\nБаза сухопутных войск\nБаза военно-воздуших сил\nБаза военно-морского флота\nБольница Лос-Сантоса\nБольница Сан-Фиерро\nБольница Лас-Вентураса\nРадиоцентр Лос Сантоса\nРадиоцентр Сан-Фиерро\nРадиоцентр Лас-Вентураса\nТелецентр", "Отметить", "Назад");
case 3:SPD(playerid, 69, DIALOG_STYLE_LIST, ""Y"Базы банд и мафий", "Grove Street\nThe Ballas\nLos Santos Vagos\nThe Rifa\nVarior Los Aztecas\nLa Cosa Nostra\nYakuza\nРусская Мафия", "Отметить", "Назад");
case 4:SPD(playerid, 70, DIALOG_STYLE_LIST, ""Y"По работе", "Городской склад (Работа грузчика)\nШахта (работа шахтера)\nЗавод по производству продуктов\nНефтезавод\nАвтопарк для развозчиков топлива\nПожарная станция Лос-Сантос\nПожарная станция Сан-Фиерро\nПожарная станция Лас-Вентурас\nСтоянка автомехаников ЛС\nСтоянка автомехаников СФ\nСтоянка автомехаников ЛВ", "Отметить", "Назад");
case 5:SPD(playerid, 71, DIALOG_STYLE_LIST, ""Y"Банки", "Банк Лос-Сантоса\nБанк Palomino Creek\nЧастный банк Angel Pine\nЧастный банк Las Barrankas\nЧастный банк Fort Carson", "Отметить", "Назад");
case 6:SPD(playerid, 72, DIALOG_STYLE_LIST, ""Y"Бизнес", "\n\n\n\n", "Отметить", "Назад");
}
}
case 66:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,19, 1481.4152,-1741.5497,13.5469);
case 1: GPS(playerid, 19,-2755.6736,375.1084,4.3362);
case 2: GPS(playerid, 19,2374.5691,2470.9553,10.8203);
case 3: GPS(playerid, 19,963.5590,-944.2542,40.4568);
case 4: GPS(playerid, 36,-2033.2495,-94.2026,35.1641);
case 5: GPS(playerid, 56,1169.3456,1374.2742,10.8203);
case 6: GPS(playerid, 55,557.4165,-1265.1447,17.2422);
case 7: GPS(playerid, 55,-1976.5574,291.9496,35.1719);
case 8: GPS(playerid, 55,-1637.4738,1201.5579,7.2094);
case 9: GPS(playerid, 55,2466.5439,1322.7296,10.6780);
case 10: GPS(playerid, 55,2124.0874,-1125.0382,25.5058);
case 11: GPS(playerid, 9,-2969.5039,476.7162,4.9045);//не далеко от хеалки
}
}
case 67:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,42, 1787.5479,-1893.0236,13.3948);
case 1: GPS(playerid, 42,1103.2241,-1741.1659,13.4925);//где бабкы раздавал
case 2: GPS(playerid, 42,-1988.2023,136.8083,27.5391); //ясен ***
case 3: GPS(playerid, 42,2828.1819,1292.6289,10.7696); //ясен ***
case 4: GPS(playerid, 42,1433.6431,2676.0845,10.6719);//вверху ЛВ
case 5: GPS(playerid, 42,818.6895,-1335.2047,13.5469); //я понял
}
}
case 68:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,30, 1540.1252,-1674.4242,13.5500);
case 1: GPS(playerid, 30,-1567.2054,661.3766,7.1875);
case 2: GPS(playerid, 30,2294.8057,2423.3123,10.8203);
case 3: GPS(playerid, 30,-2431.0195,492.7205,29.9263);
case 4: GPS(playerid, 6,1026.6141,1164.3063,10.6719);
case 5: GPS(playerid, 6,87.9137,1920.3689,17.8681);
case 6: GPS(playerid,5, 455.8190,2553.4812,16.7487);
case 7: GPS(playerid, 9,-2286.6104,2361.2534,5.2950);
case 8: GPS(playerid, 22,1188.3809,-1325.0284,13.5671);
case 9: GPS(playerid, 22,-2667.3281,573.2521,14.4614);
case 10: GPS(playerid, 22,1640.4082,1835.8036,10.7760);
case 11: GPS(playerid, 48,1629.7039,-1716.8828,13.4995);
case 12: GPS(playerid, 48,-1815.3436,593.0847,35.1641);
case 13: GPS(playerid, 48,2127.3528,2353.1616,10.6719);
case 14: GPS(playerid, 42,1796.3643,-1284.3372,13.6379); //сдилать
}
}
case 69:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,62, 2482.2002,-1666.6056,13.3403);
case 1: GPS(playerid, 59,2016.5646,-1134.2197,24.858);
case 2: GPS(playerid, 60,2739.1489,-1175.7413,69.2422);
case 3: GPS(playerid, 61,2767.5552,-1902.8851,11.1256);
case 4: GPS(playerid, 58,2180.0364,-1793.8163,13.3597);
case 5: GPS(playerid, 44,1534.7485,2773.1445,10.6820);//где ЯКИ на Гф
case 6: GPS(playerid,44, 2512.3154,1822.1835,10.8478);
case 7: GPS(playerid, 43,1001.1439,1683.0076,10.9141);
}
}
case 70:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,11, 2236.9351,-2213.2959,13.5469);
case 1: GPS(playerid, 11,-1931.5769,-1788.6188,31.2179);
case 2: GPS(playerid, 27,-96.0839,-329.4447,1.4297);
case 3: GPS(playerid, 51,304.9246,1413.1934,9.1240);
case 4: GPS(playerid, 51,2293.8235,-2317.4043,13.541);
case 5: GPS(playerid, 20,1762.5349,-1461.3027,13.3750);
case 6: GPS(playerid,20, -2014.8457,84.4807,27.6799);
case 7: GPS(playerid, 20,1758.2341,2061.0479,10.9766);//Справа от стадиона ****ого
case 8: GPS(playerid, 55,1638.2874,-1133.2671,23.9063);
case 9: GPS(playerid,55, -2127.1904,-77.1997,35.1719);//около АШ
case 10: GPS(playerid, 55,2441.2659,1273.9994,10.7308);//с права от пиромиты)0
}
}
case 71:
{
if(!response) return 1;
switch(listitem)
{
case 0: GPS(playerid,52, 1426.4316,-1623.2363,13.1752);
case 1: GPS(playerid, 52,2298.6543,-16.2615,26.3246);
case 2: GPS(playerid, 52,-2159.5886,-2419.0935,30.625);
case 3: GPS(playerid, 52,-828.2066,1500.1552,19.3317);
case 4: GPS(playerid, 52,-183.7522,1134.8304,19.7422);
}
}

В OnPlayerUpdate


if(IsPlayerInRangeOfPoint(playerid, 15.0, GetPVarFloat(playerid,"gpsX"),GetPVarFloat(playerid,"gpsY"),GetPVarFloat(playerid,"gpsZ")) && GetPVarInt(playerid,"GPS") == 1) return UNGPS(playerid);


stock UNGPS(playerid)
{
if(GetPVarInt(playerid,"GPS") == 1)
{
RemovePlayerMapIcon(playerid, 99);
TextDrawHideForPlayer(playerid, GPSON[playerid]);
SetPVarFloat(playerid,"gpsX",0.0), SetPVarFloat(playerid,"gpsY",0.0),SetPVarFloat(playerid,"gpsZ",0.0);
SetPVarInt(playerid,"GPS",0);
}
return 1;
}

stock GPS(playerid,kydah, Float:x, Float:y, Float:z)
{
if(GetPVarInt(playerid,"GPS") == 1) RemovePlayerMapIcon(playerid, 99);
SetPlayerMapIcon(playerid, 99, x, y, z, kydah, 0, MAPICON_GLOBAL);
TextDrawShowForPlayer(playerid, GPSON[playerid]);
SetPVarFloat(playerid,"gpsX",x), SetPVarFloat(playerid,"gpsY",y),SetPVarFloat(playerid,"gpsZ",z);
SendClientMessage(playerid,0xffd200FF,"Место отмечено у Вас на GPS");
SetPVarInt(playerid,"GPS",0);
return 1;
}

DeimoS
25.08.2014, 10:14
Да тут всё нормально, вроде. Разве что возвраты добавить в диалоги и всё

denis01
25.08.2014, 11:48
Спасибо а не могли бы про возвраты по подробнее

DeimoS
25.08.2014, 11:58
case 65:
{
if(!response) return 1;
switch(listitem)
{
case 0: return SPD(playerid, 66, DIALOG_STYLE_LIST, ""Y"Общественные места", "Мэрия Лос-Сантос\nМэрия Сан-Фиерро\nМэрия Лас-Вентурас\nАдминистрация Президента\nАвтошкола\nВоенкомат\nАвторынок эконом-классa (ЛС)\nАвторынок среднего класса (СФ)\nАвторынок среднего класса №2 (СФ)\nАвторынок премиум класса (ЛВ)\nМото-Вело рынок (ЛС)\nЛодочная станция Сан-Фиерро", "Отметить", "Назад");
case 1: return SPD(playerid, 67, DIALOG_STYLE_LIST, ""Y"Транспортные узлы", "Ж/Д Вокзал Лос Сантоса\nЦентральная автостанция (Лос-Сантос)\nЖ/Д Вокзал и автостанция Сан-Фиерро\nЖ/Д Вокзал и автостанция Лас Вентурас\nЖ/Д Станция Лас-Вентурас-2\nЖ/Д Станция Лос-Сантос-2", "Отметить", "Назад");
case 2: return SPD(playerid, 68, DIALOG_STYLE_LIST, ""Y"Государственные организации", "Полиция Лос-Сантос\nПолиция Сан-Фиерро\nПолиция Лас-Вентурас\nБаза ФБР\nМинистерство Обороны\nБаза сухопутных войск\nБаза военно-воздуших сил\nБаза военно-морского флота\nБольница Лос-Сантоса\nБольница Сан-Фиерро\nБольница Лас-Вентураса\nРадиоцентр Лос Сантоса\nРадиоцентр Сан-Фиерро\nРадиоцентр Лас-Вентураса\nТелецентр", "Отметить", "Назад");
case 3: return SPD(playerid, 69, DIALOG_STYLE_LIST, ""Y"Базы банд и мафий", "Grove Street\nThe Ballas\nLos Santos Vagos\nThe Rifa\nVarior Los Aztecas\nLa Cosa Nostra\nYakuza\nРусская Мафия", "Отметить", "Назад");
case 4: return SPD(playerid, 70, DIALOG_STYLE_LIST, ""Y"По работе", "Городской склад (Работа грузчика)\nШахта (работа шахтера)\nЗавод по производству продуктов\nНефтезавод\nАвтопарк для развозчиков топлива\nПожарная станция Лос-Сантос\nПожарная станция Сан-Фиерро\nПожарная станция Лас-Вентурас\nСтоянка автомехаников ЛС\nСтоянка автомехаников СФ\nСтоянка автомехаников ЛВ", "Отметить", "Назад");
case 5: return SPD(playerid, 71, DIALOG_STYLE_LIST, ""Y"Банки", "Банк Лос-Сантоса\nБанк Palomino Creek\nЧастный банк Angel Pine\nЧастный банк Las Barrankas\nЧастный банк Fort Carson", "Отметить", "Назад");
case 6: return SPD(playerid, 72, DIALOG_STYLE_LIST, ""Y"Бизнес", "\n\n\n\n", "Отметить", "Назад");
}
}
case 66:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,19, 1481.4152,-1741.5497,13.5469);
case 1: return GPS(playerid, 19,-2755.6736,375.1084,4.3362);
case 2: return GPS(playerid, 19,2374.5691,2470.9553,10.8203);
case 3: return GPS(playerid, 19,963.5590,-944.2542,40.4568);
case 4: return GPS(playerid, 36,-2033.2495,-94.2026,35.1641);
case 5: return GPS(playerid, 56,1169.3456,1374.2742,10.8203);
case 6: return GPS(playerid, 55,557.4165,-1265.1447,17.2422);
case 7: return GPS(playerid, 55,-1976.5574,291.9496,35.1719);
case 8: return GPS(playerid, 55,-1637.4738,1201.5579,7.2094);
case 9: return GPS(playerid, 55,2466.5439,1322.7296,10.6780);
case 10: return GPS(playerid, 55,2124.0874,-1125.0382,25.5058);
case 11: return GPS(playerid, 9,-2969.5039,476.7162,4.9045);//не далеко от хеалки
}
}
case 67:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,42, 1787.5479,-1893.0236,13.3948);
case 1: return GPS(playerid, 42,1103.2241,-1741.1659,13.4925);//где бабкы раздавал
case 2: return GPS(playerid, 42,-1988.2023,136.8083,27.5391); //ясен ***
case 3: return GPS(playerid, 42,2828.1819,1292.6289,10.7696); //ясен ***
case 4: return GPS(playerid, 42,1433.6431,2676.0845,10.6719);//вверху ЛВ
case 5: return GPS(playerid, 42,818.6895,-1335.2047,13.5469); //я понял
}
}
case 68:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,30, 1540.1252,-1674.4242,13.5500);
case 1: return GPS(playerid, 30,-1567.2054,661.3766,7.1875);
case 2: return GPS(playerid, 30,2294.8057,2423.3123,10.8203);
case 3: return GPS(playerid, 30,-2431.0195,492.7205,29.9263);
case 4: return GPS(playerid, 6,1026.6141,1164.3063,10.6719);
case 5: return GPS(playerid, 6,87.9137,1920.3689,17.8681);
case 6: return GPS(playerid,5, 455.8190,2553.4812,16.7487);
case 7: return GPS(playerid, 9,-2286.6104,2361.2534,5.2950);
case 8: return GPS(playerid, 22,1188.3809,-1325.0284,13.5671);
case 9: return GPS(playerid, 22,-2667.3281,573.2521,14.4614);
case 10: return GPS(playerid, 22,1640.4082,1835.8036,10.7760);
case 11: return GPS(playerid, 48,1629.7039,-1716.8828,13.4995);
case 12: return GPS(playerid, 48,-1815.3436,593.0847,35.1641);
case 13: return GPS(playerid, 48,2127.3528,2353.1616,10.6719);
case 14: return GPS(playerid, 42,1796.3643,-1284.3372,13.6379); //сдилать
}
}
case 69:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,62, 2482.2002,-1666.6056,13.3403);
case 1: return GPS(playerid, 59,2016.5646,-1134.2197,24.858);
case 2: return GPS(playerid, 60,2739.1489,-1175.7413,69.2422);
case 3: return GPS(playerid, 61,2767.5552,-1902.8851,11.1256);
case 4: return GPS(playerid, 58,2180.0364,-1793.8163,13.3597);
case 5: return GPS(playerid, 44,1534.7485,2773.1445,10.6820);//где ЯКИ на Гф
case 6: return GPS(playerid,44, 2512.3154,1822.1835,10.8478);
case 7: return GPS(playerid, 43,1001.1439,1683.0076,10.9141);
}
}
case 70:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,11, 2236.9351,-2213.2959,13.5469);
case 1: return GPS(playerid, 11,-1931.5769,-1788.6188,31.2179);
case 2: return GPS(playerid, 27,-96.0839,-329.4447,1.4297);
case 3: return GPS(playerid, 51,304.9246,1413.1934,9.1240);
case 4: return GPS(playerid, 51,2293.8235,-2317.4043,13.541);
case 5: return GPS(playerid, 20,1762.5349,-1461.3027,13.3750);
case 6: return GPS(playerid,20, -2014.8457,84.4807,27.6799);
case 7: return GPS(playerid, 20,1758.2341,2061.0479,10.9766);//Справа от стадиона ****ого
case 8: return GPS(playerid, 55,1638.2874,-1133.2671,23.9063);
case 9: return GPS(playerid,55, -2127.1904,-77.1997,35.1719);//около АШ
case 10: return GPS(playerid, 55,2441.2659,1273.9994,10.7308);//с права от пиромиты)0
}
}
case 71:
{
if(!response) return 1;
switch(listitem)
{
case 0: return GPS(playerid,52, 1426.4316,-1623.2363,13.1752);
case 1: return GPS(playerid, 52,2298.6543,-16.2615,26.3246);
case 2: return GPS(playerid, 52,-2159.5886,-2419.0935,30.625);
case 3: return GPS(playerid, 52,-828.2066,1500.1552,19.3317);
case 4: return GPS(playerid, 52,-183.7522,1134.8304,19.7422);
}
}

denis01
25.08.2014, 22:13
Еще один вопрос, почему то не исчезает текстдрав и сама иконка при достижения место назначения

DeimoS
26.08.2014, 07:52
Потому что, скорее всего, их несколько создаётся под одним ID. Или вы в одиночку проверяете?

denis01
26.08.2014, 08:18
Одиночку


stock UNGPS(playerid)
{
if(GetPVarInt(playerid,"GPS") == 1)
{
RemovePlayerMapIcon(playerid, 99);
TextDrawHideForPlayer(playerid, GPSON[playerid]);
SetPVarFloat(playerid,"gpsX",0.0), SetPVarFloat(playerid,"gpsY",0.0),SetPVarFloat(playerid,"gpsZ",0.0);
SetPVarInt(playerid,"GPS",0);
}
return 1;
}

тут всё нормально?

DeimoS
26.08.2014, 08:19
Текстдрав скрывает?

denis01
26.08.2014, 08:26
Нет

TrezeLurese
26.08.2014, 08:42
Мне кажется вы не присваиваете pVar'у значение

stock GPS(playerid,kydah, Float:x, Float:y, Float:z)
{
if(GetPVarInt(playerid,"GPS") == 1) RemovePlayerMapIcon(playerid, 99);
SetPlayerMapIcon(playerid, 99, x, y, z, kydah, 0, MAPICON_GLOBAL);
TextDrawShowForPlayer(playerid, GPSON[playerid]);
SetPVarFloat(playerid,"gpsX",x), SetPVarFloat(playerid,"gpsY",y),SetPVarFloat(playerid,"gpsZ",z);
SendClientMessage(playerid,0xffd200FF,"Место отмечено у Вас на GPS");
SetPVarInt(playerid,"GPS",0);
return 1;
}

Попробуйте заменить на

stock GPS(playerid,kydah, Float:x, Float:y, Float:z)
{
if(GetPVarInt(playerid,"GPS") == 1) RemovePlayerMapIcon(playerid, 99);
SetPlayerMapIcon(playerid, 99, x, y, z, kydah, 0, MAPICON_GLOBAL);
TextDrawShowForPlayer(playerid, GPSON[playerid]);
SetPVarFloat(playerid,"gpsX",x), SetPVarFloat(playerid,"gpsY",y),SetPVarFloat(playerid,"gpsZ",z);
SendClientMessage(playerid,0xffd200FF,"Место отмечено у Вас на GPS");
SetPVarInt(playerid,"GPS",1);
return 1;
}