JPPSJ
Junior Member
Posts: 20
Threads: 2
Joined: Apr 2012
Reputation:
0
|
RE: HELP!!!
(04-17-2012, 12:46 AM)Putmalk Wrote: Okay, so, first, we have a mapping problem. In our map, we are going to have a door called "mansion_1", an area called "AreaSlamDoor", and that's pretty much it. Our player is always called "Player" when referred to by the script.
So, when we collide with AreaSlamDoor, mansion_1 will be shut closed!
How do we do this?
First, we add a callback in our OnStart function so that the game knows when the player will collide with the area.
void OnStart()
{
//Hey! This is a comment. Any text following "//" will not affect your script at all!
//Player is our parent, it collides with our child, AreaSlamDoor.
//When it does, SlamDoor function is called, with a specific callback that you will find in the Engine Scripts webpage
//That "true" means we are deleting the callback when the player enters the area, so it won't trigger twice by accident
//That 0 pretty much means it will trigger when the player enters or leaves the area, it doesn't matter.
AddEntityCollideCallback("Player", "AreaSlamDoor", "SlamDoor", true, 0);
}
void OnEnter()
{
}
void OnLeave()
{
}
//see that weird stuff in the parantheses? That's a function argument...you'll find this following every function that needs in the Engine scripts I linked above!
void SlamDoor(string &in asParent, string &in asChild, int alStates)
{
//this function got called when player touches Area
//The door "mansion_1" will be closed because the first boolean statement (true or false) is set to true
//Effects will be shown because the second boolean argument is set to true as well
SetSwingDoorLocked("mansion_1", true, true);
//We deal 10 sanity damage to the player, and we will show effects on his screen because true is set for use effects!
GiveSanityDamage(10, true);
//the "doorslam" could be anything, this is just so that can easily identify the sound
//we play the 15_slam_door sound effect, located in this sounds folder of Amnesia directory, because it sounds like a slam door!
//Don't worry about the true or false in this function
//0.4 seconds (notice the "f", it's there because this is a float (there's a decimal in the number) to fade out
PlaySoundAtEntity("doorslam", "15_slam_door.snt", "mansion_1", 0.4f, false);
}
That should work for you. Don't copy and paste that code, write it out and study my comments, it is the only way you will learn syntax and how to code!
There are many advanced methods on how to script, but you are a beginner and this is how you need to learn. Ok, thank so much. can you please post another comment showing everything without the notes inbetween?
|
|
04-17-2012, 12:52 AM |
|
Putmalk
Senior Member
Posts: 290
Threads: 13
Joined: Apr 2012
Reputation:
15
|
RE: HELP!!!
void OnStart()
{
//player collide with slamdoor
AddEntityCollideCallback("Player", "AreaSlamDoor", "SlamDoor", true, 0);
}
void OnEnter()
{
}
void OnLeave()
{
}
void SlamDoor(string &in asParent, string &in asChild, int alState)
{
//slam door, with sound, effect, and sanity damage
SetSwingDoorLocked("mansion_1", true, true);
GiveSanityDamage(10, true);
PlaySoundAtEntity("doorslam", "15_slam_door.snt", "mansion_1", 0.4f, false);
}
(This post was last modified: 04-17-2012, 12:54 AM by Putmalk.)
|
|
04-17-2012, 12:53 AM |
|
JPPSJ
Junior Member
Posts: 20
Threads: 2
Joined: Apr 2012
Reputation:
0
|
RE: HELP!!!
(04-17-2012, 12:53 AM)Putmalk Wrote: void OnStart()
{
//player collide with slamdoor
AddEntityCollideCallback("Player", "AreaSlamDoor", "SlamDoor", true, 0);
}
void OnEnter()
{
}
void OnLeave()
{
}
void SlamDoor(string &in asParent, string &in asChild, int alState)
{
//slam door, with sound, effect, and sanity damage
SetSwingDoorLocked("mansion_1", true, true);
GiveSanityDamage(10, true);
PlaySoundAtEntity("doorslam", "15_slam_door.snt", "mansion_1", 0.4f, false);
}
Do i add //slam door, with sound, effect, and sanity damage? or [/code]?
|
|
04-17-2012, 12:57 AM |
|
Putmalk
Senior Member
Posts: 290
Threads: 13
Joined: Apr 2012
Reputation:
15
|
RE: HELP!!!
In your script, you can add anything you want if it is preceded by "//", because that tells the computer that the line is a comment and to ignore everything past it. It doesn't check it for syntax. Comments are there so that you can tell yourself what is going on, or else you will forget, and I promise you, you will forget a lot. So always comment what the code is doing so you know what's going on!
[/code] is for these forums, not for scripting.
|
|
04-17-2012, 12:59 AM |
|
Xanthos
Senior Member
Posts: 318
Threads: 9
Joined: Mar 2012
Reputation:
8
|
RE: HELP!!!
EDIT: I got ninja'd
(This post was last modified: 04-17-2012, 01:01 AM by Xanthos.)
|
|
04-17-2012, 01:00 AM |
|
JPPSJ
Junior Member
Posts: 20
Threads: 2
Joined: Apr 2012
Reputation:
0
|
RE: HELP!!!
(04-17-2012, 12:59 AM)Putmalk Wrote: In your script, you can add anything you want if it is preceded by "//", because that tells the computer that the line is a comment and to ignore everything past it. It doesn't check it for syntax. Comments are there so that you can tell yourself what is going on, or else you will forget, and I promise you, you will forget a lot. So always comment what the code is doing so you know what's going on!
[/code] is for these forums, not for scripting. Ok i will try this. i will post what i scripted if it doesnt work maby u coukd tell me what i did wrong. thanks soo mch!
|
|
04-17-2012, 01:01 AM |
|
Putmalk
Senior Member
Posts: 290
Threads: 13
Joined: Apr 2012
Reputation:
15
|
RE: HELP!!!
Yup, glad I can help. Just please don't copy/paste. You won't learn a thing.
|
|
04-17-2012, 01:02 AM |
|
JPPSJ
Junior Member
Posts: 20
Threads: 2
Joined: Apr 2012
Reputation:
0
|
RE: HELP!!!
(04-17-2012, 01:02 AM)Putmalk Wrote: Yup, glad I can help. Just please don't copy/paste. You won't learn a thing.
Wait, does this go under void on leave?
void SlamDoor(string &in asParent, string &in asChild, int alState)
{
//slam door, with sound, effect, and sanity damage
SetSwingDoorLocked("mansion_1", true, true);
GiveSanityDamage(10, true);
PlaySoundAtEntity("doorslam", "15_slam_door.snt", "mansion_1", 0.4f, false);
|
|
04-17-2012, 01:08 AM |
|
Putmalk
Senior Member
Posts: 290
Threads: 13
Joined: Apr 2012
Reputation:
15
|
RE: HELP!!!
Functions aren't constrained to "below or above" any other function (at least in our game scripts!). It can technically go anywhere. For example, in the main game scripts, onstart and other functions are at the bottom of the script; sometimes, I have them on the top. Location doesn't matter.
What does matter is that you're not putting the functions inside of other functions, like this:
OnStart()
{
OnLeave()
{
}
}
That's bad.
|
|
04-17-2012, 01:11 AM |
|
JPPSJ
Junior Member
Posts: 20
Threads: 2
Joined: Apr 2012
Reputation:
0
|
RE: HELP!!!
(04-17-2012, 01:11 AM)Putmalk Wrote: Functions aren't constrained to "below or above" any other function (at least in our game scripts!). It can technically go anywhere. For example, in the main game scripts, onstart and other functions are at the bottom of the script; sometimes, I have them on the top. Location doesn't matter.
What does matter is that you're not putting the functions inside of other functions, like this:
OnStart()
{
OnLeave()
{
}
}
That's bad. Ok, so i put everthing you put in
void OnStart()
{
"your example"
}
|
|
04-17-2012, 01:13 AM |
|
|