По какому принципу можно реализовать такое,
Вверху есть тексдрав (он мигнул), затем под ним ещё тексдрав, нужно чтобы игрок нажимал именно на это, то что внизу.
И таких несколько,
Подскажите как проще реализовать
По какому принципу можно реализовать такое,
Вверху есть тексдрав (он мигнул), затем под ним ещё тексдрав, нужно чтобы игрок нажимал именно на это, то что внизу.
И таких несколько,
Подскажите как проще реализовать
PHP код:
const COUNT_BOX = 4;
new
Text:td_FlashBox[COUNT_BOX],
Text:td_SelectableBox[COUNT_BOX];
public OnGameModeInit()
{
td_FlashBox[0] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет мигать №1");
td_FlashBox[1] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет мигать №2");
td_FlashBox[2] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет мигать №3");
td_FlashBox[3] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет мигать №4");
td_SelectableBox[0] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет выбирать игрок №1");
td_SelectableBox[1] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет выбирать игрок №2");
td_SelectableBox[2] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет выбирать игрок №3");
td_SelectableBox[3] = TextDrawCreate(0.0, 0.0, "Текстдрав, который будет выбирать игрок №4");
}
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, td_FlashBox[0]);
TextDrawShowForPlayer(playerid, td_FlashBox[1]);
TextDrawShowForPlayer(playerid, td_FlashBox[2]);
TextDrawShowForPlayer(playerid, td_FlashBox[3]);
TextDrawShowForPlayer(playerid, td_SelectableBox[0]);
TextDrawShowForPlayer(playerid, td_SelectableBox[1]);
TextDrawShowForPlayer(playerid, td_SelectableBox[2]);
TextDrawShowForPlayer(playerid, td_SelectableBox[3]);
SetPVarInt(playerid, "TextDrawSelectionMode", 1);
return 1;
}
public OnPlayerCommandText(...)
{
if(!strcmp("/test", cmdtext, true))
{
new idx = random(COUNT_BOX);
TextDrawColor(td_FlashBox[idx], 0x000000FF);//Изменили цвет
TextDrawShowForPlayer(playerid, td_FlashBox[idx]);
TextDrawColor(td_FlashBox[idx], 0xFFFFFFFFF);//Вернули назад (потребуется таймер, скорее всего)
TextDrawShowForPlayer(playerid, td_FlashBox[idx]);
SetPVarInt(playerid, "ExpectedSelectionTD", idx);
return 1;
}
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(GetPVarInt(playerid, "TextDrawSelectionMode"))
{
new idx = GetPVarInt(playerid, "ExpectedSelectionTD");
DeletePVar(playerid, "ExpectedSelectionTD");
if(clickedid == td_SelectableBox[idx])
{
//Игрок выбрал правильно
}
else
{
//Игрок выбрал неправильно
}
}
return 1;
}
Последний раз редактировалось DeimoS; 13.05.2017 в 16:26.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Killer (13.05.2017)
Огромнейшее тебе спасибо!
Но как таймер поставить? Я с ними плохо дружу.
;-)Код://PlayerTextDrawColor(playerid, td_FlashBox[playerid][idx], 0xFFFFFFFFF);//Вернули назад (потребуется таймер, скорее всего) PlayerTextDrawShow(playerid, td_FlashBox[playerid][idx]);
Ну так подружись :) SetTimerEx
Последний раз редактировалось DeimoS; 13.05.2017 в 16:05.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Killer (13.05.2017)
А как сделать чтобы рандом не повторялся? Ибо иногда сразу же повтор берет.
- - - Добавлено - - -PHP код:
public OnPlayerCommandText(...)
{
if(!strcmp("/test", cmdtext, true))
{
new idx;
_random_repeat:
idx = random(COUNT_BOX);
if(GetPVarType(playerid, "ExpectedSelectionTD") != PLAYER_VARTYPE_NONE && GetPVarInt(playerid, "ExpectedSelectionTD") == idx)
goto _random_repeat;
TextDrawColor(td_FlashBox[idx], 0x000000FF);//Изменили цвет
TextDrawShowForPlayer(playerid, td_FlashBox[idx]);
TextDrawColor(td_FlashBox[idx], 0xFFFFFFFFF);//Вернули назад (потребуется таймер, скорее всего)
TextDrawShowForPlayer(playerid, td_FlashBox[idx]);
SetPVarInt(playerid, "ExpectedSelectionTD", idx);
return 1;
}
}
И да, не забудь удалить pVar когда текстдравы скроешь
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Killer (13.05.2017)
Ошибка ещё одна, не знаю что такое.
Например td_SelectableBox[playerid][0], используется ячейка (0)
В клике принимается ячейка эта 0.
PVar присваивает 0 значение при удалении.Код:if(playertextid == td_SelectableBox[playerid][idx]) {
Баг получается такой, то что выбирать я могу всегда 0 тексдрав, без зависимости можно или нет.Код:DeletePVar(playerid, "ExpectedSelectionTD");
Эмм, во-первых зачем там индивидуальные текстдравы? Можно и глобальными обойтись.
Во-вторых, покажи код, который получился у тебя
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
На индивидуальных тексдравах мне удобнее, проще говоря. Это плохо?
Код:if(GetPVarInt(playerid, "TextDrawSelectionMode")) { new idx = GetPVarInt(playerid, "ExpectedSelectionTD"); PlayerTextDrawColor(playerid, td_FlashBox[playerid][idx], 0xFFFFFFFFF); PlayerTextDrawShow(playerid, td_FlashBox[playerid][idx]); if(playertextid == td_SelectableBox[playerid][idx]) { DeletePVar(playerid, "ExpectedSelectionTD"); new rand; _random_repeat: rand = random(COUNT_BOX); if(GetPVarType(playerid, "ExpectedSelectionTD") != PLAYER_VARTYPE_NONE && GetPVarInt(playerid, "ExpectedSelectionTD") == rand) goto _random_repeat; PlayerTextDrawColor(playerid, td_FlashBox[playerid][rand], 0xfCD5C5Cff);//Èçìåíèëè öâåò PlayerTextDrawShow(playerid, td_FlashBox[playerid][rand]); SetPVarInt(playerid, "ExpectedSelectionTD", rand); } else { SendClientMessage(playerid,-1,"Âûáðàë íåïðàâèëüíî"); DeletePVar(playerid, "ExpectedSelectionTD"); return true; } }
Последний раз редактировалось Killer; 13.05.2017 в 18:49.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)