[Урок] Делаем GPS как на Advance RP - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Урок] Делаем GPS как на Advance RP
ExPRO Дата: Воскресенье, 18.05.2014, 19:44 | Сообщение # 1
Боец
Сообщений: 181
Статус: Offline
Ко всем new;
Код
new Text:GPSON[ MAX_PLAYERS ];

В OnPlayerConnect;
Код
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;
}  

В диалоги: OnDialogResponse
Код
        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;
}  


Скрин: http://rghost.ru/49354201/image.png


>>> My sa:mp server 176.32.39.43:7777 <<<
vladua100 Дата: Понедельник, 19.05.2014, 11:13 | Сообщение # 2
Боец
Сообщений: 104
Статус: Offline
1.Зачем делать дофига глобальных текстдравов?
2.Зачем нужно использовать пвары и долбить постоянные проверки IsPlayerInRangeOfPoint?
Выводы:
1.Достаточно создать 1 глобальный текстдрав.
2.Есть стример,который используют при создании всех модов,т.к. на 500 объектах далеко не уехать.Но он еще может порадовать колбэком OnPlayerEnterDynamicCP(playerid, checkpointid) и функцией CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0),которые облегчат жизнь


Сообщение отредактировал vladua100 - Понедельник, 19.05.2014, 11:14
[CM]Fich Дата: Понедельник, 19.05.2014, 11:57 | Сообщение # 3
Бывалый
Сообщений: 401
Статус: Offline
vladua100, Это не его код rolleyes
vladua100 Дата: Понедельник, 19.05.2014, 12:01 | Сообщение # 4
Боец
Сообщений: 104
Статус: Offline
[CM]Fich, да какая разница.Если он создал тему,то значит,что он уверен в полезности сего кода.Иначе это тупой набив постов
ExPRO Дата: Понедельник, 19.05.2014, 17:38 | Сообщение # 5
Боец
Сообщений: 181
Статус: Offline
vladua100, я выложил код, кому надо тот возьмёт, самое главное, что всё работает, а оптимизация меня мало волнует.

>>> My sa:mp server 176.32.39.43:7777 <<<
DynamiC Дата: Среда, 28.05.2014, 14:56 | Сообщение # 6
Боец
Сообщений: 123
Статус: Offline
Цитата ExPRO ()
vladua100, я выложил код, кому надо тот возьмёт, самое главное, что всё работает, а оптимизация меня мало волнует.

Автора укажи.
Цитата Птенец^^ ()
Правила форума не знакомы? При регистрации ты соглашаешся с ними
Mickey77 Дата: Четверг, 19.06.2014, 19:06 | Сообщение # 7
► This is MICKEY77™ ◄
Сообщений: 209
Статус: Offline
взял..
Спасибо за помощь!


==========================
[+] Skype: Не работаю в скайпе
[+] ВКонтакте: vk.com/deny.kripke
[+] Web Money: R701011962259
[+] Yandex Money: 410011653090215
==========================
█████████████████████████████████████████
█─███─█───█────█─██─█───█──█──█────█────█
█──█──██─██─██─█─█─██─████───██─██─█─██─█
█─█─█─██─██─████──███───███─█████──███──█
█─███─██─██─██─█─█─██─█████─████──███──██
█─███─█───█────█─██─█───███─███──███──███
  • Страница 1 из 1
  • 1
Поиск: