|
Didn't think you did!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
It's not impossible, but it is nasty. Very nasty!
As you say, you can't have a static constructor with a parameter - because static constructors are never called from your code directly, but by the system immediately prior to the first instance being created, so it can't call a parametrized one. So it has to be a parameter to an instance constructor: which means a check is needed:
public abstract class Package
{
protected static int FUNC_LENGTH { get; private set; }
private static bool onceAlready = false;
public Package(int _funcLength)
{
if (!onceAlready)
{
FUNC_LENGTH = _funcLength;
onceAlready = true;
}
}
...
}
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Depending on where you're getting the value to set funcLength to, maybe you could read it from a config inside the static constructor?
|
|
|
|
|
A config file would work, of course, but the value wont ever change between compilations. It seems more streamlined to just set it via the constructor when creating the package factory class. Then the factory class will pass it to the package instances.
I guess a static boolean would work, just thought there would be a more slick way to do it (I actually have more than one of those "constants").
Maybe I just skip the static part. Feels like a defeat though.
|
|
|
|
|
If the value wont' change between compilations, why not just make it a const value? They are effectively static anyway. Or is it a complex calculation that has to be done at run time? You can't do it as a "prebuild step" or similar? I do something similar to that to time stamp assemblies with the build date / time: Timestamping assemblies with Build date and time.[^]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Uhm, didnt think of a const being static, but of course you´re right on that one. Great, const it is!
|
|
|
|
|
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I was too quick there. This is a lib, so when using this lib by creating a Package object, you will pass the value into its constructor. So I cant use a const here.
|
|
|
|
|
So it's not fixed at compile time - and you're back to a static bool I'm afraid!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
|
yeah, the static contructor is run by .net and without arguments ;
and the static method runs when the class's instance or static members(method or property) is referred
|
|
|
|
|
If you are familiar with the dying games from Storm8 I am looking for some help. If you know what an AutoHealer is then you are looking at the right article, you see I know absolutely no programming languages, I'm good with a computer let's say debugging.troubleshooting and general putting together a PC, but programming I don't have the time to learn. And I would like a software made, I already made a GUI and such and have the idea in my head I just need someone to actually make the idea into a program. I was told the best language for this sort of tool would be C# being as it's fast and can handle complex tasks, but this isn't so much a complex task. Just curious as to if someone can help me out with this.
|
|
|
|
|
Technically, that is cheating. And (since I have no idea what the "dying games from Storm8" involve) since that can in some games involve money (real or virtual) that's not something we would normally get involved in, as there is a good chance that that is malicious code - it may involve a real financial penalty for others if you can't die and thus steal their stuff...
We do not condone, support or assist in the production of malicious code in any way, form or manner. This is a professional site for professional developers.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I completely understand that is cheating, people have been doing it for years, and in no way would it be classified as malicious in any way, in fact it would be helping players advance in the game at a semi-natural pace.
|
|
|
|
|
No, it would give an advantage to players who used it, even if there are existing cheats out there - and if there are, why would you need to write your own?
Since it gives you an advantage, it's cheating!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Because right now there are none fast enough or good enough for the task I have at hand.
|
|
|
|
|
You mean: "I'm no good at this, and I get killed too quick"?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
No it's more like, I have several accounts with 4000 health points that I want to put on the hitlist and to stay on the hitlist for people to attack for EXP and money. Why would I put my personal accounts on there, they get banned in 24 hours anyway, except on the weekend.
|
|
|
|
|
And why do they get banned?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
You already know the answer to that question. Stop trolling, it's a very simple project for someone who knows any C language, but it seems apparent that you're trolling.
|
|
|
|
|
No, I can guess the answer to that question - they get banned because you are cheating, and you are trying to find a different way to do it that you hope they won't notice.
It's still cheating, and we don't help with that, no matter how simple the project may be.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I can tell you that OG is not the one doing the trolling.
You're the one who wants to cheat. That makes YOU the troll.
|
|
|
|
|
OG is correct in his assessment of what you are trying to do. Something he didn't mention, but which is highly pertinent, is that we don't write applications for others. We assist you if you have issues that you are trying to sort out.
If there were an article that already did what you wanted it to do, then you could use that code but, as there isn't, I would suggest you either abandoned your attempts to cheat, or went to a site where people will write code for you, for money.
|
|
|
|
|
Hello, this is my first post. I am stuck and could really use some help. This is a tough question to answer, and even tougher to ask, so I’m not getting my hopes up for an answer but I thought I would give it a try anyway.
I'm creating a simulation where objects move around in a 2 dimensional array. Each object in the array runs in its own thread. This means that each object moves and interacts with other objects in real time rather than sequentially.
For ease of explanation, we can consider the 2 dimensional array as a “field” and each object in it as a “sheep”. There is a possibility of a sheep breeding and adding another sheep to the field. This new sheep needs to be added to the field and start its own thread so it can move around. This is where I’m having problems.
I’m basically trying to start a new thread within another thread and it’s not working. The sheep will successfully breed and add the new sheep to the field but the new sheep fails to start moving around.
When the program is started, the field class populates itself with sheep and iterates through all of its sheep and starts a bunch of threads to move them around. Like I said, each sheep runs in its own thread.
To move, each sheep needs to know about the field it’s moving in and decide the next best position to move. To do this, each sheep has a “move” method that accepts the field as a parameter. It then examines the field and decides on an adjacent position to move and updates the field. So basically I pass the entire field to each sheep and it decides where to move itself and updates the field. The following two methods are part of the field class…
public void run()
{
foreach (IActor actor in actorsOnField)
{
Thread thread = new Thread(delegate() { move(actor); });
thread.Start();
}
}
public void move(IActor actor)
{
while (true)
{
int rand = RandomNumber.GetRandomNumber(1000, 2000);
Thread.Sleep(rand);
if (!isPaused)
{
lock (_grid)
{
actor.move(this);
}
}
}
}
When I click a button, the run method is executed and the sheep start moving around. The sheep move method looks like this…
public void move(Field field)
{
IActor[,] grid = field.Grid;
Location moveTo = MoveToRandomLocation(field);
if (moveTo != null)
{
grid[CurrentLocation.Y, CurrentLocation.X] = null;
CurrentLocation.X = moveTo.X;
CurrentLocation.Y = moveTo.Y;
grid[CurrentLocation.Y, CurrentLocation.X] = this;
}
reproduce(field);
}
The reproduce method looks like this…
public Herbivore reproduce(Field field)
{
int chanceToReproduce = 10;
List<IActor> neighbours = GetAdjacentActors(field);
chanceToReproduce = neighbours.Count * chanceToReproduce;
int rand = RandomNumber.GetRandomNumber(0, 100);
List<Location> adjacentLocations = this.GetAdjacentLocations(field);
List<Location> emptyLocations = new List<Location>();
foreach(Location loc in adjacentLocations)
{
if (field.Grid[loc.Y, loc.X] == null)
emptyLocations.Add(loc);
}
if (chanceToReproduce >= rand && emptyLocations.Count > 0)
{
Herbivore herb = new Herbivore(emptyLocations[0].X, emptyLocations[0].Y);
field.ActorsOnField.Add(herb);
field.Grid[emptyLocations[0].Y, emptyLocations[0].X] = herb;
return herb;
}
return null;
}
I have tried many things but I can’t get the new sheep to move around once they have been created. Does anyone have any ideas on how I can do this?
Thanks
|
|
|
|
|
I'd like to zero in on where you say you try to start a new thread and it's not working. What does not working mean?
Are you getting any error messages? Post the code where you create the new thread.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|