PDA

Просмотр полной версии : [Мануал] Банкоматы на TextDraw



Виталий
23.12.2014, 23:37
Всем привет! И в этой теме я расскажу вам как создать банкоматы на TextDraw

И так начнем:

Ко всем new

new Text:Bankomat[8];

Далее в public OnPlayerDisconnect(playerid, reason)


for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);//Для того что бы не забивать память,очищаем

Теперь в public OnGameModeInit()


/////////////=========[Bankomat]
Bankomat[0] = TextDrawCreate(215.529495, 134.749984, "Terminal Megaphone");///"Terminal Megaphone" можно заменить на свое.
TextDrawLetterSize(Bankomat[0], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[0], 414.588073, -51.916679);
TextDrawAlignment(Bankomat[0], 1);
TextDrawColor(Bankomat[0], -1);
TextDrawUseBox(Bankomat[0], true);
TextDrawBoxColor(Bankomat[0], 8388863);
TextDrawSetShadow(Bankomat[0], 0);
TextDrawSetOutline(Bankomat[0], 1);
TextDrawBackgroundColor(Bankomat[0], 51);
TextDrawFont(Bankomat[0], 1);
TextDrawSetProportional(Bankomat[0], 1);

Bankomat[1] = TextDrawCreate(213.647064, 153.416610, "New Textdraw");
TextDrawLetterSize(Bankomat[1], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[1], 64.470603, 74.083351);
TextDrawAlignment(Bankomat[1], 1);
TextDrawColor(Bankomat[1], -1);
TextDrawUseBox(Bankomat[1], true);
TextDrawBoxColor(Bankomat[1], 0);
TextDrawSetShadow(Bankomat[1], 0);
TextDrawSetOutline(Bankomat[1], 1);
TextDrawBackgroundColor(Bankomat[1], 51);
TextDrawFont(Bankomat[1], 5);
TextDrawSetProportional(Bankomat[1], 1);
TextDrawSetSelectable(Bankomat[1], true);
TextDrawSetPreviewModel(Bankomat[1], 1274);
TextDrawSetPreviewRot(Bankomat[1], 0.000000, 0.000000, 0.000000, 1.000000);

Bankomat[2] = TextDrawCreate(279.058868, 153.999969, "New Textdraw");
TextDrawLetterSize(Bankomat[2], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[2], 68.705856, 73.500007);
TextDrawAlignment(Bankomat[2], 1);
TextDrawColor(Bankomat[2], -1);
TextDrawUseBox(Bankomat[2], true);
TextDrawBoxColor(Bankomat[2], 0);
TextDrawSetShadow(Bankomat[2], 0);
TextDrawSetOutline(Bankomat[2], 1);
TextDrawBackgroundColor(Bankomat[2], 51);
TextDrawFont(Bankomat[2], 5);
TextDrawSetProportional(Bankomat[2], 1);
TextDrawSetSelectable(Bankomat[2], true);
TextDrawSetPreviewModel(Bankomat[2], 1277);
TextDrawSetPreviewRot(Bankomat[2], 234.000000, 0.000000, 0.000000, 1.000000);

Bankomat[3] = TextDrawCreate(348.705932, 154.000015, "New Textdraw");
TextDrawLetterSize(Bankomat[3], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[3], 67.764709, 73.499992);
TextDrawAlignment(Bankomat[3], 1);
TextDrawColor(Bankomat[3], -1);
TextDrawUseBox(Bankomat[3], true);
TextDrawBoxColor(Bankomat[3], 0);
TextDrawSetShadow(Bankomat[3], 0);
TextDrawSetOutline(Bankomat[3], 1);
TextDrawBackgroundColor(Bankomat[3], 51);
TextDrawFont(Bankomat[3], 5);
TextDrawSetProportional(Bankomat[3], 1);
TextDrawSetSelectable(Bankomat[3], true);
TextDrawSetPreviewModel(Bankomat[3], 1273);
TextDrawSetPreviewRot(Bankomat[3], 0.000000, 0.000000, 0.000000, 1.000000);

Bankomat[4] = TextDrawCreate(215.529388, 231.000000, "Put.M");
TextDrawLetterSize(Bankomat[4], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[4], 276.235229, 14.583333);
TextDrawAlignment(Bankomat[4], 1);
TextDrawColor(Bankomat[4], -1);
TextDrawUseBox(Bankomat[4], true);
TextDrawBoxColor(Bankomat[4], 8388863);
TextDrawSetShadow(Bankomat[4], 0);
TextDrawSetOutline(Bankomat[4], 1);
TextDrawBackgroundColor(Bankomat[4], 51);
TextDrawFont(Bankomat[4], 1);
TextDrawSetProportional(Bankomat[4], 1);

Bankomat[5] = TextDrawCreate(280.941284, 230.999938, "Balance");
TextDrawLetterSize(Bankomat[5], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[5], 346.352783, 32.083335);
TextDrawAlignment(Bankomat[5], 1);
TextDrawColor(Bankomat[5], -1);
TextDrawUseBox(Bankomat[5], true);
TextDrawBoxColor(Bankomat[5], 8388863);
TextDrawSetShadow(Bankomat[5], 0);
TextDrawSetOutline(Bankomat[5], 1);
TextDrawBackgroundColor(Bankomat[5], 51);
TextDrawFont(Bankomat[5], 1);
TextDrawSetProportional(Bankomat[5], 1);

Bankomat[6] = TextDrawCreate(350.588287, 230.999954, "Home");
TextDrawLetterSize(Bankomat[6], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[6], 414.588195, 17.499998);
TextDrawAlignment(Bankomat[6], 1);
TextDrawColor(Bankomat[6], -1);
TextDrawUseBox(Bankomat[6], true);
TextDrawBoxColor(Bankomat[6], 8388863);
TextDrawSetShadow(Bankomat[6], 0);
TextDrawSetOutline(Bankomat[6], 1);
TextDrawBackgroundColor(Bankomat[6], 51);
TextDrawFont(Bankomat[6], 1);
TextDrawSetProportional(Bankomat[6], 1);

Bankomat[7] = TextDrawCreate(414.588195, 112.000030, "LD_CHAT:thumbdn");
TextDrawLetterSize(Bankomat[7], 0.449999, 1.600000);
TextDrawTextSize(Bankomat[7], 21.176458, 22.166667);
TextDrawAlignment(Bankomat[7], 1);
TextDrawColor(Bankomat[7], 16711935);
TextDrawUseBox(Bankomat[7], true);
TextDrawBoxColor(Bankomat[7], 0);
TextDrawSetShadow(Bankomat[7], 0);
TextDrawSetOutline(Bankomat[7], 1);
TextDrawBackgroundColor(Bankomat[7], 51);
TextDrawFont(Bankomat[7], 4);
TextDrawSetProportional(Bankomat[7], 1);
TextDrawSetSelectable(Bankomat[7], true);

И теперь, если у вас есть команда /atm поступаем следующим образом:




else if (strcmp(cmd, "/atm", true) == 0)
{
if(IsABankomat(playerid))//У меня это проверка у банкомата ли ты,у вас либо убирайте,либо на свое.
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return true;
ApplyAnimation(playerid,"CRIB","CRIB_Use_Switch",4.0,0,0,0,0,0);
for(new x; x < 8; x++) TextDrawShowForPlayer(playerid, Bankomat[x]);//Показывает текстдрав
SelectTextDraw(playerid, 0xFFFFFFAA);//Даем выбор на ТД
return true;
}
}

И так же к кейсам, тоесть там где открывается меню банкоматов при нажатии ALT делаем почти то же самое:


if(newkeys == 16)
{
if(!IsPlayerInAnyVehicle(playerid))
{
if(IsABankomat(playerid))
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) { return true; }
ApplyAnimation(playerid,"CRIB","CRIB_Use_Switch",4.0,0,0,0,0,0);
for(new x; x < 8; x++) TextDrawShowForPlayer(playerid, Bankomat[x]);//Показываем TextDraw
SelectTextDraw(playerid, 0xFFFFFFAA);//Даем выбор
return true;
}
}
}Как видите Диалог я убрал, и вам нужно сделать аналогично.

и наконец в public OnPlayerClickTextDraw(playerid, Text:clickedid)


/////////////////============[Bankomate]
if(clickedid == Bankomat[1])
{
format(stringer,sizeof(stringer), "Баланс вашего счета: %d вирт", PlayerInfo[playerid][pBank]);
ShowPlayerDialog(playerid,8904,DIALOG_STYLE_LIST,stringer," - 500$\n - 1000$\n - 5000$\n - 10000$\n - 20000$\n - 50000$\n - 100000$","Ок","<< Назад");
for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);
CancelSelectTextDraw(playerid);
return true;

}
if(clickedid == Bankomat[2])
{
format(stringer,sizeof(stringer), "_________________________\nНа вашем счету %d вирт\n_________________________",PlayerInfo[playerid][pBank]);
ShowPlayerDialog(playerid,8905,DIALOG_STYLE_MSGBOX,"Терминал",stringer,"<< Назад","");
for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);
CancelSelectTextDraw(playerid);
return true;

}
if(clickedid == Bankomat[3])
{
if(PlayerInfo[playerid][pPhousekey] == 255) return SendClientMessage(playerid, COLOR_WHITE, "У вас нет дома");
ShowPlayerDialog(playerid, 9521, DIALOG_STYLE_LIST, "Терминал","- на 7 дней\n- на 14 дней","Перевести", "Выход");
for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);
CancelSelectTextDraw(playerid);
return true;

}
if(clickedid == Bankomat[7])
{
for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);
CancelSelectTextDraw(playerid);
}
Ну и конечно же результат нашей работы будет таким:
http://i008.radikal.ru/1412/44/ced8df3c4d58.png

Если хотите, могу сделать сис-му банка на TextDraw, пишите если кому то нужно ;3.

L0ndl3m
24.12.2014, 00:30
Функцию IsABankomat мы сами должны сделать как я понял?

Просмотрите свой пост, обычный текст занесён в PHP код. Вам 48 часов на исправление кода.

Пельмень
24.12.2014, 01:12
for(new x; x < 8; x++) TextDrawHideForPlayer(playerid, Bankomat[x]);//Для того что бы не забивать память,очищаем
Как это понимать, друг мой? По твоему, если текст дравы скрыты, массив Bankomat не забивает память? Или что то другое? Не пойму.

wAx
24.12.2014, 22:27
Мануал выполнен не очень качественно. Автору советую поработать над своим (или может не своим) кодом.