Here are some commands (i'll add more later) :
LAST UPDATE (12/08/2006)
World.cs Scroll Command :
Code:
else if (Splitter[0] == "/scroll")
{
if (Splitter[1] == "TC")
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
ArrayList[,] Target;
byte[] SpawnData = PacketBuilder.SpawnEntity(Char);
Target = TCLocHash;
int x = 438; int y = 377;
Char.CurrentLoc = new Location(x, y);
Char.Map = World.Maps.TwinCity;
Target[x, y].Add(Client);
World.SpawnCharacter(Client);
Client.SendData(PacketBuilder.Message(Client.MessageID, "TELEPORT", Client.Char.Name, "Teleported to: " + Client.Char.Map, ChatType.Talk));
}
else if (Splitter[1] == "PC")
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
ArrayList[,] Target;
byte[] SpawnData = PacketBuilder.SpawnEntity(Char);
Target = MFLocHash;
int x = 232; int y = 260;
Char.CurrentLoc = new Location(x, y);
Char.Map = World.Maps.MapleForest;
Target[x, y].Add(Client);
World.SpawnCharacter(Client);
Client.SendData(PacketBuilder.Message(Client.MessageID, "TELEPORT", Client.Char.Name, "Teleported to: " + Client.Char.Map, ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "Usage : /scroll TheCity", ChatType.Talk));
}
}
World.cs Life Command :
Code:
else if (Splitter[0] == "/Life" || Splitter[0] == "/life")
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Life = Char.MaxHP;
Char.HP = Life;
Client.SendData(PacketBuilder.Message(Client.MessageID, "LIFE SYSTEM", Client.Char.Name, "Life Restored!", ChatType.Talk));
}
World.cs Mana Command (need to add Mana in Character.cs before, like Life) :
Code:
else if (Splitter[0] == "/Mana" || Splitter[0] == "/mana")
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Mana = Char.MaxMP;
Char.MP = Mana;
Client.SendData(PacketBuilder.Message(Client.MessageID, "MANA SYSTEM", Client.Char.Name, "Mana Restored!", ChatType.Talk));
}
World.cs Stats Modifier (i know its a hard way i made em but its mine :P [btw my mind is strange, dont try to understand me ^^]) :
Code:
else if (Splitter[0] == "/Stats" || Splitter[0] == "/stats")
{
if (Splitter[1] == "str")
{
if (Splitter[2].Length > 4 || Splitter[2].Length < 4)
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Strength = ((Message[11] - 48) * 1000) + ((Message[12] - 48) * 100) + ((Message[13] - 48) * 10) + (Message[14] - 48);
Char.Strength = Strength;
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Strength Changed", ChatType.Talk));
}
}
else if (Splitter[1] == "dex")
{
if (Splitter[2].Length > 4 || Splitter[2].Length < 4)
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Dexterity = ((Message[11] - 48) * 1000) + ((Message[12] - 48) * 100) + ((Message[13] - 48) * 10) + (Message[14] - 48);
Char.Dexterity = Dexterity;
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Dexterity Changed", ChatType.Talk));
}
}
else if (Splitter[1] == "vit")
{
if (Splitter[2].Length > 4 || Splitter[2].Length < 4)
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Vitality = ((Message[11] - 48) * 1000) + ((Message[12] - 48) * 100) + ((Message[13] - 48) * 10) + (Message[14] - 48);
Char.Vitality = Vitality;
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Vitality Changed", ChatType.Talk));
}
}
else if (Splitter[1] == "man")
{
if (Splitter[2].Length > 4 || Splitter[2].Length < 4)
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int Mana = ((Message[11] - 48) * 1000) + ((Message[12] - 48) * 100) + ((Message[13] - 48) * 10) + (Message[14] - 48);
Char.Mana = Mana;
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Mana Changed", ChatType.Talk));
}
}
else if (Splitter[1].Length > 3 || Splitter[1].Length < 3)
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
else
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Stats Modifier", Client.Char.Name, "Usage : /Stats str/dex/man/vit xxxx", ChatType.Talk));
}
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
}
World.cs ASCII Identifier (you can write /what? xyz and you'll have ASCII codes for x, y and z, can be useful) :
Code:
else if (Splitter[0] == "/What?" || Splitter[0] == "/what?")
{
int x1 = Message[7];
int x2 = Message[8];
int x3 = Message[9];
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "These chars are : " + x1 + x2 + x3, ChatType.Talk));
}
World.cs Teleport Command (in the same map always) :
Code:
else if (Splitter[0] == "/mm")
{
if (Splitter.Length == 3)
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
ArrayList[,] Target;
byte[] SpawnData = PacketBuilder.SpawnEntity(Char);
Target = TCLocHash;
int x1 = Message[4] - 48;
int x2 = Message[5] - 48;
int x3 = Message[6] - 48;
int y1 = Message[8] - 48;
int y2 = Message[9] - 48;
int y3 = Message[10] - 48;
int x = x1 * 100 + x2 * 10 + x3; int y = y1 * 100 + y2 * 10 + y3;
Char.CurrentLoc = new Location(x, y);
Target[x, y].Add(Client);
World.SpawnCharacter(Client);
}
else
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "Usage : /mm xxx yyy", ChatType.Talk));
}
}
World.cs Level Modifier Command :
Code:
else if (Splitter[0] == "/level" || Splitter[0] == "/Level")
{
if (Splitter.Length == 2)
{
if (Splitter[1].Length == 3)
{
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
Character Char = Client.Char;
int L1 = Message[7] - 48;
int L2 = Message[8] - 48;
int L3 = Message[9] - 48;
int L4 = L1 * 100 + L2 * 10 + L3;
Char.Level = L4;
Client.SendData(PacketBuilder.CharacterInfo(Client.Char));
}
else
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "Usage : /level xxx", ChatType.Talk));
}
}
else
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "Usage : /level xxx", ChatType.Talk));
}
}
I just finished a working good /give Command, you can add any items everywhere you want. You just need to add a
Code:
public static int UID = 0;
at the beginning of "Public Class World".
Here is the World.cs Command :
Code:
else if (Splitter[0] == "/give" || Splitter[0] == "/Give")
{
if (Splitter[1] == "0" || Splitter[1] == "1")
{
int Item_Location = 0;
int Item_Inventory = 0;
int Item_Type = 0;
int Item_Color = 0;
int Item_Level = 0;
int Item_Quality = 0;
int Item_Compose = 0;
int Item_UID = 0;
int Item_ID = 0;
int LeftHand = 0;
if (UID < 1)
{
UID = 0;
}
UID++;
if (Splitter[2] == "Other" || Splitter[2] == "other")
Item_Location = 70;
else if (Splitter[2] == "HeadWear" || Splitter[2] == "headwear")
Item_Location = 11;
else if (Splitter[2] == "Necklace" || Splitter[2] == "necklace")
Item_Location = 12;
else if (Splitter[2] == "Armor" || Splitter[2] == "armor")
Item_Location = 13;
else if (Splitter[2] == "RightHand" || Splitter[2] == "righthand")
Item_Location = 41;
else if (Splitter[2] == "LeftHand" || Splitter[2] == "lefthand")
{
Item_Location = 41;
LeftHand = 1;
}
else if (Splitter[2] == "Ring" || Splitter[2] == "ring")
Item_Location = 15;
else if (Splitter[2] == "Boots" || Splitter[2] == "boots")
Item_Location = 16;
Item_Inventory = Convert.ToInt32(Splitter[1]);
Item_Type = (Convert.ToInt32(Splitter[3]) - 1) * 1000;
if (Splitter[4] != "0")
{
if (Item_Location == 13 || Item_Location == 11)
if (Item_Type == 7000 && Item_Location == 11)
Item_Color = 3 * 100;
else
Item_Color = (Convert.ToInt32(Splitter[4]) + 2) * 100;
else
Item_Color = 0;
}
else
Item_Color = 0;
Item_Level = (Convert.ToInt32(Splitter[5]) - 1) * 10;
Item_Quality = Convert.ToInt32(Splitter[6]) + 2;
Item_Compose = Convert.ToInt32(Splitter[7]);
Item_UID = Convert.ToInt32(UID);
Item_ID = (Item_Location * 10000) + Item_Type + Item_Color + Item_Level + Item_Quality;
Client.SendData(PacketBuilder.GiveItem(Item_Inventory, Item_Location, Item_ID, Item_Compose, Item_UID, LeftHand));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", Client.Char.Name, "The Item " + Item_ID + " was given.", ChatType.Top));
}
else if (Splitter[1] == "/Location" || Splitter[1] == "/location")
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "Other HeadWear Necklace Armor RightHand LeftHand Ring Boots", ChatType.Talk));
else if (Splitter[1] == "/Inventory" || Splitter[1] == "/inventory")
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "1 For Equipped/0 For Unequipped", ChatType.Talk));
else if (Splitter[1] == "/Type" || Splitter[1] == "/type")
{
if (Splitter[2] == "/Weapons" || Splitter[2] == "/weapons")
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "1Blade 11Sword 12BackSword 21Hook 31Whip 41Axe 51Hammer 71Club 72Scepter 81Dagger 91Bow 101Glaive 121Poleaxe 131LongHammer 151Spear 152Wand 171Halbert ", ChatType.Talk));
else if (Splitter[2] == "/?")
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give /Type /Weapons - Gives Info for Weapons", ChatType.Talk));
else
Client.SendData(PacketBuilder.Message(Client.MessageID, "/Give SYSTEM", "ALL", "Nothing to say", ChatType.Talk));
}
else if (Splitter[1] == "/Color" || Splitter[1] == "/color")
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "From 1 to 7 for Hats, Caps, Helmets and Armors of all Kind", ChatType.Talk));
else if (Splitter[1] == "/?")
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give Inventory Location Type Color Level Quality Compose", ChatType.Talk));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/give /? |More", ChatType.Talk));
if (Splitter[2] == "|More" || Splitter[2] == "|more")
{
Client.SendData(PacketBuilder.Message(Client.MessageID, "Smone", "ALL", "/Give /Inventory - Gives Definition of Inventory Bool", ChatType.Talk));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give /Location - Gives Kind of Locations", ChatType.Talk));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give /Type - Gives kind of Types", ChatType.Talk));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give /Color - Gives info about Colors", ChatType.Talk));
Client.SendData(PacketBuilder.Message(Client.MessageID, "SYSTEM", "ALL", "/Give /Level - Gives info about Levels", ChatType.Talk));
}
}
else
Client.SendData(PacketBuilder.Message(Client.MessageID, "/Give SYSTEM", "ALL", "Nothing to say", ChatType.Talk));
}
And here is the PacketBuilder.cs Packet :
Code:
public static byte[] GiveItem(int Inventory, int Location, int ID, int Compose, int UID, int LeftHand)
{
byte[] PacketData = new byte[0x18];
PacketData[0] = 0x18;
PacketData[1] = 0x00;
PacketData[2] = 0xf0;
PacketData[3] = 0x03;
PacketData[4] = (byte) (UID & 0xff);//UID
PacketData[5] = (byte)((UID >> 8) & 0xff); // '
PacketData[6] = (byte)((UID >> 16) & 0xff); // '
PacketData[7] = (byte)((UID >> 24) & 0xff); // '
PacketData[8] = (byte)(ID & 0xff); //Item ID
PacketData[9] = (byte)((ID >> 8) & 0xff); // '
PacketData[0x0a] = (byte)((ID >> 16) & 0xff); // '
PacketData[0x0b] = (byte)((ID >> 24) & 0xff); // '
if (Location >= 70)
{
PacketData[0x0c] = 0x00; // NULL
PacketData[0x0d] = 0x00; // DURABILITY
PacketData[0x0e] = 0x00; // FOR
PacketData[0x0f] = 0x00; // COMMON ITEMS
}
else
{
PacketData[0x0c] = 0x88; // Current Durability
PacketData[0x0d] = 0x13; // '
PacketData[0x0e] = 0x88; // Max Durability
PacketData[0x0f] = 0x13; // '
}
PacketData[0x10] = 0x01; //01
PacketData[0x11] = 0x00; //00
if (Inventory != 0)
{
if (Location >= 70)
PacketData[0x12] = 0x00;//INVENTORY
else if (Location >= 41)
{
if (LeftHand == 0)
PacketData[0x12] = 0x04;//RIGHT HAND
else if (LeftHand == 1)
PacketData[0x12] = 0x05;//LEFT HAND
}
else if (Location == 16)
PacketData[0x12] = 0x08;//BOOTS
else if (Location == 15)
PacketData[0x12] = 0x06;//RING
else if (Location == 13)
PacketData[0x12] = 0x03;//ARMOR
else if (Location == 12)
PacketData[0x12] = 0x02;//NECKLACE
else
PacketData[0x12] = 0x01;
}
else
{
PacketData[0x12] = 0x00;
}
PacketData[0x13] = 0x00; //Gem 1
PacketData[0x14] = 0x00; //Gem 2
PacketData[0x15] = 0x00;
PacketData[0x16] = 0x00;
PacketData[0x17] = (byte)(Compose & 0xff); //Composition
return PacketData;
}
It stills needs some Ameliorations but its kinda good atm. You can add any items with that everywhere you want, even in your inventory (btw took me an entire Night to programm it and find all bugs, so +1 karma if u use it would be nice at least)
Here is my World.cs Skill Command (you can add all skills in one but many skills arent really existing ^^) :
Code:
else if (Splitter[0] == "/skill" || Splitter[0] == "Skill")
{
if (Splitter[1] == "all" || Splitter[1] == "ALL")
{
for (int boucle = 0; boucle <= 5000; boucle++)
{
Client.SendData(PacketBuilder.Skill(boucle, 0, 0));
}
}
int Skill_ID = Convert.ToInt32(Splitter[1]);
int Skill_Exp = Convert.ToInt32(Splitter[2]);
int Skill_Level = Convert.ToInt32(Splitter[3]);
Client.SendData(PacketBuilder.Skill(Skill_ID, Skill_Exp, Skill_Level));
}
And here is the PacketBuilder.cs Packet used on that command :
Code:
public static byte [] Skill(int Skill_ID, int Skill_Exp, int Skill_Level)
{
byte [] PacketData = new byte[0x0c];
PacketData[0] = 0x0c;
PacketData[1] = 0x00;
PacketData[2] = 0x4f;
PacketData[3] = 0x04;
PacketData[4] = (byte)(Skill_Exp & 0xff);
PacketData[5] = (byte)((Skill_Exp >> 8) & 0xff);
PacketData[6] = (byte)((Skill_Exp >> 16) & 0xff);
PacketData[7] = (byte)((Skill_Exp >> 24) & 0xff);
PacketData[8] = (byte)(Skill_ID & 0xff);
PacketData[9] = (byte)((Skill_ID >> 8) & 0xff);
PacketData[0x0a] = (byte)(Skill_Level & 0xff);
PacketData[0x0b] = (byte)((Skill_Level >> 8) & 0xff);
return PacketData;
}
Enjoy it, and use wisely the "/skill all" command (dont forget to modify it ;))[COLOR=red][COLOR=red]