示例#1
0
        public static void SendMessage(MartialClient c, InPacket p)
        {
            if (c.getAccount().activeCharacter == null)
            {
                Logger.LogCheat(Logger.HackTypes.NullActive, c, "Attempted to hook SendMessage handling while not being ingame.");
                c.Close();
                return;
            }

            Character chr = c.getAccount().activeCharacter;

            int    messageType = p.ReadInt();          // identifier of message type maybe?
            string receiver    = p.ReadString(20);     // receiver name

            MiscFunctions.obscureString(receiver);
            if (!MySQLTool.NameTaken(receiver))
            {
                return;
            }
            int    messageLength = p.ReadInt();          // message length
            string message       = p.ReadString(messageLength);

            MiscFunctions.obscureString(message);

            OutPacket op = new OutPacket(20);

            op.WriteInt(20);
            op.WriteShort(4);
            op.WriteShort(0x53);
            op.WriteInt(718349825);
            op.WriteInt(chr.getuID());
            op.WriteInt(-1089732352);
            c.WriteRawPacket(op.ToArray());
        }
示例#2
0
        public static ImageModel selectImgById(long id)
        {
            string  sql = "SELECT * FROM images WHERE kid=" + id;
            DataSet ds  = MySQLTool.getDataSet(sql);

            return(toImage(ds.Tables[0].Rows[0]));
        }
示例#3
0
        public static List <ImageModel> selectImgList(DefaultConfig config)
        {
            string sql = "SELECT * FROM images WHERE 1=1";

            if (!(config.author == null || config.author.Length == 0))
            {
                sql += string.Format(" and author LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.author);
            }

            for (int i = 0; i < config.tags.Count; i++)
            {
                if (i == 0)
                {
                    sql += string.Format(" and tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[0]);
                }
                else
                {
                    sql += string.Format(" or tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[i]);
                }
            }

            if (config.fileSize != 0)
            {
                sql += " and file_size <=" + config.fileSize;
            }

            if (config.eTime != 0)
            {
                sql += " and images.created_at >=" + config.eTime;
            }

            sql += " and width >= " + config.w_min + " and width <= " + config.w_max + " and height>= " + config.h_min + " and height <=" + config.h_max;
            switch (config.order)
            {
            case 3: sql += " ORDER BY created_at"; break;

            case 2: sql += " ORDER BY height"; break;

            case 1: sql += " ORDER BY width"; break;

            case 0: sql += " ORDER BY score"; break;

            default: sql += " ORDER BY created_at"; break;
            }
            switch (config.sort)
            {
            case 1: sql += " DESC"; break;

            default: sql += " ASC"; break;
            }
            sql += string.Format(" limit {0}", config.limit);
            DataSet           ds   = MySQLTool.getDataSet(sql);
            List <ImageModel> list = new List <ImageModel>();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                list.Add(toImage(row));
            }
            return(list);
        }
示例#4
0
        public static int updateFavor(string uname, string kid)
        {
            string  sql    = string.Format("insert into favor(uid,kid,status) values((select uid from user where username='******'),'{1}','{2}') ON DUPLICATE KEY UPDATE status=-status;select status from favor where uid=(select uid from user where username='******') and kid={1}", uname, kid, 1);
            DataSet ds     = MySQLTool.getDataSet(sql);
            int     status = (int)ds.Tables[0].Rows[0][0];

            return(status);
        }
示例#5
0
        public static int selectImgListCount(DefaultConfig config)
        {
            string sql = selectImgListSql(config, -1, -1, config.username);

            sql = "select count(*) as count from (" + sql + ") as newTable";
            DataSet ds = MySQLTool.getDataSet(sql);

            return(Convert.ToInt32(ds.Tables[0].Rows[0]["count"].ToString()));
        }
示例#6
0
 public void Delete(byte slot)
 {
     this.account.characters.Remove(slot);
     MySQLTool.Delete("chars", "charID", this.cID);
     MySQLTool.Delete("chars_eq", "charID", this.cID);
     MySQLTool.Delete("chars_inv", "charID", this.cID);
     MySQLTool.Delete("chars_cargo", "charID", this.cID);
     MySQLTool.Delete("chars_skill", "charID", this.cID);
     MySQLTool.Delete("chars_sbar", "charID", this.cID);
 }
示例#7
0
        public static List <ImageModel> selectImgList(DefaultConfig config, int index, int num, string username)
        {
            string            sql  = selectImgListSql(config, index, num, username);
            DataSet           ds   = MySQLTool.getDataSet(sql);
            List <ImageModel> list = new List <ImageModel>();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                list.Add(toImageWithLikes(row));
            }
            return(list);
        }
示例#8
0
        public static bool login(string username, string passwd)
        {
            string  sql = string.Format("update user set fingerprint =1 where username='******' and passwd= '{1}'", username, passwd);
            int     num = MySQLTool.runSql(sql);
            DataSet ds  = DBhelper.getDS(sql);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(true);
            }
            return(false);
        }
示例#9
0
        public static bool reg(UserModel user)
        {
            string sql = string.Format("insert into user (username,passwd) values ('{0}','{1}')", user.Username, user.Passwd);

            try
            {
                int num = MySQLTool.runSql(sql);
                return(true);
            }catch (Exception e)
            {
                return(false);
            }
        }
示例#10
0
        public static bool login(string username, string passwd)
        {
            string sql = string.Format("update user set fingerprint =- fingerprint where username='******' and passwd= '{1}'", username, passwd);
            int    num = MySQLTool.runSql(sql);

            if (num > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#11
0
        public static List <ImageModel> random(DefaultConfig config)
        {
            string sql = "SELECT* FROM `images` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `images`))) and created_at>=" + config.eTime;

            if (!(config.author == null || config.author.Length == 0))
            {
                sql += string.Format(" and author LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.author);
            }
            if (!(config.tags.Count == 0))
            {
                if (config.tags[0] != null)
                {
                    sql += string.Format(" and tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[0]);
                }

                config.tags.Remove(config.tags[0]);
                foreach (string tag in config.tags)
                {
                    sql += string.Format(" or tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", tag);
                }
            }
            if (config.username != "")
            {
                sql += string.Format(" and kid in(select kid from favor where uid =(select uid from user where username ='******')) ", config.username);
            }
            if (config.fileSize != 0)
            {
                sql += string.Format(" and file_size <={0} ", config.fileSize);
            }
            sql += string.Format(" and width >= {0} and width <= {1} and height>= {2} and height <={3} order BY id LIMIT {4};", config.w_min, config.w_max, config.h_min, config.h_max, config.limit);

            DataSet           ds   = MySQLTool.getDataSet(sql);
            List <ImageModel> list = new List <ImageModel>();

            if (ds == null)
            {
                ImageModel image = new ImageModel();
                image.Kid = "244060";
                list.Add(image);
            }
            else
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    list.Add(toImage(row));
                }
            }

            return(list);
        }
示例#12
0
        public static bool usernameExist(UserModel user)
        {
            string sql = string.Format("select * from user where username ={0}", user.Username);
            int    num = MySQLTool.runSql(sql);

            if (num > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#13
0
        public void LoadCharacters()
        {
            using (var con = new MySqlConnection(MasterServer.Instance.SqlConnection.mConnectionString))
                using (var cmd = con.CreateCommand())
                {
                    con.Open();
                    cmd.CommandText = "SELECT * FROM chars WHERE ownerID = " + aID + " LIMIT 5";
                    using (var reader = cmd.ExecuteReader())
                    {
                        List <int> ids = new List <int>();

                        for (int i = 0; i < 5; i++)
                        {
                            if (!reader.Read())
                            {
                                break;
                            }

                            ids.Add(reader.GetInt32(0));
                        }

                        foreach (int id in ids)
                        {
                            Character chr = new Character();
                            chr.setcID(id);

                            if (chr.Load(this) == 0)
                            {
                                Logger.WriteLog(Logger.LogTypes.Error, "Could not load character with ID {0}.", chr.getuID());
                                continue;
                            }

                            chr.setAccount(this);
                            MySQLTool.loadEq(chr);
                            MySQLTool.loadInv(chr);
                            MySQLTool.loadCargo(chr);
                            MySQLTool.loadSkills(chr);
                            MySQLTool.loadSkillBar(chr);
                            MySQLTool.loadCommunities(chr);
                            CharacterFunctions.calculateCharacterStatistics(chr);
                            this.appendToCharacters(chr);
                        }
                    }
                }
        }
示例#14
0
        public bool Create()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("(charName, charClass, face, Inte, Agi, Vit, Str, Dex, statPointz, ownerID) ");
            sb.Append("VALUES (");
            sb.Append("'" + this.name + "',");
            sb.Append(this.cClass + ",");
            sb.Append(this.face + ",");
            sb.Append(this.inte + ",");
            sb.Append(this.agi + ",");
            sb.Append(this.vit + ",");
            sb.Append(this.str + ",");
            sb.Append(this.dex + ",");
            sb.Append(this.statPoints + ",");
            sb.Append(this.account.aID);
            sb.Append(")");
            int charID = MySQLTool.Create("chars", sb);

            this.cID = charID;

            sb.Clear();
            sb.Append("(charID) VALUES (" + charID + ")");
            MySQLTool.Create("chars_eq", sb);

            sb.Clear();
            sb.Append("(charID) VALUES (" + charID + ")");
            MySQLTool.Create("chars_inv", sb);

            sb.Clear();
            sb.Append("(charID) VALUES (" + charID + ")");
            MySQLTool.Create("chars_sbar", sb);

            sb.Clear();
            sb.Append("(charID) VALUES (" + charID + ")");
            MySQLTool.Create("chars_skill", sb);

            sb.Clear();
            sb.Append("(charID) VALUES (" + charID + ")");
            MySQLTool.Create("chars_com", sb);
            return(true);
        }
示例#15
0
        public void Save()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(" charName = '" + name + "'");
            sb.Append(", charClass = " + cClass);
            sb.Append(", removeState = " + deleteState);
            sb.Append(", invPages = " + invPages);
            sb.Append(", face = " + face);
            sb.Append(", effect = " + effect);
            sb.Append(", faction = " + faction);
            sb.Append(", level = " + level);
            sb.Append(", curHP = " + curHP);
            sb.Append(", curMP = " + curMP);
            sb.Append(", curSP = " + curSP);
            sb.Append(", coin = " + coin);
            sb.Append(", fame = " + fame);
            sb.Append(", locX = '" + position[0]);
            sb.Append("', locY = '" + position[1]);
            sb.Append("', map = " + map);
            sb.Append(", Inte = " + inte);
            sb.Append(", Agi = " + agi);
            sb.Append(", Vit = " + vit);
            sb.Append(", Str = " + str);
            sb.Append(", Dex = " + dex);
            sb.Append(", statPointz = " + statPoints);
            sb.Append(", skillPointz = " + skillPoints);
            sb.Append(", karmaMessagingTimes = " + karmaMessagingTimes);
            sb.Append(", gmShoutMessagingTimes = " + gmShoutMessagingTimes);
            MySQLTool.Save("chars", sb, "charID", this.cID);

            MySQLTool.SaveEquipments(this);
            MySQLTool.SaveInventories(this);
            //MySQLTool.SaveCargo(this);
            MySQLTool.SaveSkills(this);
            MySQLTool.SaveSkillBar(this);
            MySQLTool.SaveCommunities(this);
        }
示例#16
0
        public static int createInventories(Character chr)
        {
            Inventory inv = chr.getInventory();

            inv.setPages(chr.getInvPages());
            List <int> seqhash = new List <int>();

            for (int i = 0; i <= 240; i++)
            {
                seqhash.Add(-1);
            }
            inv.saveInv();
            inv.setSeqSaved(seqhash);

            foreach (int[] entry in NewInventory.Instance.newInventory)
            {
                chr.getInventory().addItem(entry[0], (short)entry[1], new Item(entry[2], (short)entry[3], ItemDataCache.Instance.getItemData(entry[2]).getTimeToExpire()));
            }

            chr.getInventory().saveInv();

            MySQLTool.SaveInventories(chr);
            return(1);
        }
示例#17
0
        public static void CreateNewCharacter(MartialClient c, InPacket p)
        {
            if (c.getAccount().activeCharacter != null)
            {
                Logger.LogCheat(Logger.HackTypes.CreateCharacter, c, "Attempted to create a character while being ingame.");
                c.Close();
                return;
            }

            if (c.getAccount().characters.Count() == 5)
            {
                Logger.LogCheat(Logger.HackTypes.CreateCharacter, c, "Attempted to create a character while characters count is 5.");
                c.Close();
                return;
            }

            string charName = MiscFunctions.obscureString(p.ReadString(18));

            if (charName == null)
            {
                c.WriteRawPacket(Constants.createNCharNameTaken);
                return;
            }
            if (charName.Length < 3 || Regex.Replace(charName, "[^A-Za-z0-9]+", "") != charName || MySQLTool.NameTaken(charName))
            {
                c.WriteRawPacket(Constants.createNCharNameTaken);
                return;
            }

            byte face = (byte)p.ReadShort();

            if (face < 1 || face > 7)
            {
                Logger.LogCheat(Logger.HackTypes.CreateCharacter, c, "Attempted to create a character with face no {0}", face);
                c.WriteRawPacket(Constants.createNCharNameTaken);
                return;
            }

            short unknownShit = p.ReadShort();             // but let's check it

            if (unknownShit > 0)
            {
                Logger.WriteLog(Logger.LogTypes.Debug, "Create character's shit: {0}", unknownShit);
            }

            short unknownShit2 = p.ReadShort();

            if (unknownShit2 > 0)
            {
                Logger.WriteLog(Logger.LogTypes.Debug, "Create character's shit: {0}", unknownShit2);
            }

            byte cClass = (byte)p.ReadShort();

            if (cClass < 1 || cClass > 4)
            {
                Logger.LogCheat(Logger.HackTypes.CreateCharacter, c, "Attempted to create a character with class no {0}", cClass);
                c.WriteRawPacket(Constants.createNCharNameTaken);
                return;
            }

            byte[] stats      = { (byte)p.ReadShort(), (byte)p.ReadShort(), (byte)p.ReadShort(), (byte)p.ReadShort(), (byte)p.ReadShort() };
            byte   statPoints = (byte)p.ReadShort();

            if (stats[0] + stats[1] + stats[2] + stats[3] + stats[4] + statPoints > 55)
            {
                Logger.LogCheat(Logger.HackTypes.CreateCharacter, c, "Attempted to create a character with weird amount of attributes.");
                c.WriteRawPacket(Constants.createNCharNameTaken);
                return;
            }

            Character newChr = new Character();

            newChr.setName(charName);
            newChr.setFace(face);
            newChr.setcClass(cClass);
            newChr.setStr(stats[0]);
            newChr.setDex(stats[1]);
            newChr.setVit(stats[2]);
            newChr.setAgi(stats[3]);
            newChr.setInt(stats[4]);
            newChr.setStatPoints(statPoints);

            newChr.setAccount(c.getAccount());
            if (newChr.Create() == true)
            {
                CharacterFunctions.createEquipments(newChr);
                CharacterFunctions.createInventories(newChr);
                CharacterFunctions.calculateCharacterStatistics(newChr);
                newChr.setCurHP(newChr.getMaxHP());
                newChr.setCurMP(newChr.getMaxMP());
                newChr.setCurSP(newChr.getMaxSP());
                c.getAccount().appendToCharacters(newChr);
                c.WriteRawPacket(Constants.createNewCharacter);
                return;
            }

            c.WriteRawPacket(Constants.createNCharNameTaken);
            return;
        }
示例#18
0
        public static int selectImgListCountByUser(DefaultConfig config, string username)
        {
            string sql = string.Format("SELECT count(*) as count FROM images WHERE 1=1 and kid in ((select kid from favor where status=1 and uid = (select uid from user where username = '******')))", username);

            if (!(config.author == null || config.author.Length == 0))
            {
                sql += string.Format(" and author LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.author);
            }
            for (int i = 0; i < config.tags.Count; i++)
            {
                if (i == 0)
                {
                    sql += string.Format(" and tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[0]);
                }
                else
                {
                    sql += string.Format(" or tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[i]);
                }
            }

            if (config.fileSize != 0)
            {
                sql += " and file_size <=" + config.fileSize;
            }

            if (config.eTime != 0)
            {
                sql += " and images.created_at >=" + config.eTime;
            }
            if (config.ext != "all")
            {
                sql += string.Format(" and file_url like '%{0}'", config.ext);
            }
            sql += " and width >= " + config.w_min + " and width <= " + config.w_max + " and height>= " + config.h_min + " and height <=" + config.h_max;
            if (config.username != "")
            {
                sql += string.Format(" and kid in(select kid from favor where uid =(select uid from user where username ='******')) ", config.username);
            }
            switch (config.order)
            {
            case 3: sql += " ORDER BY created_at"; break;

            case 2: sql += " ORDER BY height"; break;

            case 1: sql += " ORDER BY width"; break;

            case 0: sql += " ORDER BY score"; break;

            default: sql += " ORDER BY created_at"; break;
            }
            switch (config.sort)
            {
            case 1: sql += " DESC"; break;

            default: sql += " ASC"; break;
            }

            DataSet ds = MySQLTool.getDataSet(sql);

            return(Convert.ToInt32(ds.Tables[0].Rows[0]["count"].ToString()));
        }
示例#19
0
        public static List <ImageModel> selectImgListByUser(DefaultConfig config, int index, int num, string username)
        {
            string sql = "SELECT *,ifnull(ff.status,0) as tstatus FROM images LEFT JOIN (SELECT kid AS fkid, COUNT( * ) AS num FROM favor GROUP BY fkid) AS f ON f.fkid = images.kid ";

            sql += string.Format("left join(select kid as ffkid, status from favor where uid = (select uid from user where username = '******')) as ff on ff.ffkid = images.kid  WHERE 1 = 1 and  kid in ((select kid from favor where status=1 and uid = (select uid from user where username = '******')))", username);
            if (!(config.author == null || config.author.Length == 0))
            {
                sql += string.Format(" and author LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.author);
            }

            for (int i = 0; i < config.tags.Count; i++)
            {
                if (i == 0)
                {
                    sql += string.Format(" and tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[0]);
                }
                else
                {
                    sql += string.Format(" or tags LIKE CONCAT(CONCAT('%', '{0}'),'%')", config.tags[i]);
                }
            }

            if (config.fileSize != 0)
            {
                sql += " and file_size <=" + config.fileSize;
            }

            if (config.eTime != 0)
            {
                sql += " and images.created_at >=" + config.eTime;
            }

            sql += " and width >= " + config.w_min + " and width <= " + config.w_max + " and height>= " + config.h_min + " and height <=" + config.h_max;
            switch (config.order)
            {
            case 3: sql += " ORDER BY created_at"; break;

            case 2: sql += " ORDER BY height"; break;

            case 1: sql += " ORDER BY width"; break;

            case 0: sql += " ORDER BY score"; break;

            default: sql += " ORDER BY created_at"; break;
            }
            switch (config.sort)
            {
            case 1: sql += " DESC"; break;

            default: sql += " ASC"; break;
            }

            sql += string.Format(" limit {0},{1}", index, num);
            DataSet           ds   = MySQLTool.getDataSet(sql);
            List <ImageModel> list = new List <ImageModel>();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                list.Add(toImageWithLikes(row));
            }
            return(list);
        }
示例#20
0
        // Holy Grail ftw
        public static void useItem(Character chr, Item item, byte usingIndex, InPacket p)
        {
            MartialClient c              = chr.getAccount().mClient;
            ItemData      itemData       = ItemDataCache.Instance.getItemData(item.getItemID());
            Boolean       shouldDecrease = false;
            string        determined     = null;
            int           determiner     = 0;

            if (itemData.getIsStackable())
            {
                shouldDecrease = true;
            }
            else
            {
                if (itemData.getTimeToExpire() == 0)
                {
                    shouldDecrease = true;
                }
            }

            // well.. we don't care if it's handled by server.. let's just remove them & f**k haterz! qq
            if (shouldDecrease)
            {
                if (!chr.getInventory().decrementItem(usingIndex))
                {
                    Console.WriteLine("something went wrong with decrement..");
                    return;
                }
            }

            switch (itemData.getCategory())
            {
            case 1001:                     // healingz
            {
                if (itemData.getHealHP() > 0 || itemData.getHealMana() > 0 || itemData.getHealStamina() > 0)
                {
                    StaticPackets.releaseHealPacket(chr, (int)(chr.getCurHP() + itemData.getHealHP()), (short)(chr.getCurMP() + itemData.getHealMana()), (short)(chr.getCurSP() + itemData.getHealStamina()));
                }
                break;
            }

            case 1002:                     // skillz o.o
            {
                StaticPackets.sendSystemMessageToClient(chr.getAccount().mClient, 1, "If you'd like to learn any skill, go to skills list and press CTRL+LMB.");
                break;
            }

            case 1003:                     // teleport
            {
                if (chr.getMap() == itemData.getTeleportMap() || chr.getMap() != itemData.getTeleportMap() && itemData.getSpecialEffect() != 0)
                {
                    CharacterFunctions.setPlayerPosition(chr, itemData.getTeleportX(), itemData.getTeleportY(), (short)itemData.getTeleportMap());
                }
                break;
            }

            case 1007:                     // reset skills
            {
                chr.getSkills().resetAll();
                chr.getSkillBar().getSkillBar().Clear();
                break;
            }

            case 1011:                     // effect potions
            {
                chr.setEffect((byte)itemData.getSpecialEffect());
                break;
            }

            case 1012:                     // tae potion
            {
                break;
            }

            case 1013:                     // faction change
            {
                if (chr.getFaction() == 0)
                {
                    return;
                }

                chr.setFaction(chr.getFaction() == 1 ? (byte)2 : (byte)1);
                break;
            }

            case 1015:                     // chuk amulet
            {
                determiner = BitConverter.ToInt32(p.ReadBytes(4), 0);
                if (determiner == 0)
                {
                    return;
                }
                ItemData determinedItem = ItemDataCache.Instance.getItemData(determiner);
                if (determinedItem == null || determinedItem.getCategory() != 1003 || (determiner < 212100146 && determiner > 212100164 && determiner != 212100185 && determiner != 212100187))
                {
                    Console.WriteLine("I CAN'T TURN 10 INTO 20 CHICKENZ");
                    return;
                }
                CharacterFunctions.setPlayerPosition(chr, determinedItem.getTeleportX(), determinedItem.getTeleportY(), (short)determinedItem.getTeleportMap());
                break;
            }

            case 1016:                     // karma amulet
            {
                chr.setKarmaMessagingTimes((short)(chr.getKarmaMessagingTimes() + 1));
                break;
            }

            case 1020:                     // name changer
            {
                p.Skip(4);
                string charName = MiscFunctions.obscureString(p.ReadString(16));
                if (charName.Length < 3 || Regex.Replace(charName, "[^A-Za-z0-9]+", "") != charName || MySQLTool.NameTaken(charName))
                {
                    StaticPackets.sendSystemMessageToClient(chr.getAccount().mClient, 1, "Wrong input " + charName + ".");
                    return;
                }

                chr.setName(charName);
                determined = charName;

                CharacterFunctions.refreshCharacterForTheWorld(chr);
                break;
            }

            case 1021:                     // face changer
            {
                chr.setFace((byte)itemData.getSpecialEffect());
                break;
            }

            case 1024:
            {
                // yy..?
                break;
            }

            case 1031:                     // red castle
            {
                determiner = BitConverter.ToInt32(p.ReadBytes(4), 0);
                if (determiner == 0)
                {
                    return;
                }
                ItemData determinedItem = ItemDataCache.Instance.getItemData(determiner);
                if (determinedItem == null || determinedItem.getCategory() != 56 || ((determiner < 273001255 && determiner > 273001257) && determiner != 283000472 && determiner != 283000543 && determiner != 283000575 && determiner != 283000614 && determiner != 283000934 && determiner != 283001078 && determiner != 283001373 && determiner != 283001376))
                {
                    Console.WriteLine("I CAN'T TURN 10 INTO 20 CHICKENZ");
                    return;
                }
                CharacterFunctions.setPlayerPosition(chr, determinedItem.getTeleportX(), determinedItem.getTeleportY(), (short)determinedItem.getTeleportMap());
                break;
            }

            default:
            {
                StaticPackets.sendSystemMessageToClient(chr.getAccount().mClient, 1, "Feature not implemented yet");
                return;
            }
            }

            OutPacket op = new OutPacket(52);

            op.WriteInt(52);
            op.WriteShort(0x04);
            op.WriteShort(0x05);
            op.WriteInt(140328705);
            op.WriteInt(chr.getuID());
            op.WriteShort(0x01);
            op.WriteByte(0x01);
            op.WriteByte(usingIndex);
            op.WriteInt(item.getQuantity());
            op.WriteInt(793149441);
            op.WriteInt(/*determiner > 0 ? determiner : 0*/);
            op.WritePaddedString(determined, 17);
            op.WriteByte(0x90);
            op.WriteByte(0xd2);
            op.WriteByte(0x2a);
            c.WriteRawPacket(op.ToArray());

            OutPacket ops = new OutPacket(40);

            ops.WriteInt(40);
            ops.WriteShort(0x05);
            ops.WriteShort(0x05);
            ops.WriteInt(779458561);
            ops.WriteInt(chr.getuID());
            ops.WriteInt(item.getItemID());
            ops.WritePaddedString(determined, 17);
            ops.WriteByte(0x9e);
            ops.WriteByte(0x0f);
            ops.WriteByte(0xbf);
            WMap.Instance.getGrid(chr.getMap()).sendTo3x3Area(chr, chr.getArea(), ops.ToArray());
        }
示例#21
0
        public static int createEquipments(Character chr)
        {
            switch (chr.getcClass())
            {
            case 1:
            {
                chr.getEquipment().getEquipments().Add(0, new Item(210110101));
                chr.getEquipment().getEquipments().Add(1, new Item(207114101));
                chr.getEquipment().getEquipments().Add(3, new Item(202110103));
                chr.getEquipment().getEquipments().Add(4, new Item(203110102));
                chr.getEquipment().getEquipments().Add(6, new Item(209114101));
                chr.getEquipment().getEquipments().Add(7, new Item(201011002));
                chr.getEquipment().getEquipments().Add(9, new Item(208114101));
                chr.getEquipment().getEquipments().Add(10, new Item(208114101));
                chr.getEquipment().getEquipments().Add(11, new Item(206110102));
                break;
            }

            case 2:
            {
                chr.getEquipment().getEquipments().Add(0, new Item(210220101));
                chr.getEquipment().getEquipments().Add(1, new Item(207224101));
                chr.getEquipment().getEquipments().Add(3, new Item(202220103));
                chr.getEquipment().getEquipments().Add(4, new Item(203220102));
                chr.getEquipment().getEquipments().Add(6, new Item(209225101));
                chr.getEquipment().getEquipments().Add(7, new Item(201011008));
                chr.getEquipment().getEquipments().Add(9, new Item(208224101));
                chr.getEquipment().getEquipments().Add(10, new Item(208224101));
                chr.getEquipment().getEquipments().Add(11, new Item(206220102));
                break;
            }

            case 3:
            {
                chr.getEquipment().getEquipments().Add(0, new Item(210130101));
                chr.getEquipment().getEquipments().Add(1, new Item(207134101));
                chr.getEquipment().getEquipments().Add(3, new Item(202130103));
                chr.getEquipment().getEquipments().Add(4, new Item(203130102));
                chr.getEquipment().getEquipments().Add(6, new Item(209135101));
                chr.getEquipment().getEquipments().Add(7, new Item(201011014));
                chr.getEquipment().getEquipments().Add(9, new Item(208134101));
                chr.getEquipment().getEquipments().Add(10, new Item(208134101));
                chr.getEquipment().getEquipments().Add(11, new Item(206130102));
                break;
            }

            case 4:
            {
                chr.getEquipment().getEquipments().Add(0, new Item(210140101));
                chr.getEquipment().getEquipments().Add(1, new Item(207144101));
                chr.getEquipment().getEquipments().Add(3, new Item(202140103));
                chr.getEquipment().getEquipments().Add(4, new Item(203140102));
                chr.getEquipment().getEquipments().Add(6, new Item(209140101));
                chr.getEquipment().getEquipments().Add(7, new Item(201011020));
                chr.getEquipment().getEquipments().Add(9, new Item(208144101));
                chr.getEquipment().getEquipments().Add(10, new Item(208144101));
                chr.getEquipment().getEquipments().Add(11, new Item(206140102));
                break;
            }
            }

            MySQLTool.SaveEquipments(chr);
            return(1);
        }