Mudlet: يتم منع نص GMCP / GA عند تسجيل الدخول

تم إنشاؤها على ٢ فبراير ٢٠١٩  ·  36تعليقات  ·  مصدر: Mudlet/Mudlet

ملخص موجز للمشكلة / وصف العنصر المطلوب:

لقد قمنا بتمكين GMCP ومحاولة تمكين GA باستخدام LDmud 3.3.495. لتحقيق ذلك في LDmud ، يجب عليك تمكين خطاف H_PRINT_PROMPT في lib's master.c وتزويد lib بوظائف الطباعة على الشاشة ، والتي تتضمن فرض موجه Go Ahead. تعمل هذه الوظيفة بشكل جيد في كائن المشغل وفي Mudlet ، يمكنك رؤية زيادة قسم GA.

في المرة الأولى التي نتصل فيها بالوحل ، يتم عرض مطالبات اسم المستخدم وكلمة المرور بشكل صحيح ، ولكن إذا قمت بإنهاء الوحل وبدون إعادة تشغيل Mudlet ، فاضغط على زر إعادة الاتصال ، فلن يتم عرض أي من المطالبات للمستخدمين. لقد قمت بتتبع حزمة وأرى أن موجه اسم المستخدم قد تم تسليمه إلى العميل ، لكن Mudlet لن يظهر المطالبة. لإضافة التعقيد ، إذا أخذت نفس موجه اسم المستخدم / كلمة المرور وأضفت n في نهاية الموجه ، فسيقوم Mudlet بعرضه ، لكن لسبب ما ، لا تتم الطباعة دون فرض إرجاع سطر (وهو ليس شيئًا أريده تفعل على مدخلات المستخدم).

خطوات إعادة إظهار المشكلة / أسباب إضافة الميزة:

  1. الاتصال بالطين لدينا مع Mudlet
  2. قم بإنهاء Mudlet ولكن لا تقم بإعادة تشغيله
  3. من نفس النافذة ، فقط انقر فوق إعادة الاتصال

ناتج الخطأ / النتيجة المتوقعة للميزة

لا تتم طباعة مطالبات اسم المستخدم وكلمة المرور على الشاشة ، ولكن يمكن للمستخدم إدخال اسم المستخدم وكلمة المرور الخاصة به في المكفوفين. بمجرد إدخال كلا الحقلين ، سيعرض Mudlet المطالبات المخزنة مؤقتًا

معلومات إضافية ، مثل إصدار Mudlet ونظام التشغيل والأفكار حول كيفية الحل / التنفيذ:

إذا قمنا بعد تعليق المطالبات بـ n ، فسيعرض Mudlet المطالبات بشكل صحيح ، لكنه يفرض إرجاع سطر ، وهو دون المستوى الأمثل. يجب أن يكون Mudlet قادرًا على طباعة الموجه بشكل طبيعي كما يفعل في المرة الأولى التي نتصل فيها بـ MUD.

لقد قمت بتتبع الحزمة وأكدت أنه يتم إرسال المطالبة إلى Mudlet ، إنها فقط لا تعرض المطالبة. لقد نشرت أيضًا لقطة شاشة في Discord في قناة #help.

باستخدام Mudlet 3.16.1 على نظام التشغيل Windows 10

need more info

التعليق الأكثر فائدة

حسنًا ، ما سمعته يبدو وكأننا لا نعيد تعيين شيء ما عندما ينقطع اتصال الخادم - كل ما يتعين علينا فعله هو معرفة ما هو مختلف في المرة الثانية وتغييره مرة أخرى إلى ما كان عليه في المرة الأولى ...: الصراخ:

ال 36 كومينتر

يسبق هذا الإصلاح الذي أدخلته مؤخرًا ( منذ الإصدار 3.16.1) للسماح للخادم أخيرًا بالتفاوض على خيار telnet 1 (ECHO) وتولي الصدى على شاشة Mudlet للنص الذي يرسله Mudlet إلى الخادم مرة أخرى إلى Mudlet - لذلك ، إذا تم إجراؤها بشكل صحيح ، فلن تظهر كلمات المرور التي يكتبها المستخدم في سطر أوامر Mudlet على شاشة ملف التعريف الرئيسية بعد ذلك إذا كان لديهم مجموعة خيارات "صدى ما أكتبه

هل لديك أي فكرة عما إذا كان هذا تغييرًا حديثًا أم أن مودليت كان دائمًا على هذا النحو؟

لكي نكون صادقين ، يبدو أننا لا نعيد تعيين شيء ما يجب علينا في طريقة (void) cTelnet::reset() - أنا لا أعرف (حتى الآن) ما قد يكون - أي أفكار أي شخص ...؟

الشيء الوحيد الذي أود قوله هو أنه إذا قمت بتعطيل خطاف H_PRINT_PROMPT في master.c ، فإن المشكلة لا تحدث في محاولات تسجيل الدخول الثانية ، ومع ذلك ، فإن حقيقة أنها تظهر الاتصال الأول مع الخطاف ممكّنًا ، ولكنها تفشل فقط بعد ذلك الاتصالات ، على الرغم من إرسال النص إلى Mudlet ، أجد صعوبة في إلقاء المشكلة على lib أو السائق. حقيقة أن إضافة n في موجه اسم المستخدم وكلمة المرور تجعل Mudlet يعرض الموجه يجعلني أعتقد أن هناك مشكلة في Mudlet. (على سبيل المثال ، يعمل هذا: input_to ("get_name" ، INPUT_PROMPT ، "بأي اسم ترغب في أن تكون معروفًا؟ n") ؛ ولكنه يتسبب في إرجاع سطر بعد الموجه ويكون الإدخال بعد ذلك في السطر التالي)

أيضًا ، لا نرى نفس المشكلة على أي عميل آخر تم اختباره (telnet ، tintin ++)

هل هذا يساعد على الإطلاق؟

لدينا هذه المشكلة على StickMUD أيضًا. mfczureal وأنا أمضيت ساعات طويلة في محاولة الالتفاف حول اللعبة ، لكن يبدو أن هذه اللعبة مرتبطة بـ Mudlet.

تم التأكيد عليه مع LDmud 3.5.1 و Mudlet 3.17 - ولكن هذا كان في Mudlet لبعض الوقت. أنا متأكد من أنني لاحظت المشكلة في مكان ما من قبل ، لكن لا يمكنني العثور عليها بشكل عفوي. شكرا للإبلاغ عن التفاصيل!

حسنًا ، ما سمعته يبدو وكأننا لا نعيد تعيين شيء ما عندما ينقطع اتصال الخادم - كل ما يتعين علينا فعله هو معرفة ما هو مختلف في المرة الثانية وتغييره مرة أخرى إلى ما كان عليه في المرة الأولى ...: الصراخ:

حاولت تسجيل إعادة للمقارنة ، لكنها مختلفة عن الأصلية. الاتصال الأول: العرض جيد. الاتصالات التالية: الشاشة متوقفة. تشغيل الإعادة في هذا الوقت: عرض خاطئ أيضًا أثناء الاتصال الأول.

screen shot 2019-02-06 at 7 45 36 am
فيما يلي مثال على السلوك عند تسجيل الدخول لأول مرة وتسجيلات الدخول المتتالية. يتم إرسال GA من اللعبة.

أرى أن هذا تم وضع علامة "بحاجة إلى مزيد من المعلومات". ما الذي يمكنني تقديمه لمساعدتك على المضي قدمًا في هذه المشكلة؟ تمنعنا هذه المشكلة من المضي قدمًا في نشر GA في MUD للإنتاج لدينا ونود حقًا العمل معكم يا رفاق على إصلاح هذا. شكرا

تضمين التغريدة

: تفكير: Humm ، قد لا يكون ملف إعادة التشغيل كافيًا لأنه قد لا يعكس سلوك قطع الاتصال / إعادة الاتصال - لذلك سأحتاج إلى تسجيل الدخول إلى MUD الذي يعرض هذه المشكلة ويراقب بعض المتغيرات - لدي بعض الشكوك ولكني أعيش الاختبار سيساعد حقًا. هل يمكنني الحصول على تسجيل دخول إلى أي من MUDsmfczureal / mpconley ؟

حسنًا ، لقد كنت في طين مؤخرًا في حل مشكلة Discord ، لذا جرب Darkwind؟ :)

آه ، لكنني لم أكن أعرف أن mfczureal على GitHub كان ZureaL على

يمكنك تجربة هذه المشكلة عن طريق الاتصال بـ mg.mud.de:23

قم بتسجيل الدخول كضيف باسم gast ثم أعد الاتصال.

فقط تحقق لمعرفة ما إذا كان هناك أي متابعة لهذا؟ ما زلنا نعيق قدرتنا على تنفيذ GA في المنتج وأود حقًا أن أكون قادرًا على وضع هذا في الفراش. شكرا!

نحتاج إلى الحصول على تسمية الحاجة إلى مزيد من المعلومات من هذا والأولوية العالية مرة أخرى :)

منتهي! لست متأكدًا من خطط SlySven للتحقيق في ذلك. إذا استطعت ، فحاول البحث في كود Mudlet أيضًا لمعرفة أين يحدث الخطأ.

لقد حاولت النظر في هذا ولكن لم أكن متأكدًا حقًا من أنني كنت أعاني مما تقوم بالإبلاغ عنه. لا أفهم حقًا كيفية عمل أشياء GA ، لذا لست متأكدًا من كيفية عمل عناصر IRE Bugfix وكل هذه العوامل في كل ذلك. حاولت تسجيل الدخول إلى Darkwind ولكني كنت أواجه أشياء غريبة حقًا تحدث مع واجهة المستخدم القابلة للتنزيل (والتي تم تثبيتها كحزمة ووحدة نمطية وأخذ وقتًا للقيام بذلك في كل مرة بدأت فيها) TBH لم أستطع معرفة ما إذا كنت كنت أواجه المشكلة التي تبلغ عنها - لست متأكدًا حتى من وجود جميع المقابض في الموضع الصحيح.

: think_balloon: ما أعتقد أنه سيكون مفيدًا في جانب Mudlet هو أن يكون لديك مجموعة مؤقتة من الأساليب في Host و cTelnet وربما الرئيسي TConsole وهو TBuffer المثيل الراية bool ذات الصلة المحتمل في تلك الفئات ويطلب منهم الإبلاغ بعد اكتمال تسجيل الدخول مباشرة (أو عندما يظهر هذا السلوك المختلف مع المطالبات). سيكون هذا هو معرفة العلامات الموجودة في حالة مختلفة بعد تسجيل الدخول الأول (حيث تكون الأشياء صحيحة) والثانية والمتكررة (حيث لا تكون كذلك) - أظن بشدة أن أحد هذه العلامات (على الأقل) يجب أن يكون إعادة تعيين / تعيين في cTelnet::reset() - كما وجدت أنه ضروري مع Host::mIsRemoteEchoingActive الذي أضفته مؤخرًا ...

شكرا للبحث! حسنًا ، سأجربها بعد ذلك.

عدم رؤيته مع mg

image

عدم رؤيتها في Darkwind أيضًا (اضطررت إلى البحث عن معلومات الاتصال - يرجى تقديمها في التقرير في المرة القادمة!)

image

لا شيء في Stickmud:

image

أضف الخطوات الدقيقة لإعادة إظهار المشكلة (يفضل دون الحاجة إلى البحث في عملية إنشاء الشخصية) وسنلقي نظرة أخرى على هذا. شكرا يا شباب!

في الوقت الحالي ، تم تعطيل GA في مثيلات prod و dev بسبب هذه المشكلات. سيقوم أحد المشرفين لدينا بتدوير مثيل جديد من dev MUD حتى أتمكن من إعادة تمكين GA ويمكن أن يكون ملعبًا مطلقًا لاختبار كيفية عمل GA في LDMud. يجب أن يكون مستيقظًا في وقت لاحق هذا المساء وسأقدم تحديثًا عندما يكون جاهزًا

@ vadi2SlySven الرجاء استخدام stickmud.com 7680 أو على الرابط StickMUD في Mudlet. تواصل كلاعب أو لتسجيل الدخول كضيف ، اكتب "زيارة" عند تسجيل الدخول واجتياز اختبار CAPTCHA. بعد الاتصال ، يمكنك فصل lua () وتكرار العملية المذكورة أعلاه. في الاتصال الثاني وبعد ذلك لن ترى مطالبة "أعط اسمك" كما كانت في الاتصال الأول إلا بعد إدخال اسم اللاعب أو "الزيارة".

المثال الذي جربته من mg يظهر بالفعل الخلل على ما يرام. دعني أشرح:

لاحظ كيف تم إرسال Wie heisst Du denn ("neu" fuer neuen Spieler)? محاولة الاتصال الأولى قبل أن تجيب gast وفقط بعد الإجابة على هذا السؤال يُطلب منك Bist Du maennlich oder weiblich: - باقي إجراءات تسجيل الدخول غير ذات صلة بهذه المشكلة .

grafik

الآن في جميع المحاولات التالية ، لا ترى السطر Wie heisst Du denn قبل الإجابة على gast . بدلاً من ذلك ، تحتاج إلى الإجابة قبل رؤية السؤال ، وبعد ذلك سترى كلا السؤالين في نفس السطر.

grafik

حسنًا ، شكرًا!

: التفكير:: confounded:: man_shrugging:

آه ، لدي شك خفي في أن الحالة كلما تم تمكين GA أو لا يتم إعادة تعيينها عند إعادة الاتصال ... لذلك لا يزال Mudlet يعتقد أنه ممكّن ، عندما لم تقم اللعبة بتمكينه بعد (مثل mg.mud.de لا قم بتمكينه حتى تكتب gast ).

عندما لا يتم تمكين GA ، ينتظر Mudlet قليلاً قبل الاستسلام وعرض النص ، ولكن مع تشغيله ، فإنه يعرض النص فقط عندما يأتي GA. لذلك هنا - GA لا تأتي أبدًا - ينتظر Mudlet إلى الأبد لعرض النص.

مرحبًا @ vadi2 ، هذا يعمل بالنسبة لي على OSX مع StickMUD. شكرا!

لطيف - جيد. هذا يصلح على الجانب Mudlets. سيكون الإصلاح الأفضل هو تمكين GA على الاتصال على الفور (لذلك لا ترى لا GA مثل في mg. لم تختبر stickmud)

حتى الآن نقوم بتمكين GA بمجرد أن نؤكد أنها عملاء Mudlet أو Grapevine - وإلا ، يمكن للاعبين تبديلها إذا احتاجوا إليها. يجب ألا يتم التعامل مع GA بشكل جيد في بعض العملاء.

من الناحية الفنية ، تعد GA جزءًا من نموذج NVT ( محطة الشبكة الافتراضية ) ، أي شيء من المفترض أن توفره المحطة الطرفية الافتراضية كجزء من نموذج أحادي الاتجاه الذي يشير إليه Telnet. Suppress Go Ahead ليس خيارًا يوافق عليه Mudlet أبدًا ، لذلك في الواقع يكون الطرف الآخر مطلوبًا لتوفير إشارات GA. لم أكن أدرك ذلك تمامًا من قبل ...

يبدو أن هذا يحسن تجربة الاتصال بـ mg.mud.de 👍

تمت مناقشة التعليقات على الحاجة (أو عدم الحاجة) إلى GA في رقم 1252 بتعمق أكبر ، ويبدو أن MG تعمل بشكل جيد مع Mudlet بمجرد إرسال EOR بدلاً من GA الذي يبدو قديمًا.

لفت Kebab انتباهي إلى هذه المشكلة وأود التعليق على GA / SGA قليلاً. لست متأكدًا ، في أي مكان آخر ، فليكن هنا ...

أنت على حق تماما. GA هي وسيلة (تاريخية) للتحكم في التدفق. وما لم يتم التفاوض على SGA ، يحتاج شركاء الاتصال المتوافقون مع المعايير إلى إرسال GA عندما يُسمح للشريك الآخر بالإرسال (أي على الأرجح في الوقت الحاضر بعد كل إخراج). ولكن من خلال نفس الحجة ، يجب على الشركاء إرسال فقط بمجرد تلقي GA ... (وهو ما لا أعتقده أحد)

من وجهة نظري ، الطريقة المعقولة الوحيدة للتعامل مع هذا ولكي تكون متوافقًا مع المعايير هي التفاوض دائمًا على SGA والتخلص من GA غير الضروري.

هذا هو السبب في أنني لست صديقًا لاستخدام GA كوسيلة للكشف السريع (تمييز المطالبات). للقيام بذلك ، تحتاج إلى تمكين Suppress-go-forward لتعطيل GA كوسيلة للتحكم في التدفق في telnet. عندها فقط يمكنك استخدامه مع بعض المعاني الأخرى في الطبقة فوق telnet (وضع علامات على المطالبات في إخراج MUD). حتى إذا تجاهلت معايير telnet هنا ، يمكنك الحصول على GA للمطالبات وفي النهاية للعديد من المخرجات الأخرى غير السريعة).
إحدى المشكلات هي أنه لا توجد طريقة جيدة للتفاوض إذا كان MUD يستخدم GA للكشف الفوري.

بالإضافة إلى ذلك ، SGA متشابك AFAIR مع خيارات telnet الأخرى مثل وضع NOECHO و CHARMODE / LINEMODE. هذا الاعتماد المتبادل يعقد الأمور أكثر.

يستخدم Morgengrauen EOR لتمييز المطالبات إذا تم التفاوض على TELOPT_EOR (لا يضع علامة على المطالبات بخلاف ذلك) ولا يتلاعب مع SGA (لأن ذلك سيجعل سلوك تفاوض telnet الخاص بـ mudlib أكثر تعقيدًا بشكل كبير - في هذه الحالة ، يجب على Mudlib أن اعتني بـ TELOPT_ECHO و TELOPT_SGA و TELOPT_COMPRESS و TELOPT_COMPRESS2 وهو ما لا أريد القيام به ، فهذه أمور تخص السائق) وتترك جميع مشكلات التحكم في التدفق لجهاز telnet الخاص بـ LDMud. هذا يعني أن Morgengrauen لديه السلوك الافتراضي لـ MUDs باستخدام LDMud لـ GA / SGA.

فيما يتعلق بالسلوك الافتراضي لـ LDMud ، فأنا حاليًا لست متأكدًا حقًا ، ولكن من المؤكد أن amotzkau يمكنه أن يخبرنا بمزيد من التفاصيل حول هذا الموضوع.

يتمثل التنفيذ الافتراضي لـ LDMud في عدم إعطاء أي إشارة إلى موجه (قد يكون لذلك أسباب تاريخية ، كان الموجه سابقًا مكتوبًا قبل استدعاء input_to ، لذلك لم يكن لدى السائق أي إشارة إلى ماهية المطالبة أيضًا).

ويستخدم LDMud SGA للإشارة إلى وضع char ، الذي له أيضًا أسباب تاريخية. بدون SGA ، يتم حث شركاء الاتصال على التحدث فقط عندما يتلقون GA من النظير والإشارة إلى GA عندما ينتهون من التحدث. لذا فإن تسلسل "الأمر ، GA - الإجابة ، GA" يشكل بشكل فعال نمط وضع سطر. ثم ينظر العديد من العملاء إلى الموافقة على SGA على أنها وضع char ، لأن العميل يتمتع الآن بحرية إرسال الأحرف فور إدخالها. ولهذا السبب لم يتم التفاوض على SGA في البداية ، فهناك خيار LINEMODE telnet الذي يمكن أن يفعل الشيء نفسه ، ولكن لم يتم اعتماده على نطاق واسع من قبل العملاء مثل SGA.

ردًا على SlySven ، يجب على كل خادم إرسال GA إذا لم يتم الاتفاق على SGA ، وهذا صحيح من الناحية الفنية ، ولكن هذا يعني أيضًا أنه لا يُسمح للعميل بإرسال أي شيء مرة أخرى ، بعد إرسال GA وعدم استلام GA. ولن يُسمح للخادم إلا بإرسال استجابة واحدة قبل الاضطرار إلى انتظار أمر المستخدم مرة أخرى. يجب تخزين أي رسائل خارج النطاق (أحداث ، إجراءات من قبل مستخدمين آخرين) حتى يقوم المستخدم بأمر آخر. لا يوجد عميل أو خادم MUD يلتزم بذلك ، على حد علمي.

سيتبع استخدام GA للإشارة السريعة تلك العملية القديمة (ينتهي الخادم من استجابته مع GA ، وآخر شيء في الاستجابة هو الموجه) ، ولكن لا أحد يقوم بباقي هذه العملية بعد الآن ، لذلك لا يكون هذا بمثابة مبرر جيد. وكلما تم الاتفاق على SGA (لذلك لا يتعلق هذا بـ Mudlet) ، لن يتم إرسال GA وتجاهلها عند استلامها. لذلك قد يتجاهل العملاء الآخرون إشارة المطالبة في وضع الحرف.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات