Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Przechwytywanie wpisanych znaków i umieszczanie ich w drawie
#1
Przechwytywanie wpisanych znaków i umieszczanie ich w drawie. Problem pojawia się, gdy chciałbym przechwycić, czy gracz wpisuje dużę literę, czy małą oraz czy ma wciśnięty caps-lock. Próbowałem właśnie w evencie OnKey, ale nie wiem jak sprawdzać capsa i shifta... Jakieś propozycje jak to zrobić ?
[Image: pjDBIfE.gif]
Reply
#2
Squirrel Script
  1. local function keyHandler(key)
  2. {
  3. local letter = getKeyLetter(key);
  4. if(letter != null)
  5. print(letter);
  6. }
  7. addEventHandler("onKey", keyHandler)


Reply
#3
Bóg zapłać dobry człowieku.
[Image: pjDBIfE.gif]
Reply
#4
Squirrel Script
  1. local capitalize = isKeyPressed(KEY_CAPITAL)
  2.  
  3. addEventHandler("onKey",function(key)
  4. {
  5. if (key == KEY_CAPITAL)
  6. capitalize = !capitalize
  7. else
  8. {
  9. local letter = getKeyLetter(key)
  10.  
  11. if (letter != null && capitalize)
  12. {
  13. letter = letter.toupper()
  14. }
  15.  
  16. // twój kod
  17. }
  18. })



@Edit: Kod Tommy'ego ma drobną literówkę, plus nie będzie działać z włączonym/wyłączonym caps-lockiem.
Reply
#5
Wprowadziłem kod Tommy'ego i działa jak powinno, nawet z caps-lockiem. Pojawia się drugie pytanie, jak zapobiec wyświetlaniu się okienek gothica (np pod klawiszem N jest lista questów bezimiennego)? To uporczywe jak wpisuję tekst i nagle pojawiają się niechciane okienka
[Image: pjDBIfE.gif]
Reply
#6
disableKey(KEY_B, true)

@Edit: tak samo robisz z każdym klawiszem, któr chcesz wyłączyć, by włączyć klawisz spowrotem wywołujesz funkcje tak:

disableKey(KEY_B, false)
Reply
#7
Czy jeśli użyję tej funkcji, to czy wciskana literka B będzie się dalej pojawiać w kodzie wcześniejszym ?
Wtedy zablokowałbym większość przycisków, bo wiadomo, że któryś gracz może zmienić sterowanie z klawisza B na inny.
[Image: pjDBIfE.gif]
Reply
#8
Tak, funkcja disableKey wyłącza tylko funkcjonalność oryginalną klawisza (to co dzieje się w silniku, pokazywanie men, etc.), event onKey dalej dla tego klawisza będzie działać.
Reply
#9
Działa, dzięki. Użyłem

disableKey(KEY_B, true);
disableKey(KEY_N, true);
disableKey(KEY_T, true);
disableKey(KEY_L, true);
disableKey(KEY_O, true);

I śmiga, temat do zamknięcia
[Image: pjDBIfE.gif]
Reply
#10
(22.03.2018, 19:45)Patrix Wrote:
Squirrel Script
  1. local capitalize = isKeyPressed(KEY_CAPITAL)
  2.  
  3. addEventHandler("onKey",function(key)
  4. {
  5.    if (key == KEY_CAPITAL)
  6.        capitalize = !capitalize
  7.    else
  8.    {
  9.        local letter = getKeyLetter(key)
  10.  
  11.        if (letter != null && capitalize)
  12.        {
  13.            letter = letter.toupper()
  14.        }
  15.  
  16.          // twój kod
  17.    }
  18. })



@Edit: Kod Tommy'ego ma drobną literówkę, plus nie będzie działać z włączonym/wyłączonym caps-lockiem.

Ten caps średnio się sprawdzi, wystarczy że ktoś wejdzie do gry z włączonym wtedy będzie działał w odwrotny sposób.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Brak polskich znaków na komunikatach od servera nerdlv7 2 2,625 09.01.2018, 23:29
Last Post: nerdlv7
  Brak polskich znaków. Jaskier 18 13,878 05.02.2016, 21:02
Last Post: Son Goku
  Liczba wpisanych znakow w tekst Dejv 2 2,886 20.10.2015, 14:54
Last Post: Dejv

Forum Jump:


Users browsing this thread: 1 Guest(s)