| Hazem |
2026-10-29 07:08 PM |
حل مشكله الخطا بعد انشاء الشخصيه Qhar6099
عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع
الحل كل التعديلات في ملف واحد:
كود PHP:
Qahr6609.GameServer\Networking\Handlers\MsgLogin\MsgLoginClient.cs
افتح الملف بالنوت باد او Visual Studio، واعمل الخطوات دي بالترتيب.
الخطوة الاولى: تعديل شرط التحقق من الـ Token
اعمل Ctrl + F وابحث عن السطر ده:
كود PHP:
if (!LoginTokenCheck.ResolveToken(client.Key, out byToken))
واستبدله بالسطر ده:
كود:
if (!LoginTokenCheck.VerifiedUidOf(client, out byToken) && !LoginTokenCheck.ResolveToken(client.Key, out byToken))
كده السيرفر هيشوف الاول اذا كان الاتصال ده اتاكد منه قبل كده، ولو لا، هيكمل التحقق العادي من الـ Token.
الخطوة التانية: اضافة دالة التحقق
ابحث عن السطر ده:
كود PHP:
static readonly object verifiedLock = new object();
وتحته مباشرة، وقبل السطر ده:
static int enabled = -1;
ضيف الكود التالي:
كود PHP:
public static bool VerifiedUidOf(Client.GameClient client, out uint uid) { uid = 0; VerifiedUid known; lock (verifiedLock) { if (!verified.TryGetValue(client, out known)) return false; } uid = known.Uid; return true; }
الدالة دي بتشوف اذا كان الاتصال موجود في قائمة الاتصالات اللي اتعملها تحقق قبل كده، ولو موجود بترجع رقم الحساب Uid.
الخطوة التالتة: تعديل دالة Verify
ابحث عن الدالة:
كود PHP:
public static bool Verify
وجواها دور على الجزء ده:
كود PHP:
failure = ""; if (!Enabled) return true;
استبدله بالكود ده:
كود PHP:
failure = ""; if (!Enabled) { lock (verifiedLock) { verified.Remove(client); verified.Add(client, new VerifiedUid { Uid = uid }); } return true; }
خلي بالك ان الجزء ده لازم يكون جوه دالة Verify، مش اي مكان تاني في الملف.
|