Gothic Online Forums
Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Printable Version

+- Gothic Online Forums (https://archive.gothic-online.com)
+-- Forum: Community (https://archive.gothic-online.com/forum-18.html)
+--- Forum: Polish (Polski) (https://archive.gothic-online.com/forum-19.html)
+---- Forum: Pomoc (https://archive.gothic-online.com/forum-23.html)
+---- Thread: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie (/thread-2424.html)

Pages: 1 2


Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Mattwell - 22.03.2018

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ć ?


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Tommy - 22.03.2018

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)





RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Mattwell - 22.03.2018

Bóg zapłać dobry człowieku.


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Patrix - 22.03.2018

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.


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Mattwell - 22.03.2018

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


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Patrix - 22.03.2018

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)


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Mattwell - 22.03.2018

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.


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Patrix - 22.03.2018

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ć.


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Mattwell - 22.03.2018

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


RE: Przechwytywanie wpisanych znaków i umieszczanie ich w drawie - Tommy - 22.03.2018

(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.