Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 01/02/2023 in all areas

  1. السلام عليكم ورحمة الله تعالي وبركاته الملف يحتوي على 4 أنظمة للأبراج التالية: برج النمير و رازادور برج التنين الأبيض و معبد الأفاعي ملاحظة : لم أقم بتجربة الأنظمة بعد إضغط هنا لتحميل النظام
    11 points
  2. مرحبا حابه اقدم لكم ملفات وكلينت ماتين فروزن طبعا ملفات فروزن هي في الاساس ملفات wom2 انا عربتها وحليت فيها اغلب مشاكل الي ظهرت لي ضمنها مشاكل في كور ومشاكل فصل ومشاكل بروتو الخ الخ كان فيها الكثير من مشاكل وانحلت وفتحت فيها سيرفر اسمو فروزن ولحد الان مفتوح بس انا معتزلة بسبب الامتحانات والسيرفر كان في اقبال عليه كثير من ناس انا م كنت حابه انشرها لكن من فترة بعت تعريب لشخص مقابل 20$ لكن وصلني خبر هاد شخص صار يبيع تعريب مقابل 50$ واكثر لهيك بنشر ملفات كاملة مع سورس والتعريب الكامل لكم مجانا ملاحظة البروتو حق ملفات هي SQL وليست تيكست هي بسيطة جدا ورح اشرح لكم طريقة العمل علبها تعديل بروتو يكون من نافي بعد م تخلص تعديل تروح على مجلد Mysqlproto_pack_bat تضغط عليه وتنتظره لين يخلص وبعدها تروح للمجلد تاني mysql_proto.pack وتضغط عليها وتنتظره لين يخلص وبعدها رح يحط لك الايتم بروتو وموب بروتو في مسار data ملاحظة لا تنسى تفتح الملفيت بروتو من نوتباد وتغير الايبي نافيكات الاسم monty الباسورد some_pass الان لتثبيت جيم فك ضغط في مسار cd / لتشغيل شنل cd /mt2/ && sh admin_panel.sh هناك ملف روت معدل في سورس والادوات ضعه في ملف باك المفكوك الان الروابط الباك المفكوك [Hidden Content] الكلينت [Hidden Content] السورس والجيم والادوات [Hidden Content] Freebsd لتشغيل ملفات وكومبايل سورس [Hidden Content] وشكرا
    9 points
  3. السلام عليكم ورحمه الله وبركاته ------------ تم اضافه بعض الانظمه علي نفس الملفات اللي رفعتها من قبل (ملفات نظيفه بسورس مارتي 4.9.89) --- Download ------------------ إليكم فيديو وبعض الصور للاضافات الجديده في الملفات ---- ملحوظه : تم حذف نظام قوانين اللعبه اللي في الفيديو ----------------- ---------
    7 points
  4. كما هو موضح من العنوان الرابط مجلد يحتوي على الكثير من أنظمة ماتين2 ، لكم حرية تركيب ماتشاؤون ولست مسؤولا عن صحة عمل أي نظام منهم ويمكنني القول أني قمت بتركيب 90% من هم ولم تواجهني مشاكل(نقائص ربما). الجزء الأول الجزء الثاني
    7 points
  5. السلام عليكم ورحمة الله تعالي وبركاته صورة للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    7 points
  6. السلام عليكم ورحمة الله وبركاته نقدم لكم سيرفر حرب الامبراطوريات الفريد من نوعه وطاقم عمله. روابط تهمك: الموقع الرئيسي - الصفحة تشويقية - سيرفر ديسكورد - قناة اليوتيوب - التحميل - التسجيل مقطع تشويقي Presentation عرض ميزات السيرفر: نمط اللعب: زراعة متجدد. (Feedbacks are welcomed) لقد شارفنا على الانتهاء ووضع الخطوات الأخيرة للبدء بإطلاق النسخة التجريبية ونحن بحاجة الآن إلى تكوين فريق تطويري للمساعدة في تجربة الانظمة لوضع اللمسات الاخيرة على المحتوى بشكل كامل بإمكانك تقديم طلب عبر الرابط التالي وسنقوم بمراسلتك حال قبولك بالخطوات المطلوبة منك بشكل تفصيلي سوف تتمكن عند قبولك من الدخول إلى الخادم المغلق الخاص بالمطورين حيث ان هذا الخادم مخصص فقط لبيئة تطوير اللعبة اضغط هنا للتقديم فريق العمل: Mo MiJo Neji حرب الإمبراطوريات عبارة عن سلسلة من المواسم التي ستكون مقررة بوقت صدور محدد بإذن الله تعالى. بدايةً نقدم لكم "الموسم أول - أمجاد الماضي" المستوى النهائي Lv99 .
    7 points
  7. السلام عليكم ورحمة الله تعالي وبركاته بدون مقدمات كما هو موضح بالعنوان إضغط هنا للتحميل
    7 points
  8. السلام عليكم ورحمة الله تعالى وبركاته ملفات اوساب بالتحديث الأخير في الرابط الأسفل يظهر تحديثات النسخة OSF Changelog تم ارفاق ورقة locale_inc.h , service.h لمعرفة الأنظمة داخل النسخة لا اعرف ان كان هناك اخطاء او مشاكل داخل النسخة لم اقم بتجربتها .. معلومات دخول ال FreeBsd : user : root password : admin password mysql : admin Locale_inc.h service.h
    6 points
  9. السلام عليكم ورحمة الله تعالي وبركاته صور للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    6 points
  10. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضح بالعنوان نظام المهام مثل الرسمي صورة للنظام رابط التحميل كلمة السر : Mt2Academy.com
    6 points
  11. هذه الإستضافات المستحسنة: -سيرفر تجريبي : Kimsufi: Low-cost dedicated servers - سيرفر صغير : Dedicated Server rental - Reliable low-cost servers (soyoustart.com) - سيرفر كبير : OVH becomes OVHcloud.com: Europe’s leading cloud provider
    6 points
  12. التحميل من الموقع الرسمي: Navicat | Download Navicat Premium 14-day trial versions for Windows, macOS and Linux رابط تحميل ملف أوامر لاستعادة الفترة التجريبة(14يوم) بعد نفاذها كل مرة: [Hidden Content] كلمة مرور الأرشيف: mt2academy.com
    6 points
  13. كما هو موضح بالعنوان النظام منقول ولم اقم بتجربته صورة للنظام رابط التحميل
    5 points
  14. السلام عليكم ورحمة الله تعالي وبركاته وبهذا النظام سنودع سنة 2022 وإن اشاء الله السنة القادمة ستكون افضل و أحسن من هذه السنة فيديو للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    5 points
  15. السلام عليكم ورحمة الله وبركاتة اليوم بمناسبة فخرنا ان المغرب وصلت لهذا المستوى وهذة الدرجة ولم تخيب ظننا حبيت انشر لكم النظام ده :فيديو النظام :التحميل :كلمة المرور [Hidden Content]
    5 points
  16. السلام عليكم ورحمه الله وبركاته ----------------------------- GCC10 VS2019 --- اذا قابلك مشكله اثناء التركيب ارفق صوره من المشكله في التعليقات وسيتم الرد عليك --- --- Download
    5 points
  17. السلام عليكم ورحمة الله وبركاته .. ملفات فروزين ، جيدة جدا للتعلم .. Client&Srcs&Game-DB Download التعريب : Download *نظام الأحزمة كامل *نظام تحويل علاوات الأزياء كامل *نظام التشكيل كامل *نظام المتجر الأوفلاين متوافق مع كل الأنظمة(وون-تشكيل...) *نظام الوون Won كامل *نظام الأزياء كامل *نظام أزياء الأسلحة والوشاح كامل *نظام الرفيق كامل تم حل جميع مشاكله *نظام البف الخاص *نظام رؤية إسم كتب المهارة الملقية على الأرض كاملة. *نظام معبد الأشاو-الغابة المسحورة-ميلي كامل *نظام كرة البركة ولفيفة السحر بمميزات جديدة *نظام الكيميائي كامل مع خاصية الإدراك مباشرة من نافذة الكيميائي *خانتان إضافيتان للخواتم في قائمة الجرد *قائمة جانبية لقائمة الأدوات لفتح مختلف الأنظمة مدموجة ب: -نظام إظهار وإخفاء الزي للاعبين. -زر لفتح المتجر الأوفلاين. -مساعد السحر. *نظام رتبة الدرع والسلاح(حيث تظهر لمعة جديدة عند وصول عدد الضربات وأنت مرتدي السلاح أو الدرع إلى حد معين...إكتشفوه لاحقا) *نظام المتاجرة مدموج بالوون كاملا . *نظام تغيير القناة والإنتقال. *نظام ورق أوكي كامل *نظام تبديل 10 كتب مقابل كتاب عشوائي. *نظام المهارة6للمحارب والنينجا والمهارات7-8 لكل الشخصيات كامل. والعديد من المميزات الإضافية التي لا أستطيع ذكرها كلها... شرح للمبتدئين
    5 points
  18. 5 points
  19. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضع في العنوان. المطلوب: -Visual Studio 2019 لعمل كومبايل لسورس الكلاينت. -GCC9 لعمل كومبايل لسورس السيرفر. روابط التحميل سورس السيرفر والاكسترن بالمرفقات *معلومات الFreeBSD المرفق مع التحميل freebsd12.2: User: root Password: dev ملحوظة مهمة : يمكنك استخدام اي Game &mysql من اي اصدار لمارتي بيكون متوافق Extern.rar m2_server.rar
    4 points
  20. [Hidden Content] * لإظهار أيقونات الأحبال الدائمة يمكنك إضافة : ثم تطبيق الخطوات في ملف uiAffectShower.py. التحميل: MEGA
    4 points
  21. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضح في العنوان نظام الباتل باس صورة للنظام رابط التحميل
    4 points
  22. - السلام عليكم ورحمة الله وبركاته - اليوم سوف نطرح نظام رؤية دروع اللاعبين : : SrcServer->[email protected] إبحث عن : typedef struct pakcet_view_equip إستبدلها كاملةََ : typedef struct pakcet_view_equip { BYTE header; DWORD vid; struct { DWORD vnum; BYTE count; long alSockets[ITEM_SOCKET_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; } equips[16]; } TPacketViewEquip; : SrcServer->[email protected] إبحث عن : void CHARACTER::SendEquipment(LPCHARACTER ch) إستبدلها كاملةََ : void CHARACTER::SendEquipment(LPCHARACTER ch) { TPacketViewEquip p; p.header = HEADER_GC_VIEW_EQUIP; p.vid = GetVID(); int pos[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23 }; for (int i = 0; i < 16; i++) { LPITEM item = GetWear(pos[i]); if (item) { p.equips[i].vnum = item->GetVnum(); p.equips[i].count = item->GetCount(); thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets)); thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr)); } else { p.equips[i].vnum = 0; } } ch->GetDesc()->Packet(&p, sizeof(p)); } : Userinterface->[email protected] إبحث عن : typedef struct pakcet_view_equip إستبدلها كاملةََ : typedef struct pakcet_view_equip { BYTE header; DWORD dwVID; TEquipmentItemSet equips[16]; } TPacketGCViewEquip; : Userinterface->[email protected] إبحث عن : bool CPythonNetworkStream::RecvViewEquipPacket إستبدلها كاملةََ : bool CPythonNetworkStream::RecvViewEquipPacket() { TPacketGCViewEquip kViewEquipPacket; if (!Recv(sizeof(kViewEquipPacket), &kViewEquipPacket)) return false; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OpenEquipmentDialog", Py_BuildValue("(i)", kViewEquipPacket.dwVID)); for (int i = 0; i < 16; ++i) { TEquipmentItemSet & rItemSet = kViewEquipPacket.equips[i]; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogItem", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, rItemSet.vnum, rItemSet.count)); for (int j = 0; j < ITEM_SOCKET_SLOT_MAX_NUM; ++j) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogSocket", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, j, rItemSet.alSockets[j])); for (int k = 0; k < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++k) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogAttr", Py_BuildValue("(iiiii)", kViewEquipPacket.dwVID, i, k, rItemSet.aAttr[k].bType, rItemSet.aAttr[k].sValue)); } return true; } : root->[email protected] إبحث عن : def OpenEquipmentDialog(self, vid) إستبدلها : def OpenEquipmentDialog(self, vid): if self.equipmentDialogDict.has_key(vid): self.equipmentDialogDict[vid].Destroy() self.CloseEquipmentDialog(vid) dlg = uiEquipmentDialog.EquipmentDialog() dlg.SetItemToolTip(self.tooltipItem) dlg.SetCloseEvent(ui.__mem_func__(self.CloseEquipmentDialog)) dlg.Open(vid) self.equipmentDialogDict[vid] = dlg - وايضاََ لاتنسوا تحميل باقي الملفات : MEGA pwd-> www.mt2academy.com
    4 points
  23. سلام عليكم ورحمة الله وبركاته اقدم لكم ستايل الشخصيات الرسمي صوره بعد التركيب: الستايل معرب ومعه شرح تركيب من قبل العضو ايتاشي والستايل خالي من المشاكل وكامل اتركم مع شرح الاخ ايتاشي بسم الله الرحمن الرحيم والصلاة والسلام علي اشرف المرسلين محمد بن عبد الله والان نذهب للشرح قبل بدا في تركيب ركز في حاجات المهمة يعني ابحث عن الحاجة قبل ما تضيف لقيتها موجودة متحطهاش كمان مره عشان هيحصل خطا في ركب الامر مره واحده فقط ابدا وطبق معي نسخ لصق ورجاء تركيز علي مسافات افتح ملف constinfo.py ابحث عن PVPMODE_PROTECTED_LEVEL = 30 اضغط انتر مرتان واضف: ACCOUNT_NAME = "AhmedKhamis" WOLF_MAN = "ENABLED" # ENABLED/DISABLED WOLF_WOMEN = "DISABLED" # ENABLED/DISABLED افتح ملف İntrologin.py ابحث عن: self.PopupDisplayMessage(localeInfo.LOGIN_CONNECT_SUCCESS) اضف فوقه مباشراً: constInfo.ACCOUNT_NAME = str(self.idEditLine.GetText()) افتح ملف ui.py ابحث عن elif Type == "thinboard": parent.Children[Index] = ThinBoard() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) اترك اسفله سطر واضف elif Type == "thinboard_gold": parent.Children[Index] = ThinBoardGold() parent.Children[Index].SetParent(parent) self.LoadElementThinBoardGold(parent.Children[Index], ElementValue, parent) elif Type == "thinboard_circle": parent.Children[Index] = ThinBoardCircle() parent.Children[Index].SetParent(parent) self.LoadElementThinBoardCircle(parent.Children[Index], ElementValue, parent) ابحث عن: def LoadElementThinBoard(self, window, value, parentWindow): if False == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST): return False window.SetSize(int(value["width"]), int(value["height"])) self.LoadDefaultData(window, value, parentWindow) return True اترك سطر واضف def LoadElementThinBoardGold(self, window, value, parentWindow): if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST): return FALSE window.SetSize(int(value["width"]), int(value["height"])) self.LoadDefaultData(window, value, parentWindow) return TRUE def LoadElementThinBoardCircle(self, window, value, parentWindow): if FALSE == self.CheckKeyList(value["name"], value, self.BOARD_KEY_LIST): return FALSE window.SetSize(int(value["width"]), int(value["height"])) self.LoadDefaultData(window, value, parentWindow) return TRUE ابحث عن: def LockScroll(self): self.lockFlag = True def UnlockScroll(self): self.lockFlag = False اضف تحته class ThinBoardGold(Window): CORNER_WIDTH = 16 CORNER_HEIGHT = 16 LINE_WIDTH = 16 LINE_HEIGHT = 16 BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51) LT = 0 LB = 1 RT = 2 RB = 3 L = 0 R = 1 T = 2 B = 3 def __init__(self, layer = "UI"): Window.__init__(self, layer) CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop_gold", "LeftBottom_gold","RightTop_gold", "RightBottom_gold"]] LineFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Line_"+dir+".tga" for dir in ["Left_gold", "Right_gold", "Top_gold", "Bottom_gold"]] self.Corners = [] for fileName in CornerFileNames: Corner = ExpandedImageBox() Corner.AddFlag("attach") Corner.AddFlag("not_pick") Corner.LoadImage(fileName) Corner.SetParent(self) Corner.SetPosition(0, 0) Corner.Show() self.Corners.append(Corner) self.Lines = [] for fileName in LineFileNames: Line = ExpandedImageBox() Line.AddFlag("attach") Line.AddFlag("not_pick") Line.LoadImage(fileName) Line.SetParent(self) Line.SetPosition(0, 0) Line.Show() self.Lines.append(Line) Base = ExpandedImageBox() Base.SetParent(self) Base.AddFlag("attach") Base.AddFlag("not_pick") Base.LoadImage("d:/ymir work/ui/pattern/thinboardgold/thinboard_bg_gold.tga") Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT) Base.Show() self.Base = Base self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT) self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0) def __del__(self): Window.__del__(self) def SetSize(self, width, height): width = max(self.CORNER_WIDTH*2, width) height = max(self.CORNER_HEIGHT*2, height) Window.SetSize(self, width, height) self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT) self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0) self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT) self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT) self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT) verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) if self.Base: self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage) def ShowInternal(self): self.Base.Show() for wnd in self.Lines: wnd.Show() for wnd in self.Corners: wnd.Show() def HideInternal(self): self.Base.Hide() for wnd in self.Lines: wnd.Hide() for wnd in self.Corners: wnd.Hide() class ThinBoardCircle(Window): CORNER_WIDTH = 4 CORNER_HEIGHT = 4 LINE_WIDTH = 4 LINE_HEIGHT = 4 BOARD_COLOR = grp.GenerateColor(255.0, 255.0, 255.0, 1.0) LT = 0 LB = 1 RT = 2 RB = 3 L = 0 R = 1 T = 2 B = 3 def __init__(self, layer = "UI"): Window.__init__(self, layer) CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop_circle","LeftBottom_circle","RightTop_circle","RightBottom_circle"] ] LineFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Line_"+dir+".tga" for dir in ["Left_circle","Right_circle","Top_circle","Bottom_circle"] ] self.Corners = [] for fileName in CornerFileNames: Corner = ExpandedImageBox() Corner.AddFlag("attach") Corner.AddFlag("not_pick") Corner.LoadImage(fileName) Corner.SetParent(self) Corner.SetPosition(0, 0) Corner.Show() self.Corners.append(Corner) self.Lines = [] for fileName in LineFileNames: Line = ExpandedImageBox() Line.AddFlag("attach") Line.AddFlag("not_pick") Line.LoadImage(fileName) Line.SetParent(self) Line.SetPosition(0, 0) Line.Show() self.Lines.append(Line) Base = Bar() Base.SetParent(self) Base.AddFlag("attach") Base.AddFlag("not_pick") Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT) Base.SetColor(self.BOARD_COLOR) Base.Show() self.Base = Base self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT) self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0) def __del__(self): Window.__del__(self) def SetSize(self, width, height): width = max(self.CORNER_WIDTH*2, width) height = max(self.CORNER_HEIGHT*2, height) Window.SetSize(self, width, height) self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT) self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0) self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT) self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT) self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT) verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2) def ShowInternal(self): self.Base.Show() for wnd in self.Lines: wnd.Show() for wnd in self.Corners: wnd.Show() def HideInternal(self): self.Base.Hide() for wnd in self.Lines: wnd.Hide() for wnd in self.Corners: wnd.Hide() افتح ملف uitooltip.py ابحث عن def AutoAppendTextLine(self, text, color = FONT_COLOR, centerAlign = TRUE): [الي اخر سطر] return textLine واترك سطر واضف def AutoAppendNewTextLine(self, text, color = FONT_COLOR, centerAlign = True): textLine = ui.TextLine() textLine.SetParent(self) textLine.SetFontName(self.defFontName) textLine.SetPackedFontColor(color) textLine.SetText(text) textLine.SetOutline() textLine.SetFeather(FALSE) textLine.Show() if localeInfo.IsARABIC(): textLine.SetHorizontalAlignRight() textLine.SetPosition(15, self.toolTipHeight) self.childrenList.append(textLine) (textWidth, textHeight) = textLine.GetTextSize() textWidth += 30 textHeight += 10 if self.toolTipWidth < textWidth: self.toolTipWidth = textWidth self.toolTipHeight += textHeight self.ResizeToolTipText(textWidth, self.toolTipHeight) return textLine ابحث عن def ResizeToolTip(self): self.SetSize(self.toolTipWidth, self.TOOL_TIP_HEIGHT + self.toolTipHeight) واترك سطر واضف def ResizeToolTipText(self, x, y): self.SetSize(x, y) انتهينا من الروت الان نروح نفك الوكال افتح ملف locale_interface.txt واضف فى الاخر SELECT_NO_GUILD لا وجود لرابطة SELECT_YES_GUILD Guild Name: %s SELECT_PLAYTIME وقت اللعب (دقيقة) JOBDESC_WARRIOR_PATH محارب JOBDESC_ASSASSIN_PATH نينجا JOBDESC_SURA_PATH سورا JOBDESC_SHAMAN_PATH شامان JOBDESC_WOLFMAN_PATH ليكانر افتح ملف locale_game.txt واضف فى الاخر EMPIRE_SELECT اختر EMPIRE_SELECT_MODE أختيار الابراطورية CHARACTER_CREATE_MODE أنشاء شخصية CHARACTER_SELECT_MODE أختيار الشخصية CHARACTER_CREATE_MALE ذكر CHARACTER_CREATE_FEMALE انثي CHARACTER_CREATE_APPEARANCE1 شكل 1 CHARACTER_CREATE_APPEARANCE2 شكل 2 INTRO_SELECT_LEVEL Lv. %d ولا ننسى ان نفتح ملف الاندكس الموجود بالباتش ونضيف * Select_Metin2 * طبعاً لازم يكون تحتها وفوقها نجمه عشان تتفعل في الكلاينت وهذا رابط تحميل الملفات الباقيه للستايل [Hidden Content] وهنا ننتهي من الموضوع ومبروك عليكم التركيب ولا تنسون الدعاء للأخ ايتاشي و لي * قمت بنقل الموضوع من الاخ CSS من إحدى المنتدديات وكان هو الي ناقله من ايتاشي تقريباََ . * عالعموم تم نشر الموضوع للفائدة لا اكثر * شكرا للأخ @itachi
    3 points
  24. السلام عليكم ورحمة الله تعالي وبركاته صورة وفيديو للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    3 points
  25. السلام عليكم ورحمة الله تعالي وبركاته صورة وفيديو للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    3 points
  26. السلام عليكم ورحمة الله تعالي وبركاته فيديو للنظام : ملاحظة : لم أقم بتجربة النظام إضغط هنا لتحميل النظام
    3 points
  27. السلام عليكم كما هو موضح بالعنوان صورة رابط التحميل ملحوظة لم اجربه
    3 points
  28. تحديث: 15 مارس 2019 (v19.1.7) تحديث: 26 أبريل 2019 (v19.2) تحديث: 18 يونيو 2019 (v19.3.9) تحديث: 7 أكتوبر 2019 (V19.5.9) تحديث: 31 أكتوبر 2019 (V19.5.9) تحديث: 3 ديسمبر 2019 (v19.6.12) تحديث: 3 مارس 2020 (v20.0.6) تحديث: 25 مارس 2020 (v20.1.3) تحديث: 28 ماي 2020 (v20.2.5) تحديث: 26 نونير 2020 (v20.6.2) تحديث: 24 فبراير 2021 (v21.0.8) تحديث: 1 أبريل 2021 (v21.1.3) تحديث: 15 يونيو 2021 (v21.2.8) تحديث: 14 يوليو 2021 (v21.2.10) تحديث: 20 أكتوبر 2021 (v21.2.10) تحديث: 14 نوفمبر 2021 (v21.4.6) تحديث: 29 يناير 2022 (v22.0.6) رابط لكلينت كامل أخر تحديث : إضغط هنا
    3 points
  29. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضح بالعنوان نظام wiki aldera صورة للنظام رابط التحميل رابط الفحص ملحوظة يجب ان يكون لديك بعض المعرفة حتي تستطيع من تركيب النظام وحتي يعمل بشكل مثالي
    3 points
  30. السلام عليكم ورحمه الله وبركاته حابب أرشح الملفات دي للافاده الملفات بسورس مارتي أنا حاليا بستخدمها ومركب أكثر من نظام وما فيها مشكله 4.9.89 r88 ---------------- ---------------- Mysql 5.6 GCC6 Visual Studio 2019 ----- (VDI) Freebsd 11.2 (32bit) User : root Pass : delaro ----- (Mysql) User : root Pass : 12345 ----- Account User : marty Pass : 1 --------------------- لتشغيل الشنلات cd /admin sh admin.sh --------------------- لا ترفع ملفات عالسيرفر لأن السيرفر المرفق مع الملفات مرفوع عليه السورس + game + mysql فقط هتستخدم الكلينت وسورس الكلينت من الملفات ---------------------- رابط تحميل الملفات Download ----------- رابط تحميل الملفات معربة Download ------------------------------- فيديو للملفات -- ----------- فيديو لتشغيل الملفات --
    3 points
  31. السلام عليكم ورحمة الله وبركاته : كما موضح بالعنوان سأقوم بطرح بعض الإصدارات الخاصة المتعلقة ب FreeBSD الجديدة والقديمة منها التي أستعملها أو كنت أستعملها من قبل ملاحظة : جميع FreeBSD التي رفعتها لكم ستجد في داخل كل ملف منها ال user وPassword الخاص بها الإصدار الأول 9.2 للتحميل قم بالضغط هنا ------------ الإصدار الثاني 9.3 للتحميل قم بالضغط هنا ------------ الإصدار الثالث 11.4 للتحميل قم بالضغط هنا ------------ الإصدار الرابع 12.1 للتحميل قم بالضغط هنا ------------ الإصدار الخامس 12.2 للتحميل قم بالضغط هنا ------------ الإصدار السادس 13 للتحميل قم بالضغط هنا ------------ هذا الإصدار تم إضافة اليه GCC8/GCC9/GCC10 MySQL5.6 الاسم والباسورد root dev ------------ لمعرفة نوع الاصدار لكلFreeBSD 32/64 BIT قم بكتابة هذا الأمر getconf LONG_BIT على سبيل المثال إصدار 12.2←32Bit ------------ ملف ال Lib للتحميل قم بالضغط هنا ------------ ملاحظة : في بعض الاحيان عند تشغيل السيرفر ستواجهك مشكلة في نقص الليبات لهذا رفعت لكم ملف يحتوي على اغلب الليبات الموجودة بإمكانك تحميله وأخد الليب الذي ينقصك ------------ بخصوص تشغيل ملفات مارتي إصدار 4.9 او غيره من الإصدارات ستحتاج الى وضع و تثبيت هذه الأوامر pkg install gcc8 pkg install gcc9 pkg install python27 pkg install gdb pkg install openssl pkg install mysql56-server pkg install python3 ------------ وبالنسبة لل ip ستجد أغلب الإصدارات التي طرحتها هنا تحتوي على الايبي الافتراضي 192.168.1.100 ----------- ملاحظة : في بعض الإصدارات حرف ال i ليس في مكانه عليك بالضغط على زر ط أو " الذي يوجد جنب حرف Enter سيظهر لك حرف i بعدها -- لعرض ال ip أكتب الأمر ifconfig -- أيضا كالعادة في الإصدارات الجديدة مثل الإصدار 12 وغيره من الإصدارات أمر sysinstall ليس موجود فيها ستجد بدله أمر bsdconfig ومن خلاله قم بتغير الip الذي ترغب به و عمل الإعدادات التي تناسبك وبالأخير بالتوفيق لكم ومع السلامة أراكم في موضوع اخر قريبا ان شاء الله
    3 points
  32. السلام عليكم جايبلكم 3 انظمة جميلة ومهمة للسيرفر والاغلب يحتاجها خصوصا الي يستخدم ملفات قديمة 1- سحر الازياء اعتقد واضحه.. ترمي شيء على الزي ويتغير سحره وطبعا فيه اداتين الاولى تغير سحر الزي وفي نفس الوقت تغير عدد المميزات (اقصى حد لعدد مميزات الازياء: 3) والاداة الثانية تغير سحر الزي فقط بدون ما تغير عدد المميزات 2- تحويل علاوة الزي هذي تنقل المميزات من زي لزي اخر (ازياء فقط حتى التسريحات ما تقدر تنقل مميزاتها) 3- تجديد وقت الزي اعتقد واضحة برضو.. ترمي اداة على الزي ويزود مدته روابط التحميل تجديد الازياء [Hidden Content] تحويل علاوة الزي + سحر الازياء [Hidden Content] // منقول .
    3 points
  33. السلام عليكم مثال في السورس تفتح ملف Char_item.cpp الاكواد والشرح هنا في المستند [Hidden Content] بالتوفيق للجميع منقول ومترجم فقط لم اجربه للأمانة
    3 points
  34. الهمس السريع من النداء مباشرة . 1)Python فقط:(بالضغط على كلمة [همس] uichat.py -أضف أعلى الملف في حال كان ناقص : import player -إبحث عن : def __SendShoutChatPacket(self, text): إستبدل : def __SendShoutChatPacket(self, text): playerName = player.GetName() if 1 == len(text): self.RunCloseEvent() return if app.GetTime() < self.lastShoutTime + 15: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CHAT_SHOUT_LIMIT) self.__ResetChat() return self.__SendChatPacket("|h|r[همس]"+"|Hpm:"+ playerName +"|h" +" "+ text[1:], chat.CHAT_TYPE_SHOUT) self.__ResetChat() self.lastShoutTime = app.GetTime() interfacemodule.py: -إبحث عن : def MakeHyperlinkTooltip(self, hyperlink): tokens = hyperlink.split(":") if tokens and len(tokens): type = tokens[0] if "item" == type: self.hyperlinkItemTooltip.SetHyperlinkItem(tokens) -أضف : elif "pm" == type: if player.GetName() == str(tokens[1]): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CANT_SEND_PM_TO_SELF) return self.OpenWhisperDialog(str(tokens[1])) أضف في ملف locale_game.txt: CANT_SEND_PM_TO_SELF لايمكنك إرسال رسالة لنفسك. 2)Python/CPP:بالضغط على اسم اللاعب مباشرة. input_main.cpp: -قبل: if (CHAT_TYPE_SHOUT == pinfo->type) -استبدل: *التعديل هنا يقتصر على : |Hpn_%s|h -> ch->GetName() static const char* colorbuf[] = {" |h|r[مراقب]|cFFffa200|h", " |h|r[شينسو]|cFFff0000|h", " |h|r[شونجو]|cFFffc700|h", " |h|r[جينو]|cFF000bff|h"}; // Arab int len = snprintf(chatbuf, sizeof(chatbuf), "%s |cFFffc700|Hpn_%s|h%s|h|r : %s", (ch->IsGM()?colorbuf[0]:colorbuf[MINMAX(0, ch->GetEmpire(), 3)]), ch->GetName(), ch->GetName(), buf); interfacemodule.py: -داخل: def MakeHyperlinkTooltip(self, hyperlink): tokens = hyperlink.split(":") if tokens and len(tokens): type = tokens[0] if "item" == type: self.hyperlinkItemTooltip.SetHyperlinkItem(tokens) -أضف: elif "pn" == type[:2]: t = type.split("_") if player.GetName() == t[1]: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CANT_SEND_PM_TO_SELF) return self.OpenWhisperDialog(t[1]) أضف في ملف locale_game.txt: CANT_SEND_PM_TO_SELF لايمكنك إرسال رسالة لنفسك.
    3 points
  35. - السلام عليكم ورحمة الله وبركاته . - اليوم نطرح لكم 80 فتحة للتجار . : SrcServer->[email protected] إبحث عن : SHOP_HOST_ITEM_MAX_NUM = 40, SHOP_PRICELIST_MAX_NUM = 40, أستبدلهم ب : SHOP_HOST_ITEM_MAX_NUM = 80, SHOP_PRICELIST_MAX_NUM = 80, : SrcServer->[email protected] إبحث عن : m_pGrid = M2_NEW CGrid(5, 9); أستبدلهم ب : m_pGrid = M2_NEW CGrid(10, 9); : Userinterface->[email protected] إبحث عن : SHOP_HOST_ITEM_MAX_NUM = 40, إستبدلها ب : SHOP_HOST_ITEM_MAX_NUM = 80, : uiscript->[email protected] import uiScriptLocale window = { "name" : "ShopDialog", "x" : SCREEN_WIDTH - 400, "y" : 10, "style" : ("movable", "float",), "width" : 184 + 160, "height" : 328, "children" : ( { "name" : "board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : 0, "width" : 184 + 160, "height" : 328, "children" : ( ## Title { "name" : "TitleBar", "type" : "titlebar", "style" : ("attach",), "x" : 8, "y" : 8, "width" : 169 + 160, "color" : "gray", "children" : ( { "name":"TitleName", "type":"text", "x":84+80, "y":4, "text":uiScriptLocale.SHOP_TITLE, "text_horizontal_align":"center" }, ), }, ## Item Slot { "name" : "ItemSlot", "type" : "grid_table", "x" : 12, "y" : 34, "start_index" : 0, "x_count" : 10, "y_count" : 8, "x_step" : 32, "y_step" : 32, "image" : "d:/ymir work/ui/public/Slot_Base.sub", }, ## Buy { "name" : "BuyButton", "type" : "toggle_button", "x" : 21, "y" : 295, "width" : 61, "height" : 21, "text" : uiScriptLocale.SHOP_BUY, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, ## Sell { "name" : "SellButton", "type" : "toggle_button", "x" : 104 + 160, "y" : 295, "width" : 61, "height" : 21, "text" : uiScriptLocale.SHOP_SELL, "default_image" : "d:/ymir work/ui/public/middle_button_01.sub", "over_image" : "d:/ymir work/ui/public/middle_button_02.sub", "down_image" : "d:/ymir work/ui/public/middle_button_03.sub", }, ## Close { "name" : "CloseButton", "type" : "button", "x" : 0, "y" : 295, "horizontal_align" : "center", "text" : uiScriptLocale.PRIVATE_SHOP_CLOSE_BUTTON, "default_image" : "d:/ymir work/ui/public/large_button_01.sub", "over_image" : "d:/ymir work/ui/public/large_button_02.sub", "down_image" : "d:/ymir work/ui/public/large_button_03.sub", }, ), }, ), } - في امان الله .
    3 points
  36. صورة للنظام [Hidden Content] رابط التحميل [Hidden Content]
    3 points
  37. السلام عليكم ورحمة الله وبركاته . - اليوم ساقوم بشرح لكم طريقة تعطيل الحر وطلب المبارزة في ماب معين . - لنفترض عزيزي ان عندك ماب مخصص فقط للزراعة ، تكسير الماتينات ، قتل الوحوش وإلى اخره . *لاتُريد ان يكون فيه قتل بين اللاعبين .* (سورس السيرفر) : cmd_general إبحث عن : ACMD(do_pvp) { أضف : if (ch->GetMapIndex() == 66) // رقم الماب { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't do this , in this map.")); // الرسالة التي تظهر للاعب ، يمكن تعريبها من خلال locale_string return; // إلغاء شرط المبارزة } * الأن ، قمنا بمنع اللاعب من طلب المبارزة داخل الماب الذي رقمه 66 * ( * منع اللاعب من عمل حر داخل الماب * ) إبحث عن : ACMD(do_pkmode) { أضف : if (ch->GetMapIndex() == 66) // رقم الماب { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't do this , in this map.")); // الرسالة التي تظهر للاعب ، يمكن تعريبها من خلال locale_string return; // إلغاء شرط الحر } - تبقى أخر خطوة . نذهب إلى ملف locale_string ونقوم بإضافة : "You can't do this , in this map." "<النظام> لا يُمكنك فعل هذا الامر في هذا الماب." رأيت شرح في احد المُنتديات الأجنبية ، وكان يتعلق ف ال Python والسورس ايضاََ . الطريقة التي مذكورة في الأعلى لم اقم بنقلها بتاتاََ ، ولم اقم بنسخ اي سطر من منتدى اخر . شُكرا على مروركم - Professor
    3 points
  38. البرنامج بسيط للإستعمال ، صورة للتوضيح : الفحص التحميل
    3 points
  39. السلام عليكم ورحمة الله تعالي وبركاته أعلم ان النظام القديم الا انه لايوجد بالمنتدى واحببت نشره يسمح لك النظام بفتح الصندوق 3 مرات او مرتين وحتى مرة 1 على حسب التحديد الذي قمت بتحديده له في item_proto النظام يمكن ان يغنيك عن استعمال الكويسات وتركيب النظام سهل ايضا فيديو للنظام : 2022-10-18 13-45-27.mp4 نبدأ أولا بتركيبه من جهة سورس السيرفر : نتوجه الى المسار: common\item_length.h ابحث عن ITEM_BELT, اضفت تحت ITEM_GACHA, ثانيا : db\src\ProtoReader.cpp هنا عليك التركيز جيدا وكرر نفس الخطوة في : ItemCSVReader.cpp سورس DumpProto ابحث عن: "ITEM_BELT", أضف تحت: "ITEM_GACHA" ابحث عن في arSubType 0, //34 أضف تحت: 0, //37 ابحث عنابحث عن في arNumberOfSubtype 0, //34 أضف تحت: 0, //37 game\src\item_manager.cpp ابحث عن: if (id == 0) أضف فوق if(item->GetType() == ITEM_GACHA) item->SetSocket(0, item->GetLimitValue(1)); game\src\char_item.cpp في: (CHARACTER::UseItemEx) ابحث عن: case ITEM_EXTRACT: ... break; اضف تحت: case ITEM_GACHA: { DWORD dwBoxVnum = item->GetVnum(); std::vector <DWORD> dwVnums; std::vector <DWORD> dwCounts; std::vector <LPITEM> item_gets(0); int count = 0; if (GiveItemFromSpecialItemGroup(dwBoxVnum, dwVnums, dwCounts, item_gets, count)) { DWORD dwLeftGacha = item->GetSocket(0) - 1; if (item->GetSocket(0) > 1) { item->SetSocket(0, dwLeftGacha); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Remaining number: %d"), dwLeftGacha); } else { ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (ITEM_GACHA)"); } } } break; اضف في locale_string.txt "Remaining number: %d"; "العدد المتبقي: %d"; : نتوجه الان ل سورس الكلينت GameLib\ItemData.h ابحث عن: ITEM_TYPE_BELT, أضف تحت: ITEM_TYPE_GACHA, UserInterface\PythonItemModule.cpp ابحث عن: PyModule_AddIntConstant(poModule, "ITEM_TYPE_BELT", CItemData::ITEM_TYPE_BELT); أضف تحت: PyModule_AddIntConstant(poModule, "ITEM_TYPE_GACHA", CItemData::ITEM_TYPE_GACHA); نتوجه الان الى الكلينت في : root root\uitooltip.py أبحث عن: elif item.ITEM_TYPE_FISH == itemType: if 0 != metinSlot: self.__AppendFishInfo(metinSlot[0]) أضف تحت: ### Gacha = Battle Shop Chest ### elif item.ITEM_TYPE_GACHA == itemType: if 0 != metinSlot: if self.isShopItem: restUsableCount = int(item.GetLimit(1)[1]) else: restUsableCount = int(metinSlot[0]) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_REST_USABLE_COUNT % (restUsableCount), grp.GenerateColor(0.5, 1.0, 0.3, 1.0)) نتوجه الان الى : LOCALE اضف في : locale_game.txt TOOLTIP_REST_USABLE_COUNT متبقي: %d في Item_proto التعديل الذي ستقوم بتعديله او الصناديق التي ستضيفها على النحو التالي : 25111 fish 보상상자 ITEM_GACHA 0 1 NONE NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 1 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 12 25112 fish 보상상자 ITEM_GACHA 0 1 NONE NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 2 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 12 25113 fish 보상상자 ITEM_GACHA 0 1 NONE NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 3 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 12 لمن يرغب في تحميل النظام قمت بعمله على ورقة: اضغط هنا للتحميل
    2 points
  40. صور للبرنامج: التحميل: [Hidden Content] سورس البرنامج لمن مهتم: [Hidden Content] الفحص: VirusTotal - File - bec913c5130568d6c7afdce11a0fb60d79dc5f30cbda2a258fa4c95a88a114e5 كلمة مرور الأرشيف: mt2academy.com *برامج أخرى مشابهة: PackMakerLite EPack32
    2 points
  41. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضح بالعنوان تغير شكل أحجار الماتينات على حسب الحدث الذي تم تفعيله مثل الهالوين....الخ في حالة كنت تمتلك المعرفة والخبرة الكافية يمكنك التعديل على النظام وإستغلاله بإضافة أشكال جديدة فيديو للنظام : إضغط هنا لتحميل النظام
    2 points
  42. 2 points
  43. صورة الشكل لينك التحميل [Hidden Content]
    2 points
  44. السلام عليكم ورحمة الله تعالي وبركاته النظام فيه نسختين قمت برفعهم مع بعض في حالة قمت بتركيب نسخة TuT_OffShop ستواجه بعض المشاكل وعليك بحلها النظام ليس معرب وعليك بتعريبه. صورة للنظام : فيديو للنظام : إضغط هنا لتحميل النظام
    2 points
  45. السلام عليكم ورحمة الله تعالي وبركاته كما هو موضح بالعنوان نظام إختيار المهارات بشكل جديد وبسيط وتركيب النظام سهل جدا حيت لايحتاج الى اضافة اي شيئ بالسورس ملاحظة : النظام ليس معرب ويحتاج الى تعريب وتعريبه سهل جدا فيديو للنظام إضغط هنا لتحميل النظام
    2 points
  46. التعريب : root/uiselectjob.py استبدل المحتوى كامل import ui, event, constInfo, app, uiCommon, chat, net, playerSettingModule, player, localeInfo, wndMgr JOB_NAME_DICT = { 0 : ['محارب جسدي','محارب ذهني'], 1 : ['نينجا عن قرب','نينجا عن بعد'], 2 : ['سراب','سحر أسود'], 3 : ['قوة التنين','قوة العلاج'], 4 : ['Lycan Instinct','N.A.'] } JOB_LIST = { 0 : localeInfo.JOB_WARRIOR, 1 : localeInfo.JOB_ASSASSIN, 2 : localeInfo.JOB_SURA, 3 : localeInfo.JOB_SHAMAN, 4 : localeInfo.JOB_WOLFMAN, } FACE_IMAGE_DICT = { playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga", playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga", playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga", playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga", playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga", playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga", playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga", playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga", playerSettingModule.RACE_WOLFMAN_M : "icon/face/wolfman_m.tga", } class JobSelectWindow(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.isLoaded = 0 self.__LoadWindow() def __LoadWindow(self): if (self.isLoaded == 1): return self.isLoaded = 1 try: PythonScriptLoader = ui.PythonScriptLoader() PythonScriptLoader.LoadScriptFile(self, "UIScript/selectjobwindow.py") except: import exception exception.Abort("SelectJob.LoadWindow.LoadObject") try: self.__BindObjects() except: import exception exception.Abort("SelectJob.LoadWindow.BindObject") self.__BindEvents() def __BindObjects(self): self.titlebar = self.GetChild("TitleBar") self.selectButtonFirst = self.GetChild("SelectButtonFirst") self.selectButtonSecond = self.GetChild("SelectButtonSecond") self.firstSkillSlotBack = self.GetChild("FirstSkillSlotBack") self.secondSkillSlotBack = self.GetChild("SecondSkillSlotBack") self.firstSkillSlot = self.GetChild("FirstSkillSlot") self.secondSkillSlot = self.GetChild("SecondSkillSlot") self.raceImage = self.GetChild("RaceImage") self.infoText = self.GetChild("InfoText") def __BindEvents(self): self.isLoaded = 1 self.titlebar.SetCloseEvent(ui.__mem_func__(self.Close)) self.selectButtonFirst.SetEvent(ui.__mem_func__(self.SelectJobFirstQuestion)) self.selectButtonSecond.SetEvent(ui.__mem_func__(self.SelectJobSecondQuestion)) self.selectButtonFirst.SetText(JOB_NAME_DICT[self.GetRealRace()][0]) self.selectButtonSecond.SetText(JOB_NAME_DICT[self.GetRealRace()][1]) self.infoText.SetText("%s - %s" % (player.GetName(), JOB_LIST[self.GetRealRace()])) self.raceImage.LoadImage(FACE_IMAGE_DICT[net.GetMainActorRace()]) if self.GetRealRace() == 4: self.selectButtonSecond.SetEvent(ui.__mem_func__(self.EmptyFunc)) for k in xrange(6): self.secondSkillSlotBack.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) self.secondSkillSlot.ClearSlot(k) self.secondSkillSlot.SetCoverButton(k, "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", False, False) self.secondSkillSlot.SetAlwaysRenderCoverButton(k) self.secondSkillSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) for i in xrange(6): self.firstSkillSlotBack.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) self.firstSkillSlot.SetSkillSlotNew(i, self.GetSkillIndex()+i, 3, 1) self.firstSkillSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) if self.GetRealRace() != 4: for j in xrange(6): self.secondSkillSlotBack.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) self.secondSkillSlot.SetSkillSlotNew(j, self.GetSkillIndex()+j+15, 3, 1) self.secondSkillSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE) def GetSkillIndex(self): if self.GetRealRace() == 4: return 170 else: return self.GetRealRace() * 30 + 1 def GetRealRace(self): race = net.GetMainActorRace() if race >= 4: return race-4 else: return race def __OnCloseQuestionDialog(self): if self.questionDialog: self.questionDialog.Close() self.questionDialog = None def EmptyFunc(self): chat.AppendChat(chat.CHAT_TYPE_INFO, " لدى Lycan مجموعة مهارات واحدة فقط متاحة في الوقت الحالي. ") def SelectJobFirstQuestion(self): self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(" هل أنت متأكد أنك تريد اختيار القدرة : %s" % JOB_NAME_DICT[self.GetRealRace()][0]) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SelectJobFirst)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__OnCloseQuestionDialog)) self.questionDialog.Open() def SelectJobFirst(self): constInfo.SelectJob['QCMD'] = str(1) event.QuestButtonClick(constInfo.SelectJob['QID']) self.RealClose() self.__OnCloseQuestionDialog() def SelectJobSecondQuestion(self): self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(" هل أنت متأكد أنك تريد اختيار القدرة : %s" % JOB_NAME_DICT[self.GetRealRace()][1]) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SelectJobSecond)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__OnCloseQuestionDialog)) self.questionDialog.Open() def SelectJobSecond(self): constInfo.SelectJob['QCMD'] = str(2) event.QuestButtonClick(constInfo.SelectJob['QID']) self.RealClose() self.__OnCloseQuestionDialog() def __del__(self): ui.ScriptWindow.__del__(self) def Open(self): self.SetCenterPosition() self.SetTop() self.Show() def Close(self): self.wndpopupdialog = uiCommon.PopupDialog() self.wndpopupdialog.SetText(" لا يمكنك إغلاق هذه النافذة. ") self.wndpopupdialog.Open() def RealClose(self): self.Hide() def Destroy(self): self.RealClose() self.ClearDictionary() uiscript/selectjobwindow.py استبدل المحتوى كامل import uiScriptLocale window = { "name" : "SelectDialog", "style" : ("movable", "float",), "x" : 0, "y" : 0, "width" : 300, "height" : 235, "children" : ( { "name" : "Board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : 0, "width" : 300, "height" : 235, "children" : ( { "name" : "TitleBar", "type" : "titlebar", "style" : ("attach",), "x" : 61, "y" : 7, "width" : 232, "color" : "red", "children": ( { "name" : "TitleName", "type":"text", "x":0, "y":-1, "text":" أختر مهاراتك ", "all_align":"center" }, ), }, { "name" : "InfoTextSlot", "type" : "image", "x" : 110, "y" : 34, "image" : "d:/ymir work/ui/public/Parameter_Slot_05.sub", "children" : ( { "name" : "InfoText", "type": "text", "text": "Tiger - Sef", "x":0, "y":0, "r":1.0, "g":1.0, "b":1.0, "a":1.0, "all_align" : "center", }, ), }, { "name" : "RaceImage", "type" : "image", "x" : 11, "y" : 11, "image" : "d:/ymir work/ui/game/windows/face_warrior.sub" }, { "name" : "RaceSlot", "type" : "image", "x" : 7, "y" : 7, "image" : "d:/ymir work/ui/game/windows/box_face.sub", }, { "name" : "FirstSkillSlotBack", "type" : "grid_table", "x" : 15, "y" : 65, "start_index" : 0, "x_count" : 6, "y_count" : 1, "x_step" : 40, "y_step" : 40, "x_blank" : 6, "y_blank" : 1, "image" : "d:/ymir work/ui/skill_slot_job_1.tga", }, { "name" : "FirstSkillSlot", "type" : "grid_table", "x" : 15 + 4, "y" : 65 + 4, "start_index" : 0, "x_count" : 6, "y_count" : 1, "x_step" : 40, "y_step" : 40, "x_blank" : 6, "y_blank" : 1, }, { "name" : "SecondSkillSlotBack", "type" : "grid_table", "x" : 15, "y" : 150, "start_index" : 0, "x_count" : 6, "y_count" : 1, "x_step" : 40, "y_step" : 40, "x_blank" : 6, "y_blank" : 1, "image" : "d:/ymir work/ui/skill_slot_job_2.tga", }, { "name" : "SecondSkillSlot", "type" : "grid_table", "x" : 15 + 4, "y" : 150 + 4, "start_index" : 0, "x_count" : 6, "y_count" : 1, "x_step" : 40, "y_step" : 40, "x_blank" : 6, "y_blank" : 1, }, { "name" : "SelectButtonFirst", "type" : "button", "x" : 0, "y" : 110, "horizontal_align" : "center", "default_image" : "d:/ymir work/ui/public/XLarge_Button_01.sub", "over_image" : "d:/ymir work/ui/public/XLarge_Button_02.sub", "down_image" : "d:/ymir work/ui/public/XLarge_Button_03.sub", }, { "name" : "SelectButtonSecond", "type" : "button", "x" : 0, "y" : 197, "horizontal_align" : "center", "default_image" : "d:/ymir work/ui/public/XLarge_Button_01.sub", "over_image" : "d:/ymir work/ui/public/XLarge_Button_02.sub", "down_image" : "d:/ymir work/ui/public/XLarge_Button_03.sub", }, ), }, ), }
    2 points
  47. :صورة للتوضيح عرض :التحميل [Hidden Content]
    2 points
  48. السلام عليكم ورحمة الله وبركاتة شرح كامل للنظام من خلال موقعة شرح النظام معلومات بسيطة عن النظام : لا يشبة الرسمي- ما قد جربت اركبو ولكن اعرف ناس ربكوه ويقولو التركيب ماهو سهل وماهو صعب لكن محتاج تركيز- النظام تكويدة ليس افضل شئ ولكنة يفي بالغرض ولا يوجد به مشاكل (كلام ال ركبوة)- الأن اترككم مع رابط التحميل : التحميل وكلمة السر
    2 points
×
×
  • Create New...