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-16-2012, 05:56 PM #56
DlBSY993
There's 0nly 1..
Originally posted by x. View Post
Hahaha, of course, as if I'd forget to add something like that..

** quickly opens .ff viewer and adds it while no one is looking**

:dumb:



Ohhh that's just the beginning .. MWAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAAAAAAA Enzo
01-16-2012, 05:58 PM #57
Originally posted by DlBSY993 View Post
Ohhh that's just the beginning .. MWAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAAAAAAA Enzo


ORLY , I've added a lot since that crappy beta-pre-preview-preview-beta version I gave you Awesome face
01-16-2012, 06:02 PM #58
Originally posted by reScript
Oh god not another beta-pre-preview-preview-beta... No
Video uploading now :evil:
01-16-2012, 06:07 PM #59
DlBSY993
There's 0nly 1..
Originally posted by x. View Post
Video uploading now :evil:


Have you even released your new v.21-235 yet? havent seen it around the forums... and you need to make your menu colours cooler its not up to my standard of coolness..
01-16-2012, 06:25 PM #60
Originally posted by DlBSY993 View Post
Have you even released your new v.21-235 yet? havent seen it around the forums... and you need to make your menu colours cooler its not up to my standard of coolness..


Um, I think it's Final Ultimate Version Gold Edition v6.4 beta. isn't it?

And after today, I might change the colour to Red ! Up the revolution ! Dancing
01-16-2012, 06:27 PM #61
DlBSY993
There's 0nly 1..
Originally posted by x. View Post
Um, I think it's Final Ultimate Version Gold Edition v6.4 beta. isn't it?

And after today, I might change the colour to Red ! Up the revolution ! Dancing


*cough* blue text* cough* and have you seen this guys whos modding spec ops levels aswell as single player stats im go find out how he done it.. bitch dont know about my cupcakes
01-16-2012, 07:14 PM #62
Originally posted by DlBSY993 View Post
*cough* blue text* cough* and have you seen this guys whos modding spec ops levels aswell as single player stats im go find out how he done it.. bitch dont know about my cupcakes
On Mw3 ? It's so shit I really don't care how he did it Happy I don't even know where my disc is now...
01-16-2012, 07:16 PM #63
DlBSY993
There's 0nly 1..
Originally posted by x. View Post
On Mw3 ? It's so shit I really don't care how he did it Happy I don't even know where my disc is now...


i just found out it is someone who finished mw3 and Xploder merges the ps3 gamesaves to make the player 55 so so....
01-16-2012, 07:20 PM #64
Originally posted by DlBSY993 View Post
i just found out it is someone who finished mw3 and Xploder merges the ps3 gamesaves to make the player 55 so so....


I didn't understand a word of that :confused:

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo