الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الحماية والاوتوايفنت للسيرفرات الخاصه (https://silkroad4arab.com/vb/forumdisplay.php?f=323)
-   -   شرح بسيط عن الاوتو ايفنتات (https://silkroad4arab.com/vb/showthread.php?t=607275)

™ EgY_KhaN ™ 11-11-2016 08:24 PM

شرح بسيط عن الاوتو ايفنتات
 
اساسيات اي ايفنت هيا
1- أكونت GM مفتوح كلينتليس لوجن
2- معرفة الباكتس الخاصة بالايفنت الي انت عاوز تعمله
3- لو مثلا ايفنت زي A$Q يبقي لازم اتصال SQL علشان هيقرأ الاسئلة من التاب وازاي يدي ريورد
4- معرفة ازاي تستخدم Timer علشان تعمل الايفنت اوتو في الوقت الي تحدده

قدرت تفهم الكلام دا بالتالي تقدر تعمل اي ايفنت يجي في دماغك

وعلشان نسبط الكلام دا جمعتلكو شوية Packets علي شوية Opcodes مهمين جدا
بس طبعا مش هتاخد كوبي وباست وخلاص انت هتشوف المسار عندك وتظبط الباكت عليه والكلام دا

Auto Events Packets :
كود:

    #region EgY_Auto_Evets
    public static void moveToUser(string name)
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteInt8((object) (byte) 8);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteAscii(name);
      Client.Send(packet);
      Log.normal("[MoveToUser]->[" + name + "]");
    }

    public static void recallUser(string name)
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteInt8((object) (byte) 17);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteAscii(name);
      Client.Send(packet);
      Log.normal("[RecallUser]->[" + name + "]");
    }

    public static void sendChatNotice(string msg)
    {
      Packet packet = new Packet((ushort) 28709);
      packet.WriteInt8((object) (byte) 7);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteAscii(msg);
      Client.Send(packet);
      Log.normal("[Notice]->[" + msg + "]");
    }

    public static void sendChatAll(string msg)
    {
      Packet packet = new Packet((ushort) 28709);
      packet.WriteInt8((object) (byte) 3);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteAscii(msg);
      Client.Send(packet);
      Log.normal("[ChatAll]->[" + msg + "]");
    }

    public static void sendChatPrivate(string name, string msg)
    {
      Packet packet = new Packet((ushort) 28709);
      packet.WriteInt8((object) (byte) 2);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteAscii(name);
      packet.WriteAscii(msg);
      Client.Send(packet);
      Log.normal("[PrivateChar]->[" + name + "]->[" + msg + "]");
    }

    public static void invisible()
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteInt8((object) (byte) 14);
      packet.WriteInt8((object) (byte) 0);
      Client.Send(packet);
      Log.normal("[Invisible]->[Changed]");
    }

    public static void gmSkill()
    {
      Packet packet = new Packet((ushort) 28788);
      packet.WriteInt8((object) (byte) 1);
      packet.WriteInt8((object) (byte) 4);
      packet.WriteInt8((object) (byte) 138);
      packet.WriteInt8((object) (byte) 15);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteInt8((object) (byte) 0);
      Client.Send(packet);
      Log.normal("[Skill]->[GMs Skill]");
    }

    public static void loadMonster(int id, int cnt)
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteInt8((object) (byte) 6);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteInt16((object) id);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteInt8((object) (byte) 0);
      packet.WriteInt8((object) (byte) cnt);
      packet.WriteInt8((object) (byte) 3);
      Client.Send(packet);
      Log.normal("[LoadMonster]->[" + SQLFunct.getObjName((uint) id) + "]");
    }

    public static void teleportTo(int regionID, double x, double y, double z, int worldid)
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteUInt8((byte) 16);
      packet.WriteUInt8((byte) 0);
      packet.WriteInt16((object) regionID);
      packet.WriteSingle((object) x);
      packet.WriteSingle((object) y);
      packet.WriteSingle((object) z);
      packet.WriteInt8((sbyte) 1);
      packet.WriteUInt8((byte) 0);
      Client.Send(packet);
      Log.normal("[Teleport]->[ " + (object) regionID + " ; " + (object) x + " ; " + (object) y + " ; " + (object) z + " ; " + (object) worldid + " ]");
      Moves.teleport = true;
      while (Moves.teleport)
        Thread.Sleep(1000);
      Log.normal("[Teleport]->[Spawned ]");
    }

    public static void openGenyo()
    {
      Packet packet1 = new Packet((ushort) 28741);
      packet1.WriteInt8((sbyte) 46);
      packet1.WriteInt8((sbyte) 0);
      packet1.WriteInt8((sbyte) 0);
      packet1.WriteInt8((sbyte) 0);
      Client.Send(packet1);
      Thread.Sleep(100);
      Packet packet2 = new Packet((ushort) 28762);
      packet2.WriteInt8((sbyte) 46);
      packet2.WriteInt8((sbyte) 0);
      packet2.WriteInt8((sbyte) 0);
      packet2.WriteInt8((sbyte) 0);
      packet2.WriteInt8((sbyte) 2);
      packet2.WriteInt8((sbyte) 25);
      packet2.WriteInt8((sbyte) 0);
      packet2.WriteInt8((sbyte) 0);
      packet2.WriteInt8((sbyte) 0);
      Client.Send(packet2);
    }

    public static void tpHelp()
    {
      Client.Send(new Packet((ushort) 13494));
    }

    public static void moveTest()
    {
      Packet packet = new Packet((ushort) 28705);
      packet.WriteInt8((sbyte) 1);
      packet.WriteInt16((short) 26266);
      packet.WriteInt16((short) 500);
      packet.WriteInt16((short) 0);
      packet.WriteInt16((short) 1700);
      Client.Send(packet);
    }

    public static void stallTitle(string stallTitle)
    {
      Packet packet = new Packet((ushort) 28849);
      packet.WriteAscii(stallTitle);
      Client.Send(packet);
      Log.normal("[Stall]->[ Title ]->[" + stallTitle + "]");
    }

    public static void StallMsg(string msg)
    {
      Packet packet = new Packet((ushort) 28858);
      packet.WriteInt8((sbyte) 6);
      packet.WriteAscii(msg);
      Client.Send(packet);
      Log.normal("[Stall]->[ Message ]->[" + msg + "]");
    }

    public static void itemToStall(int StallSlot, int CharSlot, int db, int cost)
    {
      Packet packet = new Packet((ushort) 28858);
      packet.WriteInt8((sbyte) 2);
      packet.WriteInt8((object) StallSlot);
      packet.WriteInt8((object) CharSlot);
      packet.WriteInt8((object) db);
      packet.WriteInt8((sbyte) 0);
      packet.WriteInt64((long) cost);
      packet.WriteInt8((sbyte) 0);
      packet.WriteInt32(33);
      packet.WriteInt8((sbyte) 0);
      Client.Send(packet);
      Log.normal("[Stall]->[ ItemMove ]->[" + (object) StallSlot + " ; " + (object) CharSlot + " ; " + (object) db + " ; " + (object) cost + "]");
    }

    public static void stallOpen()
    {
      Packet packet = new Packet((ushort) 28858);
      packet.WriteInt8((sbyte) 5);
      packet.WriteInt8((sbyte) 1);
      packet.WriteInt8((sbyte) 0);
      packet.WriteInt8((sbyte) 0);
      Client.Send(packet);
      Log.normal("[Stall]->[ Opened ]");
    }

    public static void stallClose()
    {
      Client.Send(new Packet((ushort) 28850));
      Log.normal("[Stall]->[ Closed ]");
    }

    public static void goTown()
    {
      Packet packet = new Packet((ushort) 28688, true);
      packet.WriteUInt8((byte) 2);
      packet.WriteUInt8((byte) 0);
      Client.Send(packet);
      Moves.teleport = true;
      Log.normal("[Teleport]->[ GoTown ]");
      while (Moves.teleport)
        Thread.Sleep(1000);
      Log.normal("[Teleport]->[ Spawned ]");
    }

    public static bool moveToNpc(int id)
    {
      Packet packet = new Packet((ushort) 28688);
      packet.WriteUInt8((byte) 31);
      packet.WriteUInt8((byte) 0);
      packet.WriteAscii(SQLFunct.getObjName((uint) id));
      Client.Send(packet);
      Log.normal("[MoveToNPC]->[ " + SQLFunct.getObjName((uint) id) + " ]");
      Moves.teleport = true;
      for (int index = 0; (index >= 2 ? 0 : (Moves.teleport ? 1 : 0)) != 0; ++index)
        Thread.Sleep(1000);
      bool flag;
      if (Moves.teleport)
      {
        Log.normal("[MoveToNPC]->[Not Teleported]");
        Moves.teleport = false;
        flag = false;
      }
      else
      {
        Log.normal("[MoveToNPC]->[Teleported]");
        flag = true;
      }
      return flag;
    }

    public static void getPartyData()
    {
      Packet packet = new Packet((ushort) 28780);
      packet.WriteUInt8((byte) 0);
      Client.Send(packet);
    }

    public static void createParty()
    {
      Packet packet = new Packet((ushort) 28777);
      packet.WriteUInt64(0UL);
      packet.WriteUInt8((byte) 5);
      packet.WriteUInt8((byte) 0);
      packet.WriteUInt8((byte) 1);
      packet.WriteUInt8((byte) 110);
      packet.WriteAscii("Event");
      Client.Send(packet);
    }

    public static void deleteParty(uint id)
    {
      Packet packet = new Packet((ushort) 28779);
      packet.WriteUInt32(id);
      Client.Send(packet);
    }

    public static void enablePvp()
    {
      Packet packet = new Packet((ushort) 29974);
      packet.WriteUInt8((byte) 5);
      Client.Send(packet);
    }
    #endregion

زي ماحنا شايفين مثلا
Packet packet = new Packet يعني انت كدا اديت امر للبرنامج انك هتستخدم الباكت الي اسمها ------
packet.WriteAscii(name) يعني هتكتب ال name الي الشخصية هتروحله
Client.Send(packet); يعني نفذ الامر
وطبعا Log.normal("[MoveToUser]->[" + name + "]"); علشان يظهرلك في اللوج

اعتقد الدنيا وضحت دلوقت ؟؟؟؟

طب ازاي بقا هنستخدم الكلام دا
ولنفرض مثلا ان الكلاس دا انا مسميه Script

هنعمل كلاس تاني
وليكن مثلا عاوزين نبعت نوتيك الي هيا اسكربت محفوظ في كلاس Script
هنعمل امر جديد في الكلاس التاني الي عملناه
وهنعمل مثلا Object فيه الاوقات الي فيها مواعيد الايفنتات دا تمام ؟؟؟
بالتالي الامر بتاعنا هيكون كدا
كود:

Script.sendChatNotice("Hide and Seek event will start about " + (object) num + " second(s).");
اعتقد كدا معاك الاسكربتات والاوامر يعني حبة مجهود قليلين وتعمل اي ايفنت بدماغك انت بقا

بعض ال Opcode المهمين جدا
World Server Opcodes
كود:

public enum SERVER_OPCODES
    {
      SERVER_CHARDATA = 12307,
      SERVER_SINGLESPAWN = 12309,
      SERVER_SINGLEDESPAWN = 12310,
      SERVER_GROUPSPAWNB = 12311,
      SERVER_GROUPSPAWNEND = 12312,
      SERVER_GROUPESPAWN = 12313,
      SERVER_CONFIRMSPAWN = 12320,
      SERVER_CHAT = 12326,
      SERVER_CHARACTERINFO = 12349,
      SERVER_STORAGEGOLD = 12359,
      SERVER_STORAGEOK = 12360,
      SERVER_STORAGEITEMS = 12361,
      SERVER_STUFFUPDATE = 12366,
      SERVER_DURABILITYCHANGE = 12370,
      SERVER_LVLUP = 12372,
      SERVER_EXPSPUPDATE = 12374,
      SERVER_HPMPUPDATE = 12375,
      SERVER_PARTYINVITATION = 12416,
      SERVER_OBJECTDIE = 12479,
      SERVER_PETINFO = 12488,
      SERVER_PETSTATS = 12489,
      SERVER_SPEEDUPDATE = 12496,
      SERVER_GUILDINFO = 12545,
      SERVER_CHARACTERLISTING = 45063,
      SERVER_MOVE = 45089,
      SERVER_STUCK = 45091,
      SERVER_ANGLECHANGE = 45092,
      SERVER_CHATCOUNT = 45093,
      SERVER_INVENTORYMOVEMENT = 45108,
      SERVER_ITEMFIXED = 45118,
      SERVER_OBJECTSELECT = 45125,
      SERVER_NPCSELECT = 45126,
      SERVER_NPCDESELECT = 45131,
      SERVER_INVENTORYUSE = 45132,
      SERVER_PARTYMATCHING = 45164,
      SERVER_SKILLADD = 45168,
      SERVER_SKILLCASTED = 45169,
      SERVER_BUFFDELL = 45170,
      SERVER_OBJECTACTION = 45172,
      SERVER_SKILLUPDATE = 45217,
      SERVER_BUFFINFO = 45245,
      SERVER_HORSEACTION = 45259,
    }

    public enum CLIENT_OPCODES
    {
      CLIENT_ACCEPTDEAD = 12371,
      CLIENT_PARTY = 12416,
      CLIENT_CONFIRMSPAWN = 13509,
      CLIENT_SELECTCHARACTER = 28673,
      CLIENT_DISCONNECT = 28677,
      CLIENT_CHARACTERLISTING = 28679,
      CLIENT_MOVEMENT = 28705,
      CLIENT_CHAT = 28709,
      CLIENT_DROPGOLD = 28724,
      CLIENT_INVENTORYMOVEMENT = 28724,
      CLIENT_GETSTORAGEITEMS = 28732,
      CLIENT_REPAIR = 28734,
      CLIENT_OBJECTSELECT = 28741,
      CLIENT_NPCSELECT = 28742,
      CLIENT_NPCDESELECT = 28747,
      CLIENT_INVENTORYUSE = 28748,
      CLIENT_SITDOWN = 28751,
      CLIENT_TELEPORT = 28762,
      CLIENT_PARTYLEAVE = 28769,
      CLIENT_JOINPARTY = 28781,
      CLIENT_OBJECTACTION = 28788,
      CLIENT_ZERK = 28839,
      CLIENT_PETACTION = 28869,
   

 CLIENT_KILLHORSE = 28870,

يلا ورونا ابداعتكو والي هيقف معاه حاجه هتابع معاه

للي معندهوش برنامج Clientless login ممكن يستخدم السورس دا

DownLoaD


Dev.Ri3o 11-11-2016 09:10 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
الله ينور بس المشكلة انك رافع اوب كود ومش الكل بيفهم فيها فهتبقى صعبة على بعض الناس انا شايف ان Vsro Multi Tools اكثر سلاسة وسهولة بس تسلم على المجهود (Y)

™ EgY_KhaN ™ 11-11-2016 09:15 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ameral (المشاركة 5284219)
الله ينور بس المشكلة انك رافع اوب كود ومش الكل بيفهم فيها فهتبقى صعبة على بعض الناس انا شايف ان Vsro Multi Tools اكثر سلاسة وسهولة بس تسلم على المجهود (Y)


الفكرة كلها انك تفهم الدنيا ماشية ازاي طبعا للي بيفهم في ال SQL ف Vsro multi tools اسهل بكتير جدا
لكن دا لو انت عاوز تكون مشروع خاص ليك او تفهم اكتر بالتالي هتحتاج الاوب كود والباكتس والكلام دا
وبرده مانا مش هرفع حاجه اي حد مع احترامي لكل الناس مش اي حد هياخدها هوب دابل كيك نلاقي القسم بقا كله اوتو ايفنتات هتحتاج شوية شغل مع مجهود في ان الواحد يفهم الكلام دا ويطبق عليه وهيا دي الفكرة

Dev.Ri3o 11-11-2016 09:18 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ™ EgY_KhaN ™ (المشاركة 5284220)



الفكرة كلها انك تفهم الدنيا ماشية ازاي طبعا للي بيفهم في ال SQL ف Vsro multi tools اسهل بكتير جدا
لكن دا لو انت عاوز تكون مشروع خاص ليك او تفهم اكتر بالتالي هتحتاج الاوب كود والباكتس والكلام دا
وبرده مانا مش هرفع حاجه اي حد مع احترامي لكل الناس مش اي حد هياخدها هوب دابل كيك نلاقي القسم بقا كله اوتو ايفنتات هتحتاج شوية شغل مع مجهود في ان الواحد يفهم الكلام دا ويطبق عليه وهيا دي الفكرة

عندك حق تسلم على مجهودك

Hamza FiGo 11-11-2016 10:41 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ™ EgY_KhaN ™ (المشاركة 5284220)



الفكرة كلها انك تفهم الدنيا ماشية ازاي طبعا للي بيفهم في ال SQL ف Vsro multi tools اسهل بكتير جدا
لكن دا لو انت عاوز تكون مشروع خاص ليك او تفهم اكتر بالتالي هتحتاج الاوب كود والباكتس والكلام دا
وبرده مانا مش هرفع حاجه اي حد مع احترامي لكل الناس مش اي حد هياخدها هوب دابل كيك نلاقي القسم بقا كله اوتو ايفنتات هتحتاج شوية شغل مع مجهود في ان الواحد يفهم الكلام دا ويطبق عليه وهيا دي الفكرة

بالظبط .. وتعتبر خطوة لاي حد حابب الفكرة

تسلم ايدك ..

Dev.Myth 11-11-2016 10:43 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
موضوع جميل بجد تسلم ومستنى منك اكتر لأنى محتاج اوى انى ادخل فى المجال ده

™ EgY_KhaN ™ 11-11-2016 10:57 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة RealHuman (المشاركة 5284234)
موضوع جميل بجد تسلم ومستنى منك اكتر لأنى محتاج اوى انى ادخل فى المجال ده


انشاء الله واحده واحده هننزل شغل اكتر بأكتر

Dev.Myth 11-11-2016 11:50 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ™ EgY_KhaN ™ (المشاركة 5284236)



انشاء الله واحده واحده هننزل شغل اكتر بأكتر

تمام الله ينور عليك انا عاوز اطلب منك طلب لو كان فى مقدورك تنفيذه طبعاً
عاوزك مثلاً تعملنا شرح كامل بالاوب كودس والسكريبت ديه مثلاً ازاى نعمل kill GM event او اى نوعين مثلاً من الايفينتس والخطوات المطلوبه من الألف للياء بحيث اننا برضو لما نحب نطبق الفكره نطبقها على مثال 100% شغال والنتيجه بتاعته تكون مضمونه لو مشينا حسب الشرح لكن لو حد لسه عاوز يفكر يبدأ وقابلته مشكله أكيد مش هيعرف يبدأ حلها منين او العيب فين لأن بالنسبه ليه هوا بيعمل شئ ملهوش وجود ومشافش عنه حاجه قبل كده اتمنى مكونش ازعجتك واكون قدرت اوصلك قصدى :)

إحنا يجماعه محتاجين نتعلم اكتر عن البرمجه وتصميم المواقع وال SQL لأنها ممكن تفيد اللى يتعلمها حتى بعيد عن سيلك رود انا عن نفسى بعتبر سيلك رود مجرد مثال او حاجه بطبق عليها فكرتى ولو كل واحد قدر يوصل اللى فهمه واتعلمه للتانى بكره هيجى وهيفهم هوا كمان حاجه جديده وبكده هنتطور مهارتنا ومش هنقف عند حد معين :)
وأسف للأطاله :)

™ EgY_KhaN ™ 11-11-2016 11:59 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
ماهو دا الي انا بتكلم فيه شوفت كومنتات كتير الناس طالبة تطوير تمام
انا مديك السورس (البداية )
وسايبلك فيه ايفنت يونيك ( مثال )
ومديك هنا الباكت والاوب كود وشارحهالك ( الحجات الي عاوزها ف التطوير )

Jayden 12-11-2016 01:29 AM

رد: شرح بسيط عن الاوتو ايفنتات
 
الله ينور .. ناقص بس تحط ال Clientless

™ EgY_KhaN ™ 12-11-2016 03:03 AM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Jayden (المشاركة 5284262)
الله ينور .. ناقص بس تحط ال Clientless

راجع ع الموضوع تاني ياكبير انا عدلت عليه وحطيت سورس كلينتليس وكمان فيه ايفنت يونيك كمثال للناس الي عايزه تنفذ ويكون ادامها مثال معمول

elbattawy1st 12-11-2016 06:59 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
تسلم ايديك يامعلم بدايه كويسه لواحد عاوز يعمل ايفينت ب C# من غير مايشتغل على برنامج رامى

™ EgY_KhaN ™ 12-11-2016 07:02 PM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة elbattawy1st (المشاركة 5284349)
تسلم ايديك يامعلم بدايه كويسه لواحد عاوز يعمل ايفينت ب C# من غير مايشتغل على برنامج رامى

بالظبط ...

Jayden 13-11-2016 02:51 AM

رد: شرح بسيط عن الاوتو ايفنتات
 
اقتباس:

المشاركة الأصلية كتبت بواسطة ™ EgY_KhaN ™ (المشاركة 5284270)


راجع ع الموضوع تاني ياكبير انا عدلت عليه وحطيت سورس كلينتليس وكمان فيه ايفنت يونيك كمثال للناس الي عايزه تنفذ ويكون ادامها مثال معمول

تمام الله ينور عليك

افندينا ™Hamboka™ 08-12-2016 03:46 AM

رد: شرح بسيط عن الاوتو ايفنتات
 
موضوع جميل :: تسلم ايدك


الساعة الآن 02:54 PM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.