Post: Learning the GSC language.
01-15-2012, 12:55 PM #1
Correy
I'm the Original
(adsbygoogle = window.adsbygoogle || []).push({});
The functioning of GSC
Anyone feel free to submit a tutorial, just quote me. i'll add it in.

there's not much things to post these days, might aswell create this to update when there's nothing else to do.
i will be putting alot of time into this, so i would appretiate as much as you do.

Sorry for any spelling mistakes.
Thanks to everyone who contributes.


[multipage=Variables - Data Storage]
The variable


The variable is a basically a string which stores data.
here's how you will see it.
    
Variable = "learning variables";


now, the string 'Variable' now equals "learning variables".
if i now was to println this, like 'self iPrintln( Variable );
it will output 'learning variables;.

this is probably the most basic thing in GSC, there's also more to it but that comes into arrays which will be explained later on.
[multipage=Threading - Calling a function]
Threading


Threading is pretty much every function which you will find, without this your code snippet will not act.
also again, this is pretty basic.. but it can be mistaken.

here's a basic snippet.
    
self thread Tutorial();


now, if i was just to put that into my patch it will error.
the game will look for the thread 'Tutorial', which at the minute is not functioned; this error will be 'Unknown function'
therefore i will need to add my function somehwere.

    
Tutorial()
{
self iPrintln( "hi" );
}


now up on threading that, say if i threaded it up on player spawn my output will be a line print of 'hi'.
yes, this is how your god mode ect are called, however you need to coding for them.

you see how i have the 'self', thats really self explanitory.. it will act up on myself, but that can be changed..
    
level.players[ 1 ] Tutorial();


that will function for the level.player (player) which has the entity number of 1.

now you might see '<self> thread Something();'
the 'thread' is only needed if it's inputing data from/ into another thread, so if i was to doo..
    
printText( text )
{
self iPrintln( text );
}


'self thread printText( "hi" );'
which now leads us onto arguements
[multipage=The strTok - Split Statement]
The strTok


The strTok is a split statement, it will split every statement given up on the char which it should be split at.
here's a syntax version of how it should be used.

    
< new string to input > = strTok( < string to input > , < split char > );


- New string to input
this is will set the statement's too, remember.. if there's more than one statement it will need to be set at an array.

- String to input
this is the string/ text which needs to be inputted then split, remember it must contain the split char or it wont be split.

- Split char
this goes for aboth, it's a single char placed in a ".. for every 'split char' in the input string it will split it, then carry on splitting until it will no longer can be splitten.

here's a full example of usage.
    
printlines( texts )
{
output = strTok( texts, "|" );
self iPrintln( output );
}


there i've set the input string to an arguement, it works the same just called differently.
so here's how i would call it.

    
self printlines( "this|is|a|tutorial" );


that will print a new line for this, is, a, tutorial.. so it will look something like..
    
this
is
a
tutorial


strTok is pretty useful and can compress your code much more than over statement.
if your having trouble of don't understand how to use this then message me, i'll help you out with it.

but i hope i explained as best as i can.
[multipage=The 'If' Statement]
The "If" statement- By .Choco
[/center]

The If statement is a major part of Call of Duty Scripting. It can be used in many ways. What it does is tell the game that if a certain condition is true, false, or equal to a value, do a certain thing. Here is an example of one:

    ExampleFunction()
{
if(<variable> == <value>Winky Winky
{
self iPrintln("poopy");
}
}


So let's break that down a bit.

    if(<variable> 

Any variable can be here, whether it is attached to yourself or the level.

     == 

"==" translates to "is equal to". There are other arguments that can be placed here:
"!=" - is not equal to
"<" - is less than
">" - is greater than
"<=" - is less than or equal to
">=" - is greater than or equal to

    <value>


Your value goes here. It can be a number, a string, true, or false.

After your if statement is declared, put a set of brackets under it and everything inside those will be executed if the statement is true (these brackets are not always needed, but for the purpose of this tutorial they will be).

Seem a bit confusing? It's not really. The if statement is one of the most commonly used scripts in all patches. One way it is very practically used is to determine who the host of a lobby is. The next script does just that:

    findHost()
{
if(self GetEntityNumber() == 0)
{
self.isHost = true;
}
}


GetEntityNumber() is a built-in function that returns your Client Number. Number 0 is the first to connect, which is always the host. So what this function says if that if your client number is 0, the variable "self.isHost" is attached to you and it is true.
[multipage=Using 'endon', 'waittill' & 'notify']
Using 'endon', 'waittill' & 'notify'- By .Choco


endon, waittill, and notify are very useful tools in CoD scripting. I will be breaking them down and explaining what they do and why it is useful.

Let's start with endon.
Here is a basic god mode script:

    
God()
{
self endon("disconnect");
self endon("death");
self.maxhealth = 90000;
self.health = self.maxhealth;
while( 1 )
{
if(self.health < self.maxhealth)
self.health = self.maxhealth;
wait 0.1;
}
}

Now I'm not going to break down the whole function, but let's look at the beginning of it.

    
self endon("disconnect");

This part tells the game that if you disconnect, terminate the God() thread. So if you lag out or leave, God Mode stops.

    
self endon("death");

This tells the game that if you die, terminate the thread. Simple enough right?

Now how does the game know what "death" and "disconnect" are? This is where notify comes in. In the game engine, if you die it automatically notifies the game with "death". If you disconnect, it notifies it with "disconnect". You can notify the game of something like this:

    
self notify("you_are_a_noob"); //This will notify your player's entity "you_are_a_noob"
level notify("you_are_all_noobs"); //This will notify every player "you_are_all_noobs"

The notify can be very practical for things like toggles. Example of a cg_drawFps toggle:

    
toggleFps()
{
self endon("disconnect"); //if the game ends or you leave stops the function
self endon("death"); //stops the function if you die
i = 0;
for(;Winky Winky
{
self waittill("toggle_fps"); //this will be explained shortly
self setClientDvar("cg_drawFps", i);
i++;
if(i == 4) i = 0;
}
}

To toggle the FPS counter, all you have to do is this:

    
self notify("toggle_fps");

It can be used like that to make your script much simpler.

Now on to waittill.

Go back and look at the Fps toggle script. See this part?
    
self waittill("toggle_fps");

Waittill tells the function to wait for something to be notified before continuing with the function. In the case of the FPS toggle, it tells the function to wait for "toggle_fps" before continuing. Very useful stuff

I hope I made this clear enough to help people out
[multipage=Updates]
15th January; 13:02
    
- thread created!
- variables
- threading
- strTok


15th January; 21:59
    
- the 'If' statement by .Choco
Last edited by Correy ; 01-16-2012 at 09:09 AM.

The following 10 users say thank you to Correy for this useful post:

/RunDos/, Geo, Ghost1990, ImAzazel, JamesSwagger, LBK, Cmd-X, RuszXMC, Uk_ViiPeR, xKtF
01-15-2012, 01:07 PM #2
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by Correy View Post
The functioning of GSC
Anyone feel free to submit a tutoria

there's not much things to post these days, might aswell create this to update when there's nothing else to do.
i will be putting alot of time into this, so i would appretiate as much as you do.

Sorry for any spelling mistakes.

[multipage=Introduction]
The 'GSC' langauage is a coding language developed by the makers of call of duty.
it was developed from C# and most commonly known as the 'Modding' language also.

you will find this is what makes call of duty!
[multipage=Variables - Data Store]
The variable


The variable is a basically a string which stores data.
here's how you will see it.
    
Variable = "learning variables";


now, the string 'Variable' now equals "learning variables".
if i now was to println this, like 'self iPrintln( Variable );
it will output 'learning variables;.

this is probably the most basic thing in GSC, there's also more to it but that comes into arrays which will be explained later on.
[multipage=Threading - Calling a function]
Threading


Threading is pretty much every function which you will find, without this your code snippet will not act.
also again, this is pretty basic.. but it can be mistaken.

here's a basic snippet.
    
self thread Tutorial();


now, if i was just to put that into my patch it will error.
the game will look for the thread 'Tutorial', which at the minute is not functioned; this error will be 'Unknown function'
therefore i will need to add my function somehwere.

    
Tutorial()
{
self iPrintln( "hi" );
}


now up on threading that, say if i threaded it up on player spawn my output will be a line print of 'hi'.
yes, this is how your god mode ect are called, however you need to coding for them.

you see how i have the 'self', thats really self explanitory.. it will act up on myself, but that can be changed..
    
level.players[ 1 ] Tutorial();


that will function for the level.player (player) which has the entity number of 1.

now you might see '<self> thread Something();'
the 'thread' is only needed if it's inputing data from/ into another thread, so if i was to doo..
    
printText( text )
{
self iPrintln( text );
}


'self thread printText( "hi" );'
which now leads us onto arguements
[multipage=The strTok - Split Statement]
The strTok


The strTok is a split statement created by call of duty makers, it will split every statement given up on the char which it should be split at.
here's a syntax version of how it should be used.

    
< new string to input > = strTok( < string to input > , < split char > );


- New string to input
this is will set the statement's too, remember.. if there's more than one statement it will need to be set at an array.

- String to input
this is the string/ text which needs to be inputted then split, remember it must contain the split char or it wont be split.

- Split char
this goes for aboth, it's a single char placed in a ".. for every 'split char' in the input string it will split it, then carry on splitting until it will no longer can be splitten.

here's a full example of usage.
    
printlines( texts )
{
output = strTok( texts, "|" );
self iPrintln( output );
}


there i've set the input string to an arguement, it works the same just called differently.
so here's how i would call it.

    
self printlines( "this|is|a|tutorial" );


that will print a new line for this, is, a, tutorial.. so it will look something like..
    
this
is
a
tutorial


strTok is pretty useful and can compress your code much more than over statement.
if your having trouble of don't understand how to use this then message me, i'll help you out with it.

but i hope i explained as best as i can.
[multipage=Updates]
15th January; 13:02
    
- thread created!
- variables
- threading
- strTok


Now to post some things i don't know so i can get better :p.

The following 2 users groaned at IVI40A3Fusionz for this awful post:

Blackstorm, Cmd-X
01-15-2012, 01:09 PM #3
Correy
I'm the Original
Originally posted by IVI40A3Fusionz View Post
Now to post some things i don't know so i can get better :p.


um, your saying i dont know this stuff?
01-15-2012, 01:12 PM #4
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by Correy View Post
um, your saying i dont know this stuff?


No /facepalm im saying post some things i don't know so i can get better Happy.
01-15-2012, 01:24 PM #5
Correy
I'm the Original
Originally posted by IVI40A3Fusionz View Post
No /facepalm im saying post some things i don't know so i can get better Happy.


oh lmfao, duh moment :p.
strTok, learn that Smile..
01-15-2012, 01:53 PM #6
Originally posted by Correy View Post

The 'GSC' langauage is a coding language developed by the makers of call of duty.



.gsc is a type of file, not a language.

I'm really too ill to argue so don't bother Awesome face

If you don't believe me, listen to KBrizzle
Originally posted by another user


GSC it the type of file we edit in the patch_mp.ff. It's not a language.

This language it just a custom scripting language made by IW. ~ K Brizzle,

GSC scripting language is based off of C/C++. GSC probably stands for Game Script


---------- Post added at 01:53 PM ---------- Previous post was at 01:31 PM ----------

Originally posted by Correy View Post


The strTok is a split statement created by call of duty makers, it will split every statement given up on the char which it should be split at.


IW didn't invent StrTok either. It's used in C++ ...

The following user thanked x_DaftVader_x for this useful post:

aerosoul94
01-15-2012, 01:53 PM #7
Correy
I'm the Original
Originally posted by x. View Post
.gsc is a type of file, not a language.

I'm really too ill to argue so don't bother Awesome face

If you don't believe me, listen to KBrizzle


---------- Post added at 01:53 PM ---------- Previous post was at 01:31 PM ----------



IW didn't invent StrTok either. It's used in C++ ...


thanks for that ha, but it's still learning people :y:
get well soon smexy Winky Winky
01-15-2012, 05:15 PM #8
Blackstorm
Veni. Vidi. Vici.
Originally posted by x. View Post
.gsc is a type of file, not a language.

I'm really too ill to argue so don't bother Awesome face

If you don't believe me, listen to KBrizzle


---------- Post added at 01:53 PM ---------- Previous post was at 01:31 PM ----------



IW didn't invent StrTok either. It's used in C++ ...


I'm guessing everyone just started calling it GSC due to the file name. Haha, it probably has some weird name. x)

Also Correy, GSC was built off of C/C++ but is more closely related to javascript.

---------- Post added at 10:15 AM ---------- Previous post was at 10:13 AM ----------

Originally posted by IVI40A3Fusionz View Post
Now to post some things i don't know so i can get better :p.


There's a lot you don't know.
01-15-2012, 05:18 PM #9
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by Blackstorm View Post
I'm guessing everyone just started calling it GSC due to the file name. Haha, it probably has some weird name. x)

Also Correy, GSC was built off of C/C++ but is more closely related to javascript.

---------- Post added at 10:15 AM ---------- Previous post was at 10:13 AM ----------



There's a lot you don't know.


Hence why i asked for a bit more information on some others things /facepalm so really no need to groan :(.
01-15-2012, 06:19 PM #10
Originally posted by reScript
The language in GSC files is nothing like C#.
C# is a extension of C, so is C-with-classes (C++) of course.
I am pretty sure the language refined to make the language in GSC files was either C or C++.
I am lead to believe it is C++ as it does have some kind of class form. Smile
some of the game files are assembled with a third party C compiler. Ive seen it in the game files somewhere. ..

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo