Доступ к готовым решениям

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

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

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

Урок Выбор оружия на TextDraw (универсально)

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

lonin

Компетентный
Добрый день уважаемы пользователи форума!
Представляю вашему вниманию выбор оружия на текстдравах с использованием PreviewModel.

И так, начнем... Ко всем new ... добавляем:

PHP:
new Text: Guns[ 10 ];
new Text: gicont[ 7 ];
Далее добавляем собственно TextDraw:

PHP:
    Guns[0] = TextDrawCreate ( 500.285705,  103.046669,  "usebox" );
	TextDrawLetterSize ( Guns[0],  0.000000,  19.926298 );
	TextDrawTextSize ( Guns[0],  144.285720,  0.000000 );
	TextDrawAlignment ( Guns[0],  1 );
	TextDrawColor ( Guns[0],  0 );
	TextDrawUseBox ( Guns[0],  true );
	TextDrawBoxColor ( Guns[0],  102 );
	TextDrawSetShadow ( Guns[0],  0 );
	TextDrawSetOutline ( Guns[0],  0 );
	TextDrawFont ( Guns[0],  0 );

	Guns[1] = TextDrawCreate ( 233.142959,  109.653350,  "The choice of weapons" );
	TextDrawLetterSize ( Guns[1],  0.449999,  1.600000 );
	TextDrawAlignment ( Guns[1],  1 );
	TextDrawColor ( Guns[1],  16711935 );
	TextDrawSetShadow ( Guns[1],  0 );
	TextDrawSetOutline ( Guns[1],  1 );
	TextDrawBackgroundColor ( Guns[1],  51 );
	TextDrawFont ( Guns[1],  3 );
	TextDrawSetProportional ( Guns[1],  1 );

    gicont[0] = TextDrawCreate ( 188.190536,  169.813354,  "_" ); //m4a1
	TextDrawFont ( gicont[0],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[0],  1 );
	TextDrawBoxColor ( gicont[0],  0x00000000 );
	TextDrawTextSize ( gicont[0],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[0],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[0],  true );
	
	gicont[1] = TextDrawCreate ( 260.952392,  169.386672,  "_" ); //ak47
	TextDrawFont ( gicont[1],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[1],  1 );
	TextDrawBoxColor ( gicont[1],  0x00000000 );
	TextDrawTextSize ( gicont[1],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[1],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[1],  true );
	
	gicont[2] = TextDrawCreate ( 340.952362,  169.813339,  "_" ); // SMG
	TextDrawFont ( gicont[2],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[2],  1 );
	TextDrawBoxColor ( gicont[2],  0x00000000 );
	TextDrawTextSize ( gicont[2],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[2],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[2],  true );
	
	gicont[3] = TextDrawCreate ( 224.380966,  225.279998,  "_" );//shotgun
	TextDrawFont ( gicont[3],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[3],  1 );
	TextDrawBoxColor ( gicont[3],  0x00000000 );
	TextDrawTextSize ( gicont[3],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[3],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[3],  true );
	
	gicont[4] = TextDrawCreate ( 301.333343,  226.986663,  "_" ); //deagle
	TextDrawFont ( gicont[4],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[4],  1 );
	TextDrawBoxColor ( gicont[4],  0x00000000 );
	TextDrawTextSize ( gicont[4],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[4],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[4],  true );
	
	gicont[5] = TextDrawCreate ( 366.476257,  226.560012,  "_" );//sdpistol
	TextDrawFont ( gicont[5],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[5],  1 );
	TextDrawBoxColor ( gicont[5],  0x00000000 );
	TextDrawTextSize ( gicont[5],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[5],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[5],  true );
	
	gicont[6] = TextDrawCreate ( 415.999969,  168.960006,  "_" ); //rifle
	TextDrawFont ( gicont[6],  TEXT_DRAW_FONT_MODEL_PREVIEW );
	TextDrawUseBox ( gicont[6],  1 );
	TextDrawBoxColor ( gicont[6],  0x00000000 );
	TextDrawTextSize ( gicont[6],  60.0,  20.0 );
	TextDrawSetPreviewRot ( gicont[6],  0.000000,  0.000000,  0.000000,  1.7 );
	TextDrawSetSelectable ( gicont[6],  true );

	Guns[2] = TextDrawCreate ( 187.047698,  153.600021,  "M4A1" );
	TextDrawLetterSize ( Guns[2],  0.324665,  1.032533 );
	TextDrawAlignment ( Guns[2],  1 );
	TextDrawColor ( Guns[2],  866844671 );
	TextDrawSetShadow ( Guns[2],  0 );
	TextDrawSetOutline ( Guns[2],  1 );
	TextDrawBackgroundColor ( Guns[2],  51 );
	TextDrawFont ( Guns[2],  1 );
	TextDrawSetProportional ( Guns[2],  1 );

	Guns[3] = TextDrawCreate ( 263.619049,  153.600006,  "AK-47" );
	TextDrawLetterSize ( Guns[3],  0.352095,  1.058133 );
	TextDrawAlignment ( Guns[3],  1 );
	TextDrawColor ( Guns[3],  866844671 );
	TextDrawSetShadow ( Guns[3],  0 );
	TextDrawSetOutline ( Guns[3],  1 );
	TextDrawBackgroundColor ( Guns[3],  51 );
	TextDrawFont ( Guns[3],  1 );
	TextDrawSetProportional ( Guns[3],  1 );

	Guns[4] = TextDrawCreate ( 344.000061,  153.173324,  "MP-5" );
	TextDrawLetterSize ( Guns[4],  0.280476,  1.096531 );
	TextDrawAlignment ( Guns[4],  1 );
	TextDrawColor ( Guns[4],  866844671 );
	TextDrawSetShadow ( Guns[4],  0 );
	TextDrawSetOutline ( Guns[4],  1 );
	TextDrawBackgroundColor ( Guns[4],  51 );
	TextDrawFont ( Guns[4],  1 );
	TextDrawSetProportional ( Guns[4],  1 );

	Guns[5] = TextDrawCreate ( 408.000000,  152.746673,  "Sniper Country" );
	TextDrawLetterSize ( Guns[5],  0.193618,  1.130666 );
	TextDrawAlignment ( Guns[5],  1 );
	TextDrawColor ( Guns[5],  866844671 );
	TextDrawSetShadow ( Guns[5],  0 );
	TextDrawSetOutline ( Guns[5],  1 );
	TextDrawBackgroundColor ( Guns[5],  51 );
	TextDrawFont ( Guns[5],  1 );
	TextDrawSetProportional ( Guns[5],  1 );

	Guns[6] = TextDrawCreate ( 225.523773,  206.933334,  "Shotgun" );
	TextDrawLetterSize ( Guns[6],  0.275523,  1.211732 );
	TextDrawAlignment ( Guns[6],  1 );
	TextDrawColor ( Guns[6],  866844671 );
	TextDrawSetShadow ( Guns[6],  0 );
	TextDrawSetOutline ( Guns[6],  1 );
	TextDrawBackgroundColor ( Guns[6],  51 );
	TextDrawFont ( Guns[6],  1 );
	TextDrawSetProportional ( Guns[6],  1 );

	Guns[7] = TextDrawCreate ( 302.095214,  209.066665,  "Deagle" );
	TextDrawLetterSize ( Guns[7],  0.339522,  1.062399 );
	TextDrawAlignment ( Guns[7],  1 );
	TextDrawColor ( Guns[7],  866844671 );
	TextDrawSetShadow ( Guns[7],  0 );
	TextDrawSetOutline ( Guns[7],  1 );
	TextDrawBackgroundColor ( Guns[7],  51 );
	TextDrawFont ( Guns[7],  1 );
	TextDrawSetProportional ( Guns[7],  1 );

	Guns[8] = TextDrawCreate ( 375.238128,  209.493331,  "SD-Pistol" );
	TextDrawLetterSize ( Guns[8],  0.261047,  1.036800 );
	TextDrawAlignment ( Guns[8],  1 );
	TextDrawColor ( Guns[8],  866844671 );
	TextDrawSetShadow ( Guns[8],  0 );
	TextDrawSetOutline ( Guns[8],  1 );
	TextDrawBackgroundColor ( Guns[8],  51 );
	TextDrawFont ( Guns[8],  1 );
	TextDrawSetProportional ( Guns[8],  1 );

	Guns[9] = TextDrawCreate ( 304.380920,  261.973327,  "Exit" );
	TextDrawLetterSize ( Guns[9],  0.449999,  1.600000 );
	TextDrawAlignment ( Guns[9],  1 );
	TextDrawColor ( Guns[9],  -16179969 );
	TextDrawSetShadow ( Guns[9],  0 );
	TextDrawSetOutline ( Guns[9],  1 );
	TextDrawBackgroundColor ( Guns[9],  51 );
	TextDrawFont ( Guns[9],  2 );
	TextDrawSetProportional ( Guns[9],  1 );
	TextDrawSetSelectable ( Guns[9],  true );
Затем, создадим стоки загрузки TextDraw, их удаления и отображения PreviewModel:

PHP:
stock GiveGunTextShow ( playerid ) // Отображение текстдравов
{
	for ( new t; t != 7; t++) TextDrawShowForPlayer ( playerid,  gicont[t] ); // показываем иконки
	for ( new x; x != 10; x++) TextDrawShowForPlayer ( playerid,  Guns[x] );// Показываем обводку.
	SelectTextDraw ( playerid,  0xFFFF00AA );// делаем кликабельность
	return true;
}

stock GiveGunTextHide ( playerid )
{
	for ( new t; t != 7; t++) TextDrawHideForPlayer ( playerid,  gicont[t] ); // Убираем иконки
	for ( new t; t != 10; t++) TextDrawHideForPlayer ( playerid,  Guns[t] ); // Убираем обводку.
	CancelSelectTextDraw ( playerid ); // Убираем мышь ;3
	return true;
}

stock GiveGunsTextModel( q, w, e, r, t, y, z) // функция заполнения PreviewModel
{
	TextDrawSetPreviewModel ( gicont[0], q );
	TextDrawSetPreviewModel ( gicont[1], w );
	TextDrawSetPreviewModel ( gicont[2], e );
	TextDrawSetPreviewModel ( gicont[3], r );
	TextDrawSetPreviewModel ( gicont[4], t );
	TextDrawSetPreviewModel ( gicont[5], y );
	TextDrawSetPreviewModel ( gicont[6], z );
}
Далее создаем комманду:

PHP:
YCMD: getgun ( playerid,  params[],  help)
{
        if ( !IsPlayerConnected ( playerid ) ) return true;
	GiveGunsTextModel ( 356, 355, 353, 349, 348, 347, 357 ); // Рисуем иконки оружия
	GiveGunTextShow ( playerid ); // показываем текстдравы
        return true;
}
Теперь делаем функцию выдачи оружия) Для начала в коллбэк OnPlayerClickTextDraw:

PHP:
if ( _:clickedid != INVALID_TEXT_DRAW)
	{
		if ( clickedid == gicont[0]) ShowPlayerDialogEx ( playerid,  2472,  1,  "Give Guns",  "Выбрано: M4A1\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[1]) ShowPlayerDialogEx ( playerid,  2473,  1,  "Give Guns",  "Выбрано: AK-47\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[2]) ShowPlayerDialogEx ( playerid,  2474,  1,  "Give Guns",  "Выбрано: MP-5\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[3]) ShowPlayerDialogEx ( playerid,  2475,  1,  "Give Guns",  "Выбрано: Shotgun\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[4]) ShowPlayerDialogEx ( playerid,  2476,  1,  "Give Guns",  "Выбрано: Deagle\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[5]) ShowPlayerDialogEx ( playerid,  2477,  1,  "Give Guns",  "Выбрано: SD Pistol\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == gicont[6]) ShowPlayerDialogEx ( playerid,  2478,  1,  "Give Guns",  "Выбрано: Sniper Country\nВведите количество патроно\nМаксимальное количество: 150",  "Выбрать",  "Выход" );
		else if ( clickedid == Guns[9]) ShowPlayerDialogEx ( playerid,  2479,  DIALOG_STYLE_MSGBOX,  "Подтвердите выход",  "Вы действительно хотите выйти из выбора оружия?",  "Да",  "Нет" );
    }
ВНИМАНИЕ: обязательно проверьте незанятость диалогов: 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479

Добавляем функционал диалогов:

PHP:
   case 2472:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2472, 1, "Give Guns", "Выбрано оружие: M4A1\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  31, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов M4A1", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2473:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2473, 1, "Give Guns", "Выбрано оружие: AK-47\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  30, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов AK-47", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2474:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2474, 1, "Give Guns", "Выбрано оружие: MP5\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  29, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов MP5", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2475:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2475, 1, "Give Guns", "Выбрано оружие: ShotGun\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  25, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов ShotGun", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2476:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2476, 1, "Give Guns", "Выбрано оружие: Deagle\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  24, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов Deagle", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2477:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2477, 1, "Give Guns", "Выбрано оружие: SD Pistol\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  23, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов SD Pistol", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}
	case 2478:
		{
			if ( response )
			{
				if ( !strlen ( inputtext)) return ShowPlayerDialogEx ( playerid,  2478, 1, "Give Guns", "Выбрано оружие: Sniper Coutry\nВведите количество патронов\nМаксимальное количество: 150", "Выбрать", "Выход" );
				new ptr = strval ( inputtext );
				if ( ptr < 1 || ptr > 150) return SendClientMessage ( playerid,  0x00D900C8,  "{FFFFFF}Допустимые значения: 1 - 150" );
				GiveWeapon ( playerid,  33, ptr );
				format ( string,  sizeof ( string ),  "Вы взяли: %d патронов Sniper Country", ptr );
			    SendClientMessage ( playerid,  COLOR_LIGHTGREEN,  string );
			}
			GiveGunTextHide ( playerid );
		}	
    case 2479:
        {
            if ( response)
            {
				B_HideGuns ( playerid );
				SendClientMessage ( playerid,  COLOR_GREEN,  "Вы отменили выбор оружия!" );
            }
		    else
			{
				SendClientMessage ( playerid,  COLOR_GREEN,  "Вы отменили выход. Выбирайте оружие!" );
            }
        }
Вот и все :ar: Система готова, скриншот в студии:



Спасибо за внимание! :ar:
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу