Checksums
EMON this is for you, you idiot.
That said, the rest of this will focus on character counting in Jedi Knight Cogs. Now assuming you have a brain and can tell your *** from a hole in the ground, this should be rather easy for you to understand but I'm probably giving the majority of you that will read this way too much credit (as I've already told most people with brains about this stuff). Ok I'm obviously in a pissed off mood so I'll cut to the chase.
You all probably learned that something like.....
SetActorFlags(victim, 0x400000);
is 4 characters. This is true to some extents and not to others. You do have 4 characters in this line but you have 2 different TYPES of characters. I refer to them as types 1-4. This line contains 3 type 1 characters, and 1 type 2 character.
**** you.
SetActorFlags, victim, 0x400000.....are the type 1 characters
().....is the type 2 character
Jedi Knight not only keeps a total character count but also seems to count the different type of characters.
TYPE 1 CHARACTERS
-----------------
SetActorFlags, 1, 0x1, GetSenderID, player, victim
these are your most common type and are easily interchanged between each other
TYPE 2 CHARACTERS
-----------------
(), *, &, +, -, !, /, |
again easily changed between each other
TYPE 3 CHARACTERS
-----------------
if, while, for
these are pretty picky and you cant really change them to something else (no changing if's to while's)
TYPE 4 CHARACTERS
-----------------
'0 0 0', {}
never did bother to look into these very deeply as to what they can be changed to. just always considered them their own type. i think the {} would probably be considered a 2 and can be changed with those
ok now we do this step by step for the retards.......
you have....
victim = FirstThingInView(player, 179, 999, 0x404);
but you dont care about that so you want to change it....i'll show you an easy way...
1. victim, FirstThingInView(player(), 179, 999, 0x404);
2. FirstThingInView(player(victim), 179, 999, 0x404);
3. SetTimerEx(0.0, 179, 999(victim), 0x404);
4. SetTimerEx(0.0, victim, GetThingSignature(victim), 0);
ok that might be a little excessive in showing how to do it but oh well i'm sure someone will still ask me about it even with it like that. it works much the same for everything else and if you are reading this you should be able to figure the rest out....one last thing i should point out though......
! = ()........NOT ! = (
1 pair of parenthesis is the same as an exclamation mark so dont let something dumb like that trick you.
one more exampe step by step to help pound the idea in.....
count = count + 1;
1. count(), count + 1;
2. count(), count(), 1;
3. count(1), count();
4. SetActorFlags(GetSourceRef(), 0x400000);
Ok, now to explain a little for in-depth,
Checksums are the pain in the butt for any hacker. A checksum is when your cog has too many or too few characters in it. Characters are basically commands that the game has. For example...if there was something like:
rank = GetInv(player, 22);
You shouldn't change it to something like:
rank = GetThingSector(player);
If you did that, you would be 1 character short of what you need for the cog to work. I will try to teach you how to figure out how many characters you have:
(GetThingFlags(potential) & 0x200);
I want you to try to count how many commmands are in this line (which to be honest, you wont get right). When you think you have the right answer, go on to find out if you got it correct.
This line has 6 characters in it. I will explain how I got that number.
1= (); the beginning and ending parentheses
2= GetThingFlags
3= () around the word potential
4= potential
5= &
6= 0x200
There are 6 characters in that line. If you changed that line to a line that only had 5 characters, you would get a checksum. There are ways to get past the checksum. Instead of counting by characters in a single line, you could count the characters in a section or in the entire cog. It gets harder as you try with more sections, so just stick with single line editing for now. If you counted 22 objects in a single section of the cog, keep 22 objects in that section.
Some other things can also cause checksums besides the character count. You always have to have the correct amount of characters but even if you do have the correct ammount, you can still get a checksum. Some cogs wont let you add a new line even if you took out enough characters to make that new line. They count characters as well as lines. Also, the game may give you checksums if you change certain commands. I have noticed that a good deal of cogs will cause a checksum if you take out "PlaySound" lines. You should probably leave these lines alone, you will almost certainly get a checksum if you change these lines. I know there are other lines that you cannot change, but I dont know them all off the top of my head. (AddDynamicTint is an annoying line that doesn't like to be changed). Sometimes cogs simply dont like it when you move lines around. If you moved a line up, but even kept the same characters, you could cause a checksum. "If" statements also cause a lot of checksums. You cannot change the "If" to something else. It has to stay there, to the best of my knowledge. Also, if a command is inside an "If" statement, sometimes you cannot move it out of the "If" lines. For example.........
if(GetThingHealth(player) > 1)
DamageThing(player, 100);
You probably wont be able to change this line to the following:
DamageThing(player, 100);
if(GetThingHealth(player) > 1)
You just moved the damage line out of the "If" statement and this would probably cause a checksum. So dont do this.
However, even if a cog wont let you add lines, you can move parts of a line.
powerBoost = GetInv(player, 63);
ChangeFireRate(player, fireWait/powerBoost);
You can change this to something like.......
GetInv(player, 63)
powerBoost = ChangeFireRate(player, firewait/powerBoost);
The purpose of this edit is to move the "=" to another spot where there are more commands. Then you would have more things to do with the equals. (I dont expect you to fully understand this yet).
Another thing that you need to know is that you cannot remove the "=" command. Those are other things that you cannot change. You can move them, but never take an "=" out.
Here are some important counting tips that you need to know. Even the best hackers cannot count sometimes and some of them still count wrong. For example, I have encountered many hackers who I would consider extremely good, and they do not know how many characters a command is. For example...........
!= this is only 1 command....but many of them count it as 2 and cant figure out why they get a checksum
victim = this is also only 1 command...but it is frequently counted as 2
Count these wrong (as most do) and you will get a checksum.
Also, some cogs simply dont like to be edited. Blinding is a very easy cog to edit. But fieldlight is extremely picky, it doesn't like you editing it. Absorb is another easy cog to edit. Absorb will let you add lines and remove lines so long as the character count is still the same.
That is about all for checksums....which you will soon encounter and will come to hate (as we all have). They are annoying, and they limit your cog editing (which in some ways is kind of good, I mean we dont want it to be too easy, there needs to be some challenge involved).
this was not intended for noobies. #
if i offended anyone while writing this....GOOD
if you wanna ***** at me or tell me a different way to count ****....then just goto hell
# EAH_XxLuNaTiKxX
------------------
eternity is the now ~ that never was
[This message has been edited by EAH_XxLuNaTiKxX (edited June 24, 2004).]
EMON this is for you, you idiot.
That said, the rest of this will focus on character counting in Jedi Knight Cogs. Now assuming you have a brain and can tell your *** from a hole in the ground, this should be rather easy for you to understand but I'm probably giving the majority of you that will read this way too much credit (as I've already told most people with brains about this stuff). Ok I'm obviously in a pissed off mood so I'll cut to the chase.
You all probably learned that something like.....
SetActorFlags(victim, 0x400000);
is 4 characters. This is true to some extents and not to others. You do have 4 characters in this line but you have 2 different TYPES of characters. I refer to them as types 1-4. This line contains 3 type 1 characters, and 1 type 2 character.
**** you.
SetActorFlags, victim, 0x400000.....are the type 1 characters
().....is the type 2 character
Jedi Knight not only keeps a total character count but also seems to count the different type of characters.
TYPE 1 CHARACTERS
-----------------
SetActorFlags, 1, 0x1, GetSenderID, player, victim
these are your most common type and are easily interchanged between each other
TYPE 2 CHARACTERS
-----------------
(), *, &, +, -, !, /, |
again easily changed between each other
TYPE 3 CHARACTERS
-----------------
if, while, for
these are pretty picky and you cant really change them to something else (no changing if's to while's)
TYPE 4 CHARACTERS
-----------------
'0 0 0', {}
never did bother to look into these very deeply as to what they can be changed to. just always considered them their own type. i think the {} would probably be considered a 2 and can be changed with those
ok now we do this step by step for the retards.......
you have....
victim = FirstThingInView(player, 179, 999, 0x404);
but you dont care about that so you want to change it....i'll show you an easy way...
1. victim, FirstThingInView(player(), 179, 999, 0x404);
2. FirstThingInView(player(victim), 179, 999, 0x404);
3. SetTimerEx(0.0, 179, 999(victim), 0x404);
4. SetTimerEx(0.0, victim, GetThingSignature(victim), 0);
ok that might be a little excessive in showing how to do it but oh well i'm sure someone will still ask me about it even with it like that. it works much the same for everything else and if you are reading this you should be able to figure the rest out....one last thing i should point out though......
! = ()........NOT ! = (
1 pair of parenthesis is the same as an exclamation mark so dont let something dumb like that trick you.
one more exampe step by step to help pound the idea in.....
count = count + 1;
1. count(), count + 1;
2. count(), count(), 1;
3. count(1), count();
4. SetActorFlags(GetSourceRef(), 0x400000);
Ok, now to explain a little for in-depth,
Checksums are the pain in the butt for any hacker. A checksum is when your cog has too many or too few characters in it. Characters are basically commands that the game has. For example...if there was something like:
rank = GetInv(player, 22);
You shouldn't change it to something like:
rank = GetThingSector(player);
If you did that, you would be 1 character short of what you need for the cog to work. I will try to teach you how to figure out how many characters you have:
(GetThingFlags(potential) & 0x200);
I want you to try to count how many commmands are in this line (which to be honest, you wont get right). When you think you have the right answer, go on to find out if you got it correct.
This line has 6 characters in it. I will explain how I got that number.
1= (); the beginning and ending parentheses
2= GetThingFlags
3= () around the word potential
4= potential
5= &
6= 0x200
There are 6 characters in that line. If you changed that line to a line that only had 5 characters, you would get a checksum. There are ways to get past the checksum. Instead of counting by characters in a single line, you could count the characters in a section or in the entire cog. It gets harder as you try with more sections, so just stick with single line editing for now. If you counted 22 objects in a single section of the cog, keep 22 objects in that section.
Some other things can also cause checksums besides the character count. You always have to have the correct amount of characters but even if you do have the correct ammount, you can still get a checksum. Some cogs wont let you add a new line even if you took out enough characters to make that new line. They count characters as well as lines. Also, the game may give you checksums if you change certain commands. I have noticed that a good deal of cogs will cause a checksum if you take out "PlaySound" lines. You should probably leave these lines alone, you will almost certainly get a checksum if you change these lines. I know there are other lines that you cannot change, but I dont know them all off the top of my head. (AddDynamicTint is an annoying line that doesn't like to be changed). Sometimes cogs simply dont like it when you move lines around. If you moved a line up, but even kept the same characters, you could cause a checksum. "If" statements also cause a lot of checksums. You cannot change the "If" to something else. It has to stay there, to the best of my knowledge. Also, if a command is inside an "If" statement, sometimes you cannot move it out of the "If" lines. For example.........
if(GetThingHealth(player) > 1)
DamageThing(player, 100);
You probably wont be able to change this line to the following:
DamageThing(player, 100);
if(GetThingHealth(player) > 1)
You just moved the damage line out of the "If" statement and this would probably cause a checksum. So dont do this.
However, even if a cog wont let you add lines, you can move parts of a line.
powerBoost = GetInv(player, 63);
ChangeFireRate(player, fireWait/powerBoost);
You can change this to something like.......
GetInv(player, 63)
powerBoost = ChangeFireRate(player, firewait/powerBoost);
The purpose of this edit is to move the "=" to another spot where there are more commands. Then you would have more things to do with the equals. (I dont expect you to fully understand this yet).
Another thing that you need to know is that you cannot remove the "=" command. Those are other things that you cannot change. You can move them, but never take an "=" out.
Here are some important counting tips that you need to know. Even the best hackers cannot count sometimes and some of them still count wrong. For example, I have encountered many hackers who I would consider extremely good, and they do not know how many characters a command is. For example...........
!= this is only 1 command....but many of them count it as 2 and cant figure out why they get a checksum
victim = this is also only 1 command...but it is frequently counted as 2
Count these wrong (as most do) and you will get a checksum.
Also, some cogs simply dont like to be edited. Blinding is a very easy cog to edit. But fieldlight is extremely picky, it doesn't like you editing it. Absorb is another easy cog to edit. Absorb will let you add lines and remove lines so long as the character count is still the same.
That is about all for checksums....which you will soon encounter and will come to hate (as we all have). They are annoying, and they limit your cog editing (which in some ways is kind of good, I mean we dont want it to be too easy, there needs to be some challenge involved).
this was not intended for noobies. #
if i offended anyone while writing this....GOOD
if you wanna ***** at me or tell me a different way to count ****....then just goto hell
# EAH_XxLuNaTiKxX
------------------
eternity is the now ~ that never was
[This message has been edited by EAH_XxLuNaTiKxX (edited June 24, 2004).]