mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ae705d591 | ||
|
|
94fdfb49ef | ||
|
|
ee67b9b59d | ||
|
|
74d496845b | ||
|
|
1bde433a16 | ||
|
|
f0f4948856 | ||
|
|
b4168fe934 | ||
|
|
848f29b468 | ||
|
|
bf1da72def | ||
|
|
75909e688e | ||
|
|
394000fa2a | ||
|
|
ad17773ace | ||
|
|
85cdd8973e | ||
|
|
85bcf82c1e | ||
|
|
6c65d8fe79 | ||
|
|
34eaddebb8 | ||
|
|
7989da8bfa | ||
|
|
012418cd59 | ||
|
|
0a4e0cb755 | ||
|
|
fc930ff7fb | ||
|
|
6a0a93836e | ||
|
|
e7e286013f | ||
|
|
f0e93450f6 | ||
|
|
46ea2fb265 | ||
|
|
35d8052098 | ||
|
|
abb71a1a1f | ||
|
|
35d397c891 | ||
|
|
92b010f362 | ||
|
|
c2e6d743a3 | ||
|
|
579cbd7543 | ||
|
|
34db527f45 | ||
|
|
475503d632 | ||
|
|
0486192c3c | ||
|
|
83f2d48668 | ||
|
|
fd4fe5fd0e | ||
|
|
2255d9e947 | ||
|
|
85020d66f2 | ||
|
|
629641eb96 | ||
|
|
0af8010861 | ||
|
|
addccd2bc6 | ||
|
|
8a0ac2082e | ||
|
|
a5599e1942 | ||
|
|
43e2ddeeef | ||
|
|
0c5e6af119 | ||
|
|
dc785d010e | ||
|
|
d484be45c8 | ||
|
|
ae3634779c | ||
|
|
18644f37fd | ||
|
|
bb52a6d9cb | ||
|
|
e34a00148f | ||
|
|
478684f8ef | ||
|
|
e2a383511d | ||
|
|
116c522bdc | ||
|
|
9531fcbebd | ||
|
|
76a946c72e | ||
|
|
20bc5b9fd6 | ||
|
|
dcc471fc47 | ||
|
|
d881dc9e89 | ||
|
|
fef690c2c2 | ||
|
|
5bbdcbd2db | ||
|
|
24e9dde577 | ||
|
|
029419db3d | ||
|
|
6e0fe881df | ||
|
|
203dcdf6be | ||
|
|
34500d9dd5 | ||
|
|
cbe987df25 | ||
|
|
7dcef6f4b2 | ||
|
|
5dadba6e56 | ||
|
|
b592d6bdbe | ||
|
|
0fe6c2a426 | ||
|
|
32564d64d1 | ||
|
|
897f1ab323 | ||
|
|
4e3168e2e3 | ||
|
|
8a65172927 | ||
|
|
778230dde1 | ||
|
|
6a78206c2e | ||
|
|
c519fb6fb6 | ||
|
|
96fa2668cc | ||
|
|
c32dc7664e | ||
|
|
2c14d5dd57 | ||
|
|
945f4696d7 | ||
|
|
f2243f2874 | ||
|
|
52e24a4dd4 | ||
|
|
1644ca437c | ||
|
|
4482630f9a | ||
|
|
7bbe84feef | ||
|
|
c83fe0690b | ||
|
|
76e32e1bef | ||
|
|
92c599e1a2 | ||
|
|
1f74aa5c22 | ||
|
|
2525e8a005 | ||
|
|
7c661ce408 | ||
|
|
2d278bf4c7 | ||
|
|
fc99baa0c6 | ||
|
|
0b739b7d77 | ||
|
|
2fbf4a0518 | ||
|
|
9514602f91 | ||
|
|
adf8dd13dd | ||
|
|
943561ea65 | ||
|
|
c5698d74ce | ||
|
|
afadbb71c4 | ||
|
|
a74bab42e8 | ||
|
|
c411ced286 | ||
|
|
b0dc6ff182 | ||
|
|
cbcc0e4a86 | ||
|
|
133d092d02 | ||
|
|
fa583d41d7 | ||
|
|
c63ddf3e9c | ||
|
|
6152615ce5 | ||
|
|
a379e1f998 | ||
|
|
b3d5d38cc4 | ||
|
|
ede1bacf2b | ||
|
|
4823b71d96 | ||
|
|
aa77d82a23 | ||
|
|
0a3745f8f5 | ||
|
|
685914dafa | ||
|
|
2d4ce73664 | ||
|
|
7b5e730f72 | ||
|
|
10bc859892 | ||
|
|
2e064580ed | ||
|
|
8357465e9c | ||
|
|
81d3479bff | ||
|
|
89f92f9676 | ||
|
|
5888b76afb | ||
|
|
e1db0550b1 | ||
|
|
d0f05e4efe | ||
|
|
b18b5a340c | ||
|
|
6e5b811b87 | ||
|
|
e71d1962b5 | ||
|
|
a4de59dac4 | ||
|
|
67c3ba7caf | ||
|
|
4b261febfd | ||
|
|
6b6da17610 | ||
|
|
8ed93e8cf7 | ||
|
|
31520d6f65 | ||
|
|
033221398e | ||
|
|
3a4b7fe3f5 | ||
|
|
a016e4a236 | ||
|
|
6f0901f980 | ||
|
|
fbb643bfa8 | ||
|
|
32c1de3a34 | ||
|
|
b5a85fd57c | ||
|
|
c0906521aa | ||
|
|
5b10d9e786 | ||
|
|
75c7ab647f | ||
|
|
38e0f21e93 | ||
|
|
02658a3801 | ||
|
|
72bde84d92 | ||
|
|
f3f9186ce7 | ||
|
|
be0cc2f3d5 | ||
|
|
826c3eb021 | ||
|
|
bf70cadc02 | ||
|
|
8284eb50f0 | ||
|
|
160c11043f | ||
|
|
6e5a0fd085 | ||
|
|
57ef099e97 | ||
|
|
944b95d796 | ||
|
|
dfa9534bd1 | ||
|
|
c186ed5ee0 | ||
|
|
4dc2aaa046 | ||
|
|
b3e1837cfc | ||
|
|
94c00f12f7 | ||
|
|
df5c81164f | ||
|
|
17df8deb86 | ||
|
|
54f9fc4bcd | ||
|
|
6d88cd03f7 | ||
|
|
ce21fdab79 | ||
|
|
bac748a525 | ||
|
|
d9b8d18a67 | ||
|
|
15b51eaa6d | ||
|
|
ae1aa27d13 | ||
|
|
f150163bc5 | ||
|
|
142264d6b6 | ||
|
|
a69b1b92b2 | ||
|
|
214e405c32 | ||
|
|
99d6ff332f | ||
|
|
2d726de3f0 | ||
|
|
212118ba8c | ||
|
|
2383d8d507 | ||
|
|
94f138f64b | ||
|
|
a5ffbe3a5f | ||
|
|
7a5a54ab5e | ||
|
|
b5f3addae5 | ||
|
|
2db071d0ca | ||
|
|
5b59c9e54d | ||
|
|
60fb21cd1b | ||
|
|
0f1072c302 | ||
|
|
8069d925fe | ||
|
|
69905b633b | ||
|
|
1aba89e810 | ||
|
|
2548e6ea8f | ||
|
|
0026590058 | ||
|
|
6bd7d4f05c | ||
|
|
c26c2ad8f6 | ||
|
|
ae4193d6f9 | ||
|
|
3fed492a5b | ||
|
|
3e3f6f92ed | ||
|
|
b026f8eadd | ||
|
|
adcf3be520 | ||
|
|
728e18b344 | ||
|
|
65bb7d4de7 | ||
|
|
1472902de4 | ||
|
|
dd1474c8d3 | ||
|
|
830309b544 | ||
|
|
84a60128a2 | ||
|
|
ec34df50ac | ||
|
|
9edf6e6cc3 | ||
|
|
99ddda2848 | ||
|
|
f351faa422 | ||
|
|
a4dee3dbca | ||
|
|
9be861a84b | ||
|
|
726aff686b | ||
|
|
34b0b7269f | ||
|
|
2ac60d66f5 | ||
|
|
77cc151455 | ||
|
|
d63392aea2 | ||
|
|
07b5f78318 | ||
|
|
37e159dd21 | ||
|
|
cd1c756e24 | ||
|
|
66ea6a7609 | ||
|
|
0efdf7096b | ||
|
|
80dad0d5d0 | ||
|
|
10ec39ab60 | ||
|
|
bd7518ca33 | ||
|
|
8b264db28a | ||
|
|
c44ca6adc1 | ||
|
|
96db48626a | ||
|
|
7705e43ce4 | ||
|
|
8da65a92e9 | ||
|
|
6eb9a37a07 | ||
|
|
6290effd93 | ||
|
|
f3209d282d | ||
|
|
a05d440ad6 | ||
|
|
87e28277ad | ||
|
|
935f7ead89 | ||
|
|
84042f1736 |
@@ -46,6 +46,8 @@ nb-configuration.xml
|
|||||||
*.user
|
*.user
|
||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
*.VC.db
|
||||||
|
*.VC.opendb
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
|
|||||||
Generated
+66
-92
@@ -24,17 +24,16 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent() {
|
private void InitializeComponent() {
|
||||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||||
this.Column0 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
|
||||||
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
|
||||||
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
|
||||||
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
|
||||||
this.bGlobals = new System.Windows.Forms.Button();
|
this.bGlobals = new System.Windows.Forms.Button();
|
||||||
this.bMapVars = new System.Windows.Forms.Button();
|
this.bMapVars = new System.Windows.Forms.Button();
|
||||||
this.bCritters = new System.Windows.Forms.Button();
|
this.bCritters = new System.Windows.Forms.Button();
|
||||||
this.bSGlobals = new System.Windows.Forms.Button();
|
this.bSGlobals = new System.Windows.Forms.Button();
|
||||||
this.bArrays = new System.Windows.Forms.Button();
|
this.bArrays = new System.Windows.Forms.Button();
|
||||||
|
this.Column0 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.bEdit = new System.Windows.Forms.Button();
|
this.bEdit = new System.Windows.Forms.Button();
|
||||||
this.bCrittersLvar = new System.Windows.Forms.Button();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@@ -42,38 +41,84 @@
|
|||||||
//
|
//
|
||||||
this.dataGridView1.AllowUserToAddRows = false;
|
this.dataGridView1.AllowUserToAddRows = false;
|
||||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||||
this.dataGridView1.AllowUserToResizeRows = false;
|
|
||||||
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.dataGridView1.ColumnHeadersHeight = 22;
|
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||||
this.Column0,
|
this.Column0,
|
||||||
this.Column1,
|
this.Column1,
|
||||||
this.Column2,
|
this.Column2,
|
||||||
this.Column3});
|
this.Column3});
|
||||||
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
|
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
|
||||||
this.dataGridView1.MultiSelect = false;
|
|
||||||
this.dataGridView1.Name = "dataGridView1";
|
this.dataGridView1.Name = "dataGridView1";
|
||||||
this.dataGridView1.RowHeadersVisible = false;
|
this.dataGridView1.Size = new System.Drawing.Size(444, 215);
|
||||||
this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
|
|
||||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
|
||||||
this.dataGridView1.Size = new System.Drawing.Size(561, 354);
|
|
||||||
this.dataGridView1.TabIndex = 0;
|
this.dataGridView1.TabIndex = 0;
|
||||||
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
|
|
||||||
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
|
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
|
||||||
this.dataGridView1.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dataGridView1_RowsAdded);
|
//
|
||||||
|
// bGlobals
|
||||||
|
//
|
||||||
|
this.bGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.bGlobals.Location = new System.Drawing.Point(12, 233);
|
||||||
|
this.bGlobals.Name = "bGlobals";
|
||||||
|
this.bGlobals.Size = new System.Drawing.Size(100, 23);
|
||||||
|
this.bGlobals.TabIndex = 1;
|
||||||
|
this.bGlobals.Text = "Globals";
|
||||||
|
this.bGlobals.UseVisualStyleBackColor = true;
|
||||||
|
this.bGlobals.Click += new System.EventHandler(this.bGlobals_Click);
|
||||||
|
//
|
||||||
|
// bMapVars
|
||||||
|
//
|
||||||
|
this.bMapVars.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.bMapVars.Location = new System.Drawing.Point(118, 233);
|
||||||
|
this.bMapVars.Name = "bMapVars";
|
||||||
|
this.bMapVars.Size = new System.Drawing.Size(100, 23);
|
||||||
|
this.bMapVars.TabIndex = 2;
|
||||||
|
this.bMapVars.Text = "Map variables";
|
||||||
|
this.bMapVars.UseVisualStyleBackColor = true;
|
||||||
|
this.bMapVars.Click += new System.EventHandler(this.bMapVars_Click);
|
||||||
|
//
|
||||||
|
// bCritters
|
||||||
|
//
|
||||||
|
this.bCritters.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.bCritters.Location = new System.Drawing.Point(118, 262);
|
||||||
|
this.bCritters.Name = "bCritters";
|
||||||
|
this.bCritters.Size = new System.Drawing.Size(100, 23);
|
||||||
|
this.bCritters.TabIndex = 3;
|
||||||
|
this.bCritters.Text = "Critters";
|
||||||
|
this.bCritters.UseVisualStyleBackColor = true;
|
||||||
|
this.bCritters.Click += new System.EventHandler(this.bCritters_Click);
|
||||||
|
//
|
||||||
|
// bSGlobals
|
||||||
|
//
|
||||||
|
this.bSGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.bSGlobals.Location = new System.Drawing.Point(225, 233);
|
||||||
|
this.bSGlobals.Name = "bSGlobals";
|
||||||
|
this.bSGlobals.Size = new System.Drawing.Size(100, 23);
|
||||||
|
this.bSGlobals.TabIndex = 4;
|
||||||
|
this.bSGlobals.Text = "sfall globals";
|
||||||
|
this.bSGlobals.UseVisualStyleBackColor = true;
|
||||||
|
this.bSGlobals.Click += new System.EventHandler(this.bSGlobals_Click);
|
||||||
|
//
|
||||||
|
// bArrays
|
||||||
|
//
|
||||||
|
this.bArrays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.bArrays.Location = new System.Drawing.Point(12, 262);
|
||||||
|
this.bArrays.Name = "bArrays";
|
||||||
|
this.bArrays.Size = new System.Drawing.Size(100, 23);
|
||||||
|
this.bArrays.TabIndex = 5;
|
||||||
|
this.bArrays.Text = "sfall arrays";
|
||||||
|
this.bArrays.UseVisualStyleBackColor = true;
|
||||||
|
this.bArrays.Click += new System.EventHandler(this.bArrays_Click);
|
||||||
//
|
//
|
||||||
// Column0
|
// Column0
|
||||||
//
|
//
|
||||||
this.Column0.HeaderText = "ID";
|
this.Column0.HeaderText = "ID";
|
||||||
this.Column0.Name = "Column0";
|
this.Column0.Name = "Column0";
|
||||||
this.Column0.ReadOnly = true;
|
this.Column0.ReadOnly = true;
|
||||||
this.Column0.Width = 50;
|
|
||||||
//
|
//
|
||||||
// Column1
|
// Column1
|
||||||
//
|
//
|
||||||
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
|
||||||
this.Column1.HeaderText = "Name";
|
this.Column1.HeaderText = "Name";
|
||||||
this.Column1.Name = "Column1";
|
this.Column1.Name = "Column1";
|
||||||
this.Column1.ReadOnly = true;
|
this.Column1.ReadOnly = true;
|
||||||
@@ -88,65 +133,10 @@
|
|||||||
this.Column3.HeaderText = "Value (Float)";
|
this.Column3.HeaderText = "Value (Float)";
|
||||||
this.Column3.Name = "Column3";
|
this.Column3.Name = "Column3";
|
||||||
//
|
//
|
||||||
// bGlobals
|
|
||||||
//
|
|
||||||
this.bGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.bGlobals.Location = new System.Drawing.Point(12, 372);
|
|
||||||
this.bGlobals.Name = "bGlobals";
|
|
||||||
this.bGlobals.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bGlobals.TabIndex = 1;
|
|
||||||
this.bGlobals.Text = "Globals";
|
|
||||||
this.bGlobals.UseVisualStyleBackColor = true;
|
|
||||||
this.bGlobals.Click += new System.EventHandler(this.bGlobals_Click);
|
|
||||||
//
|
|
||||||
// bMapVars
|
|
||||||
//
|
|
||||||
this.bMapVars.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.bMapVars.Location = new System.Drawing.Point(118, 372);
|
|
||||||
this.bMapVars.Name = "bMapVars";
|
|
||||||
this.bMapVars.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bMapVars.TabIndex = 2;
|
|
||||||
this.bMapVars.Text = "Map variables";
|
|
||||||
this.bMapVars.UseVisualStyleBackColor = true;
|
|
||||||
this.bMapVars.Click += new System.EventHandler(this.bMapVars_Click);
|
|
||||||
//
|
|
||||||
// bCritters
|
|
||||||
//
|
|
||||||
this.bCritters.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.bCritters.Location = new System.Drawing.Point(12, 401);
|
|
||||||
this.bCritters.Name = "bCritters";
|
|
||||||
this.bCritters.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bCritters.TabIndex = 3;
|
|
||||||
this.bCritters.Text = "Critters";
|
|
||||||
this.bCritters.UseVisualStyleBackColor = true;
|
|
||||||
this.bCritters.Click += new System.EventHandler(this.bCritters_Click);
|
|
||||||
//
|
|
||||||
// bSGlobals
|
|
||||||
//
|
|
||||||
this.bSGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.bSGlobals.Location = new System.Drawing.Point(367, 372);
|
|
||||||
this.bSGlobals.Name = "bSGlobals";
|
|
||||||
this.bSGlobals.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bSGlobals.TabIndex = 4;
|
|
||||||
this.bSGlobals.Text = "sfall globals";
|
|
||||||
this.bSGlobals.UseVisualStyleBackColor = true;
|
|
||||||
this.bSGlobals.Click += new System.EventHandler(this.bSGlobals_Click);
|
|
||||||
//
|
|
||||||
// bArrays
|
|
||||||
//
|
|
||||||
this.bArrays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.bArrays.Location = new System.Drawing.Point(473, 372);
|
|
||||||
this.bArrays.Name = "bArrays";
|
|
||||||
this.bArrays.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bArrays.TabIndex = 5;
|
|
||||||
this.bArrays.Text = "sfall arrays";
|
|
||||||
this.bArrays.UseVisualStyleBackColor = true;
|
|
||||||
this.bArrays.Click += new System.EventHandler(this.bArrays_Click);
|
|
||||||
//
|
|
||||||
// bEdit
|
// bEdit
|
||||||
//
|
//
|
||||||
this.bEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.bEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.bEdit.Location = new System.Drawing.Point(473, 401);
|
this.bEdit.Location = new System.Drawing.Point(225, 262);
|
||||||
this.bEdit.Name = "bEdit";
|
this.bEdit.Name = "bEdit";
|
||||||
this.bEdit.Size = new System.Drawing.Size(100, 23);
|
this.bEdit.Size = new System.Drawing.Size(100, 23);
|
||||||
this.bEdit.TabIndex = 6;
|
this.bEdit.TabIndex = 6;
|
||||||
@@ -154,24 +144,11 @@
|
|||||||
this.bEdit.UseVisualStyleBackColor = true;
|
this.bEdit.UseVisualStyleBackColor = true;
|
||||||
this.bEdit.Click += new System.EventHandler(this.bEdit_Click);
|
this.bEdit.Click += new System.EventHandler(this.bEdit_Click);
|
||||||
//
|
//
|
||||||
// bCrittersLvar
|
|
||||||
//
|
|
||||||
this.bCrittersLvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.bCrittersLvar.Enabled = false;
|
|
||||||
this.bCrittersLvar.Location = new System.Drawing.Point(118, 401);
|
|
||||||
this.bCrittersLvar.Name = "bCrittersLvar";
|
|
||||||
this.bCrittersLvar.Size = new System.Drawing.Size(100, 23);
|
|
||||||
this.bCrittersLvar.TabIndex = 7;
|
|
||||||
this.bCrittersLvar.Text = "Local variables";
|
|
||||||
this.bCrittersLvar.UseVisualStyleBackColor = true;
|
|
||||||
this.bCrittersLvar.Click += new System.EventHandler(this.bCrittersLvar_Click);
|
|
||||||
//
|
|
||||||
// DebugEditor
|
// DebugEditor
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(585, 436);
|
this.ClientSize = new System.Drawing.Size(468, 297);
|
||||||
this.Controls.Add(this.bCrittersLvar);
|
|
||||||
this.Controls.Add(this.bEdit);
|
this.Controls.Add(this.bEdit);
|
||||||
this.Controls.Add(this.bArrays);
|
this.Controls.Add(this.bArrays);
|
||||||
this.Controls.Add(this.bSGlobals);
|
this.Controls.Add(this.bSGlobals);
|
||||||
@@ -179,10 +156,8 @@
|
|||||||
this.Controls.Add(this.bMapVars);
|
this.Controls.Add(this.bMapVars);
|
||||||
this.Controls.Add(this.bGlobals);
|
this.Controls.Add(this.bGlobals);
|
||||||
this.Controls.Add(this.dataGridView1);
|
this.Controls.Add(this.dataGridView1);
|
||||||
this.MinimumSize = new System.Drawing.Size(450, 300);
|
|
||||||
this.Name = "DebugEditor";
|
this.Name = "DebugEditor";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.Text = "DebugEditor";
|
||||||
this.Text = "sfall Debug Editor";
|
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DebugEditor_FormClosing);
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DebugEditor_FormClosing);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
@@ -197,12 +172,11 @@
|
|||||||
private System.Windows.Forms.Button bCritters;
|
private System.Windows.Forms.Button bCritters;
|
||||||
private System.Windows.Forms.Button bSGlobals;
|
private System.Windows.Forms.Button bSGlobals;
|
||||||
private System.Windows.Forms.Button bArrays;
|
private System.Windows.Forms.Button bArrays;
|
||||||
private System.Windows.Forms.Button bEdit;
|
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column0;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column0;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
|
||||||
private System.Windows.Forms.Button bCrittersLvar;
|
private System.Windows.Forms.Button bEdit;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+61
-146
@@ -11,9 +11,7 @@ using BinaryReader = System.IO.BinaryReader;
|
|||||||
using BinaryWriter=System.IO.BinaryWriter;
|
using BinaryWriter=System.IO.BinaryWriter;
|
||||||
|
|
||||||
namespace FalloutClient {
|
namespace FalloutClient {
|
||||||
|
public partial class DebugEditor : Form {
|
||||||
public partial class DebugEditor : Form
|
|
||||||
{
|
|
||||||
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
|
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
|
||||||
private struct ByteConverter {
|
private struct ByteConverter {
|
||||||
[System.Runtime.InteropServices.FieldOffset(0)]
|
[System.Runtime.InteropServices.FieldOffset(0)]
|
||||||
@@ -38,7 +36,7 @@ namespace FalloutClient {
|
|||||||
|
|
||||||
private static ByteConverter converter=new ByteConverter();
|
private static ByteConverter converter=new ByteConverter();
|
||||||
|
|
||||||
private enum Mode { Globals, MapVars, SGlobals, Arrays, Critters, LocalVars }
|
private enum Mode { Globals, MapVars, SGlobals, Arrays, Critters }
|
||||||
|
|
||||||
private readonly EditorConnection connection;
|
private readonly EditorConnection connection;
|
||||||
private Mode mode;
|
private Mode mode;
|
||||||
@@ -47,61 +45,61 @@ namespace FalloutClient {
|
|||||||
private readonly Dictionary<uint, string> CritNames=new Dictionary<uint, string>();
|
private readonly Dictionary<uint, string> CritNames=new Dictionary<uint, string>();
|
||||||
|
|
||||||
private void Redraw() {
|
private void Redraw() {
|
||||||
bCrittersLvar.Enabled = false;
|
|
||||||
bEdit.Enabled = false;
|
|
||||||
Column2.ReadOnly = false;
|
|
||||||
Column3.ReadOnly = false;
|
|
||||||
Column2.HeaderText = "Value (Int)";
|
|
||||||
Column3.HeaderText = "Value (Float)";
|
|
||||||
dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect;
|
|
||||||
dataGridView1.SuspendLayout();
|
dataGridView1.SuspendLayout();
|
||||||
dataGridView1.Rows.Clear();
|
dataGridView1.Rows.Clear();
|
||||||
switch(mode) {
|
switch(mode) {
|
||||||
case Mode.Globals:
|
case Mode.Globals:
|
||||||
|
Column2.ReadOnly=false;
|
||||||
|
Column3.ReadOnly=false;
|
||||||
|
Column2.HeaderText="Value (Int)";
|
||||||
|
Column3.HeaderText="Value (Float)";
|
||||||
|
bEdit.Enabled=false;
|
||||||
for(int i=0;i<connection.Globals.Length;i++) {
|
for(int i=0;i<connection.Globals.Length;i++) {
|
||||||
string name=GlobNames.ContainsKey(i)?GlobNames[i]:"";
|
string name=GlobNames.ContainsKey(i)?GlobNames[i]:"";
|
||||||
dataGridView1.Rows.Add(i, name, connection.Globals[i], converter.GetAsFloat(connection.Globals[i]));
|
dataGridView1.Rows.Add(i, name, connection.Globals[i], converter.GetAsFloat(connection.Globals[i]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Mode.MapVars:
|
case Mode.MapVars:
|
||||||
|
Column2.ReadOnly=false;
|
||||||
|
Column3.ReadOnly=false;
|
||||||
|
Column2.HeaderText="Value (Int)";
|
||||||
|
Column3.HeaderText="Value (Float)";
|
||||||
|
bEdit.Enabled=false;
|
||||||
for(int i=0;i<connection.MapVars.Length;i++) {
|
for(int i=0;i<connection.MapVars.Length;i++) {
|
||||||
dataGridView1.Rows.Add(i, "", connection.MapVars[i], converter.GetAsFloat(connection.MapVars[i]));
|
dataGridView1.Rows.Add(i, "", connection.MapVars[i], converter.GetAsFloat(connection.MapVars[i]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Mode.SGlobals:
|
case Mode.SGlobals:
|
||||||
|
Column2.ReadOnly=false;
|
||||||
|
Column3.ReadOnly=false;
|
||||||
|
Column2.HeaderText="Value (Int)";
|
||||||
|
Column3.HeaderText="Value (Float)";
|
||||||
|
bEdit.Enabled=false;
|
||||||
for(int i=0;i<connection.SGlobalKeys.Length;i++) {
|
for(int i=0;i<connection.SGlobalKeys.Length;i++) {
|
||||||
string s = connection.SGlobalKeys[i] > 0xffffffff
|
string s=connection.SGlobalKeys[i]>0xffffffff?new string(System.Text.ASCIIEncoding.ASCII.GetChars(converter.GetAsBytes(connection.SGlobalKeys[i]))):("0x"+connection.SGlobalKeys[i].ToString("x"));
|
||||||
? new string(System.Text.ASCIIEncoding.ASCII.GetChars(converter.GetAsBytes(connection.SGlobalKeys[i])))
|
|
||||||
: (connection.SGlobalKeys[i].ToString());
|
|
||||||
dataGridView1.Rows.Add(s, "", connection.sGlobals[i], converter.GetAsFloat(connection.sGlobals[i]));
|
dataGridView1.Rows.Add(s, "", connection.sGlobals[i], converter.GetAsFloat(connection.sGlobals[i]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Mode.Arrays:
|
case Mode.Arrays:
|
||||||
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
|
|
||||||
Column2.ReadOnly=true;
|
Column2.ReadOnly=true;
|
||||||
Column3.ReadOnly=true;
|
Column3.ReadOnly=true;
|
||||||
Column2.HeaderText = "Array size";
|
Column2.HeaderText="Array length";
|
||||||
Column3.HeaderText = "Array flags";
|
Column3.HeaderText="Element size";
|
||||||
bEdit.Enabled=true;
|
bEdit.Enabled=true;
|
||||||
for(int i=0;i<connection.Arrays.Length;i++) {
|
for(int i=0;i<connection.Arrays.Length;i++) {
|
||||||
bool isMap = connection.ArrayIsMap[i];
|
dataGridView1.Rows.Add(connection.Arrays[i], "", connection.ArrayLengths[i], connection.ArrayDataSizes[i]);
|
||||||
int arrlen = connection.ArrayLengths[i];
|
|
||||||
if (isMap) arrlen /= 2;
|
|
||||||
dataGridView1.Rows.Add(connection.Arrays[i], isMap ? "Map" : "", arrlen, "0x" + connection.ArrayFlag[i].ToString("x").ToUpper());
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Mode.Critters:
|
case Mode.Critters:
|
||||||
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
|
|
||||||
Column2.ReadOnly=true;
|
Column2.ReadOnly=true;
|
||||||
Column3.ReadOnly=true;
|
Column3.ReadOnly=true;
|
||||||
Column2.HeaderText = "PID";
|
Column2.HeaderText="pid";
|
||||||
Column3.HeaderText = "Pointer";
|
Column3.HeaderText="";
|
||||||
bEdit.Enabled=true;
|
bEdit.Enabled=true;
|
||||||
bCrittersLvar.Enabled = true;
|
for(int i=0;i<connection.Critters.Length;i++) {
|
||||||
for (int i = 0; i < connection.Critters.Length / 2; i++) {
|
uint modcrit=(connection.Critters[i]&0xfffff);
|
||||||
uint modcrit = (connection.Critters[i, 0] & 0xfffff);
|
|
||||||
string name=CritNames.ContainsKey(modcrit)?CritNames[modcrit]:"";
|
string name=CritNames.ContainsKey(modcrit)?CritNames[modcrit]:"";
|
||||||
dataGridView1.Rows.Add(i + 1, name, connection.Critters[i, 0].ToString("x").ToUpper(), connection.Critters[i, 1].ToString());
|
dataGridView1.Rows.Add(i+1, name, connection.Critters[i].ToString("x"), "");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -112,15 +110,7 @@ namespace FalloutClient {
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.connection=connection;
|
this.connection=connection;
|
||||||
mode=Mode.Globals;
|
mode=Mode.Globals;
|
||||||
if (File.Exists(".\\data\\data\\vault13.gam")) {
|
if(File.Exists("globals.txt")) {
|
||||||
StreamReader sr=new StreamReader(".\\data\\data\\vault13.gam");
|
|
||||||
int gvar = 0;
|
|
||||||
while (!sr.EndOfStream) {
|
|
||||||
string line = sr.ReadLine().TrimStart();
|
|
||||||
if (line.StartsWith("GVAR_")) GlobNames[gvar++] = line.Remove(line.IndexOf(':')).TrimEnd();
|
|
||||||
}
|
|
||||||
sr.Close();
|
|
||||||
} else if (File.Exists("globals.txt")) {
|
|
||||||
StreamReader sr=new StreamReader("globals.txt");
|
StreamReader sr=new StreamReader("globals.txt");
|
||||||
while(!sr.EndOfStream) {
|
while(!sr.EndOfStream) {
|
||||||
string[] line=sr.ReadLine().Split(' ');
|
string[] line=sr.ReadLine().Split(' ');
|
||||||
@@ -189,9 +179,8 @@ namespace FalloutClient {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(e.ColumnIndex==2) {
|
if(e.ColumnIndex==2) {
|
||||||
string str = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
|
|
||||||
int val;
|
int val;
|
||||||
if (str == null || !int.TryParse(str, out val)) {
|
if(!int.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out val)) {
|
||||||
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
|
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
|
||||||
} else {
|
} else {
|
||||||
array[e.RowIndex]=val;
|
array[e.RowIndex]=val;
|
||||||
@@ -200,9 +189,8 @@ namespace FalloutClient {
|
|||||||
connection.WriteInt(val);
|
connection.WriteInt(val);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
string str = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
|
|
||||||
float val;
|
float val;
|
||||||
if (str == null || !float.TryParse(str, out val)) {
|
if(!float.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out val)) {
|
||||||
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
|
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
|
||||||
} else {
|
} else {
|
||||||
array[e.RowIndex]=converter.GetAsInt(val);
|
array[e.RowIndex]=converter.GetAsInt(val);
|
||||||
@@ -214,28 +202,21 @@ namespace FalloutClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void bEdit_Click(object sender, EventArgs e) {
|
private void bEdit_Click(object sender, EventArgs e) {
|
||||||
if (dataGridView1.SelectedRows.Count == 0) return;
|
if(dataGridView1.SelectedRows.Count!=1) return;
|
||||||
int i = (int)dataGridView1.SelectedRows[0].Tag;
|
int i=dataGridView1.SelectedRows[0].Index;
|
||||||
switch(mode) {
|
switch(mode) {
|
||||||
case Mode.Arrays: {
|
case Mode.Arrays: {
|
||||||
DataType[] types=new DataType[connection.ArrayLengths[i]];
|
DataType[] types=new DataType[connection.ArrayLengths[i]];
|
||||||
int[] lenType = new int[connection.ArrayLengths[i]];
|
|
||||||
string[] strings=new string[connection.ArrayLengths[i]];
|
string[] strings=new string[connection.ArrayLengths[i]];
|
||||||
connection.WriteDataType(DataTypeSend.GetArray); // code
|
connection.WriteDataType(DataTypeSend.GetArray);
|
||||||
connection.WriteInt(i); // index
|
connection.WriteInt(i);
|
||||||
int lenData = 0;
|
for(int j=0;j<strings.Length;j++) types[j]=(DataType)connection.ReadInt();
|
||||||
for (int j = 0; j < strings.Length; j++) {
|
byte[] buf=connection.ReadBytes(connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
|
||||||
types[j] = (DataType)connection.ReadInt();
|
MemoryStream ms=new MemoryStream(buf);
|
||||||
lenType[j] = connection.ReadInt(); // len data of type
|
BinaryReader br=new BinaryReader(ms);
|
||||||
lenData += lenType[j];
|
|
||||||
}
|
|
||||||
byte[] buf = connection.ReadBytes(lenData); // read data
|
|
||||||
BinaryReader br = new BinaryReader(new MemoryStream(buf));
|
|
||||||
for(int j=0;j<strings.Length;j++) {
|
for(int j=0;j<strings.Length;j++) {
|
||||||
|
ms.Position=j*connection.ArrayDataSizes[i];
|
||||||
switch(types[j]) {
|
switch(types[j]) {
|
||||||
case DataType.None:
|
|
||||||
br.BaseStream.Position += 4;
|
|
||||||
break;
|
|
||||||
case DataType.Int:
|
case DataType.Int:
|
||||||
strings[j]=br.ReadInt32().ToString();
|
strings[j]=br.ReadInt32().ToString();
|
||||||
break;
|
break;
|
||||||
@@ -243,21 +224,21 @@ namespace FalloutClient {
|
|||||||
strings[j]=br.ReadSingle().ToString();
|
strings[j]=br.ReadSingle().ToString();
|
||||||
break;
|
break;
|
||||||
case DataType.String:
|
case DataType.String:
|
||||||
byte[] bytes = br.ReadBytes(lenType[j]);
|
byte[] bytes=br.ReadBytes(connection.ArrayDataSizes[i]);
|
||||||
strings[j]=System.Text.Encoding.ASCII.GetString(bytes, 0, Array.IndexOf<byte>(bytes, 0));
|
strings[j]=System.Text.Encoding.ASCII.GetString(bytes, 0, Array.IndexOf<byte>(bytes, 0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
br.Close();
|
br.Close();
|
||||||
strings = EditorWindow.ShowEditor(this, null, types, strings, connection.ArrayIsMap[i]);
|
strings=EditorWindow.ShowEditor(null, types, strings);
|
||||||
if (strings != null) { // save
|
if(strings!=null) {
|
||||||
MemoryStream ms = new MemoryStream(lenData);
|
connection.WriteDataType(DataTypeSend.SetArray);
|
||||||
|
connection.WriteInt(i);
|
||||||
|
ms=new MemoryStream(connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
|
||||||
BinaryWriter bw=new BinaryWriter(ms);
|
BinaryWriter bw=new BinaryWriter(ms);
|
||||||
for(int j=0;j<strings.Length;j++) {
|
for(int j=0;j<strings.Length;j++) {
|
||||||
|
ms.Position=j*connection.ArrayDataSizes[i];
|
||||||
switch(types[j]) {
|
switch(types[j]) {
|
||||||
case DataType.None:
|
|
||||||
bw.BaseStream.Position += 4;
|
|
||||||
break;
|
|
||||||
case DataType.Int:
|
case DataType.Int:
|
||||||
bw.Write(int.Parse(strings[j]));
|
bw.Write(int.Parse(strings[j]));
|
||||||
break;
|
break;
|
||||||
@@ -266,120 +247,54 @@ namespace FalloutClient {
|
|||||||
break;
|
break;
|
||||||
case DataType.String:
|
case DataType.String:
|
||||||
byte[] bytes=System.Text.Encoding.ASCII.GetBytes(strings[j]);
|
byte[] bytes=System.Text.Encoding.ASCII.GetBytes(strings[j]);
|
||||||
if (bytes.Length < lenType[j])
|
if(bytes.Length<connection.ArrayDataSizes[i]) bw.Write(bytes);
|
||||||
bw.Write(bytes);
|
else bw.Write(bytes, 0, connection.ArrayDataSizes[i]-1);
|
||||||
else
|
bw.Write(0);
|
||||||
bw.Write(bytes, 0, lenType[j] - 1);
|
|
||||||
bw.Write((byte)0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// send data to sfall
|
connection.WriteBytes(ms.GetBuffer(), 0, connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
|
||||||
connection.WriteDataType(DataTypeSend.SetArray);
|
|
||||||
connection.WriteInt(i); // index
|
|
||||||
connection.WriteInt(lenData);
|
|
||||||
connection.WriteBytes(ms.GetBuffer(), 0, lenData);
|
|
||||||
bw.Close();
|
bw.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Mode.Critters: {
|
case Mode.Critters: {
|
||||||
DataType[] types = new DataType[33];
|
DataType[] types=new DataType[29];
|
||||||
string[] strings = new string[33];
|
string[] strings=new string[29];
|
||||||
string[] names = new string[33];
|
string[] names=new string[29];
|
||||||
connection.WriteDataType(DataTypeSend.RetrieveCritter);
|
connection.WriteDataType(DataTypeSend.RetrieveCritter);
|
||||||
connection.WriteInt(i);
|
connection.WriteInt(i);
|
||||||
BinaryReader br = new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(33 * 4)));
|
BinaryReader br=new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(29*4)));
|
||||||
for (int j = 0; j < 33; j++) {
|
for(int j=0;j<29;j++) {
|
||||||
types[j]=DataType.Int;
|
types[j]=DataType.Int;
|
||||||
strings[j]=br.ReadInt32().ToString();
|
strings[j]=br.ReadInt32().ToString();
|
||||||
|
names[j]="0x"+(j*4).ToString("x");
|
||||||
}
|
}
|
||||||
br.Close();
|
br.Close();
|
||||||
names[0] = " ID";
|
|
||||||
names[1]="Tile";
|
names[1]="Tile";
|
||||||
names[6] = " Current frame";
|
|
||||||
names[7] = " Rotation";
|
|
||||||
names[8] = " FID";
|
|
||||||
names[9] = " Flags";
|
|
||||||
names[10]="Elevation";
|
names[10]="Elevation";
|
||||||
names[11]="Inventory count";
|
names[11]="Inventory count";
|
||||||
names[13]="Inventory pointer";
|
names[13]="Inventory pointer";
|
||||||
names[14] = " Reaction";
|
|
||||||
names[15] = " Combat state";
|
|
||||||
names[16]="Current AP";
|
names[16]="Current AP";
|
||||||
names[17] = " Combat flags";
|
names[17]="Crippled limbs";
|
||||||
names[18] = " Last Turn Damage";
|
|
||||||
names[19] = " AI Packet";
|
|
||||||
names[20] = " Team";
|
|
||||||
names[21] = " Who hit me";
|
|
||||||
names[22]="HP";
|
names[22]="HP";
|
||||||
names[23]="Rads";
|
names[23]="Rads";
|
||||||
names[24]="Poison";
|
names[24]="Poison";
|
||||||
names[25]="Proto ID";
|
names[25]="Proto ID";
|
||||||
names[26] = " Combat ID";
|
strings=EditorWindow.ShowEditor(names, types, strings);
|
||||||
names[29] = " Outline flags";
|
|
||||||
names[30] = " Script ID";
|
|
||||||
names[32] = " Script index";
|
|
||||||
strings = EditorWindow.ShowEditor(this, names, types, strings);
|
|
||||||
if(strings!=null) {
|
if(strings!=null) {
|
||||||
MemoryStream ms = new MemoryStream(33 * 4);
|
MemoryStream ms=new MemoryStream(29*4);
|
||||||
BinaryWriter bw=new BinaryWriter(ms);
|
BinaryWriter bw=new BinaryWriter(ms);
|
||||||
for (int j = 0; j < 33; j++) bw.Write(int.Parse(strings[j]));
|
for(int j=0;j<29;j++) bw.Write(int.Parse(strings[j]));
|
||||||
connection.WriteDataType(DataTypeSend.SetCritter);
|
connection.WriteDataType(DataTypeSend.SetCritter);
|
||||||
connection.WriteInt(i);
|
connection.WriteInt(i);
|
||||||
connection.WriteBytes(ms.GetBuffer(), 0, 33 * 4);
|
connection.WriteBytes(ms.GetBuffer(), 0, 29*4);
|
||||||
bw.Close();
|
bw.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bCrittersLvar_Click(object sender, EventArgs e) {
|
|
||||||
if (dataGridView1.SelectedRows.Count == 0) return;
|
|
||||||
int i = (int)dataGridView1.SelectedRows[0].Tag;
|
|
||||||
|
|
||||||
connection.WriteDataType(DataTypeSend.RetrieveCritter);
|
|
||||||
connection.WriteInt(i);
|
|
||||||
BinaryReader br = new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(33 * 4)));
|
|
||||||
br.BaseStream.Position = 30 * 4;
|
|
||||||
int sid = br.ReadInt32();
|
|
||||||
br.Close();
|
|
||||||
if (sid != -1) {
|
|
||||||
connection.WriteDataType(DataTypeSend.GetLocal);
|
|
||||||
connection.WriteInt(sid);
|
|
||||||
int totalVar = connection.ReadInt();
|
|
||||||
string[] values = new string[totalVar];
|
|
||||||
if (totalVar > 0) {
|
|
||||||
br = new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(totalVar * 4)));
|
|
||||||
for (int j = 0; j < totalVar; j++) {
|
|
||||||
values[j] = br.ReadInt32().ToString();
|
|
||||||
}
|
|
||||||
br.Close();
|
|
||||||
}
|
|
||||||
values = EditorWindow.ShowEditor(this, values);
|
|
||||||
if (values != null) {
|
|
||||||
int countVar = values.Length;
|
|
||||||
MemoryStream ms = new MemoryStream(countVar * 4);
|
|
||||||
BinaryWriter bw = new BinaryWriter(ms);
|
|
||||||
for (int j = 0; j < countVar; j++) bw.Write(int.Parse(values[j]));
|
|
||||||
connection.WriteDataType(DataTypeSend.SetLocal);
|
|
||||||
connection.WriteInt(sid);
|
|
||||||
connection.WriteInt(countVar);
|
|
||||||
connection.WriteBytes(ms.GetBuffer(), 0, countVar * 4);
|
|
||||||
bw.Close();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
MessageBox.Show("This critter has no script attached.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
|
|
||||||
bEdit.PerformClick();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) {
|
|
||||||
dataGridView1.Rows[e.RowIndex].Tag = e.RowIndex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ using System.Net.Sockets;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace FalloutClient {
|
namespace FalloutClient {
|
||||||
|
class EditorConnection {
|
||||||
class EditorConnection
|
|
||||||
{
|
|
||||||
private TcpClient client;
|
private TcpClient client;
|
||||||
private NetworkStream stream;
|
private NetworkStream stream;
|
||||||
private BinaryReader br;
|
private BinaryReader br;
|
||||||
@@ -13,13 +11,12 @@ namespace FalloutClient {
|
|||||||
|
|
||||||
public readonly int[] Globals;
|
public readonly int[] Globals;
|
||||||
public readonly int[] MapVars;
|
public readonly int[] MapVars;
|
||||||
public readonly uint[,] Critters;
|
public readonly uint[] Critters;
|
||||||
public readonly ulong[] SGlobalKeys;
|
public readonly ulong[] SGlobalKeys;
|
||||||
public readonly int[] sGlobals;
|
public readonly int[] sGlobals;
|
||||||
public readonly uint[] Arrays;
|
public readonly uint[] Arrays;
|
||||||
public readonly int[] ArrayLengths;
|
public readonly int[] ArrayLengths;
|
||||||
public readonly int[] ArrayFlag;
|
public readonly int[] ArrayDataSizes;
|
||||||
public readonly bool[] ArrayIsMap;
|
|
||||||
|
|
||||||
public EditorConnection() {
|
public EditorConnection() {
|
||||||
System.Threading.Thread.Sleep(1000);
|
System.Threading.Thread.Sleep(1000);
|
||||||
@@ -33,9 +30,8 @@ namespace FalloutClient {
|
|||||||
sGlobals=new int[SGlobalKeys.Length];
|
sGlobals=new int[SGlobalKeys.Length];
|
||||||
Arrays=new uint[br.ReadInt32()];
|
Arrays=new uint[br.ReadInt32()];
|
||||||
ArrayLengths=new int[Arrays.Length];
|
ArrayLengths=new int[Arrays.Length];
|
||||||
ArrayFlag = new int[Arrays.Length];
|
ArrayDataSizes=new int[Arrays.Length];
|
||||||
ArrayIsMap = new bool[Arrays.Length];
|
Critters=new uint[br.ReadInt32()];
|
||||||
Critters = new uint[br.ReadInt32(), 2];
|
|
||||||
|
|
||||||
for(int i=0;i<Globals.Length;i++) Globals[i]=br.ReadInt32();
|
for(int i=0;i<Globals.Length;i++) Globals[i]=br.ReadInt32();
|
||||||
for(int i=0;i<MapVars.Length;i++) MapVars[i]=br.ReadInt32();
|
for(int i=0;i<MapVars.Length;i++) MapVars[i]=br.ReadInt32();
|
||||||
@@ -46,14 +42,10 @@ namespace FalloutClient {
|
|||||||
}
|
}
|
||||||
for(int i=0;i<Arrays.Length;i++) {
|
for(int i=0;i<Arrays.Length;i++) {
|
||||||
Arrays[i]=br.ReadUInt32();
|
Arrays[i]=br.ReadUInt32();
|
||||||
ArrayIsMap[i] = (br.ReadInt32() != 0);
|
|
||||||
ArrayLengths[i]=br.ReadInt32();
|
ArrayLengths[i]=br.ReadInt32();
|
||||||
ArrayFlag[i] = br.ReadInt32();
|
ArrayDataSizes[i]=br.ReadInt32();
|
||||||
}
|
|
||||||
for (int i = 0; i < Critters.Length / 2; i++) {
|
|
||||||
Critters[i, 0] = br.ReadUInt32();
|
|
||||||
Critters[i, 1] = br.ReadUInt32();
|
|
||||||
}
|
}
|
||||||
|
for(int i=0;i<Critters.Length;i++) Critters[i]=br.ReadUInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close() {
|
public void Close() {
|
||||||
@@ -67,12 +59,10 @@ namespace FalloutClient {
|
|||||||
stream.WriteByte((byte)type);
|
stream.WriteByte((byte)type);
|
||||||
//bw.Write((byte)type);
|
//bw.Write((byte)type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteByte(byte b) { bw.Write(b); }
|
public void WriteByte(byte b) { bw.Write(b); }
|
||||||
public void WriteInt16(short value) { bw.Write(value); }
|
public void WriteInt16(short value) { bw.Write(value); }
|
||||||
public void WriteInt(int value) { bw.Write(value); }
|
public void WriteInt(int value) { bw.Write(value); }
|
||||||
public void WriteBytes(byte[] buf) { bw.Write(buf); }
|
public void WriteBytes(byte[] buf) { bw.Write(buf); }
|
||||||
|
|
||||||
public void WriteBytes(byte[] buf, int start, int len) {
|
public void WriteBytes(byte[] buf, int start, int len) {
|
||||||
bw.Write(buf, start, len);
|
bw.Write(buf, start, len);
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+8
-38
@@ -29,14 +29,13 @@
|
|||||||
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.checkBox = new System.Windows.Forms.CheckBox();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// bSave
|
// bSave
|
||||||
//
|
//
|
||||||
this.bSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.bSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.bSave.Location = new System.Drawing.Point(12, 336);
|
this.bSave.Location = new System.Drawing.Point(281, 265);
|
||||||
this.bSave.Name = "bSave";
|
this.bSave.Name = "bSave";
|
||||||
this.bSave.Size = new System.Drawing.Size(75, 23);
|
this.bSave.Size = new System.Drawing.Size(75, 23);
|
||||||
this.bSave.TabIndex = 0;
|
this.bSave.TabIndex = 0;
|
||||||
@@ -47,7 +46,7 @@
|
|||||||
// bCancel
|
// bCancel
|
||||||
//
|
//
|
||||||
this.bCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.bCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.bCancel.Location = new System.Drawing.Point(371, 336);
|
this.bCancel.Location = new System.Drawing.Point(200, 265);
|
||||||
this.bCancel.Name = "bCancel";
|
this.bCancel.Name = "bCancel";
|
||||||
this.bCancel.Size = new System.Drawing.Size(75, 23);
|
this.bCancel.Size = new System.Drawing.Size(75, 23);
|
||||||
this.bCancel.TabIndex = 1;
|
this.bCancel.TabIndex = 1;
|
||||||
@@ -59,77 +58,49 @@
|
|||||||
//
|
//
|
||||||
this.dataGridView1.AllowUserToAddRows = false;
|
this.dataGridView1.AllowUserToAddRows = false;
|
||||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||||
this.dataGridView1.AllowUserToResizeRows = false;
|
|
||||||
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.dataGridView1.ColumnHeadersHeight = 22;
|
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||||
this.Column1,
|
this.Column1,
|
||||||
this.Column2,
|
this.Column2,
|
||||||
this.Column3});
|
this.Column3});
|
||||||
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
|
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
|
||||||
this.dataGridView1.MultiSelect = false;
|
|
||||||
this.dataGridView1.Name = "dataGridView1";
|
this.dataGridView1.Name = "dataGridView1";
|
||||||
this.dataGridView1.RowHeadersVisible = false;
|
this.dataGridView1.Size = new System.Drawing.Size(344, 247);
|
||||||
this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
|
|
||||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
|
|
||||||
this.dataGridView1.Size = new System.Drawing.Size(434, 318);
|
|
||||||
this.dataGridView1.TabIndex = 2;
|
this.dataGridView1.TabIndex = 2;
|
||||||
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
|
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
|
||||||
//
|
//
|
||||||
// Column1
|
// Column1
|
||||||
//
|
//
|
||||||
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
this.Column1.HeaderText = "Name";
|
||||||
this.Column1.HeaderText = "Element";
|
|
||||||
this.Column1.Name = "Column1";
|
this.Column1.Name = "Column1";
|
||||||
this.Column1.ReadOnly = true;
|
this.Column1.ReadOnly = true;
|
||||||
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
|
||||||
//
|
//
|
||||||
// Column2
|
// Column2
|
||||||
//
|
//
|
||||||
this.Column2.HeaderText = "Type";
|
this.Column2.HeaderText = "Type";
|
||||||
this.Column2.Name = "Column2";
|
this.Column2.Name = "Column2";
|
||||||
this.Column2.ReadOnly = true;
|
this.Column2.ReadOnly = true;
|
||||||
this.Column2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
|
||||||
this.Column2.Width = 75;
|
|
||||||
//
|
//
|
||||||
// Column3
|
// Column3
|
||||||
//
|
//
|
||||||
this.Column3.HeaderText = "Value";
|
this.Column3.HeaderText = "Value";
|
||||||
this.Column3.Name = "Column3";
|
this.Column3.Name = "Column3";
|
||||||
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
|
||||||
this.Column3.Width = 150;
|
|
||||||
//
|
|
||||||
// checkBox
|
|
||||||
//
|
|
||||||
this.checkBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.checkBox.AutoSize = true;
|
|
||||||
this.checkBox.Location = new System.Drawing.Point(103, 341);
|
|
||||||
this.checkBox.Name = "checkBox";
|
|
||||||
this.checkBox.Size = new System.Drawing.Size(91, 17);
|
|
||||||
this.checkBox.TabIndex = 3;
|
|
||||||
this.checkBox.Text = "Values in Hex";
|
|
||||||
this.checkBox.UseVisualStyleBackColor = true;
|
|
||||||
this.checkBox.Click += new System.EventHandler(this.checkBox_Click);
|
|
||||||
//
|
//
|
||||||
// EditorWindow
|
// EditorWindow
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(458, 371);
|
this.ClientSize = new System.Drawing.Size(368, 300);
|
||||||
this.Controls.Add(this.checkBox);
|
|
||||||
this.Controls.Add(this.dataGridView1);
|
this.Controls.Add(this.dataGridView1);
|
||||||
this.Controls.Add(this.bCancel);
|
this.Controls.Add(this.bCancel);
|
||||||
this.Controls.Add(this.bSave);
|
this.Controls.Add(this.bSave);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
|
|
||||||
this.MinimumSize = new System.Drawing.Size(300, 200);
|
|
||||||
this.Name = "EditorWindow";
|
this.Name = "EditorWindow";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.Text = "EditorWindow";
|
||||||
this.Text = "Edit Values";
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,6 +112,5 @@
|
|||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
|
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
|
||||||
private System.Windows.Forms.CheckBox checkBox;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+12
-83
@@ -3,93 +3,32 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace FalloutClient {
|
namespace FalloutClient {
|
||||||
|
|
||||||
public enum DataType : int { None=0, Int=1, Float=2, String=3 }
|
public enum DataType : int { None=0, Int=1, Float=2, String=3 }
|
||||||
|
public partial class EditorWindow : Form {
|
||||||
public partial class EditorWindow : Form
|
private readonly DataType[] types;
|
||||||
{
|
private readonly string[] values;
|
||||||
private readonly DataType[] types = null;
|
|
||||||
private string[] values;
|
|
||||||
private bool save;
|
private bool save;
|
||||||
private static bool valueInHex = false;
|
|
||||||
|
|
||||||
private void ConvertValues(bool toHex) {
|
private EditorWindow(string[] names, DataType[] types, string[] values) {
|
||||||
for (int i = 0; i < values.Length; i++) {
|
|
||||||
if (toHex) {
|
|
||||||
if (types == null || types[i] == DataType.Int) {
|
|
||||||
int val = int.Parse(values[i]);
|
|
||||||
values[i] = "0x" + val.ToString("x").ToUpper();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (types == null || types[i] == DataType.Int) {
|
|
||||||
values[i] = Convert.ToInt32(values[i], 16).ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private EditorWindow(string[] names, DataType[] types, string[] values, bool isMap) {
|
|
||||||
this.types=types;
|
this.types=types;
|
||||||
this.values=values;
|
this.values=values;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
checkBox.Checked = EditorWindow.valueInHex;
|
|
||||||
dataGridView1.SuspendLayout();
|
dataGridView1.SuspendLayout();
|
||||||
if (valueInHex) ConvertValues(true);
|
if(names==null) for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(i.ToString(), types[i].ToString(), values[i]);
|
||||||
if (names == null)
|
else for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(names[i], types[i].ToString(), values[i]);
|
||||||
for (int i = 0; i < types.Length; i++) {
|
|
||||||
string element = i.ToString();
|
|
||||||
if (isMap && (i % 2) == 0) element += " - Key";
|
|
||||||
dataGridView1.Rows.Add(element, types[i].ToString(), values[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
for (int i = 0; i < types.Length; i++) dataGridView1.Rows.Add("[0x" + (i * 4).ToString("x").ToUpper() + "]" + names[i], types[i].ToString(), values[i]);
|
|
||||||
dataGridView1.ResumeLayout();
|
dataGridView1.ResumeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string[] ShowEditor(DebugEditor form, string[] names, DataType[] types, string[] values, bool isMap = false) {
|
public static string[] ShowEditor(string[] names, DataType[] types, string[] values) {
|
||||||
EditorWindow editor = new EditorWindow(names, types, values, isMap);
|
EditorWindow editor=new EditorWindow(names, types, values);
|
||||||
editor.ShowDialog();
|
editor.ShowDialog();
|
||||||
if (editor.save) {
|
if(editor.save) return editor.values;
|
||||||
if (valueInHex) editor.ConvertValues(false);
|
else return null;
|
||||||
return editor.values;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private EditorWindow(string[] values) {
|
|
||||||
this.values = values;
|
|
||||||
InitializeComponent();
|
|
||||||
checkBox.Checked = EditorWindow.valueInHex;
|
|
||||||
dataGridView1.SuspendLayout();
|
|
||||||
if (valueInHex) ConvertValues(true);
|
|
||||||
for (int i = 0; i < values.Length; i++) {
|
|
||||||
dataGridView1.Rows.Add(i.ToString(), "Int", values[i]);
|
|
||||||
}
|
|
||||||
dataGridView1.ResumeLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string[] ShowEditor(DebugEditor form, string[] lvalues) {
|
|
||||||
EditorWindow editor = new EditorWindow(lvalues);
|
|
||||||
editor.ShowDialog();
|
|
||||||
if (editor.save) {
|
|
||||||
if (valueInHex) editor.ConvertValues(false);
|
|
||||||
return editor.values;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CheckInput(DataType type, string str) {
|
private bool CheckInput(DataType type, string str) {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case DataType.Int:
|
case DataType.Int:
|
||||||
if (valueInHex) {
|
|
||||||
try {
|
|
||||||
Convert.ToInt32(str, 16);
|
|
||||||
return true;
|
|
||||||
} catch (Exception) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int i;
|
int i;
|
||||||
return int.TryParse(str, out i);
|
return int.TryParse(str, out i);
|
||||||
case DataType.Float:
|
case DataType.Float:
|
||||||
@@ -101,10 +40,8 @@ namespace FalloutClient {
|
|||||||
|
|
||||||
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
|
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
|
||||||
string str=(string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
|
string str=(string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
|
||||||
if (str != null && CheckInput(((types != null) ? types[e.RowIndex] : DataType.Int), str))
|
if(CheckInput(types[e.RowIndex], str)) values[e.RowIndex]=str;
|
||||||
values[e.RowIndex] = str;
|
else dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=values[e.RowIndex];
|
||||||
else
|
|
||||||
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = values[e.RowIndex];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bCancel_Click(object sender, EventArgs e) {
|
private void bCancel_Click(object sender, EventArgs e) {
|
||||||
@@ -115,13 +52,5 @@ namespace FalloutClient {
|
|||||||
save=true;
|
save=true;
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBox_Click(object sender, EventArgs e) {
|
|
||||||
valueInHex = checkBox.Checked;
|
|
||||||
ConvertValues(valueInHex);
|
|
||||||
for (int i = 0; i < values.Length; i++) {
|
|
||||||
dataGridView1.Rows[i].Cells[2].Value = values[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,21 +16,6 @@
|
|||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
|
||||||
<PublishUrl>publish\</PublishUrl>
|
|
||||||
<Install>true</Install>
|
|
||||||
<InstallFrom>Disk</InstallFrom>
|
|
||||||
<UpdateEnabled>false</UpdateEnabled>
|
|
||||||
<UpdateMode>Foreground</UpdateMode>
|
|
||||||
<UpdateInterval>7</UpdateInterval>
|
|
||||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
|
||||||
<UpdatePeriodically>false</UpdatePeriodically>
|
|
||||||
<UpdateRequired>false</UpdateRequired>
|
|
||||||
<MapFileExtensions>true</MapFileExtensions>
|
|
||||||
<ApplicationRevision>0</ApplicationRevision>
|
|
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
|
||||||
<BootstrapperEnabled>false</BootstrapperEnabled>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -48,8 +33,6 @@
|
|||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
@@ -79,18 +62,6 @@
|
|||||||
<DependentUpon>EditorWindow.cs</DependentUpon>
|
<DependentUpon>EditorWindow.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
@@ -100,7 +71,6 @@
|
|||||||
</Target>
|
</Target>
|
||||||
-->
|
-->
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>copy "$(TargetPath)" "C:\Games\Fallout2\$(TargetName)$(TargetExt)"</PostBuildEvent>
|
||||||
</PostBuildEvent>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
# Visual Studio 2010
|
# Visual Studio 2010
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfallDebugEditor", "SfallDebugEditor.csproj", "{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPClient", "MPClient.csproj", "{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
+3
-11
@@ -15,22 +15,14 @@ namespace FalloutClient {
|
|||||||
if(args.Length==1&&args[0]=="-debugedit") {
|
if(args.Length==1&&args[0]=="-debugedit") {
|
||||||
Application.Run(new DebugEditor(new EditorConnection()));
|
Application.Run(new DebugEditor(new EditorConnection()));
|
||||||
} else {
|
} else {
|
||||||
MessageBox.Show("The debug editor can only be run from the game.",
|
throw new Exception("Multiplayer is no longer supported");
|
||||||
"sfall Debug Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum DataTypeSend {
|
enum DataTypeSend {
|
||||||
SetGlobal = 0,
|
Mouse=0, LMouseDown=1, LMouseUp=2, RMouseDown=3, RMouseUp=4, TakeChar=5, ReleaseChar=6,
|
||||||
SetMapVar = 1,
|
SetGlobal=0, SetMapVar=1, RetrieveCritter=2, SetCritter=3, SetSGlobal=4, GetArray=9, SetArray=10,
|
||||||
RetrieveCritter = 2,
|
|
||||||
SetCritter = 3,
|
|
||||||
SetSGlobal = 4,
|
|
||||||
GetArray = 9,
|
|
||||||
SetArray = 10,
|
|
||||||
GetLocal = 11,
|
|
||||||
SetLocal = 12,
|
|
||||||
Exit=254
|
Exit=254
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
|||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("sfall Debug Editor")]
|
[assembly: AssemblyTitle("FalloutClient")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("sfall")]
|
[assembly: AssemblyProduct("FalloutClient")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2019")]
|
[assembly: AssemblyCopyright("Copyright © 2009")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("4.1.9.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
[assembly: AssemblyFileVersion("4.1.9.0")]
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
A set of engine modifications for the classic game Fallout 2 in form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
|
A set of engine modifications for the classic game Fallout 2 in form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
|
||||||
|
|
||||||
**Engine modifications include:**
|
Engine modifications include:
|
||||||
- Better support for modern operating systems
|
- Better support for modern operating systems
|
||||||
- Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc.
|
- Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc.
|
||||||
- Bug fixes
|
- Bug fixes
|
||||||
|
|||||||
@@ -14,16 +14,15 @@ Part_0=1 ; Tell sfall that we want to modify the head entries
|
|||||||
|
|
||||||
[c_00_0] ; The entries for the head table of the men critter type.
|
[c_00_0] ; The entries for the head table of the men critter type.
|
||||||
e0_DamageMultiplier=100 ;First level critical
|
e0_DamageMultiplier=100 ;First level critical
|
||||||
e0_EffectFlags=0 ; The value of the flags (see DAM_* in Define.h)
|
e0_EffectFlags=0
|
||||||
; For multiple effects, use the sum of the flags (e.g. 2050 = knocked down + bypass armor)
|
|
||||||
e0_StatCheck=0
|
e0_StatCheck=0
|
||||||
e0_StatMod=0
|
e0_StatMod=0
|
||||||
e0_FailureEffect=0
|
e0_FailureEffect=0
|
||||||
e0_Message=0 ; This is an index into the msg file, not a string
|
e0_Message=0 ; This is an index into the msg file, not a string
|
||||||
e0_FailMessage=0
|
e0_FailMessage=0
|
||||||
;e1_... ; Second level critical
|
e1_... ; Second level critical
|
||||||
;... ; And so on up to the hardest hitting level 5 critical
|
... ; And so on up to the hardest hitting level 5 critical
|
||||||
;e5_...
|
e5_...
|
||||||
|
|
||||||
;You can skip any entries from this section to leave them at their defaults
|
;You can skip any entries from this section to leave them at their defaults
|
||||||
;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default
|
;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default
|
||||||
|
|||||||
@@ -1,62 +1,44 @@
|
|||||||
;This file handles modifications to perks and traits
|
;This file handles modifications to perks and traits
|
||||||
|
;When adding extra perks to a mod, it's advisable to use
|
||||||
;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make modifications
|
; the fake perk scripting functions rather than make modifications
|
||||||
; in this file, as some perks have hardcoded effects which may catch you out
|
; in this file, as some perks have hardcoded effects which may
|
||||||
|
; catch you out
|
||||||
;Since traits need to be picked before any scripts run, they have an additional NoHardcode option in this file which can
|
;Since traits need to be picked before any scripts run, they
|
||||||
|
; have an additional NoHardcode option in this file which can
|
||||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||||
|
|
||||||
[PerksTweak]
|
;Name=The name of the perk
|
||||||
;Change the penalty distance and distance bonus for 'Weapon Scope Range' weapon perk
|
;Desc=The description of the perk
|
||||||
;0 - no penalty, 8 - default penalty
|
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
||||||
WeaponScopeRangePenalty=8
|
;Ranks=The number of perk levels
|
||||||
;2 - no bonus, 5 - default bonus
|
;Level=The minimum required level
|
||||||
WeaponScopeRangeBonus=5
|
;Type=If 0, the perk checks only Skill1 for skill requirements; if 1, it checks
|
||||||
|
; Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
|
||||||
;Changes the distance bonus for 'Weapon Long Range' weapon perk
|
;Stat=The modified stat or -1 if you don't want to change any stats
|
||||||
;2 - no bonus, 4 - default bonus
|
;StatMag=The increased/decreased value to the modified stat
|
||||||
WeaponLongRangeBonus=4
|
;Skill1=The first skill (or -1 for none) to check, but if you set a specific bit
|
||||||
|
; (67108864 or 0x4000000), it checks GVAR. For example, if Skill1=67108864, then
|
||||||
;Changes the hit chance bonus for 'Weapon Accurate' weapon perk
|
; the perk will check GVAR_PLAYER_REPUTATION (67108864 + 0) on Skill1Mag value
|
||||||
;0 - no bonus, 200 - maximum bonus, 20 - default bonus
|
;Skill1Mag=Positive value is used as the minimum requirements of the first
|
||||||
WeaponAccurateBonus=20
|
; skill/GVAR, and a negative value is interpreted as the maximum requirement.
|
||||||
|
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill
|
||||||
;Changes the strength bonus for 'Weapon Handling' perk
|
; >= 100 and meets all other requirements, the perk will be available in the
|
||||||
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
|
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be
|
||||||
WeaponHandlingBonus=3
|
; available if player has big guns skill >= 120
|
||||||
|
;Skill2=The second skill/GVAR (or -1 for none) to check
|
||||||
;##############################################################################
|
;Skill2Mag=Same as Skill1Mag, but for Skill2
|
||||||
[Perks]
|
;STR-LCK=Positive values are used as minimum requirements of SPECIAL stats, and
|
||||||
;Set to 1 to enable the modifications for perks
|
; negative values are interpreted as maximum requirements. For some special
|
||||||
Enable=0
|
; perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat),
|
||||||
|
; the values are not used as requirements but to add to corresponding SPECIAL
|
||||||
;Name: The name of the perk (max 63 characters)
|
; stats
|
||||||
;Desc: The description of the perk (max 255 characters)
|
|
||||||
;Image: The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
|
||||||
;Ranks: The number of perk levels
|
|
||||||
;Level: The minimum required level
|
|
||||||
;Type: If 0, the perk checks only Skill1 for skill requirements; if 1, it checks Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
|
|
||||||
;Stat: The modified stat or -1 if you don't want to change any stats
|
|
||||||
;StatMag: The increased/decreased value to the modified stat
|
|
||||||
|
|
||||||
;Skill1/Skill2: The first/second skill (or -1 for none) to check, but if you set a specific bit 0x4000000 (67108864), it checks GVAR.
|
|
||||||
; For example, if Skill1=0x4000004, then the perk will check GVAR_BAD_MONSTER (0x4000000 + 4) on Skill1Mag value
|
|
||||||
|
|
||||||
;Skill1Mag/Skill2Mag: Positive value is used as the minimum requirements of the first/second skill/GVAR, and a negative value is interpreted as the maximum requirement.
|
|
||||||
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill >= 100 and meets all other requirements, the perk will be available in the
|
|
||||||
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be available if player has big guns skill >= 120
|
|
||||||
|
|
||||||
;STR-LCK: Positive values are used as minimum requirements of SPECIAL stats, and negative values are interpreted as maximum requirements.
|
|
||||||
; For some special perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat), the values are not used as requirements
|
|
||||||
; but to add to corresponding SPECIAL stats
|
|
||||||
|
|
||||||
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
|
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
|
||||||
|
|
||||||
;##############################################################################
|
|
||||||
;This is a modification to perk 119
|
;This is a modification to perk 119
|
||||||
[119]
|
[119]
|
||||||
Name=Example
|
Name=Example
|
||||||
Desc=This is an example perk description
|
Desc=This is an example perk~Second line
|
||||||
Image=72
|
Image=72
|
||||||
Ranks=1
|
Ranks=1
|
||||||
Level=1
|
Level=1
|
||||||
@@ -75,11 +57,6 @@ INT=0
|
|||||||
AGL=0
|
AGL=0
|
||||||
LCK=0
|
LCK=0
|
||||||
|
|
||||||
;##############################################################################
|
|
||||||
[Traits]
|
|
||||||
;Set to 1 to enable the modifications for traits
|
|
||||||
Enable=0
|
|
||||||
|
|
||||||
;This is a modification to trait 0
|
;This is a modification to trait 0
|
||||||
[t0]
|
[t0]
|
||||||
NoHardcode=0
|
NoHardcode=0
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[sfall]
|
[sfall]
|
||||||
SaveInCombat=Cannot save at this time.
|
SaveInCombat=Cannot save at this time
|
||||||
KarmaGain=You gained %d karma.
|
KarmaGain=You gained %d karma.
|
||||||
KarmaLoss=You lost %d karma.
|
KarmaLoss=You lost %d karma.
|
||||||
HighlightFail1=You aren't carrying a motion sensor.
|
HighlightFail1=You aren't carrying a motion sensor.
|
||||||
@@ -7,12 +7,8 @@ HighlightFail2=Your motion sensor is out of charge.
|
|||||||
SuperStimExploitMsg=You cannot use a super stim on someone who is not injured!
|
SuperStimExploitMsg=You cannot use a super stim on someone who is not injured!
|
||||||
BlockedCombat=You cannot enter combat at this time.
|
BlockedCombat=You cannot enter combat at this time.
|
||||||
SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again.
|
SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again.
|
||||||
PartyLvlMsg=Lvl:
|
|
||||||
PartyACMsg=AC:
|
|
||||||
PartyAddictMsg=Addict
|
|
||||||
NPCPickupFail=%s cannot pick up the item.
|
|
||||||
|
|
||||||
[AppearanceMod]
|
[AppearanceMod]
|
||||||
RaceText=Race
|
RaceText=Race
|
||||||
StyleText=Style
|
StyleText=Style
|
||||||
DoneBtn=Done
|
MainButtonText=Appearance
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
; Allows to reassign books to different object PIDs, text messages, and skills.
|
; Allows to reassign books to different object PIDs, text messages.
|
||||||
; Maximum 50 books are allowed
|
; Maximum 30 books are allowed (25 if overrideVanilla is 0)
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
; total number of books in this file
|
; total number of books in this file
|
||||||
count=1
|
count=5
|
||||||
|
|
||||||
; set to 1 to override all vanilla books, so you will have to define ALL the necessary books in this file;
|
; set to 1 to override all vanilla books, so you will have to define ALL books in this file;
|
||||||
; otherwise only new books are defined here. To just override the text/skill of a vanilla book,
|
; otherwise only new books are defined here
|
||||||
; specify its PID in the new book and set the parameters
|
|
||||||
overrideVanilla=0
|
overrideVanilla=0
|
||||||
|
|
||||||
; count starts from 1
|
; count starts from 1
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
;Controls the elevators
|
;Controls the elevators
|
||||||
;Image must match up with the image of an existing elevator (can be overrided in sfall 4.1.4/3.8.14 or newer)
|
;Image must match up with the image of an existing elevator
|
||||||
;Make sure you specify the correct number of exit targets
|
;Make sure you specify the correct number of exit targets
|
||||||
;The maximum number of elevators is currently capped at 50
|
;The maximum number of elevators is currently capped at 50
|
||||||
;Use the line number (0-indexed) of the corresponding FRM in intrface.lst to set the appearance of the elevator
|
|
||||||
|
|
||||||
;Override elevator 0
|
;Override elevator 0
|
||||||
[0]
|
[000]
|
||||||
;This elevator will use the settings of the original forth elevator
|
;This elevator uses the frm of the original forth elevator
|
||||||
Image=4
|
Image=4
|
||||||
|
|
||||||
;Set up the first exit point
|
;Set up the first exit point
|
||||||
@@ -25,22 +24,3 @@ Elevation3=0
|
|||||||
Tile3=12944
|
Tile3=12944
|
||||||
|
|
||||||
;No forth exit point
|
;No forth exit point
|
||||||
|
|
||||||
;Override FRM images of elevator 0. Set ButtonsFrm to -1 to use default buttons from MainFrm
|
|
||||||
MainFrm=143
|
|
||||||
ButtonsFrm=-1
|
|
||||||
|
|
||||||
|
|
||||||
;An example of a new elevator
|
|
||||||
[24]
|
|
||||||
;Set Image to 24 to create a new elevator type (0-23 are the original elevator types)
|
|
||||||
Image=24
|
|
||||||
|
|
||||||
;Set the number of buttons
|
|
||||||
ButtonCount=3
|
|
||||||
|
|
||||||
;Set the appearance of the elevator
|
|
||||||
MainFrm=148 ; EL_VAULT.FRM
|
|
||||||
ButtonsFrm=151 ; EL_MIL3.FRM
|
|
||||||
|
|
||||||
;Set up the exit points for all three buttons (see examples above)
|
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
; This section maps 7 armor types to corresponding armor item PIDs
|
||||||
|
[ArmorTypes]
|
||||||
|
Jacket = 74,265
|
||||||
|
Leather = 1,379
|
||||||
|
Metal = 2,240,380
|
||||||
|
Power = 3,232
|
||||||
|
AdvPower = 348,349
|
||||||
|
Combat = 17,239,381
|
||||||
|
Robe = 113,524
|
||||||
|
|
||||||
|
; Default armor FIDs (the same for all NPCs)
|
||||||
|
[Default]
|
||||||
|
Power=16777217
|
||||||
|
AdvPower=16777287
|
||||||
|
Robe=16777218
|
||||||
|
|
||||||
|
|
||||||
|
; Sulik
|
||||||
|
[1]
|
||||||
|
PID=16777313
|
||||||
|
Default=16777280
|
||||||
|
Leather=16777325
|
||||||
|
Power=16777324
|
||||||
|
Metal=16777323
|
||||||
|
Jacket=16777321
|
||||||
|
Combat=16777322
|
||||||
|
|
||||||
|
; Vic
|
||||||
|
[2]
|
||||||
|
PID=16777278
|
||||||
|
Default=16777307
|
||||||
|
Jacket=16777329
|
||||||
|
Combat=16777330
|
||||||
|
Metal=16777331
|
||||||
|
Power=16777332
|
||||||
|
Leather=16777333
|
||||||
|
|
||||||
|
; Cassidy
|
||||||
|
[3]
|
||||||
|
PID=16777305
|
||||||
|
Default=16777354
|
||||||
|
Leather=16777260
|
||||||
|
Power=16777328
|
||||||
|
Metal=16777327
|
||||||
|
Jacket=16777351
|
||||||
|
Combat=16777326
|
||||||
|
|
||||||
|
; Myron
|
||||||
|
[4]
|
||||||
|
PID=16777376
|
||||||
|
Default=16777304
|
||||||
|
Leather=
|
||||||
|
Power=16777349
|
||||||
|
Combat=16777350
|
||||||
|
|
||||||
|
; Cat Jules
|
||||||
|
[5]
|
||||||
|
PID=16777734
|
||||||
|
Default=16777353
|
||||||
|
Leather=16777347
|
||||||
|
Metal=16777348
|
||||||
|
Jacket=16777346
|
||||||
|
Combat=16777226
|
||||||
|
|
||||||
|
; Kitsune
|
||||||
|
[6]
|
||||||
|
PID=16777724
|
||||||
|
Default=16777222
|
||||||
|
Leather=16777221
|
||||||
|
Metal=16777223
|
||||||
|
Jacket=16777222
|
||||||
|
Combat=16777219
|
||||||
+12
-2
@@ -1,13 +1,13 @@
|
|||||||
[Highlighting]
|
[Highlighting]
|
||||||
|
|
||||||
; DX scancode of a key to press to highlight items on the ground
|
; DX scandode of a key to press to highlight items on the ground
|
||||||
; 42 - SHIFT key
|
; 42 - SHIFT key
|
||||||
Key=42
|
Key=42
|
||||||
|
|
||||||
; Set to 1 to also highlight containers
|
; Set to 1 to also highlight containers
|
||||||
Containers=1
|
Containers=1
|
||||||
|
|
||||||
; Set to 1 to also highlight lootable corpses
|
; Set to 1 to also highlight corpses
|
||||||
Corpses=1
|
Corpses=1
|
||||||
|
|
||||||
; Set to 1 to only highlight objects in the player's line-of-sight
|
; Set to 1 to only highlight objects in the player's line-of-sight
|
||||||
@@ -28,3 +28,13 @@ OutlineColor=16
|
|||||||
; 1 - requires Motion Scanner present in player inventory to activate highlighting
|
; 1 - requires Motion Scanner present in player inventory to activate highlighting
|
||||||
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
|
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
|
||||||
MotionScanner=0
|
MotionScanner=0
|
||||||
|
|
||||||
|
|
||||||
|
[CombatControl]
|
||||||
|
;Allows you to directly control other critters in combat
|
||||||
|
;Set to 0 to disable
|
||||||
|
;Set to 1 to control all critters in combat
|
||||||
|
;Set to 2 to control all party members
|
||||||
|
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
|
||||||
|
Mode=0
|
||||||
|
;PIDList=62,89,97,107,160,161
|
||||||
+128
-335
File diff suppressed because it is too large
Load Diff
@@ -1,201 +0,0 @@
|
|||||||
;Glovz's Damage Fix
|
|
||||||
|
|
||||||
; PID_EXPLOSIVE_ROCKET
|
|
||||||
[1]
|
|
||||||
pid=14
|
|
||||||
ac_adjust=-10
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_10MM_JHP
|
|
||||||
[2]
|
|
||||||
pid=29
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_10MM_AP
|
|
||||||
[3]
|
|
||||||
pid=30
|
|
||||||
ac_adjust=-5
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_44_MAGNUM_JHP
|
|
||||||
[4]
|
|
||||||
pid=31
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=-10
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_FLAMETHROWER_FUEL
|
|
||||||
[5]
|
|
||||||
pid=32
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_14MM_AP
|
|
||||||
[6]
|
|
||||||
pid=33
|
|
||||||
ac_adjust=-5
|
|
||||||
dr_adjust=-30
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_223_FMJ
|
|
||||||
[7]
|
|
||||||
pid=34
|
|
||||||
ac_adjust=-15
|
|
||||||
dr_adjust=-15
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_5MM_JHP
|
|
||||||
[8]
|
|
||||||
pid=35
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=-15
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_5MM_AP
|
|
||||||
[9]
|
|
||||||
pid=36
|
|
||||||
ac_adjust=-5
|
|
||||||
dr_adjust=-15
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_ROCKET_AP
|
|
||||||
[10]
|
|
||||||
pid=37
|
|
||||||
ac_adjust=-10
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_SMALL_ENERGY_CELL
|
|
||||||
[11]
|
|
||||||
pid=38
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_MICRO_FUSION_CELL
|
|
||||||
[12]
|
|
||||||
pid=39
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_SHOTGUN_SHELLS
|
|
||||||
[13]
|
|
||||||
pid=95
|
|
||||||
ac_adjust=-15
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=3
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_44_FMJ_MAGNUM
|
|
||||||
[14]
|
|
||||||
pid=111
|
|
||||||
ac_adjust=-5
|
|
||||||
dr_adjust=-10
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_9MM_BALL
|
|
||||||
[15]
|
|
||||||
pid=121
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_BBS
|
|
||||||
[16]
|
|
||||||
pid=163
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_ROBO_ROCKET_AMMO
|
|
||||||
[17]
|
|
||||||
pid=274
|
|
||||||
ac_adjust=-10
|
|
||||||
dr_adjust=-10
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_45_CALIBER_AMMO
|
|
||||||
[18]
|
|
||||||
pid=357
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=-5
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_2MM_EC_AMMO
|
|
||||||
[19]
|
|
||||||
pid=358
|
|
||||||
ac_adjust=-25
|
|
||||||
dr_adjust=-20
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=3
|
|
||||||
|
|
||||||
; PID_4_7MM_CASELESS
|
|
||||||
[20]
|
|
||||||
pid=359
|
|
||||||
ac_adjust=-5
|
|
||||||
dr_adjust=-25
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_9MM_AMMO
|
|
||||||
[21]
|
|
||||||
pid=360
|
|
||||||
ac_adjust=0
|
|
||||||
dr_adjust=0
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_HN_NEEDLER_CARTRIDGE
|
|
||||||
[22]
|
|
||||||
pid=361
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=-5
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
|
|
||||||
; PID_HN_AP_NEEDLER_CARTRIDGE
|
|
||||||
[23]
|
|
||||||
pid=362
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=-5
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_7_62MM_AMMO
|
|
||||||
[24]
|
|
||||||
pid=363
|
|
||||||
ac_adjust=-10
|
|
||||||
dr_adjust=-20
|
|
||||||
dam_mult=2
|
|
||||||
dam_div=2
|
|
||||||
|
|
||||||
; PID_FLAMETHROWER_FUEL_MK_II
|
|
||||||
[25]
|
|
||||||
pid=382
|
|
||||||
ac_adjust=-20
|
|
||||||
dr_adjust=-15
|
|
||||||
dam_mult=1
|
|
||||||
dam_div=1
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user