Ctrl+A и Ctrl+D в машине, возможно ли это?
#1

Здравствуйте, не давно я наткнулся на такую проблему, Ctrl+A и Ctrl+D совершенно не работают, в
Wiki Keys ничего про них нету, а в GetPlayerKeys есть такая цитата: "С обновления 0.3.7, кнопки "A" и "D" не признаны когда вы будете в транспортном средстве. Однако кнопки "W" и "S" могут быть обнаружены с параметром "Keys"."
Но, я зашел на один проект Crime-RPG, там такая-же система какая я хочу сделать, и у них всё работает!!!!
Если у них работает, значит и у меня должно, и их сервер так-же находится на версий 0.3.7 R2.
Нашел такое решение:

Не знаю если я применил её коректно, но всё-же, логи выдаёт странные:
PHP Code:
[16:32:28] [chat] [Nick_Name]: CTRL
[16:32:291 0 0
[16:32:34] [chat] [Nick_Name]: CTRL+W
[16:32:351 0 0
[16:32:351 0 0
[16:32:39] [chat] [Nick_Name]: CTRL+S
[16:32:391 0 0
[16:32:391 0 0
[16:32:43] [chat] [Nick_Name]: CTRL+A
[16:32:441 0 0
[16:32:48] [chat] [Nick_Name]: CTRL+D
[16:32:491 0 0
[16:33:26] [chat] [Nick_Name]: CTRL+S+D
[16:33:261 0 0
[16:33:281 0 128
[16:33:41] [chat] [Nick_Name]: CTRL+S+A
[16:33:441 0 -128 
P.S: После каждой упоминаний, например "CTRL+A" я нажимал комбинацию клавиш которую говорил.
Надеюсь на вашу помощь...
Если что-то не понятное напишите об этом..
//Update
Забыл сказать, у меня почему-то работает лишь вариант с CTRL+S+A/D, а чисто CTRL+A/D не работают
Reply
#2

PHP Code:
public OnPlayerUpdate(playerid)
{
    new 
keysupdownleftright;
    
GetPlayerKeys(playeridkeysupdownleftright);

    if (
keys KEY_ACTION) {
        if (
leftright == KEY_LEFT) {
            
SendClientMessage(playerid, -1"left");
        } else if (
leftright == KEY_RIGHT) {
            
SendClientMessage(playerid, -1"right");
        }
    }
    return 
1;

Reply
#3

Quote:
Originally Posted by ZiGGi
View Post
PHP Code:
public OnPlayerUpdate(playerid)
{
    new 
keysupdownleftright;
    
GetPlayerKeys(playeridkeysupdownleftright);
    if (
keys KEY_ACTION) {
        if (
leftright == KEY_LEFT) {
            
SendClientMessage(playerid, -1"left");
        } else if (
leftright == KEY_RIGHT) {
            
SendClientMessage(playerid, -1"right");
        }
    }
    return 
1;

Спасибо, в OnPlayerUpdate всё прекрасно работает, а вот в OnPlayerKeyStateChange, опять-же, всё работает на комбинацию CTRL+S+A/D
Вообщем понятие не имею как это решить
Reply
#4

Quote:
Originally Posted by Johhnyllll
View Post
Спасибо, в OnPlayerUpdate всё прекрасно работает, а вот в OnPlayerKeyStateChange, опять-же, всё работает на комбинацию CTRL+S+A/D
Вообщем понятие не имею как это решить
Никак.
Reply
#5

Quote:
Originally Posted by ZiGGi
View Post
Никак.
Есть же проект, Crime RPG, у них всё работает CTRL+A/D, ну ладно, всё ровно спасибо)
Reply
#6

Quote:
Originally Posted by Johhnyllll
View Post
Есть же проект, Crime RPG, у них всё работает CTRL+A/D, ну ладно, всё ровно спасибо)
И с чего ты взял, что у них сделано через OnPlayerKeyStateChange?

UPD: Достаточно зайти на страницу OnPlayerKeyStateChange и прочитать следующее:
Quote:

Directional keys do not trigger OnPlayerKeyStateChange (up/down/left/right). They can only be detected with GetPlayerKeys (in OnPlayerUpdate or a timer).

Что означает, что кнопки перемещения не вызывают OnPlayerKeyStateChange, и что эти кнопки могут быть определены с помощью GetPlayerKeys в OnPlayerUpdate или таймере.
Reply
#7

gettime()+1
И проверять на время при открытии
Reply
#8

Quote:
Originally Posted by coloN
View Post
gettime()+1
И проверять на время при открытии
Зачем проверять время если есть /timestamp?
Или я не понял тебя...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)