http://pro-pawn.ru/showthread.php?91...B0%D1%82%D1%83 вот, только что расчертил подобное, но я не знаю как сделать что бы каждый раз рандомно было, да использовать функцию рандом в форматирование но как, можете пример показать?
Вид для печати
http://pro-pawn.ru/showthread.php?91...B0%D1%82%D1%83 вот, только что расчертил подобное, но я не знаю как сделать что бы каждый раз рандомно было, да использовать функцию рандом в форматирование но как, можете пример показать?
Ну, например
textdraw_pass_panel_button - ваш массив, в котором хранятся ID текстдравов кнопокPHP код:
for(new index_1; index_1 < 10; index_1++)
{
textdraw_pass_panel_button[index_1] = random(10);
for(new index_2; index_2 < 10; index_2++)
{
if(index_1 == 0) break;
if(index_2 == index_1)
{
continue;
}
if(textdraw_pass_panel_button[index_1] == textdraw_pass_panel_button[index_2])
{
textdraw_pass_panel_button[index_1] = random(10);
index_2 = -1;
}
}
}
Нет. Перед формированием текстдравов нужно ставить. И да, я немного не так объяснил. Сделаем иначе
В начало мода
Где text_draw_name - массив, в котором хранятся ID текстдравов КНОПОК (куда цифры вставлять будем). Причём это обязательно должен быть отдельный массив, а не общий для всех текстдравов этого меню.PHP код:
new textdraw_pass_panel_button_string[10];//Атдуши назвал :3
#define TEXTDRAW_BUTTON_PASSWORD[%0] text_draw_name[%0]
И теперь перед тем, как показывать игроку текстдрав,
PHP код:
new text_string[2];
for(new index_1; index_1 < 10; index_1++)
{
textdraw_pass_panel_button_string[TEXTDRAW_BUTTON_PASSWORD[index_1]] = random(10);
for(new index_2; index_2 < 10; index_2++)
{
if(index_1 == 0) break;
if(index_2 == index_1)
{
continue;
}
if(textdraw_pass_panel_button_string[TEXTDRAW_BUTTON_PASSWORD[index_1]] == textdraw_pass_panel_button_string[TEXTDRAW_BUTTON_PASSWORD[index_2]])
{
textdraw_pass_panel_button_string[TEXTDRAW_BUTTON_PASSWORD[index_1]] = random(10);
index_2 = -1;
}
}
format(text_string,sizeof(text_string),"%d",textdraw_pass_panel_button_string[TEXTDRAW_BUTTON_PASSWORD[index_1]]);
TextDrawSetString(TEXTDRAW_BUTTON_PASSWORD[index_1], text_string);// Функцию замените на то, что вам нужно. С текстдравами давно не работал и не помню уже ничего
}
Где text_draw_name - массив, в котором хранятся ID текстдравов КНОПОК (куда цифры вставлять будем). Причём это обязательно должен быть отдельный массив, а не общий для всех текстдравов этого меню.
Тоесть например кнопка "1" переменная new Pass_Keys_1; какое ей массив, не совсем все понял вчитывался раз 5 :(
Ну, допустим, у нас под каждую кнопку выделена своя переменная. То бишь
Это всё надо переделать вPHP код:
new Pass_Keys_1;
new Pass_Keys_2;
new Pass_Keys_3;
//и так до 10
PHP код:
new Pass_Keys[10];
И, соответственно, создание/отображение и прочее переделать из
вPHP код:
Pass_Keys_1
и так далее. После "text_draw_name" заменить на "Pass_Keys"PHP код:
Pass_Keys[0]
new Pass_Keys[10];
и под этим я называю, ТД кнопок 1 и т.д?
Он громадный, за одно может быть подскажете как то можно оптимизировать?
Глобальный потому что я забыл переключить в редакторе для игрока, переделаю под игрока.PHP код:
Textdraw0 = TextDrawCreate(237.199996, 163.271133, "1");
TextDrawLetterSize(Textdraw0, 0.758000, 3.372089);
TextDrawTextSize(Textdraw0, 250.000015, 65.208900);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, -1);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 255);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 1);
TextDrawBackgroundColor(Textdraw0, 51);
TextDrawFont(Textdraw0, 1);
TextDrawSetProportional(Textdraw0, 1);
Textdraw1 = TextDrawCreate(264.000000, 156.308883, "usebox");
TextDrawLetterSize(Textdraw1, 0.000000, 4.550493);
TextDrawTextSize(Textdraw1, 223.599990, 0.000000);
TextDrawAlignment(Textdraw1, 1);
TextDrawColor(Textdraw1, -252645718);
TextDrawUseBox(Textdraw1, true);
TextDrawBoxColor(Textdraw1, -2139062017);
TextDrawSetShadow(Textdraw1, 0);
TextDrawSetOutline(Textdraw1, 0);
TextDrawFont(Textdraw1, 0);
Textdraw2 = TextDrawCreate(308.000030, 162.275543, "2");
TextDrawLetterSize(Textdraw2, 0.763201, 3.247644);
TextDrawTextSize(Textdraw2, 327.999969, 17.422222);
TextDrawAlignment(Textdraw2, 1);
TextDrawColor(Textdraw2, -1);
TextDrawUseBox(Textdraw2, true);
TextDrawBoxColor(Textdraw2, 255);
TextDrawSetShadow(Textdraw2, 0);
TextDrawSetOutline(Textdraw2, 1);
TextDrawBackgroundColor(Textdraw2, 51);
TextDrawFont(Textdraw2, 1);
TextDrawSetProportional(Textdraw2, 1);
Textdraw3 = TextDrawCreate(338.399627, 156.806503, "usebox");
TextDrawLetterSize(Textdraw3, 0.000000, 4.573702);
TextDrawTextSize(Textdraw3, 297.599761, 0.000000);
TextDrawAlignment(Textdraw3, 1);
TextDrawColor(Textdraw3, 0);
TextDrawUseBox(Textdraw3, true);
TextDrawBoxColor(Textdraw3, -2139062017);
TextDrawSetShadow(Textdraw3, 0);
TextDrawSetOutline(Textdraw3, 0);
TextDrawFont(Textdraw3, 0);
Textdraw4 = TextDrawCreate(385.599822, 165.760025, "3");
TextDrawLetterSize(Textdraw4, 0.770000, 3.028622);
TextDrawTextSize(Textdraw4, 406.399993, 75.164436);
TextDrawAlignment(Textdraw4, 1);
TextDrawColor(Textdraw4, -1);
TextDrawUseBox(Textdraw4, true);
TextDrawBoxColor(Textdraw4, 255);
TextDrawSetShadow(Textdraw4, 0);
TextDrawSetOutline(Textdraw4, 1);
TextDrawBackgroundColor(Textdraw4, 51);
TextDrawFont(Textdraw4, 1);
TextDrawSetProportional(Textdraw4, 1);
Textdraw5 = TextDrawCreate(414.399688, 157.304367, "usebox");
TextDrawLetterSize(Textdraw5, 0.000000, 4.565803);
TextDrawTextSize(Textdraw5, 373.599670, 0.000000);
TextDrawAlignment(Textdraw5, 1);
TextDrawColor(Textdraw5, 0);
TextDrawUseBox(Textdraw5, true);
TextDrawBoxColor(Textdraw5, -2139062017);
TextDrawSetShadow(Textdraw5, 0);
TextDrawSetOutline(Textdraw5, 0);
TextDrawFont(Textdraw5, 0);
Textdraw6 = TextDrawCreate(232.400054, 230.470977, "4");
TextDrawLetterSize(Textdraw6, 0.853600, 3.352177);
TextDrawTextSize(Textdraw6, 255.599838, 9.955553);
TextDrawAlignment(Textdraw6, 1);
TextDrawColor(Textdraw6, -1);
TextDrawUseBox(Textdraw6, true);
TextDrawBoxColor(Textdraw6, 255);
TextDrawSetShadow(Textdraw6, 0);
TextDrawSetOutline(Textdraw6, 1);
TextDrawBackgroundColor(Textdraw6, 51);
TextDrawFont(Textdraw6, 1);
TextDrawSetProportional(Textdraw6, 1);
Textdraw7 = TextDrawCreate(264.000000, 267.312164, "usebox");
TextDrawLetterSize(Textdraw7, 0.000000, -5.294445);
TextDrawTextSize(Textdraw7, 223.199981, 0.000000);
TextDrawAlignment(Textdraw7, 1);
TextDrawColor(Textdraw7, 0);
TextDrawUseBox(Textdraw7, true);
TextDrawBoxColor(Textdraw7, -2139062017);
TextDrawSetShadow(Textdraw7, 0);
TextDrawSetOutline(Textdraw7, 0);
TextDrawFont(Textdraw7, 0);
Textdraw8 = TextDrawCreate(307.199951, 230.968643, "5");
TextDrawLetterSize(Textdraw8, 0.768400, 3.068443);
TextDrawTextSize(Textdraw8, 325.999908, 10.453332);
TextDrawAlignment(Textdraw8, 1);
TextDrawColor(Textdraw8, -1);
TextDrawUseBox(Textdraw8, true);
TextDrawBoxColor(Textdraw8, 255);
TextDrawSetShadow(Textdraw8, 0);
TextDrawSetOutline(Textdraw8, 1);
TextDrawBackgroundColor(Textdraw8, 51);
TextDrawFont(Textdraw8, 1);
TextDrawSetProportional(Textdraw8, 1);
Textdraw9 = TextDrawCreate(335.999725, 225.002120, "usebox");
TextDrawLetterSize(Textdraw9, 0.000000, 4.605803);
TextDrawTextSize(Textdraw9, 295.199707, 0.000000);
TextDrawAlignment(Textdraw9, 1);
TextDrawColor(Textdraw9, 0);
TextDrawUseBox(Textdraw9, true);
TextDrawBoxColor(Textdraw9, -2139062017);
TextDrawSetShadow(Textdraw9, 0);
TextDrawSetOutline(Textdraw9, 0);
TextDrawFont(Textdraw9, 0);
Textdraw10 = TextDrawCreate(384.399902, 233.955413, "6");
TextDrawLetterSize(Textdraw10, 0.737999, 3.058488);
TextDrawTextSize(Textdraw10, 405.199951, 18.417778);
TextDrawAlignment(Textdraw10, 1);
TextDrawColor(Textdraw10, -1);
TextDrawUseBox(Textdraw10, true);
TextDrawBoxColor(Textdraw10, 255);
TextDrawSetShadow(Textdraw10, 0);
TextDrawSetOutline(Textdraw10, 1);
TextDrawBackgroundColor(Textdraw10, 51);
TextDrawFont(Textdraw10, 1);
TextDrawSetProportional(Textdraw10, 1);
Textdraw11 = TextDrawCreate(415.999969, 225.997787, "usebox");
TextDrawLetterSize(Textdraw11, 0.000000, 4.716419);
TextDrawTextSize(Textdraw11, 374.399963, 0.000000);
TextDrawAlignment(Textdraw11, 1);
TextDrawColor(Textdraw11, 0);
TextDrawUseBox(Textdraw11, true);
TextDrawBoxColor(Textdraw11, -2139062017);
TextDrawSetShadow(Textdraw11, 0);
TextDrawSetOutline(Textdraw11, 0);
TextDrawFont(Textdraw11, 0);
Textdraw12 = TextDrawCreate(233.200057, 291.697509, "7");
TextDrawLetterSize(Textdraw12, 0.809600, 3.128178);
TextDrawTextSize(Textdraw12, 250.399993, 13.937776);
TextDrawAlignment(Textdraw12, 1);
TextDrawColor(Textdraw12, -1);
TextDrawUseBox(Textdraw12, true);
TextDrawBoxColor(Textdraw12, 255);
TextDrawSetShadow(Textdraw12, 0);
TextDrawSetOutline(Textdraw12, 1);
TextDrawBackgroundColor(Textdraw12, 51);
TextDrawFont(Textdraw12, 1);
TextDrawSetProportional(Textdraw12, 1);
Textdraw13 = TextDrawCreate(262.400024, 285.731109, "usebox");
TextDrawLetterSize(Textdraw13, 0.000000, 4.329257);
TextDrawTextSize(Textdraw13, 222.000000, 0.000000);
TextDrawAlignment(Textdraw13, 1);
TextDrawColor(Textdraw13, 0);
TextDrawUseBox(Textdraw13, true);
TextDrawBoxColor(Textdraw13, -2139062017);
TextDrawSetShadow(Textdraw13, 0);
TextDrawSetOutline(Textdraw13, 0);
TextDrawFont(Textdraw13, 0);
Textdraw14 = TextDrawCreate(307.599914, 293.688751, "8");
TextDrawLetterSize(Textdraw14, 0.780000, 2.988799);
TextDrawTextSize(Textdraw14, 326.399993, 13.439996);
TextDrawAlignment(Textdraw14, 1);
TextDrawColor(Textdraw14, -1);
TextDrawUseBox(Textdraw14, true);
TextDrawBoxColor(Textdraw14, 255);
TextDrawSetShadow(Textdraw14, 0);
TextDrawSetOutline(Textdraw14, 1);
TextDrawBackgroundColor(Textdraw14, 51);
TextDrawFont(Textdraw14, 1);
TextDrawSetProportional(Textdraw14, 1);
Textdraw15 = TextDrawCreate(336.399993, 288.220001, "usebox");
TextDrawLetterSize(Textdraw15, 0.000000, 4.052714);
TextDrawTextSize(Textdraw15, 295.600006, 0.000000);
TextDrawAlignment(Textdraw15, 1);
TextDrawColor(Textdraw15, 0);
TextDrawUseBox(Textdraw15, true);
TextDrawBoxColor(Textdraw15, -2139062017);
TextDrawSetShadow(Textdraw15, 0);
TextDrawSetOutline(Textdraw15, 0);
TextDrawFont(Textdraw15, 0);
Textdraw16 = TextDrawCreate(388.400085, 293.688568, "9");
TextDrawLetterSize(Textdraw16, 0.753200, 2.829512);
TextDrawTextSize(Textdraw16, 404.799957, 0.000001);
TextDrawAlignment(Textdraw16, 1);
TextDrawColor(Textdraw16, -1);
TextDrawUseBox(Textdraw16, true);
TextDrawBoxColor(Textdraw16, 255);
TextDrawSetShadow(Textdraw16, 0);
TextDrawSetOutline(Textdraw16, 1);
TextDrawBackgroundColor(Textdraw16, 51);
TextDrawFont(Textdraw16, 1);
TextDrawSetProportional(Textdraw16, 1);
Textdraw17 = TextDrawCreate(416.000000, 288.717773, "usebox");
TextDrawLetterSize(Textdraw17, 0.000000, 3.776174);
TextDrawTextSize(Textdraw17, 375.599975, 0.000000);
TextDrawAlignment(Textdraw17, 1);
TextDrawColor(Textdraw17, 0);
TextDrawUseBox(Textdraw17, true);
TextDrawBoxColor(Textdraw17, -2139062017);
TextDrawSetShadow(Textdraw17, 0);
TextDrawSetOutline(Textdraw17, 0);
TextDrawFont(Textdraw17, 0);
Textdraw18 = TextDrawCreate(309.600006, 348.942260, "0");
TextDrawLetterSize(Textdraw18, 0.782000, 3.148088);
TextDrawTextSize(Textdraw18, 326.399902, 6.968887);
TextDrawAlignment(Textdraw18, 1);
TextDrawColor(Textdraw18, -1);
TextDrawUseBox(Textdraw18, true);
TextDrawBoxColor(Textdraw18, 255);
TextDrawSetShadow(Textdraw18, 0);
TextDrawSetOutline(Textdraw18, 1);
TextDrawBackgroundColor(Textdraw18, 51);
TextDrawFont(Textdraw18, 1);
TextDrawSetProportional(Textdraw18, 1);
Textdraw19 = TextDrawCreate(336.399993, 342.477783, "usebox");
TextDrawLetterSize(Textdraw19, 0.000000, 4.273950);
TextDrawTextSize(Textdraw19, 298.400024, 0.000000);
TextDrawAlignment(Textdraw19, 1);
TextDrawColor(Textdraw19, 0);
TextDrawUseBox(Textdraw19, true);
TextDrawBoxColor(Textdraw19, -2139062017);
TextDrawSetShadow(Textdraw19, 0);
TextDrawSetOutline(Textdraw19, 0);
TextDrawFont(Textdraw19, 0);
Для игрока нужно делать только сами цифры и поле, в котором будет выводить текст (если оно есть). Бок и прочее оставьте глобальными и создавайте только при старте сервера (НЕ в OnPlayerConnect).
Оптимизировать тут нечего,. Ну разве что индивидуальные текстдравы сделать одним способом, а глобальные - другим. Вся остальная "оптимизация" на обработку кода машиной никак не повлияет.
Свой код замените на этот. После нажмите "CTRL + H"
И в верхнее поле введите
а в нижнееPHP код:
Textdraw18
и после нажмите "Ок" (или что там будет).PHP код:
textdraw_panel_button[0]
И далее макрос замените на
а так же удалите все переменные, а-ляPHP код:
#define TEXTDRAW_BUTTON_PASSWORD[%0] textdraw_panel_button[%0]
и добавьте вместо них однуPHP код:
new Text: textdraw_panel_button[0];
new Text: textdraw_panel_button[1];
new Text: textdraw_panel_button[2];
//И т.д.
PHP код:
new Text: textdraw_panel_button[10];
Example code:PHP код:
stock Shuffle(array[], size = sizeof array)
{
new
index,
rand,
buffer;
for(; index < size; index ++)
{
rand = random(size);
buffer = array[index];
array[index] = array[rand];
array[rand] = buffer;
}
}
PHP код:
new array[10] = {0, 1, ...};
Shuffle(array);
Все отлично работает вот только варинги, я не знаю тут как их исправить.PHP код:
new text_string[2];
for(new index_1; index_1 < 10; index_1++)
{
textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD[index_1]] = random(10); // Тут варинг
for(new index_2; index_2 < 10; index_2++)
{
if(index_1 == 0) break;
if(index_2 == index_1)
{
continue;
}
if(textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD[index_1]] == textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD[index_2]]) // тут варинг (2)
{
textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD[index_1]] = random(10); // тут варинг
index_2 = -1;
}
}
format(text_string,sizeof(text_string),"%d",textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD[index_1]]); // тут варинг
TextDrawSetString(TEXTDRAW_BUTTON_PASSWORD[index_1], text_string);// Функцию замените на то, что вам нужно. С текстдравами давно не работал и не помню уже ничего
}
Теперь вопрос, как проверять что вводиться например...
new admpass = 1111;
Пасс будет 1111
Как его при вводе на кликобельности проверить?
1) Так а какие варнинги то?
2) Записывайте каждую цифру, что вводит игрок, в строку и в конце у вас выйдет строка с введённым паролем
Не соответствие тега.
- - - Добавлено - - -PHP код:
D:\\gamemodes\(420) : warning 213: tag mismatch
D:\r\gamemodes\(428) : warning 213: tag mismatch
D:\\gamemodes\(428) : warning 213: tag mismatch
D:\\gamemodes\(430) : warning 213: tag mismatch
D:\\gamemodes\: warning 213: tag mismatch
Не представляю, как записать.
Покажите как объявляете массив для текстдрава кнопок
пробуйтеPHP код:
new text: textdraw_panel_button[10];
Хорошо, пойдём другим путём.
Верните всё назад (text на Text) и теперь заменяем сначала макрос
а после TextDrawSetStringPHP код:
#define TEXTDRAW_BUTTON_PASSWORD[%0] text:textdraw_panel_button[%0]
PHP код:
TextDrawSetString(textdraw_panel_button[index_1], text_string);
наPHP код:
new textdraw_pass_panel_button_string[10];
PHP код:
new textdraw_pass_panel_button_string[MAX_PLAYERS][10];
CTRL + H и
1) textdraw_pass_panel_button_str[TEXTDRAW_BUTTON_PASSWORD
2) textdraw_pass_panel_button_str[playerid][TEXTDRAW_BUTTON_PASSWORD
Покажите код, срабатывающий при нажатии на текстдравы
Эмм, смотрите на какой текстдрав нажал игрок, проверяете какую цифру установила функция рандома в этот текстдрав и записываете эту цифру в строку. После нажатия на следующий текстдрав, делаете всё то же самое, только уже прикрепляете к предыдущему символу новый. И после того, как игрок нажал 6 раз (или какой длинны у вас пароль), проверяете полученную строку с строкой-паролем.
Ну и теперь при каждом нажатии скрепляйте две строки с помощью strcat (строку и цифру, на которую нажал игроку). А как игрок совершит 6 нажатий, делайте проверку на введённые игроком данные и данные, записанные в аккаунте (пароль).PHP код:
new admin_password[MAX_PLAYERS][6];//Название сами подберите под себя. 6 - число цифр, из которых состоит пароль
И в следующий раз я вам помогать не буду больше, если вы опять попытаетесь писать те системы, в которых ничего не смыслите. Ибо сейчас я написал практически всю систему за вас, что, обычно, бесплатно не делают. И это уже не первый раз. Не путайте раздел для вопросов с разделом гуманитарной помощи
А если просто сделать так в паблик кликобельности
admin_password[playerid][0] +1; в 1
admin_password[playerid][0] +2; в 2
admin_password[playerid][0] +3; в 3
admin_password[playerid][0] +4; в 4 и т.д?
Так, бл*ть, разберитесь. Вы же скриптер, а не просто мимо проходили. За вас никто не выучит и не всунет вам в голову. Вам же говорят, по другому никак не сделать (а если и сделать, получится жуткий костыль). Или же скажите нам спасибо, а сами думайте как сделать иначе, раз лёгкий путь не для вас. Какой смысл нас тут насиловать своим нежеланием изучать то, чем заинтересованы вы, а не мы? Я просто не понимаю некоторых людей...