Перейти к содержанию
VoiceDeveloper

cmd SAMP, CRMP | Система камер видео-наблюдения

Рекомендуемые сообщения

Здравствуйте уважаемые посетители форума :D
Я вот тут недавно делал систему камер с нуля, и хочу поделится с вами :)

Ну что ж преступим:
1) Нам нужно перейти в OnGameModeinit

 

Спойлер

Create3DTextLabel("Компьютер:\nвведите /comp", 0x008080FF, x, y, z, дистанция, vw, 0);
 

 

Мы вывели 3д текст на определенные координаты: x y z
2) Нам нужно перейти в список команд:

 

Спойлер

CMD:comp_exit(playerid)
{
	if(GetPVarInt(playerid,"camera_on") != 1) return ErrorMessage(playerid,"Вы не можете выйти из видео-наблюдения.");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid, 1);
    for(new i;i<10;i++) TextDrawHideForPlayer(playerid,camera_TD[i]);
    SetPVarInt(playerid,"camera_on",0);
    for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, true);
    SetPlayerColor(playerid, TEAM_HIT_COLOR);
    if(PI[playerid][pMember] == fLSPD)
    {
    	SetPlayerVirtualWorld(playerid,40);
    	SetPlayerPos(playerid, 1357.1930,1068.9081,1626.4896);
    	SetPlayerInterior(playerid,99);
    }
    if(PI[playerid][pMember] == fSFPD)
    {
    	SetPlayerVirtualWorld(playerid,41);
    	SetPlayerPos(playerid, 1357.1930,1068.9081,1626.4896);
    	SetPlayerInterior(playerid,99);
    }
    if(PI[playerid][pMember] == fLVPD)
    {
    	SetPlayerVirtualWorld(playerid,42);
    	SetPlayerPos(playerid, 1357.1930,1068.9081,1626.4896);
    	SetPlayerInterior(playerid,99);
    }
    if(PI[playerid][pMember] == fFBI)
    {
    	SetPlayerVirtualWorld(playerid,43);
    	SetPlayerPos(playerid, 1452.3516,272.3959,1013.5259);
		SetPlayerInterior(playerid,75);
    }
	LimitPlayerMarkerRadius(12.0);
  	return 1;
}
CMD:comp(playerid)
{
	if(!IsACop(playerid) || !start_work[playerid]) return ErrorMessage(playerid, "Вы не сотрудник полиции");
	// Полиция ЛС
	if(PlayerToPoint(1.5, playerid,1357.1930,1068.9081,1626.4896) && PI[playerid][pMember] == fLSPD)
	{
		D(playerid, D_CAMERA_LS, DSL,"Видео-наблюдение","1. Мерия ЛС\n2. Больница ЛС\n3. Автошкола\n4.ЖДЛС","Смотреть","Закрыть");
	}
	// Полиция СФ
	if(PlayerToPoint(1.5, playerid,1357.1930,1068.9081,1626.4896) && PI[playerid][pMember] == fSFPD)
	{
		D(playerid, D_CAMERA_SF, DSL,"Видео-наблюдение","1. Армия СФ\n2. Больница СФ\n3. Test\n4. Test","Смотреть","Закрыть");
	}
	// Полиция ЛВ
	if(PlayerToPoint(1.5, playerid,1357.1930,1068.9081,1626.4896) && PI[playerid][pMember] == fLVPD)
	{
		D(playerid, D_CAMERA_LV, DSL,"Видео-наблюдение","1. Test\n2. Больница ЛВ\n3. Test\n4. ЖДЛВ","Смотреть","Закрыть");
	}
	// FBI
	if((PlayerToPoint(1.5, playerid,1452.3516,272.3959,1013.5259) ||  PlayerToPoint(1.5, playerid,1461.6021,261.7532,1013.5259))&& PI[playerid][pMember] == fFBI)
	{
		D(playerid, D_CAMERA, DSL,"Видео-наблюдение городов","1. г.Лос-Сантос\n2. г.Сан-Фиерро\n3. г.Лас-Вентурас","Смотреть","Закрыть");
	}
	return 1;
}

 

Все координаты настраивайте под СЕБЯ!!

3) Перейдем в OnDialogResponse

Спойлер

case D_CAMERA: {
		    switch(listitem)
		    {
				case 0: {
 					D(playerid, D_CAMERA_LS, DSL,"Видео-наблюдение","1. Мерия ЛС\n2. Больница ЛС\n3. Автошкола\n4.ЖДЛС","Смотреть","Закрыть");
				}
				case 1: {
					D(playerid, D_CAMERA_SF, DSL,"Видео-наблюдение","1. Армия СФ\n2. Больница СФ\n3. Test\n4. Test","Смотреть","Закрыть");
				}
				case 2: {
					D(playerid, D_CAMERA_LV, DSL,"Видео-наблюдение","1. Test\n2. Больница ЛВ\n3. Test\n4. ЖДЛВ","Смотреть","Закрыть");
				}
			}
		    return 1;
		}
		case D_CAMERA_LS: {
		    if(!response) return true;
		    for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, false);
		    SetPlayerColor(playerid,0xFFFFFF00);
		    switch(listitem)
		    {
		        // Мерия
				case 0: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPlayerCameraPos(playerid, 1452.8090, -1754.0275, 31.0855);
					SetPlayerCameraLookAt(playerid, 1453.1375, -1753.0785, 30.8855);
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid,1479.1986,-1676.4858,-5.0469);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Больица ЛС
				case 1: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, 1174.4001, -1306.3856, 33.2704);
					SetPlayerCameraLookAt(playerid, 1175.0187, -1307.1770, 32.7454);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid, 1174.4001, -1306.3856, -5.2704);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Автошкола
				case 2: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, 807.1371, -1384.2262, 21.3971);
					SetPlayerCameraLookAt(playerid, 806.1319, -1384.2354, 21.2621);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid,807.1371, -1384.2262, -5.3971);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// ЖДЛС
				case 3: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, 1811.0338, -1941.9403, 18.0896);
					SetPlayerCameraLookAt(playerid, 1810.3422, -1941.2118, 18.0245);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid, 1811.0338, -1941.9403, -5.0896);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
			}
			return 1;
		}
		case D_CAMERA_SF: {
		    if(!response) return true;
		    switch(listitem)
		    {
		        // Армия СФ
				case 0: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, -1579.2354, 523.5781, 27.6000);
					SetPlayerCameraLookAt(playerid, -1578.4017, 523.0150, 27.2650);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid, -1579.2354, 523.5781, -5.6000);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Больница СФ
				case 1: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, -2710.3828, 628.1982, 31.4539);
					SetPlayerCameraLookAt(playerid, -2709.4478, 627.8283, 31.1039);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid, -2710.3828, 628.1982, -5.4539);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Test
				case 2: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					
					TogglePlayerControllable(playerid, 0);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Test
				case 3: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					TogglePlayerControllable(playerid, 0);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
			}
			return 1;
		}
		case D_CAMERA_LV: {
		    if(!response) return true;
		    switch(listitem)
		    {
		        // Test
				case 0: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);

					TogglePlayerControllable(playerid, 0);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Больица ЛВ
				case 1: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, 1674.2358, 1847.4751, 17.3606);
					SetPlayerCameraLookAt(playerid, 1673.2330, 1847.4109, 17.2856);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid,1674.2358, 1847.4751, -5.3606);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// Test
				case 2: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);

					TogglePlayerControllable(playerid, 0);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
				// ЖДЛВ
				case 3: {
				    for(new i=0; i<10; i++) {
						TextDrawShowForPlayer(playerid, camera_TD[i]);
					}
					SetPVarInt(playerid,"camera_on",1);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetPlayerCameraPos(playerid, 2755.8740, 1392.8333, 24.7509);
					SetPlayerCameraLookAt(playerid, 2756.5454, 1392.0841, 24.6609);
					TogglePlayerControllable(playerid, 0);
					SetPlayerPos(playerid, 2755.8740, 1392.8333, -5.7509);
					SendOk(playerid,"Что бы выйти из режима видео-наблюдения пропишите команду /comp_exit.");
				}
			}
			return 1;
		}

 

 

Также все координаты настраивайте под себя.

4) Следующее у нас на очереди ТекстДрав (добавляем в глобальные текстдравы)

Спойлер

	


// Глобальные переменные
new camera_TD[10];




	camera_TD[0] = TextDrawCreate(7.6666, 6.6518, "Box"); // ?????
	TextDrawLetterSize(camera_TD[0], 0.0000, 9.1999);
	TextDrawTextSize(camera_TD[0], 8.0000, 0.0000);
	TextDrawAlignment(camera_TD[0], 1);
	TextDrawColor(camera_TD[0], -1);
	TextDrawUseBox(camera_TD[0], 1);
	TextDrawBoxColor(camera_TD[0], 255);
	TextDrawBackgroundColor(camera_TD[0], 255);
	TextDrawFont(camera_TD[0], 1);
	TextDrawSetProportional(camera_TD[0], 1);
	TextDrawSetShadow(camera_TD[0], 0);

	camera_TD[1] = TextDrawCreate(10.2666, 6.6518, "Box"); // ?????
	TextDrawLetterSize(camera_TD[1], 0.0000, 0.0666);
	TextDrawTextSize(camera_TD[1], 77.0000, 0.0000);
	TextDrawAlignment(camera_TD[1], 1);
	TextDrawColor(camera_TD[1], -1);
	TextDrawUseBox(camera_TD[1], 1);
	TextDrawBoxColor(camera_TD[1], 255);
	TextDrawBackgroundColor(camera_TD[1], 255);
	TextDrawFont(camera_TD[1], 1);
	TextDrawSetProportional(camera_TD[1], 1);
	TextDrawSetShadow(camera_TD[1], 0);

	camera_TD[2] = TextDrawCreate(9.3333, 396.5703, "Box"); // ?????
	TextDrawLetterSize(camera_TD[2], 0.0000, 0.0666);
	TextDrawTextSize(camera_TD[2], 79.3999, 0.0000);
	TextDrawAlignment(camera_TD[2], 1);
	TextDrawColor(camera_TD[2], -1);
	TextDrawUseBox(camera_TD[2], 1);
	TextDrawBoxColor(camera_TD[2], 255);
	TextDrawBackgroundColor(camera_TD[2], 255);
	TextDrawFont(camera_TD[2], 1);
	TextDrawSetProportional(camera_TD[2], 1);
	TextDrawSetShadow(camera_TD[2], 0);

	camera_TD[3] = TextDrawCreate(9.3333, 311.4628, "Box"); // ?????
	TextDrawLetterSize(camera_TD[3], 0.0000, 9.1999);
	TextDrawTextSize(camera_TD[3], 10.0000, 0.0000);
	TextDrawAlignment(camera_TD[3], 1);
	TextDrawColor(camera_TD[3], -1);
	TextDrawUseBox(camera_TD[3], 1);
	TextDrawBoxColor(camera_TD[3], 255);
	TextDrawBackgroundColor(camera_TD[3], 255);
	TextDrawFont(camera_TD[3], 1);
	TextDrawSetProportional(camera_TD[3], 1);
	TextDrawSetShadow(camera_TD[3], 0);

	camera_TD[4] = TextDrawCreate(560.3334, 397.3999, "Box"); // ?????
	TextDrawLetterSize(camera_TD[4], 0.0000, 0.0666);
	TextDrawTextSize(camera_TD[4], 628.0000, 0.0000);
	TextDrawAlignment(camera_TD[4], 1);
	TextDrawColor(camera_TD[4], -1);
	TextDrawUseBox(camera_TD[4], 1);
	TextDrawBoxColor(camera_TD[4], 255);
	TextDrawBackgroundColor(camera_TD[4], 255);
	TextDrawFont(camera_TD[4], 1);
	TextDrawSetProportional(camera_TD[4], 1);
	TextDrawSetShadow(camera_TD[4], 0);

	camera_TD[5] = TextDrawCreate(629.9998, 315.0884, "Box"); // ?????
	TextDrawLetterSize(camera_TD[5], 0.0000, 9.2333);
	TextDrawTextSize(camera_TD[5], 631.0000, 0.0000);
	TextDrawAlignment(camera_TD[5], 1);
	TextDrawColor(camera_TD[5], -1);
	TextDrawUseBox(camera_TD[5], 1);
	TextDrawBoxColor(camera_TD[5], 255);
	TextDrawBackgroundColor(camera_TD[5], 255);
	TextDrawFont(camera_TD[5], 1);
	TextDrawSetProportional(camera_TD[5], 1);
	TextDrawSetShadow(camera_TD[5], 0);

	camera_TD[6] = TextDrawCreate(629.9998, 5.5957, "Box"); // ?????
	TextDrawLetterSize(camera_TD[6], 0.0000, 9.2333);
	TextDrawTextSize(camera_TD[6], 631.0000, 0.0000);
	TextDrawAlignment(camera_TD[6], 1);
	TextDrawColor(camera_TD[6], -1);
	TextDrawUseBox(camera_TD[6], 1);
	TextDrawBoxColor(camera_TD[6], 255);
	TextDrawBackgroundColor(camera_TD[6], 255);
	TextDrawFont(camera_TD[6], 1);
	TextDrawSetProportional(camera_TD[6], 1);
	TextDrawSetShadow(camera_TD[6], 0);

	camera_TD[7] = TextDrawCreate(560.3334, 5.3999, "Box"); // ?????
	TextDrawLetterSize(camera_TD[7], 0.0000, 0.0666);
	TextDrawTextSize(camera_TD[7], 628.0000, 0.0000);
	TextDrawAlignment(camera_TD[7], 1);
	TextDrawColor(camera_TD[7], -1);
	TextDrawUseBox(camera_TD[7], 1);
	TextDrawBoxColor(camera_TD[7], 255);
	TextDrawBackgroundColor(camera_TD[7], 255);
	TextDrawFont(camera_TD[7], 1);
	TextDrawSetProportional(camera_TD[7], 1);
	TextDrawSetShadow(camera_TD[7], 0);

	camera_TD[8] = TextDrawCreate(10.0000, 9.8148, "LD_BEAT:chit"); // ?????
	TextDrawTextSize(camera_TD[8], 26.0000, 28.0000);
	TextDrawAlignment(camera_TD[8], 1);
	TextDrawColor(camera_TD[8], -16776961);
	TextDrawBackgroundColor(camera_TD[8], 255);
	TextDrawFont(camera_TD[8], 4);
	TextDrawSetProportional(camera_TD[8], 0);
	TextDrawSetShadow(camera_TD[8], 0);

	camera_TD[9] = TextDrawCreate(34.6667, 14.5333, "REC"); // ?????
	TextDrawLetterSize(camera_TD[9], 0.4000, 1.6000);
	TextDrawAlignment(camera_TD[9], 1);
	TextDrawColor(camera_TD[9], -1);
	TextDrawBackgroundColor(camera_TD[9], 255);
	TextDrawFont(camera_TD[9], 1);
	TextDrawSetProportional(camera_TD[9], 1);
	TextDrawSetShadow(camera_TD[9], 0);

 

5) Что бы у вас было меньше ошибок, то вот еще стоки :D

stock ErrorMessage(playerid, const text[]) {
	new string[256];
	format(string, sizeof(string), "{ff0000}*{ffffff} %s", text);
	return SendClientMessage(playerid, COLOR_GREY, string);
}
stock SendOk(playerid, const text[]) {
	new string[256];
	format(string, sizeof(string), "{008000}*{ffffff} %s", text);
	return SendClientMessage(playerid, COLOR_GREY, string);
}

Ну вроде бы все :) Пишите что исправить, и я исправлю :D

Автор: VoiceDeveloper
 

Изменено пользователем VoiceDeveloper

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...