Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

GPS NAVIGATOR с голосом гугла

Статус
В этой теме нельзя размещать новые ответы.

Lucky_Drug

Умник
- Добрый день, сейчас я расскажу, как сделать GPS NAVIGATOR с голосом гугла, тобишь голос гугла помогает Вам найти вашу точку.
- Начнем:
1)Создаем массив:
PHP:
enum GPSe{
	Float:xZ,
	Float:yZ,};
new GPS[MAX_PLAYERS][GPSe];
new bool:UsingGPS[MAX_PLAYERS],bool:UsedGPS[MAX_PLAYERS];
2)Создаем команду:
PHP:
	if(!strcmp("/gps",cmd,true))
	{
	    SPD(playerid,D_GPS,2,"GPS NAVIGATOR","По точкам\nПо своим координатам\nОтключить координирование","Выбрать","Выйти");
	    return true;
	}
3)Создаем диалоги:
PHP:
#define D_GPS 906090
#define D_MAPK 906091
		case D_GPS:
		{
			if(!response)return 1;
			switch(listitem)
			{
			    case 0:{SPD(playerid,D_MAPK,2,"GPS локации","Шахта\nPolice LS\nGovernment LS","Выбрать","Выйти");}
			    case 1:{SendMe(playerid,-1,"Выйдите в меню игры\tНажмите КАРТА\tИ кликните правой мышкой(ВСЁ).");UsingGPS[playerid]=true;SetTimerEx("OffGPS",10000,0,"i",playerid);}
                case 2:{UsedGPS[playerid]=false;SendMe(playerid,-1,"Вы отключили координирование");}
			}
		}
		case D_MAPK:
		{
		    new Float:x,Float:y,Float:z;
		    GetPlayerPos(playerid,x,y,z);
		    if(!response)return 1;
		    switch(listitem)
		    {
		        case 0:
				{
				    GPSPOKAZ(playerid,-1864.6481,-1559.6455);
				    UsedGPS[playerid]=true;
					SetPlayerCheckpoint(playerid,-1864.6481,-1559.6455,4.0);
				    SendMe(playerid,-1,"Вы выбрали путь до шахты, путь составляет %f");
				}
				case 1:
				{
				    GPSPOKAZ(playerid,1535.7858,-1675.3593);
				    UsedGPS[playerid]=true;
					SetPlayerCheckpoint(playerid,1535.7858,-1675.3593,4.0);
				    SendMe(playerid,-1,"Вы выбрали путь до полицейского департамента LS, путь составляет %f");
				}
				case 2:
				{
				    GPSPOKAZ(playerid,1481.0782,-1739.2710);
				    UsedGPS[playerid]=true;
					SetPlayerCheckpoint(playerid,1481.0782,-1739.2710,4.0);
				    SendMe(playerid,-1,"Вы выбрали путь до Мерии LS, путь составляет %f");
				}
			}
		}
4)Создаем паблик:
PHP:
forward GpsUse();
public GpsUse(){
    for(new i = 0; i <= GetMaxPlayers(); i++){
	    if(IsPlayerConnected(i)){
			if(IsPlayerInAnyVehicle(i) && PlayerInfo[i][pGPS] == 1 && UsedGPS[i]==true)GPSPOKAZ(i,GPS[i][xZ],GPS[i][yZ]);
		}
	}
    return true;
}
5)Создаем таймер:
- 1. ко всем new:
PHP:
new CheckGpsTimer;
- 2. в public OnGameModeInit:
PHP:
CheckGpsTimer = SetTimer("GpsUse",10000,1);
6)Добавляем public OnPlayerClickMap с нашими функциями, если у Вас уже есть этот паблик, то просто добавьте наши функции в свой паблик:
PHP:
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ){
	if(UsingGPS[playerid]){
		GPSPOKAZ(playerid,fX,fY);
//		SetPlayerCheckpoint(playerid,fX,fY,4.0);
		UsedGPS[playerid]=true;
	}
	return true;
}
7)Создаем проверку и таймер:
PHP:
stock GPSPOKAZ(player, Float:vX, Float:vY){
	if(IsPlayerInAnyVehicle(player) && PlayerInfo[player][pGPS] == 1){
		new textstring[200];
		new Float:x2, Float:y2, Float:z2;
	    new Float:angle;
		GetVehiclePos(GetPlayerVehicleID(player), x2, y2, z2);
	   	GetVehicleZAngle(GetPlayerVehicleID(player), angle);
	 	new Float:skolko = floatsqroot(floatpower(floatabs(floatsub(vX,x2)),2)+floatpower(floatabs(floatsub(vY,y2)),2));
		if(floatround(skolko) <= 15)
		{
		    format(textstring,sizeof(textstring),"B‘ ŒP…—‘‡… ®A ®Y„®OE ‹AM MEC¦O");
			UsedGPS[player]=false;
			new str[22], google[128];
		   	format(str,sizeof str,"Вы добрались до точки");
		   	format(google,sizeof(google),"http://translate.google.kg/translate_tts?ie=UTF-8&q=%s&tl=ru&prev=input",str);
        	PlayAudioStreamForPlayer(player,google);
		}
		else
		{
		    GPS[player][xZ]= vX;
			GPS[player][yZ]= vY;
			new str[60], google[128];
		   	format(str,sizeof str,"До точки Вам осталось %d метров",floatround(skolko));
		   	format(google,sizeof(google),"http://translate.google.kg/translate_tts?ie=UTF-8&q=%s&tl=ru&prev=input",str);
        	PlayAudioStreamForPlayer(player,google);
		}
	}
    return true;
}
forward OffGPS(player);
public OffGPS(player){UsingGPS[player]=false;return true;}
- На этом все, если есть вопросы обращайтесь в скайп.
- Если что-то не получается, то пишите в теме, помогу.
- В коде используется оптимизация SendMe, на милисекунды.
PHP:
#define SendMe(%0,%2,%1) SendClientMessage(%0, %2,%1)
Добавляйте в массив игрока
PHP:
pGPS
- Спасибо всем с Вами был Lucky_Drug.
Взято из мода Unity
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу