Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
- 1.- Player / Entity
- public List<string> BlackList;
- -------------------------------------------
- 2.- GameState / GameClient Buscaran : "public void SendScreen(Interfaces.IPacket buffer, bool self = true, bool message = false)"
- 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:
- foreach (Interfaces.IMapObject obj in Screen.Objects)
- {
- if (obj == null)
- continue;
- if (obj.MapObjType == Game.MapObjectType.Player)
- {
- GameState client = obj.Owner as GameState;
- if (message && client.Entity.BlackList.Contains(Entity.Name)) continue;
- if (client.Entity.UID != Entity.UID)
- client.Send(buffer);
- }
- }
- if (self)
- Send(buffer);
- Entonces agregan Unicamente esta Linea de Codigo :
- if (message && client.Entity.BlackList.Contains(Entity.Name)) continue;
- -----------------------------------------------------
- 3.- EntityTable - > LoadEntity Agregan:
- client.Entity.BlackList = new List<string>();
- var BlackList = reader.ReadString("BlackList").Split(new string[] { "@@" }, StringSplitOptions.RemoveEmptyEntries);
- foreach (var person in BlackList)
- {
- if (person != null && person != "" && person != "@@")
- client.Entity.BlackList.Add(person);
- }
- Ahora Buscan - > bool SaveEntity y Agregan debajo de if (e.JustCreated) return true :
- #region BlackList
- string Persons = "";
- if (e.BlackList.Count > 0)
- {
- foreach (var person in e.BlackList)
- {
- Persons += person + "@@";
- }
- }
- #endregion
- y despues en los .Set Agregan :
- .Set("BlackList", Persons)
- ---------------------------------------------------
- 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 :
- if (pClient.Entity.BlackList.Contains(client.Entity.Name)) return;
- despues buscan case Message.World: o como lo tengan y agregan:
- if (pClient.Entity.BlackList.Contains(client.Entity.Name)) continue;
- despues buscan case Message.Team y agregan:
- if (Client.Entity.BlackList.Contains(client.Entity.Name)) continue;
- 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 :
- case Data.DetainWindowRequest O
- case DetainWindowRequest O
- case MsgAction.DetainWindowRequest O
- case 153//DetainWindow
- y debajo de esa case pegaran estas 2:
- case 440://AddPersonToBlackList
- {
- var targetname = System.Text.UnicodeEncoding.UTF8.GetString(packet, 43, packet[42]).Replace("/0", "");
- foreach (var person in Kernel.GamePool.Values)
- {
- if (person.Entity.Name == targetname)
- {
- if (!client.Entity.BlackList.Contains(targetname))
- {
- client.Entity.BlackList.Add(targetname);
- gData.Unknown2 = 1;
- gData.dwParam = 1;
- gData.UID = client.Entity.UID;
- gData.TimeStamp = Time32.Now;
- gData.ID = 440;
- gData.Send(client);
- }
- }
- }
- break;
- }
- case 441://RemovePersonFromBlackList
- {
- var targetname = System.Text.UnicodeEncoding.UTF8.GetString(packet, 43, packet[42]).Replace("/0", "");
- if (client.Entity.BlackList.Contains(targetname))
- {
- client.Entity.BlackList.Remove(targetname);
- gData.Unknown2 = 1;
- gData.dwParam = 1;
- gData.UID = client.Entity.UID;
- gData.TimeStamp = Time32.Now;
- gData.ID = 441;
- gData.Send(client);
- }
- break;
- }
- Posibles Errores y Posibles Soluciones:
- - Pueden tener errores con relacion a Entity, Bueno lo cambian a Player y Listo
- - 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.
- - Pueden Tener Errores con relacion a "packet" el cual prueben usando "Packet" en mayuscula y si asi no funciona, Prueben usando "buffer" o "Buffer"
- - Pueden Tener Errores con Unknown2, entonces en Data.cs o MsgAction.cs Pegaran :
- public byte Unknown2
- {
- get
- {
- return Buffer[41];
- }
- set
- {
- Buffer[41] = value;
- }
- }
- ------------------------------------
- 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