Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (hexText.Text == "" && decText.Text != "")
            {
                int hexValue = int.Parse(decText.Text);
                hexText.Text = IDToHex.idToHex(hexValue);
            }

            if (decText.Text == "" && hexText.Text != "")
            {
                char[] decValue = hexText.Text.ToCharArray();
                HexToID.hexToID(decValue);
                string resultHex = new string(decValue);

                if (resultHex == "FFFF")
                {
                    //isEmpty = true;
                }
                else if (resultHex.EndsWith("0"))
                {
                    resultHex = resultHex.Substring(0, resultHex.Length - 1);
                }

                int resultHex2 = Convert.ToInt32(resultHex, 16);
                decText.Text = resultHex2.ToString();
            }
        }
Пример #2
0
        void writeToPlayer()
        {
            timer2.Interval = 2000;
            timer2.Tick    += timer2_Tick;
            timer2.Start();
            saveToolStripMenuItem2.Enabled = false;

            main m = (main)this.MdiParent;
            var  s = m.statusLabelPlayer;

            s.Text = "Player file saved!";

            // Write all changed values to file
            using (var bw = new BinaryWriter(File.OpenWrite(playerFile)))
            {
                playerName = nameText.Text;

                // Clear all name characters
                for (int i = 0x57; i <= 0x66; i++)
                {
                    bw.BaseStream.Position = i;
                    bw.Write(0x00);
                }
                // Write player name
                bw.BaseStream.Position = 0x57;
                bw.Write(playerName);

                // Write health
                bw.BaseStream.Position = 0x538;
                if (healthBox.Value == 0xFFFF)
                {
                    byte[] invincible = { 0x00, 0x00, 0xFF, 0xFF };
                    bw.Write(invincible);
                }
                else
                {
                    health = (int)healthBox.Value;
                    float  hFloat      = Convert.ToSingle(health);
                    byte[] healthBytes = BitConverter.GetBytes(hFloat);
                    bw.Write(healthBytes);
                }

                // Write characteristics
                // Hair color
                byte shiftValue = 4;
                bw.BaseStream.Position = 0x74;
                colorValue             = Convert.ToByte((colorBox.SelectedItem as dynamic).Value);
                bw.Write((byte)(colorValue << shiftValue));

                // Gender
                // 0 2 4 6 8 male
                // 1 3 5 6 7 female
                bw.BaseStream.Position = 0x75;

                switch (toneBox.SelectedValue)
                {
                case 1:     // Very Light
                    if (genderBox.SelectedValue == male)
                    {
                        skinID = 0;
                    }
                    else
                    {
                        skinID = 1;
                    }
                    break;

                case 2:     // Light
                    if (genderBox.SelectedValue == male)
                    {
                        skinID = 2;
                    }
                    else
                    {
                        skinID = 3;
                    }
                    break;

                case 3:     // Tan
                    if (genderBox.SelectedValue == male)
                    {
                        skinID = 4;
                    }
                    else
                    {
                        skinID = 5;
                    }
                    break;

                case 4:     // Dark
                    if (genderBox.SelectedValue == male)
                    {
                        skinID = 6;
                    }
                    else
                    {
                        skinID = 7;
                    }
                    break;

                case 5:     // very Dark
                    if (genderBox.SelectedValue == male)
                    {
                        skinID = 8;
                    }
                    else
                    {
                        skinID = 9;
                    }
                    break;
                }

                //bw.Write((byte)(genderValue << shiftValue));

                // Hair style
                bw.BaseStream.Position = 0x75;
                styleValue             = Convert.ToByte((styleBox.SelectedItem as dynamic).Value);
                bw.Write((byte)((skinID << shiftValue)) | (styleValue & 0x0F));

                readHex();

                // Write armor values
                void writeOffset(int start, TextBox textbox = null, NumericUpDown itemAmount = null)
                {
                    int id = 65535;

                    bw.BaseStream.Position = start;

                    english englishItems = JsonConvert.DeserializeObject <english>(englishJson);

                    if (textbox != null)
                    {
                        if (textbox.Text == "")
                        {
                            id = 65535;
                        }
                        else
                        {
                            foreach (var item in englishItems.treasures)
                            {
                                englishID   = item.id;
                                englishName = item.name;

                                if (textbox.Text == englishName)
                                {
                                    id = englishID;
                                    //id = int.Parse(textbox.Text);
                                }
                            }
                        }
                        IDToHex.idToHex(id);
                        bw.Write(id);
                    }
                    else if (textbox == null)
                    {
                        id = int.Parse(numericUpDown1.Value.ToString());
                        IDToHex.idToHex(id);
                        bw.Write(id);
                    }
                    bw.BaseStream.Position = start + 6; // For toggle render
                    bw.Write(0x00);
                }

                writeOffset(helm, helmText);
                writeOffset(chest, chestText);
                writeOffset(legs, legsText);
                writeOffset(feet, feetText);

                // Write treeview values
                if (treeView1.SelectedNode == null)
                {
                    return;
                }
                else
                {
                    if (itemBox.Text == "")
                    {
                        treeView1.SelectedNode.Text = "[Empty]";
                        numericUpDown1.Value        = 0;
                    }
                    else if (itemBox.Text == "0")
                    {
                        treeView1.SelectedNode.Text = "[Empty]";
                        numericUpDown1.Value        = 0;
                    }
                    treeView1.SelectedNode.Text = itemBox.Text;

                    // Invenory items
                    for (var i = 0; i < hots.Length; i++)
                    {
                        int[] tag = { hots[i], hotsAmount[i] };
                        treeView1.Nodes[0].Nodes[i].Tag = tag[0]; //hots[i];
                    }
                    for (var i = 0; i < slots.Length; i++)
                    {
                        int[] tag = { slots[i], slotsAmount[i] };
                        treeView1.Nodes[1].Nodes[i].Tag = tag[0];
                    }

                    int selectedItem = Convert.ToInt32(treeView1.SelectedNode.Tag);
                    writeOffset(selectedItem, itemBox);

                    // Item amounts
                    for (var i = 0; i < hots.Length; i++)
                    {
                        int[] tag = { hots[i], hotsAmount[i] };
                        treeView1.Nodes[0].Nodes[i].Tag = tag[1]; //hots[i];
                    }
                    for (var i = 0; i < slots.Length; i++)
                    {
                        int[] tag = { slots[i], slotsAmount[i] };
                        treeView1.Nodes[1].Nodes[i].Tag = tag[1];
                    }
                    selectedAmount = Convert.ToInt32(treeView1.SelectedNode.Tag);
                    writeOffset(selectedAmount, null, numericUpDown1);
                }
            }

            // Read to itemAmount again
            using (var br = new BinaryReader(File.OpenRead(playerFile)))
            {
                var treeHots = treeView1.Nodes[0];
                for (var i = 0; i < hots.Length; i++)
                {
                    //readOffset(hots[i], hotsEnds[i], hotNames[i], null, treeHots, null, br);
                    readOffset(hotsAmount[i], hotsAmountEnds[i], hotNames[i], null, null, numericUpDown1, br);
                    //treeHots.Tag = hots[i];

                    if (numericUpDown1.Value > numericUpDown1.Maximum)
                    {
                        numericUpDown1.Value = 0xFFFF;
                    }
                    //int[] tag = { hots[i], hotsAmount[i] };
                    treeView1.Nodes[0].Nodes[i].Tag = tags[i];
                }
                tags.Clear();
                var treeSlots = treeView1.Nodes[1];
                for (var i = 0; i < slots.Length; i++)
                {
                    //readOffset(slots[i], slotsEnds[i], slotNames[i], null, treeSlots, null, br);
                    readOffset(slotsAmount[i], slotsAmountEnds[i], null, null, null, numericUpDown1, br);
                    //treeSlots.Tag = slots[i];

                    if (numericUpDown1.Value > numericUpDown1.Maximum)
                    {
                        numericUpDown1.Value = 0xFFFF;
                    }
                    //int[] tag = { slots[i], slotsAmount[i] };
                    treeView1.Nodes[1].Nodes[i].Tag = tags[i];
                }
                tags.Clear();
            }
        }