Решил сделать рандом на нажатие различных клавиш. Можете показать структура как это всё будет выглядеть?
Чтобы в newkeys выводить различные виды кнопок начиная от кнопки прыжка заканчивая кнопкой огня.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_FIRE)
{
// ДЕЙСТВИЕ
}
return 1;
}
Подскажите как должен выглядить код? В голову ничего не приходить, изначально думал выводить кнопки через свитч, правда запутался потом :lazy:
underwoker
24.08.2014, 01:27
Решил сделать рандом на нажатие различных клавиш. Можете показать структура как это всё будет выглядеть?
Чтобы в newkeys выводить различные виды кнопок начиная от кнопки прыжка заканчивая кнопкой огня.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_FIRE)
{
// ДЕЙСТВИЕ
}
return 1;
}
Подскажите как должен выглядить код? В голову ничего не приходить, изначально думал выводить кнопки через свитч, правда запутался потом :lazy:
Хочешь сделать что то типо человеку надо будет нажимать кнопки которые будут выводиться ему?
В начало мода что-то типа
new random_keys[] = { 1, 2, 4, 8, 16, 32, 128, 512, 1024, 8192, 16384, 65536, 131072, 262144, -128, 128 };
new keys_name[sizeof(random_keys)][] = { "TAB", "C", "ЛКМ", "Прыжок", "Enter", "Lshift", "ПКМ", "NUM 1/СКМ", "NUM4", "NUM6", "Y", "N", "H", "G", "W", "S" };
new key_pressed[MAX_PLAYERS] = -1;
И потом там, где нужно выдавать рандомную кнопку
key_pressed[playerid] = random(sizeof(random_keys));
new string[sizeof(keys_name[])+14];
format(string, sizeof(string), "Нажмите на \"%s\"", keys_name[key_pressed[playerid]]);
SendClientMessage(playerid, -1, string);
Ну и отлавливаем нашу кнопку
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == key_pressed[playerid])
{
SendClientMessage(playerid, -1, "Кнопка угадана!");
key_pressed[playerid] = random(sizeof(random_keys));
new string[sizeof(keys_name[])+14];
format(string, sizeof(string), "Нажмите на \"%s\"", keys_name[key_pressed[playerid]]);
SendClientMessage(playerid, -1, string);
return 1;
}
return 1;
}
А чтоб игрок именно подряд нажимал, а не всё подряд - нужно ещё одну переменную для записи предыдущей кнопки и сверять oldkeys с значением этой переменной
Спасибо большое! Да, я понял) Мне главное было понять как конструкция должна была выглядеть :)
Спасибо большое! Да, я понял) Мне главное было понять как конструкция должна была выглядеть :)
Только не забываем, что SA-MP отлавливает не нажатие кнопки, а действие, которое эта кнопка совершает по дэфолту (если это Enter - то вход/выход из транспорта и т.д.).
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot