Hi buddy, I have had the same global variable issue, here is how I fixed it (answering number 1 only):
1 in the object window, go to miscealanous/global, and create the global variable you want to use, WhateverName (LMB, "new")
2 in your script, create the Global variable property (globalvariable Property WhaterverName auto) I suggest strongly to name both variables the same, as it will be helpfull for autofilling

3 you can use the Globalvariable functions through importing "globalVariable"
4 important, and main issue as far as I am concerned, don't forget to assign the global to the property in the script owner.
Hope it helps.
Hi.
Thanks for the detailed help. =)
I don't understand what you mean in step 3: "you can use the Globalvariable functions through importing "globalVariable"", so I tried ignoring that step and of course I got compilation error.
Here's what I did:
1. Went to Misceallanous -> Global.
2. Created a new variable, short-type, named BM_Counter
3. Went to my script -> Properties.
4. Created a new property, global variable-type, named BM_Counter (GlobalVariable Property BM_Counter Auto)
5. Edited my script, adding this line:
BM_Counter = BM_Counter + 1
When I added that line the script failed to compile. -It's as if the script thinks BM_Counter isn't an integer-variable-type. -Did I fail to define my variable as an integer?
Variables can't be read only. Use a property. You can use the "hidden" flag to prevent it from showing up in the Creation Kit, if you want.
When creating a new global variable there's a box that can be checked, that says "Constant". -I would be very surprised if variables can't be read-only.