Mudlet: Teks GMCP/GA ditekan saat masuk

Dibuat pada 2 Feb 2019  ·  36Komentar  ·  Sumber: Mudlet/Mudlet

Ringkasan singkat masalah / Deskripsi fitur yang diminta:

Kami telah mengaktifkan GMCP dan mencoba mengaktifkan GA menggunakan LDmud 3.3.495. Untuk mewujudkannya di LDmud, Anda harus mengaktifkan kait H_PRINT_PROMPT di master.c lib dan menyediakan lib dengan fungsi untuk mencetak ke layar, termasuk memaksa prompt Go Ahead. Fungsi ini berfungsi dengan baik di objek pemutar dan di Mudlet, Anda dapat melihat peningkatan bagian GA.

Pertama kali kami terhubung ke lumpur, permintaan nama pengguna dan kata sandi kami ditampilkan dengan benar, tetapi jika Anda keluar dari lumpur dan tanpa memulai ulang Mudlet, tekan tombol sambungkan kembali, tidak ada petunjuk yang ditampilkan kepada pengguna. Saya melakukan pelacakan paket dan saya melihat prompt nama pengguna dikirimkan ke klien, tetapi Mudlet tidak akan menampilkan prompt. Untuk menambah kerumitan, jika saya mengambil Prompt nama pengguna/kata sandi yang sama dan menambahkan n di akhir Prompt, Mudlet AKAN menunjukkannya, tetapi untuk beberapa alasan, itu tidak mencetak tanpa memaksa pengembalian baris (yang bukan sesuatu yang saya inginkan lakukan pada input pengguna).

Langkah-langkah untuk mereproduksi masalah / Alasan menambahkan fitur:

  1. Terhubung ke Lumpur kami dengan Mudlet
  2. Keluar tapi jangan mulai ulang Mudlet
  3. Dari jendela yang sama, cukup klik Hubungkan kembali

Keluaran kesalahan / Hasil yang diharapkan dari fitur

Perintah Nama Pengguna dan Kata Sandi tidak tercetak di layar, tetapi pengguna dapat memasukkan nama pengguna dan kata sandi mereka di blind. Setelah kedua bidang dimasukkan, Mudlet akan menampilkan petunjuk yang di-cache

Informasi tambahan, seperti versi Mudlet, sistem operasi, dan ide tentang cara memecahkan / menerapkan:

Jika kita menunda prompt dengan n, Mudlet akan menampilkan prompt dengan benar, tetapi memaksa carriage return, yang kurang optimal. Mudlet seharusnya dapat mencetak prompt secara normal seperti saat pertama kali kita terhubung ke MUD.

Saya telah melakukan pelacakan paket dan mengkonfirmasi bahwa prompt sedang dikirim ke Mudlet, hanya saja tidak menampilkan prompt. Saya juga telah memposting tangkapan layar di Discord di saluran #help.

Menggunakan Mudlet 3.16.1 di Windows 10

need more info

Komentar yang paling membantu

Nah apa yang saya telah mendengar tidak suara seperti kita tidak ulang sesuatu ketika Server terputus - yang harus kita lakukan adalah bekerja keluar apa yang berbeda untuk kedua kalinya dan mengubahnya kembali ke bagaimana itu adalah pertama kalinya ...: jeritan:

Semua 36 komentar

Ini mendahului perbaikan yang saya lakukan baru-baru ini ( sejak versi rilis 3.16.1) untuk akhirnya memungkinkan Server untuk menegosiasikan opsi telnet 1 (ECHO) dan mengambil alih bergema di layar teks Mudlet yang dikirim Mudlet ke Server kembali ke Mudlet - sehingga, jika dilakukan dengan benar, kata sandi yang diketik pengguna ke baris perintah Mudlet tidak ditampilkan di layar profil utama setelahnya jika mereka memiliki set opsi "gema apa yang saya ketik ke layar saya" - jadi saya ingin mengabaikannya sebagai penyebab tanpa informasi lebih lanjut.

Apakah Anda tahu apakah ini perubahan baru-baru ini atau apakah Mudlet selalu seperti ini?

Sejujurnya sepertinya kami tidak mengatur ulang sesuatu yang seharusnya kami lakukan dalam metode (void) cTelnet::reset() - saya hanya tidak tahu (belum) apa itu - ada ide siapa pun...?

Satu-satunya hal yang akan saya katakan adalah jika saya menonaktifkan kait H_PRINT_PROMPT di master.c, masalah tidak terjadi pada upaya login ke-2, namun, fakta bahwa mereka menunjukkan koneksi pertama dengan kait diaktifkan, tetapi gagal hanya pada berikutnya koneksi, terlepas dari kenyataan bahwa teks sedang dikirim ke Mudlet, saya mengalami kesulitan melemparkan masalah ke lib lumpur atau driver. Fakta bahwa menambahkan n di nama pengguna dan kata sandi Prompt menyebabkan Mudlet menampilkan Prompt membuat saya berpikir ada masalah di Mudlet. (yaitu ini berfungsi: input_to("get_name", INPUT_PROMPT, "Dengan nama apa Anda ingin dikenal?n" ); tetapi menyebabkan baris kembali setelah Prompt dan input kemudian di baris berikutnya)

Selain itu, kami tidak melihat masalah yang sama pada klien lain yang diuji (telnet, tintin++)

Apakah itu membantu?

Kami memiliki masalah ini di StickMUD juga. @mfczureal dan saya menghabiskan banyak waktu untuk mencoba menyiasatinya melalui permainan, tetapi rasanya seperti ini terkait dengan Mudlet.

Dikonfirmasi dengan LDmud 3.5.1 dan Mudlet 3.17 - tapi ini sudah ada di Mudlet cukup lama. Saya cukup yakin saya mencatat masalah di suatu tempat sebelumnya, tetapi tidak dapat menemukannya secara spontan. Terima kasih telah melaporkan detailnya!

Nah apa yang saya telah mendengar tidak suara seperti kita tidak ulang sesuatu ketika Server terputus - yang harus kita lakukan adalah bekerja keluar apa yang berbeda untuk kedua kalinya dan mengubahnya kembali ke bagaimana itu adalah pertama kalinya ...: jeritan:

Saya mencoba merekam replay untuk perbandingan, tetapi berbeda dari aslinya. Koneksi pertama: Tampilan baik-baik saja. Koneksi berikut: Layar mati. Memutar ulang saat ini: Juga tampilan yang salah selama koneksi pertama.

screen shot 2019-02-06 at 7 45 36 am
Berikut adalah contoh perilaku saat login pertama dan login berturut-turut. GA dikirim dari game.

Saya melihat ini masih ditandai sebagai "perlu info lebih lanjut". Apa yang dapat saya berikan untuk membantu Anda mengatasi masalah ini? Masalah ini menghalangi kami untuk melanjutkan penerapan GA ke MUD produksi kami dan kami sangat ingin bekerja sama dengan Anda untuk memperbaikinya. Terima kasih

@SlySven ?

:thinking: Humm, file replay mungkin tidak cukup karena mungkin tidak mencerminkan perilaku putuskan/sambungkan kembali - jadi saya harus masuk ke MUD yang menampilkan masalah ini dan memantau beberapa variabel - Saya memiliki beberapa kecurigaan tetapi langsung pengujian benar-benar akan membantu. Bisakah saya masuk ke salah satu MUD Anda @mfczureal / @mpconley ?

Nah, Anda telah berada di lumpur saya baru-baru ini memecahkan masalah Discord, jadi coba Darkwind? :)

Ah, tapi saya tidak tahu bahwa @mfczureal di GitHub adalah ZureaL di Discord. :mengedip:

Anda dapat mencoba masalah ini dengan menghubungkan ke mg.mud.de:23

Masuk sebagai tamu dengan nama seperti gast lalu sambungkan kembali.

Hanya memeriksa untuk melihat apakah ada tindak lanjut dari ini? Masih mempertahankan kemampuan kami untuk mengimplementasikan GA dalam prod dan saya sangat ingin dapat menempatkan ini di tempat tidur. Terima kasih!

Kita perlu mendapatkan label info lebih lanjut dari ini dan yang berprioritas tinggi kembali :)

Selesai! Saya tidak yakin apa rencana @SlySven untuk menyelidiki ini. Jika Anda bisa, coba gali kode Mudlet juga untuk melihat di mana kesalahannya.

Saya memang mencoba untuk memeriksanya, tetapi saya tidak yakin bahwa saya mengalami apa yang Anda laporkan. Saya tidak begitu mengerti bagaimana hal-hal GA bekerja, jadi saya tidak yakin bagaimana hal-hal Perbaikan Bug IRE dan semua faktor itu ke dalamnya. Saya mencoba masuk ke Darkwind tetapi mengalami hal-hal aneh yang terjadi dengan UI yang dapat diunduh (yang diinstal baik sebagai paket dan modul dan membutuhkan waktu lama untuk melakukannya setiap kali saya memulai) TBH Saya tidak tahu apakah saya sedang mengalami masalah yang Anda laporkan - saya bahkan tidak yakin saya memiliki semua kenop di posisi yang tepat.

:thought_balloon: Apa yang saya pikir akan membantu di sisi Mudlet adalah memiliki seperangkat metode sementara di Host dan cTelnet dan mungkin main TConsole dan itu TBuffer instance yang mengumpulkan dan mengembalikan status semua anggota flag bool mungkin relevan di kelas-kelas tersebut dan meminta mereka melaporkannya tepat setelah login selesai (atau ketika perilaku berbeda itu ditampilkan dengan petunjuknya). Ini akan melihat flag mana yang berada dalam keadaan berbeda setelah login pertama (di mana semuanya benar) dan yang kedua dan berulang (di mana tidak) - Saya sangat curiga bahwa salah satu dari flag itu (setidaknya) perlu reset/set di cTelnet::reset() - seperti yang saya temukan diperlukan dengan Host::mIsRemoteEchoingActive yang baru saja saya tambahkan ...

Terima kasih telah melihat! Oke, saya akan mencobanya kalau begitu.

Tidak melihatnya dengan mg

image

Tidak melihatnya di Darkwind juga (harus _benar-benar_ menggali untuk menemukan info koneksi - harap berikan di laporan lain kali!)

image

Tidak ada di Stickmud:

image

Tambahkan langkah-langkah yang tepat untuk mereproduksi masalah (sebaiknya tanpa harus menjelajah melalui pembuatan karakter) dan kita akan melihat ini lagi. Terima kasih teman-teman!

Saat ini kami telah menonaktifkan GA di instance prod dan dev kami karena masalah ini. Salah satu admin kami akan membuat instance baru dari dev MUD sehingga saya dapat mengaktifkan kembali GA dan dapat menjadi tempat bermain mutlak untuk menguji cara kerja GA di LDMud. Harus bangun nanti malam dan saya akan memberikan pembaruan jika sudah siap

@vadi2 @SlySven Silakan gunakan stickmud.com 7680 atau tautan StickMUD di Mudlet. Hubungkan sebagai pemain ATAU untuk login sebagai Tamu ketik 'kunjungan' pada login dan berikan captcha. Setelah Anda terhubung, Anda dapat lua disconnect() dan ulangi proses di atas. Pada koneksi kedua dan setelahnya Anda tidak akan melihat perintah 'Berikan nama Anda' seperti pada koneksi pertama sampai Anda memasukkan nama pemain atau 'kunjungan'.

Contoh yang Anda coba dari mg memang menampilkan cacat dengan baik. Mari saya jelaskan:

Perhatikan bagaimana percobaan koneksi pertama Wie heisst Du denn ("neu" fuer neuen Spieler)? dikirim SEBELUM Anda menjawab gast dan hanya setelah menjawab pertanyaan itu Anda akan ditanya Bist Du maennlich oder weiblich: - Prosedur login lainnya tidak relevan untuk masalah ini .

grafik

Sekarang dalam semua upaya berikut, Anda tidak melihat baris Wie heisst Du denn sebelum menjawab gast . Sebagai gantinya, Anda perlu menjawab sebelum melihat pertanyaan, dan kemudian akan melihat kedua pertanyaan di baris yang sama.

grafik

Mengerti, terima kasih!

:berpikir: :bingung: :man_mengangkat bahu:

Ah, saya curiga bahwa status setiap kali GA diaktifkan atau tidak tidak disetel ulang saat terhubung kembali ... jadi Mudlet masih menganggapnya diaktifkan, ketika game belum mengaktifkannya (seperti mg.mud.de tidak aktifkan sampai Anda mengetik gast ).

Saat GA tidak diaktifkan, Mudlet menunggu sebentar sebelum menyerah dan menampilkan teks, tetapi dengan mengaktifkannya, Mudlet hanya menampilkan teks saat GA datang. Jadi di sini - GA tidak pernah datang - Mudlet menunggu selamanya untuk menampilkan teks.

hai @ vadi2 ini berfungsi untuk saya di OSX dengan StickMUD. Terima kasih!

Bagus. Ini memperbaikinya di sisi Mudlets. Perbaikan yang lebih baik adalah dengan segera mengaktifkan GA pada koneksi (sehingga Anda tidak melihat No GA seperti di mg. Belum menguji stickmud)

Sejauh ini kami mengaktifkan GA segera setelah kami mengonfirmasi bahwa itu adalah klien Mudlet atau Grapevine - jika tidak, pemain dapat mengaktifkannya jika mereka membutuhkannya. GA tidak harus ditangani dengan baik di beberapa klien.

Secara teknis GA adalah bagian dari model NVT ( Network Virtual Terminal ) yaitu sesuatu yang seharusnya disediakan oleh terminal default sebagai bagian dari model half-duplex yang disiratkan Telnet. Menekan Go Ahead bukanlah opsi yang pernah disetujui oleh Mudlet, jadi sebenarnya ujung yang lain diperlukan untuk memberikan sinyal GA. Aku belum sepenuhnya menyadari ini sebelumnya...

Ini sepertinya meningkatkan pengalaman dalam menghubungkan ke mg.mud.de 👍

Komentar tentang perlunya (atau tidak perlu) untuk GA dibahas di #1252 sedikit lebih mendalam, dan MG tampaknya bekerja dengan baik dengan Mudlet dengan hanya mengirim EOR alih-alih GA yang tampaknya sudah usang.

Kebab mengarahkan perhatian saya pada masalah ini dan saya ingin berkomentar sedikit tentang GA/SGA. Saya tidak yakin, di mana lagi, jadi di sini ...

Anda sepenuhnya benar. GA adalah (bersejarah) sarana kontrol aliran. Dan kecuali SGA dinegosiasikan, mitra komunikasi yang memenuhi standar perlu mengirim GA ketika mitra lain diizinkan untuk mengirim (yaitu saat ini mungkin setelah setiap keluaran). Tetapi dengan argumen yang sama, mitra hanya boleh mengirim setelah mereka menerima GA... (yang menurut saya tidak ada orang)

Dari sudut pandang saya, satu-satunya cara yang masuk akal untuk menangani hal ini dan mematuhi standar adalah dengan selalu menegosiasikan SGA dan menyingkirkan GA yang berlebihan.

Inilah alasan saya bukan teman menggunakan GA sebagai sarana deteksi cepat (marking prompts). Untuk melakukan ini, Anda perlu mengaktifkan Suppress-go-ahead untuk menonaktifkan GA sebagai sarana kontrol aliran di telnet. Hanya dengan begitu Anda dapat menggunakannya dengan makna lain pada lapisan di atas telnet (menandai petunjuk di keluaran MUD). Bahkan jika Anda mengabaikan standar telnet di sini, Anda bisa mendapatkan GA untuk prompt dan akhirnya untuk banyak output non-Prompt lainnya).
Satu masalah adalah, tidak ada cara yang bagus untuk bernegosiasi jika MUD menggunakan GA untuk deteksi cepat.

Selain itu, SGA adalah AFAIR yang terkait dengan opsi telnet lain seperti mode NOECHO dan CHARMODE/LINEMODE. Saling ketergantungan ini semakin memperumit masalah.

Morgengrauen menggunakan EOR untuk menandai prompt jika TELOPT_EOR dinegosiasikan (itu tidak menandai prompt sebaliknya) dan tidak mengutak-atik SGA (karena itu akan membuat perilaku negosiasi telnet dari mudlib secara signifikan lebih rumit - dalam hal ini, Mudlib harus urus TELOPT_ECHO, TELOPT_SGA, TELOPT_COMPRESS dan TELOPT_COMPRESS2 yang tidak ingin saya lakukan, ini adalah hal untuk driver) dan menyerahkan semua masalah kontrol aliran ke mesin telnet LDMud. Itu berarti, Morgengrauen memiliki perilaku default MUD menggunakan LDMud untuk GA/SGA.

Mengenai perilaku default LDMud, saya saat ini tidak begitu yakin, tetapi @amotzkau pasti dapat memberi tahu lebih banyak detail tentangnya.

Implementasi default LDMud adalah tidak memberikan indikasi tentang prompt (yang mungkin memiliki alasan historis, sebelumnya prompt ditulis sebelum memanggil input_to, jadi driver juga tidak memiliki indikasi apa itu prompt).

Dan LDMud menggunakan SGA untuk menunjukkan mode char, yang juga memiliki alasan sejarah. Tanpa SGA, mitra komunikasi didesak untuk hanya berbicara ketika mereka telah menerima GA dari mitra dan memberi sinyal dengan GA ketika mereka telah selesai berbicara. Jadi urutan 'perintah, GA - jawaban, GA' ini secara efektif membentuk gaya mode garis. Dan menyetujui SGA kemudian dilihat oleh banyak klien sebagai char-mode, karena klien sekarang bebas mengirim karakter saat mereka dimasukkan. Dan itulah mengapa SGA tidak dinegosiasikan di awal. Ada opsi telnet LINEMODE yang dapat melakukan hal yang sama, tetapi itu tidak diadopsi secara luas oleh klien seperti SGA.

Menanggapi @SlySven bahwa setiap server diharuskan mengirim GA jika SGA tidak disetujui, itu benar secara teknis, tetapi itu juga berarti bahwa klien tidak diperbolehkan mengirim apa pun lagi, setelah mengirim GA dan tidak menerima GA. Dan server hanya akan diizinkan untuk mengirim satu respons sebelum harus menunggu perintah pengguna lagi. Pesan out-of-band (peristiwa, tindakan oleh pengguna lain) harus di-buffer sampai pengguna melakukan perintah lain. Tidak ada klien atau server MUD yang menganut itu, sejauh yang saya tahu.

Menggunakan GA untuk indikasi cepat akan mengikuti proses lama itu (server menyelesaikan responsnya dengan GA, hal terakhir dalam respons adalah Prompt), tetapi tidak ada yang melakukan sisa proses ini lagi, sehingga tidak berfungsi sebagai alasan yang baik. Dan setiap kali SGA disetujui (jadi ini tidak menyangkut Mudlet) GA tidak akan dikirim dan diabaikan saat diterima. Oleh karena itu klien lain mungkin mengabaikan indikasi prompt dalam mode char.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat