Frictional Games Forum (read-only)
Help with map changing. - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: Help with map changing. (/thread-18220.html)



Help with map changing. - IGabx - 09-08-2012

Most of you are probably gonna think that I'm a noob for not knowing this but I've been trying to transition to a new map. Yes I've searched up other forums and I know the coding, but I've tried everything... :S

Here's the script:

void OnStart()
{
AddEntityCollideCallback("Player", "LoadMap_1", "LoadMap1", true, 1);
}

void LoadMap1(string& asMapName, string& asStartPos, string& asStartSound, string& asEndSound)
{
ChangeMap("final_the_beginning.map", "PlayerStartArea_1", "impact_dirt_med.snt", "");
}

It's so that when someone jumps out a window it transitions to a new outdoor map, and I've tried changing some things to it but this seems to be the only way to enter the map without the game crashing and when I enter the area it does nothing and I fall out the map :S.

There's only a hallway with 2 doors both locked and 3 windows (one being broken of course) and a script area sitting outside the broken window big enough to not miss. I also added black fog and a skybox. Smile

Ps: I don't want an end sound so I didn't put anything there. If that's the problem, I'm sorry for being stupid. xD

There's a screenshot taken of the area but I had to cut some things out because I had to post something under 500 KB


RE: Help with map changing. - Adny - 09-08-2012

The callback syntax for the LoadMap1 function was incorrect. Also, I change the name of the function to CollideLoadMap1 (just so there's no confusion between the area to collide with in game and the function):


void OnStart()
{
AddEntityCollideCallback("Player", "LoadMap_1", "CollideLoadMap1", true, 1);
}

void CollideLoadMap1(string &in asParent, string &in asChild, int alState)
{
ChangeMap("final_the_beginning.map", "PlayerStartArea_1", "impact_dirt_med.snt", "");
}

Hope that helped.


RE: Help with map changing. - IGabx - 09-08-2012

Thanks so much for the help. Big Grin

I wasn't sure if the callback syntax was correct or not. (For me that's like the worst part of the script ever. Like ever...)
I understand a lot more about the callback syntax now. Tongue


RE: Help with map changing. - FlawlessHappiness - 09-09-2012

It's actually pretty easy Smile

Colliding = (string &in asParent, string &in asChild, int alState)
Because:
asParent = 1st object
asChild = 2nd object
alState = How do they collide? When 1 goes inside? When 1 goes outside? Both?

Interacting = (string &in asEntity)
Because:
asEntity = The entity you interact with. There can only be 1 thing that is cabable of interacting and that is the player.

Use Item = (string &in asItem, string &in asEntity)
Because:
asItem = The item you use.
AsEntity = The entity you use it on

Look-at function = (string &in asEntity, int alState)
Because:
asEntity = The entity you look at
alState = Defining if you are: Looking at it? Looking away from it? Both?

You can actually use those guys (asEntity, asItem, alState, etc.) in scripts like:

void CollideFunction(string &in asParent, string &in asChild, int alState)
{
if(alState == -1) //If you are walking out of the area.
{
GiveSanityDamage(5);
}
}

I hope you understood Wink


RE: Help with map changing. - The chaser - 09-09-2012

(09-09-2012, 12:57 AM)beecake Wrote: It's actually pretty easy Smile

Colliding = (string &in asParent, string &in asChild, int alState)
Because:
asParent = 1st object
asChild = 2nd object
alState = How do they collide? When 1 goes inside? When 1 goes outside? Both?

Interacting = (string &in asEntity)
Because:
asEntity = The entity you interact with. There can only be 1 thing that is cabable of interacting and that is the player.

Use Item = (string &in asItem, string &in asEntity)
Because:
asItem = The item you use.
AsEntity = The entity you use it on

Look-at function = (string &in asEntity, int alState)
Because:
asEntity = The entity you look at
alState = Defining if you are: Looking at it? Looking away from it? Both?

You can actually use those guys (asEntity, asItem, alState, etc.) in scripts like:

void CollideFunction(string &in asParent, string &in asChild, int alState)
{
if(alState == -1) //If you are walking out of the area.
{
GiveSanityDamage(5);
}
}

I hope you understood Wink
I think that uploading this to the wiki would be a good idea. Anyway, in my custom story I work too with these. I can upload my script, and then you can compare them (it's always good to search for yourself what you've done wrong). Nevermind, sometimes is good to post it, so people can see possible issues. Well, here you have:

void OnStart()

{
AddEntityCollideCallback("Player", "ScriptArea_2", "Explore_deep", true, 1);
}

void Explore_deep (string &in asParent, string &in asChild, int alState)
{
ChangeMap("map_2.map", "Castle", "", ""); ///Castle is the startarea of the other map.
}


RE: Help with map changing. - IGabx - 09-15-2012

I agree. The wiki does have a lot of useful understandable information but this would be the cherry on the cake. It confused me the first time I saw it... Smile


RE: Help with map changing. - FlawlessHappiness - 09-16-2012

I tried making an account, but it wouldn't accept my password when i tried to login, so i clicked "Set new password", and then it said it has sent me an email... But i have got no email...


RE: Help with map changing. - IGabx - 09-16-2012

Hmm, maybe try making another email and using it?