|
On October 02 2011 11:05 Xanbatou wrote:Show nested quote +On October 02 2011 11:00 betaflame wrote: Say you go off some of your injects, the timing will be off on the alert so you should make it so that it times itself based on your last inject (everytime you press v, it resets to 0?).
1. You can already reset it really easily 2. If I did that, then it would screw up every time you made an overlord  set it to everytime u press a userdefined hotkey and then v. it would be less accurate with more hatcheries, but its a good way
|
On October 02 2011 10:44 MartynX wrote: What's the point? It makes you a lazy and bad player + you can not use it at live events. Also stuff happens in game that can affect the timings and they are not always lined up with each other.
It's called dedicated practice. Whatever level you are as Zerg, you can always improve your inject larva timing. NOBODY nails all their injects, 100% of time, which is normal because stuff happens in game and it might be more important to defend an attack with good micro than to inject 3 seconds sooner.
Instead of spending 50 games focusing on sort of nailing your injects, this program can help you get them 100% on time. Hell, you'll probably lose some games by being so focused on injects, but that's not the point. It won't take very long for you to 'feel' the time to inject when you spent so much time getting them perfectly. It's also really hard to gain that 'feel' by just going back to your base or checking your queen energy and going hm, not quite yet, or oh I was a little late...you know what I mean.
I think this program can help people a lot who want to dedicate some practice to inject. It's an integral part of all zerg gameplay, and has to be worked on consistently. It's not ezpz like mules or chronoboost though larva inject is incredibly rewarding once you master it.
Thanks OP. I'll try it tonight!
EDIT : The file you are trying to access is temporarily unavailable. Please try again later.
D= this might be beyond your control but just sayin in case you hadn't noticed...i'll dl it later I guess ^^
|
When i try to download:
"The file you are trying to access is temporarily unavailable. Please try again later." 
|
this is already used by a lot of people, most of the people that make hacks for sc2 also make overlays for macro training, I have seen and used a zerg one that beeps and tells you to inject.
|
Very cool program! Sounds like a good way to learn the spawn larva rhythm!
And don't mind the elitist trolls in these forums. They're just angry they're gonna lose ladder points to players with better decision making and "worse" mechanics.
|
Practically identical in concept, Zergkekekeke came up with some batch files which was discussed some months ago for Terran building SCVs:
http://www.teamliquid.net/forum/viewmessage.php?topic_id=243799
My opinion was then, as it is now, that this should be discouraged and custom maps used as a more flexible alternative in a practice rather than competitive context.
Then the thread descended in to flaming, no one reached an agreement and the thread died.
|
Thank you!
And to all you haters. If you wan't to use custom maps, if you want to play ladder games without any timer, if you want to look at the ingame clock, if you want to look at the "larva popped" news ticker thingy or if you want to use this application does not matter.
In the grand scheme of things, when you end up playing in that booth for $100.000 over a ZvZ. You don't have your custom map with you, you can use the ingame clock, you can use the ticker but you can't use this application. Which way you ended up with your larva timings does not matter. But if the guy who used this application has 3 more larva for three more roaches in a stressfull constant battle game. You'll regret. (I'm not saying this will make you have better larva injects in the end, but what if?)
This is obviously not meant to be used as a replacement for knowing your larva injections. It's a learning tool that helps you get your inner clock set to GMT-Zerg. And I personally plan to use it as such (if I could just download it )!
|
Always good to see a member of the community helping others.
Yo Xanbatou if you're looking for another project, how about the following: + Show Spoiler +Create a 'timer' that displays real time. This overlay can be placed next to the already existing game timer. It can look identical. It can be started by clicking, or preferably a color trigger on a (small) portion of the screen. Personally, I want this to give me a sense of real time; Initially, in addition to faster time 'sense', and at some point I'll be on real time exclusively. (Sure, at first it may be confusing, but in the long run, it'd be worth it I think.) This would enable us to train our sense of REAL TIME, which could be beneficial to real life and makes more sense! I'm sure there are others that would use this. Read this post [or thread] for an explanation on why this would be useful. http://www.teamliquid.net/forum/viewmessage.php?topic_id=182018¤tpage=3#46
Edited to reduce thread derailment. o.O
|
Although I don't really approve of such things I have a suggestion for you.
Why don't you make it so that the timer resets every time you hit "V"?
|
On October 03 2011 22:56 Grapefruit wrote: Although I don't really approve of such things I have a suggestion for you.
Why don't you make it so that the timer resets every time you hit "V"?
overlords.
|
Personally, I think using this will make you more comfortable at home but it will train you to rely on this thing and you won't be able to use it anywhere else.
|
On October 03 2011 22:59 ensign_lee wrote:Show nested quote +On October 03 2011 22:56 Grapefruit wrote: Although I don't really approve of such things I have a suggestion for you.
Why don't you make it so that the timer resets every time you hit "V"? overlords.
Good point, haven't though about that.
|
Why all the hate? If you don't like it, don't use it.
Thanks for sharing OP, I will probably not use it, but this might help people who want to work on their larva injects.
|
A better way to go about this would be to poll the value of the
HKEY_CURRENT_USER\Software\Razer\Starcraft2\AdditionalLarvaBirthed Registry key. That is set to "1" for a brief period of time when a hatchery pops the larva off, which means the player would need to inject again. Reading the value of that and flashing the window when an inject is required would be much easier/more efficient than having to reset the timer each time.
Edit: Here's the source to a simple program I made in C# to see how exactly the registry keys worked, if anyone is interested, just run it along side the game while you play and you will be able to see how the keys change:
+ Show Spoiler +MainForm.Designer.cs + Show Spoiler +namespace SC2Status { partial class MainForm { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null;
/// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if(disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }
#region Windows Form Designer generated code
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.dataGrid = new System.Windows.Forms.DataGridView(); this.exitButton = new System.Windows.Forms.Button(); this.PropertyName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.PropertyValue = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.checkTimer = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.dataGrid)).BeginInit(); this.SuspendLayout(); // // dataGrid // this.dataGrid.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.PropertyName, this.PropertyValue}); this.dataGrid.Location = new System.Drawing.Point(3, 3); this.dataGrid.Name = "dataGrid"; this.dataGrid.Size = new System.Drawing.Size(329, 699); this.dataGrid.TabIndex = 0; this.dataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dataGrid_MouseDown); // // exitButton // this.exitButton.Dock = System.Windows.Forms.DockStyle.Bottom; this.exitButton.Location = new System.Drawing.Point(0, 708); this.exitButton.Name = "exitButton"; this.exitButton.Size = new System.Drawing.Size(332, 24); this.exitButton.TabIndex = 1; this.exitButton.Text = "Exit"; this.exitButton.UseVisualStyleBackColor = true; this.exitButton.Click += new System.EventHandler(this.exitButton_Click); // // PropertyName // this.PropertyName.HeaderText = "Property"; this.PropertyName.Name = "PropertyName"; this.PropertyName.Width = 150; // // PropertyValue // this.PropertyValue.HeaderText = "Value"; this.PropertyValue.Name = "PropertyValue"; // // checkTimer // this.checkTimer.Interval = 500; this.checkTimer.Tick += new System.EventHandler(this.checkTimer_Tick); // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(332, 732); this.Controls.Add(this.exitButton); this.Controls.Add(this.dataGrid); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Name = "MainForm"; this.Text = "SC2 Status"; this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown); ((System.ComponentModel.ISupportInitialize)(this.dataGrid)).EndInit(); this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGrid; private System.Windows.Forms.Button exitButton; private System.Windows.Forms.DataGridViewTextBoxColumn PropertyName; private System.Windows.Forms.DataGridViewTextBoxColumn PropertyValue; private System.Windows.Forms.Timer checkTimer;
} }MainForm.cs + Show Spoiler +using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
using System.Runtime.InteropServices; using Microsoft.Win32;
namespace SC2Status { public partial class MainForm : Form {
public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImportAttribute("user32.dll")] public static extern bool ReleaseCapture();
private string[] propertyList = new string[] { "AdditionalLarvaBirthed", "AllyBaseUnderAttack", "AllyUnitUnderAttack", "APMValue", "BuildingComplete", "CalldownLaunch", "ChronoBoostExpired", "MorphComplete", "MothershipCompleted", "MothershipStarted", "MULEExpired", "OwnBaseUnderAttack", "OwnUnitUnderAttack", "ResearchComplete", "ResourceDepleted", "ResourceExhausted", "SpecializationComplete", "StartModule", "TrainingComplete", "UpgradeComplete", "WarpInComplete" };
public MainForm() { InitializeComponent();
foreach(string property in propertyList) { dataGrid.Rows.Add(new object[] { property, "0" }); }
checkTimer.Start(); }
private void MainForm_MouseDown(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { ReleaseCapture(); SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); } }
private void exitButton_Click(object sender, EventArgs e) { Application.Exit(); }
private void dataGrid_MouseDown(object sender, MouseEventArgs e) { MainForm_MouseDown(sender, new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0)); }
private void checkTimer_Tick(object sender, EventArgs e) { foreach(string property in propertyList) { RegistryKey key = Registry.CurrentUser; RegistryKey subKey = key.OpenSubKey(@"SOFTWARE\Razer\Starcraft2");
dataGrid.Rows[getIndexOfRow(property)].Cells[1].Value = subKey.GetValue(property); } }
private int getIndexOfRow(string key) { for(int i = 0; i < dataGrid.Rows.Count; i++) { if(dataGrid.Rows[i].Cells[0].Value == key) { return i; } }
throw new Exception("No column with that name found"); } } } Program.cs + Show Spoiler +using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms;
namespace SC2Status { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } }
|
Has anyone hear ever done ANY research into habit forming behaviors? This is basically the protocol for teaching a Pavlovian response to ANYONE. Put things on a schedule, give a clear, consistent enforcement protocol, and once you have done it enough, the timing becomes second nature, with or without the stimulus.
This is more efficient for improving larvae inject timings than just trying to play. Why? Because like Day[9] says, you should be improving ONE thing at a time. This helps with that.
Thanks, bro!
|
On October 03 2011 23:03 Koshi wrote: Why all the hate? If you don't like it, don't use it.
Thanks for sharing OP, I will probably not use it, but this might help people who want to work on their larva injects.
Me neither, but I don't think people are grasping the usefulness of this. It's not a crutch for playing higher level games - it's for practicing and working your way up to that point.
ex: 10 games with it on, 5 games with it off. 5 games with it on, 5 games with it off. 3 games with it on, then play with it off after.
|
|
|
shit like this should be illegal
|
Could you upload this to mediafire please?
|
Wish i could download this .. Thanks for the tool! I plan to use it for a few weeks then I expect to no longer need it.
Haters - Wtf? its a teaching tool..
|
|
|
|
|
|