Решил рассказать, как можно сделать небольшую GPS систему по профессиям. Можно переделать под что угодно. Я не претендую на уникальность и открытие "Америки", просто много раз видел как новички спрашивают как это сделать.
Подробнее об этой GPS системе: Все довольно просто. Игрок встает на пикап, вводит команду, появляется диалоговое окно со списком профессий. Выбрав одну из профессий на радаре появляется чекпоинт в том месте, где можно устроиться на выбранную им работу. После того, как игрок прибыл на этот чекпоинт, он исчезает.
В моем примере пикап расположен в мэрии.
Итак как это сделать:
Ко всем new добавляем new gpsjobs;
Далее нам необходимо сделать пикап на котором игрок будет вводить команду. В public OnGameModeInit() вставляем gpsjobs = CreatePickup(1581, 23, 362.1823,173.9139,1008.3828,-1);// GPS jobs
Модель пикапа и координаты можете выставить свои. В данном случае пикап находится в мэрии. -1 указывает на то, что пикап будет отображаться во всех виртуальных мирах.
Теперь делаем саму команду.
[pwn]if(strcmp(cmd, "/jobs", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerToPoint(3.0, playerid,362.1071,173.8628,1008.3828)) { ShowPlayerDialog(playerid, 58, DIALOG_STYLE_LIST, "GPS: Выберите интересующую вас работу.", "Детектив\nШлюха\nНаркодилер\nУгонщик\nВодитель автобуса\nМеханик\nРазносчик газет\nПродавец авто\nПродавец оружия", "Выбрать", "Отмена"); } else { SendClientMessage(playerid, COLOR_GREY, "Здесь не работает GPS. Вам нужно быть в мэрии."); return 1; } } }[/pwn]
Если вы меняете координаты пикапа, то их необходимо сменить и в этой строке if(PlayerToPoint(3.0, playerid,362.1071,173.8628,1008.3828))
Далее в public OnDialogResponse добавляем следующий код.
[pwn]else if(dialogid==58) { if(response) { switch(listitem) { case 0: { SetPlayerCheckpoint(playerid,359.2994,206.7888,1008.3828,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Детективом помечено красным маркером."); } case 1: { SetPlayerCheckpoint(playerid,2421.4241,-1220.1045,25.5064,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Шлюхой помечено красным маркером."); } case 2: { SetPlayerCheckpoint(playerid,2166.3220,-1675.4667,15.0859,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Наркодилером помечено красным маркером."); } case 3: { SetPlayerCheckpoint(playerid,1109.2737,-1796.2308,16.5938,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Угонщиком помечено красным маркером."); } case 4: { SetPlayerCheckpoint(playerid,1154.1823,-1770.8646,16.5992,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Водителем автобуса помечено красным маркером."); } case 5: { SetPlayerCheckpoint(playerid,1072.6245,-1700.2961,13.5469,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Механиком помечено красным маркером."); } case 6: { SetPlayerCheckpoint(playerid,765.6187,-1382.6399,13.6783,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Разносчиком газет помечено красным маркером."); } case 7: { SetPlayerCheckpoint(playerid,531.8411,-1292.3922,17.2422,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Продавцом авто помечено красным маркером."); } case 8: { SetPlayerCheckpoint(playerid,1366.3701,-1274.9960,13.5469,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Продавцом оружия помечено красным маркером."); } } } else { SendClientMessage(playerid,COLOR_RED,"Отмена"); return 1; } }[/pwn]
У меня расположение профессий отличается от стандартного расположения профессий в GF, поэтому координаты ставим свои.
Затем делаем что бы по прибытию на чекпоинт, он исчезал. В public OnPlayerEnterCheckpoint добавляем следующее.
[pwn]if (gpsjobs) { DisablePlayerCheckpoint(playerid); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Вы прибыли к месту, где можно устроиться на выбранную вами работу."); GameTextForPlayer(playerid, "~w~GPS ~r~ OFF", 5000, 1); }[/pwn]
Впринципе все ! Готово. Для красоты можно добавить, что бы во время нахождения игрока на пикапе, вылезало бы сообщение с командой, которую нужно ввести.
Нечего умного в своем посте ты не указал, тема отличная, это не твоя тема а другая, и думаю твоя тема которая была пол годика назад как ты подметил уже не в моде.
C:\Vesper v.1.0 LS\gamemodes\gf.pwn(3894) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28802) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28804) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28806) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28808) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28810) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28812) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28814) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28816) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28818) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28820) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28822) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28824) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28828) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(28831) : error 010: invalid function or declaration C:\Vesper v.1.0 LS\gamemodes\gf.pwn(7332) : warning 204: symbol is assigned a value that is never used: "gpsjobs"
Собственно строки с ерорами:
Code
3894 - if (gpsjobs) 28802 - else if(dialogid==58) 28804 - if(response) 28806 - switch(listitem) 28808 - case 0: { SetPlayerCheckpoint(playerid,359.2994,206.7888,1008.3828,3); 28810 - case 1: { SetPlayerCheckpoint(playerid,2421.4241,-1220.1045,25.5064,3); ...... - Так далее с координатами ероры как выше указано.... 7332 - gpsjobs = CreatePickup(1318, 23, 674.1235,-1271.9990,13.6250,-1);
F_1N, не туда вставил. Замени все что ты вставлял с 28802 строки на след. код [pwn]if(dialogid==58) { if(response) { switch(listitem) { case 0: { SetPlayerCheckpoint(playerid,359.2994,206.7888,1008.3828,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Детективом помечено красным маркером."); } case 1: { SetPlayerCheckpoint(playerid,2421.4241,-1220.1045,25.5064,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Шлюхой помечено красным маркером."); } case 2: { SetPlayerCheckpoint(playerid,2166.3220,-1675.4667,15.0859,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Наркодилером помечено красным маркером."); } case 3: { SetPlayerCheckpoint(playerid,1109.2737,-1796.2308,16.5938,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Угонщиком помечено красным маркером."); } case 4: { SetPlayerCheckpoint(playerid,1154.1823,-1770.8646,16.5992,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Водителем автобуса помечено красным маркером."); } case 5: { SetPlayerCheckpoint(playerid,1072.6245,-1700.2961,13.5469,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Механиком помечено красным маркером."); } case 6: { SetPlayerCheckpoint(playerid,765.6187,-1382.6399,13.6783,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Разносчиком газет помечено красным маркером."); } case 7: { SetPlayerCheckpoint(playerid,531.8411,-1292.3922,17.2422,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Продавцом авто помечено красным маркером."); } case 8: { SetPlayerCheckpoint(playerid,1366.3701,-1274.9960,13.5469,3); SendClientMessage(playerid, COLOR_LIGHTBLUE, "* GPS: Место, где можно устроиться Продавцом оружия помечено красным маркером."); } } } else { SendClientMessage(playerid,COLOR_RED,"Отмена"); return 1; } }[/pwn]
Добавлено (23.04.2010, 16:01) --------------------------------------------- new gpsjobs; ко всем new добавлял ?