Advertisement
XConquer

BlackList System Updated 2D V6609 By Pezzi

Sep 28th, 2019
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.90 KB | None | 0 0
  1. Bueno, en esta mini guia les traigo el sistema "Agregar a la Lista Negra" donde vos podrias bloquear toda comunicacion con un jugador jaja, Bueno empezemos
  2.  
  3. 1.- Player / Entity
  4. public List<string> BlackList;
  5. -------------------------------------------
  6. 2.- GameState / GameClient Buscaran : "public void SendScreen(Interfaces.IPacket buffer, bool self = true, bool message = false)"
  7. OJO: No muchas sourcers lo tienen asi otras lo tienen diferente asi que simplemente buscarian "public void SendScreen" y deben ver algo asi o similar:
  8.  foreach (Interfaces.IMapObject obj in Screen.Objects)
  9.             {
  10.                 if (obj == null)
  11.                     continue;
  12.                 if (obj.MapObjType == Game.MapObjectType.Player)
  13.                 {
  14.                     GameState client = obj.Owner as GameState;
  15.                     if (message && client.Entity.BlackList.Contains(Entity.Name)) continue;
  16.                     if (client.Entity.UID != Entity.UID)
  17.                         client.Send(buffer);
  18.                 }
  19.             }
  20.             if (self)
  21.                 Send(buffer);
  22.  
  23. Entonces agregan Unicamente esta Linea de Codigo :
  24.  if (message && client.Entity.BlackList.Contains(Entity.Name)) continue;
  25. -----------------------------------------------------
  26. 3.- EntityTable - > LoadEntity Agregan:
  27.  
  28.  client.Entity.BlackList = new List<string>();
  29.  
  30.                     var BlackList = reader.ReadString("BlackList").Split(new string[] { "@@" }, StringSplitOptions.RemoveEmptyEntries);
  31.                     foreach (var person in BlackList)
  32.                     {
  33.                         if (person != null && person != "" && person != "@@")
  34.                             client.Entity.BlackList.Add(person);
  35.                     }
  36.  
  37. Ahora Buscan - > bool SaveEntity y Agregan debajo de if (e.JustCreated) return true :
  38. #region BlackList
  39.             string Persons = "";
  40.             if (e.BlackList.Count > 0)
  41.             {
  42.                 foreach (var person in e.BlackList)
  43.                 {
  44.                     Persons += person + "@@";
  45.                 }
  46.             }
  47.             #endregion
  48.  
  49. y despues en los .Set Agregan :
  50.  
  51.  .Set("BlackList", Persons)
  52. ---------------------------------------------------
  53. 4.- PacketHandler / GeneralData Buscamos case Message.Whisper: o case Whisper: o case MsgTalk.Whisper: depende como lo tengan y que tipo de source usen, y donde quieran agregan :
  54.  if (pClient.Entity.BlackList.Contains(client.Entity.Name)) return;
  55.  
  56. despues buscan case Message.World: o como lo tengan y agregan:
  57. if (pClient.Entity.BlackList.Contains(client.Entity.Name)) continue;
  58.  
  59. despues buscan case Message.Team y agregan:
  60. if (Client.Entity.BlackList.Contains(client.Entity.Name)) continue;
  61.  
  62. Ahora Buscaran la parte de Data esta parte se podria decir que es complicada ya que muchas sourcers lo tienen diferente al uso de esta. pero bueno tratare de que lo encuentren facil buscando :
  63. case Data.DetainWindowRequest O
  64. case DetainWindowRequest O
  65. case MsgAction.DetainWindowRequest O
  66. case 153//DetainWindow
  67. y debajo de esa case pegaran estas 2:
  68.  
  69.   case 440://AddPersonToBlackList
  70.                     {
  71.                         var targetname = System.Text.UnicodeEncoding.UTF8.GetString(packet, 43, packet[42]).Replace("/0", "");
  72.                         foreach (var person in Kernel.GamePool.Values)
  73.                         {
  74.                             if (person.Entity.Name == targetname)
  75.                             {
  76.                                 if (!client.Entity.BlackList.Contains(targetname))
  77.                                 {
  78.                                     client.Entity.BlackList.Add(targetname);
  79.                                     gData.Unknown2 = 1;
  80.                                     gData.dwParam = 1;
  81.                                     gData.UID = client.Entity.UID;
  82.                                     gData.TimeStamp = Time32.Now;
  83.                                     gData.ID = 440;
  84.                                    
  85.                                     gData.Send(client);
  86.  
  87.                                 }
  88.                             }
  89.                         }
  90.                         break;
  91.                     }
  92.                 case 441://RemovePersonFromBlackList
  93.                     {
  94.                         var targetname = System.Text.UnicodeEncoding.UTF8.GetString(packet, 43, packet[42]).Replace("/0", "");
  95.                         if (client.Entity.BlackList.Contains(targetname))
  96.                         {
  97.                             client.Entity.BlackList.Remove(targetname);
  98.                             gData.Unknown2 = 1;
  99.                             gData.dwParam = 1;
  100.                             gData.UID = client.Entity.UID;
  101.                             gData.TimeStamp = Time32.Now;
  102.                             gData.ID = 441;
  103.                            
  104.                             gData.Send(client);
  105.                         }
  106.                         break;
  107.                     }
  108.  
  109. Posibles Errores y Posibles Soluciones:
  110. - Pueden tener errores con relacion a Entity, Bueno lo cambian a Player y Listo
  111. - Pueden tener Errores con relacion a gData.ID , Bueno si usan msgaction deberan usar el siguiente codigo : MsgAction.Mode.AddBlackList y MsgAction.Mode.RemoveBlackList y en la parte de Mode Crean las 2 Variables que son re simples con los numeros de cases.
  112. - Pueden Tener Errores con relacion a "packet" el cual prueben usando "Packet" en mayuscula y si asi no funciona, Prueben usando "buffer" o "Buffer"
  113. - Pueden Tener Errores con Unknown2, entonces en Data.cs o MsgAction.cs Pegaran :
  114.  public byte Unknown2
  115.         {
  116.             get
  117.             {
  118.                 return Buffer[41];
  119.             }
  120.             set
  121.             {
  122.                 Buffer[41] = value;
  123.             }
  124.         }
  125. ------------------------------------
  126. Con eso ya estaria finalizada la guia hecha como siempre Por Mi (Pezzi) y encima Muy Bien Explicada en cada detalle XD.!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement