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

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

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

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

Мануал Система скинов на TextDraw.

Advokat48

Изучающий
Пользователь
Регистрация
21 Окт 2011
Сообщения
360
Лучшие ответы
0
Репутация
242
итак, хочу вам показать, как сделать систему выбора скинов на TextDraw.

Это всего-лишь пример, писал в new.pwn, так что при вставке в мод, придется все же поработать ручками.

Начнем.

1. Объявим текстдравы, скины, и нужные нам переменные.
В начало мода ставим:
PHP:
new Text: skin[3];
new cskin[MAX_PLAYERS];
new PedMan[9][0] = {
{26},
{25},
{35},
{36},
{50},
{96},
{143},
{262},
{2}
};
new PedMale[5][0] = {
{12},
{55},
{69},
{90},
{93}
};
2. Создадим текстдравы.
В public OnGameModeInit вставляем:
PHP:
        skin[0] = TextDrawCreate(250.000000, 300.000000, "LD_BEAT:left");
	TextDrawBackgroundColor(skin[0], 255);
	TextDrawFont(skin[0], 4);
	TextDrawLetterSize(skin[0], 0.500000, 1.000000);
	TextDrawColor(skin[0], -1);
	TextDrawSetOutline(skin[0], 0);
	TextDrawSetProportional(skin[0], 1);
	TextDrawSetShadow(skin[0], 1);
	TextDrawUseBox(skin[0], 1);
	TextDrawBoxColor(skin[0], 255);
	TextDrawTextSize(skin[0], 34.000000, 28.000000);
	TextDrawSetSelectable(skin[0], true);//Данная функция добавлена в 0.3e, true - делает текстдрав кликабельным, false - отключает кликабельность

	skin[1] = TextDrawCreate(360.000000, 300.000000, "LD_BEAT:right");
	TextDrawBackgroundColor(skin[1], 255);
	TextDrawFont(skin[1], 4);
	TextDrawLetterSize(skin[1], 0.500000, 1.000000);
	TextDrawColor(skin[1], -1);
	TextDrawSetOutline(skin[1], 0);
	TextDrawSetProportional(skin[1], 1);
	TextDrawSetShadow(skin[1], 1);
	TextDrawUseBox(skin[1], 1);
	TextDrawBoxColor(skin[1], 255);
	TextDrawTextSize(skin[1], 34.000000, 28.000000);
	TextDrawSetSelectable(skin[1], true);

	skin[2] = TextDrawCreate(318.000000, 370.000000, "SELECT");
	TextDrawAlignment(skin[2], 2);
	TextDrawBackgroundColor(skin[2], 255);
	TextDrawFont(skin[2], 1);
	TextDrawLetterSize(skin[2], 0.679999, 1.900000);
	TextDrawColor(skin[2], -1);
	TextDrawSetOutline(skin[2], 0);
	TextDrawSetProportional(skin[2], 1);
	TextDrawSetShadow(skin[2], 1);
	TextDrawUseBox(skin[2], 1);
	TextDrawBoxColor(skin[2], 0);
	TextDrawTextSize(skin[2], 15.000000, 68.000000);
	TextDrawSetSelectable(skin[2], true);
3. В public OnGameModeExit вставляем:
PHP:
TextDrawDestroy(skin[0]);TextDrawDestroy(skin[1]);TextDrawDestroy(skin[2]);//удаляем созданные текстдравы
4. Теперь в public OnPlayerClickTextDraw(playerid, Text:clickedid) добавим:
PHP:
if(clickedid == skin[0])//left
	{
	    cskin[playerid]--;
	    if(GetPVarInt(playerid, "pol") == 1)//проверку на пол ставьте свою. Как я уже говорил писал в new.pwn, и для тестирования использовал PVar'ы
	    {
		    if(cskin[playerid] < 0) cskin[playerid] = 9;
		    SetPlayerSkin(playerid, PedMan[cskin[playerid]][0]);
		}
		else if(GetPVarInt(playerid, "pol") == 2)//свою проверку на пол.
		{
		    if(cskin[playerid] < 0) cskin[playerid] = 5;
		    SetPlayerSkin(playerid, PedMale[cskin[playerid]][0]);
		}
	}
	else if(clickedid == skin[1])//right
	{
	    cskin[playerid]++;
	    if(GetPVarInt(playerid, "pol") == 1)//свою проверку
	    {
		    if(cskin[playerid] > 9) cskin[playerid] = 0;
		    SetPlayerSkin(playerid, PedMan[cskin[playerid]][0]);
		}
		else if(GetPVarInt(playerid, "pol") == 2)//свою проверку
		{
		    if(cskin[playerid] > 5) cskin[playerid] = 0;
		    SetPlayerSkin(playerid, PedMale[cskin[playerid]][0]);
		}
	}
	else if(clickedid == skin[2])//select
	{
	    TextDrawHideForPlayer(playerid, skin[0]);
     	    TextDrawHideForPlayer(playerid, skin[1]);
	    TextDrawHideForPlayer(playerid, skin[2]);
	    CancelSelectTextDraw(playerid);
	}
5. Далее создадим сток:
PHP:
stock Invite(pl)
{
	if(GetPVarInt(pl, "pol") == 1)//своя проверка
 	{
		SetPlayerSkin(pl, 26);
	}
	if(GetPVarInt(pl, "pol") == 2)//своя проверка
 	{
		SetPlayerSkin(pl, 12);
	}
    SetPlayerPos(pl, 1971.5336,1424.0586,76.1563);//координаты персонажа
	SetPlayerFacingAngle(pl, 266.4810);//куда будет смотреть персонаж
	SetPlayerVirtualWorld(pl,0);//виртуальный мир
	SetPlayerCameraPos(pl,1975.5336,1424.0586,140);//положение камеры
	TextDrawShowForPlayer(pl, skin[0]);
 	TextDrawShowForPlayer(pl, skin[1]);
    TextDrawShowForPlayer(pl, skin[2]);
    SelectTextDraw(pl, 0x2641FEAA);//делаем текстдравы активными. 0x2641FEAA - цвет, на который будет меняться текстдрав при наведении на него мышки.
	return true;
}
Все что вам остается - немного поработать ручками, и поменять несколько проверок, вставить сохранение в
PHP:
clickedid == skin[2]
При отправлении игрока на выбор скинов, используйте
PHP:
Invite(playerid);
Autor: Advokat48

Про кликабельность текстдравов можете почитать здесь:Урок Den_Wilson

 
Последнее редактирование модератором:
Сверху Снизу